@@ -51,6 +51,7 @@ class JoinSuite extends QueryTest with BeforeAndAfterEach {
51
51
case j : CartesianProduct => j
52
52
case j : BroadcastNestedLoopJoin => j
53
53
case j : BroadcastLeftSemiJoinHash => j
54
+ case j : ShuffledHashJoin => j
54
55
case j : SortMergeJoin => j
55
56
}
56
57
@@ -63,6 +64,8 @@ class JoinSuite extends QueryTest with BeforeAndAfterEach {
63
64
test(" join operator selection" ) {
64
65
cacheManager.clearCache()
65
66
67
+ val AUTO_SORTMERGEJOIN : Boolean = conf.autoSortMergeJoin
68
+ conf.setConf(" spark.sql.autoSortMergeJoin" , " false" )
66
69
Seq (
67
70
(" SELECT * FROM testData LEFT SEMI JOIN testData2 ON key = a" , classOf [LeftSemiJoinHash ]),
68
71
(" SELECT * FROM testData LEFT SEMI JOIN testData2" , classOf [LeftSemiJoinBNL ]),
@@ -76,9 +79,9 @@ class JoinSuite extends QueryTest with BeforeAndAfterEach {
76
79
(" SELECT * FROM testData FULL OUTER JOIN testData2 WHERE key = 2" , classOf [CartesianProduct ]),
77
80
(" SELECT * FROM testData JOIN testData2 WHERE key > a" , classOf [CartesianProduct ]),
78
81
(" SELECT * FROM testData FULL OUTER JOIN testData2 WHERE key > a" , classOf [CartesianProduct ]),
79
- (" SELECT * FROM testData JOIN testData2 ON key = a" , classOf [SortMergeJoin ]),
80
- (" SELECT * FROM testData JOIN testData2 ON key = a and key = 2" , classOf [SortMergeJoin ]),
81
- (" SELECT * FROM testData JOIN testData2 ON key = a where key = 2" , classOf [SortMergeJoin ]),
82
+ (" SELECT * FROM testData JOIN testData2 ON key = a" , classOf [ShuffledHashJoin ]),
83
+ (" SELECT * FROM testData JOIN testData2 ON key = a and key = 2" , classOf [ShuffledHashJoin ]),
84
+ (" SELECT * FROM testData JOIN testData2 ON key = a where key = 2" , classOf [ShuffledHashJoin ]),
82
85
(" SELECT * FROM testData LEFT JOIN testData2 ON key = a" , classOf [HashOuterJoin ]),
83
86
(" SELECT * FROM testData RIGHT JOIN testData2 ON key = a where key = 2" ,
84
87
classOf [HashOuterJoin ]),
@@ -92,6 +95,13 @@ class JoinSuite extends QueryTest with BeforeAndAfterEach {
92
95
(" SELECT * FROM testData full JOIN testData2 ON (key * a != key + a)" ,
93
96
classOf [BroadcastNestedLoopJoin ])
94
97
).foreach { case (query, joinClass) => assertJoin(query, joinClass) }
98
+ conf.setConf(" spark.sql.autoSortMergeJoin" , " true" )
99
+ Seq (
100
+ (" SELECT * FROM testData JOIN testData2 ON key = a" , classOf [SortMergeJoin ]),
101
+ (" SELECT * FROM testData JOIN testData2 ON key = a and key = 2" , classOf [SortMergeJoin ]),
102
+ (" SELECT * FROM testData JOIN testData2 ON key = a where key = 2" , classOf [SortMergeJoin ])
103
+ ).foreach { case (query, joinClass) => assertJoin(query, joinClass) }
104
+ conf.setConf(" spark.sql.autoSortMergeJoin" , AUTO_SORTMERGEJOIN .toString)
95
105
}
96
106
97
107
test(" broadcasted hash join operator selection" ) {
0 commit comments