Skip to content

Commit 307cb5e

Browse files
committed
use dsl
1 parent 42f9d2c commit 307cb5e

File tree

1 file changed

+31
-45
lines changed

1 file changed

+31
-45
lines changed

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ResolveNaturalJoinSuite.scala

Lines changed: 31 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -22,83 +22,69 @@ import org.apache.spark.sql.catalyst.dsl.plans._
2222
import org.apache.spark.sql.catalyst.expressions._
2323
import org.apache.spark.sql.catalyst.plans._
2424
import org.apache.spark.sql.catalyst.plans.logical.LocalRelation
25-
import org.apache.spark.sql.types.StringType
2625

2726
class ResolveNaturalJoinSuite extends AnalysisTest {
28-
lazy val r1 = LocalRelation(
29-
AttributeReference("r1_a", StringType, nullable = true)(),
30-
AttributeReference("r1_b", StringType, nullable = true)(),
31-
AttributeReference("r1_c", StringType, nullable = true)())
32-
lazy val r2 = LocalRelation(
33-
AttributeReference("r2_a", StringType, nullable = false)(),
34-
AttributeReference("r2_b", StringType, nullable = false)(),
35-
AttributeReference("r2_c", StringType, nullable = false)())
36-
lazy val t1 = r1.select('r1_a, 'r1_b)
37-
lazy val t2 = r1.select('r1_a, 'r1_c)
38-
lazy val r1a = r1.output(0)
39-
lazy val r1b = r1.output(1)
40-
lazy val r1c = r1.output(2)
41-
lazy val t3 = r2.select('r2_a, 'r2_b)
42-
lazy val t4 = r2.select('r2_a, 'r2_c)
43-
lazy val r2a = r2.output(0)
44-
lazy val r2b = r2.output(1)
45-
lazy val r2c = r2.output(2)
46-
lazy val nullableR2B = r2.output(1).withNullability(true)
47-
lazy val nullableR2C = r2.output(2).withNullability(true)
27+
lazy val a = 'a.string
28+
lazy val b = 'b.string
29+
lazy val c = 'c.string
30+
lazy val aNotNull = a.notNull
31+
lazy val bNotNull = b.notNull
32+
lazy val cNotNull = c.notNull
33+
lazy val r1 = LocalRelation(a, b)
34+
lazy val r2 = LocalRelation(a, c)
35+
lazy val r3 = LocalRelation(aNotNull, bNotNull)
36+
lazy val r4 = LocalRelation(bNotNull, cNotNull)
4837

4938
test("natural inner join") {
50-
val plan = t1.join(t2, NaturalJoin(Inner), None)
51-
val expected = r1.select(r1a, r1b).join(
52-
r1.select(r1a, r1c), Inner, Some(EqualTo(r1a, r1a))).select(r1a, r1b, r1c)
39+
val plan = r1.join(r2, NaturalJoin(Inner), None)
40+
val expected = r1.join(r2, Inner, Some(EqualTo(a, a))).select(a, b, c)
5341
checkAnalysis(plan, expected)
5442
}
5543

5644
test("natural left join") {
57-
val plan = t1.join(t2, NaturalJoin(LeftOuter), None)
58-
val expected = r1.select(r1a, r1b).join(
59-
r1.select(r1a, r1c), LeftOuter, Some(EqualTo(r1a, r1a))).select(r1a, r1b, r1c)
45+
val plan = r1.join(r2, NaturalJoin(LeftOuter), None)
46+
val expected = r1.join(r2, LeftOuter, Some(EqualTo(a, a))).select(a, b, c)
6047
checkAnalysis(plan, expected)
6148
}
6249

6350
test("natural right join") {
64-
val plan = t1.join(t2, NaturalJoin(RightOuter), None)
65-
val expected = r1.select(r1a, r1b).join(
66-
r1.select(r1a, r1c), RightOuter, Some(EqualTo(r1a, r1a))).select(r1a, r1b, r1c)
51+
val plan = r1.join(r2, NaturalJoin(RightOuter), None)
52+
val expected = r1.join(r2, RightOuter, Some(EqualTo(a, a))).select(a, b, c)
6753
checkAnalysis(plan, expected)
6854
}
6955

7056
test("natural full outer join") {
71-
val plan = t1.join(t2, NaturalJoin(FullOuter), None)
72-
val expected = r1.select(r1a, r1b).join(r1.select(r1a, r1c), FullOuter, Some(
73-
EqualTo(r1a, r1a))).select(Alias(Coalesce(Seq(r1a, r1a)), "r1_a")(), r1b, r1c)
57+
val plan = r1.join(r2, NaturalJoin(FullOuter), None)
58+
val expected = r1.join(r2, FullOuter, Some(EqualTo(a, a))).select(
59+
Alias(Coalesce(Seq(a, a)), "a")(), b, c)
7460
checkAnalysis(plan, expected)
7561
}
7662

7763
test("natural inner join with no nullability") {
78-
val plan = t3.join(t4, NaturalJoin(Inner), None)
79-
val expected = r2.select(r2a, r2b).join(
80-
r2.select(r2a, r2c), Inner, Some(EqualTo(r2a, r2a))).select(r2a, r2b, r2c)
64+
val plan = r3.join(r4, NaturalJoin(Inner), None)
65+
val expected = r3.join(r4, Inner, Some(EqualTo(bNotNull, bNotNull))).select(
66+
bNotNull, aNotNull, cNotNull)
8167
checkAnalysis(plan, expected)
8268
}
8369

8470
test("natural left join with no nullability") {
85-
val plan = t3.join(t4, NaturalJoin(LeftOuter), None)
86-
val expected = r2.select(r2a, r2b).join(
87-
r2.select(r2a, r2c), LeftOuter, Some(EqualTo(r2a, r2a))).select(r2a, r2b, nullableR2C)
71+
val plan = r3.join(r4, NaturalJoin(LeftOuter), None)
72+
val expected = r3.join(r4, LeftOuter, Some(EqualTo(bNotNull, bNotNull))).select(
73+
bNotNull, aNotNull, c)
8874
checkAnalysis(plan, expected)
8975
}
9076

9177
test("natural right join with no nullability") {
92-
val plan = t3.join(t4, NaturalJoin(RightOuter), None)
93-
val expected = r2.select(r2a, r2b).join(
94-
r2.select(r2a, r2c), RightOuter, Some(EqualTo(r2a, r2a))).select(r2a, nullableR2B, r2c)
78+
val plan = r3.join(r4, NaturalJoin(RightOuter), None)
79+
val expected = r3.join(r4, RightOuter, Some(EqualTo(bNotNull, bNotNull))).select(
80+
bNotNull, a, cNotNull)
9581
checkAnalysis(plan, expected)
9682
}
9783

9884
test("natural full outer join with no nullability") {
99-
val plan = t3.join(t4, NaturalJoin(FullOuter), None)
100-
val expected = r2.select(r2a, r2b).join(r2.select(r2a, r2c), FullOuter, Some(EqualTo(
101-
r2a, r2a))).select(Alias(Coalesce(Seq(r2a, r2a)), "r2_a")(), nullableR2B, nullableR2C)
85+
val plan = r3.join(r4, NaturalJoin(FullOuter), None)
86+
val expected = r3.join(r4, FullOuter, Some(EqualTo(bNotNull, bNotNull))).select(
87+
Alias(Coalesce(Seq(bNotNull, bNotNull)), "b")(), a, c)
10288
checkAnalysis(plan, expected)
10389
}
10490
}

0 commit comments

Comments
 (0)