@@ -27,7 +27,6 @@ import org.apache.spark.sql.catalyst.expressions._
27
27
import org.apache.spark.sql.catalyst.plans._
28
28
import org.apache.spark.sql.catalyst.plans.logical._
29
29
import org.apache.spark.sql.catalyst.rules._
30
- import org.apache.spark.sql.internal.SQLConf
31
30
import org.apache.spark.sql.types._
32
31
import org.apache.spark.unsafe.types.CalendarInterval
33
32
@@ -762,8 +761,9 @@ class FilterPushdownSuite extends PlanTest {
762
761
val optimized = Optimize.execute(originalQuery.analyze)
763
762
764
763
val correctAnswer = testRelation
765
- .where($"a" + 1 < 3)
766
- .select($"a", $"b")
764
+ .select($"a", $"b", $"c", ($"a" + 1) as "aa")
765
+ .where($"aa" < 3)
766
+ .select($"a", $"b", $"aa")
767
767
.groupBy($"a")(($"a" + 1) as "aa", count($"b") as "c")
768
768
.where($"c" === 2L || $"aa" > 4)
769
769
.analyze
@@ -1524,50 +1524,47 @@ class FilterPushdownSuite extends PlanTest {
1524
1524
}
1525
1525
1526
1526
test("SPARK-50589: avoid extra expression duplication when push filter") {
1527
- withSQLConf(SQLConf.USE_COMMON_EXPR_ID_FOR_ALIAS.key -> "false") {
1528
- // through project
1529
- val originalQuery1 = testRelation
1530
- .select($"a" + $"b" as "add", $"a" - $"b" as "sub")
1531
- .where($"add" < 10 && $"add" + $"add" > 10 && $"sub" > 0)
1532
- val correctAnswer1 = testRelation
1533
- .select($"a", $"b", $"c", $"a" + $"b" as "add", $"a" - $"b" as "sub")
1534
- .where($"add" < 10 && $"add" + $"add" > 10 && $"sub" > 0)
1535
- .select($"add", $"sub")
1536
- .analyze
1537
- val optimized1 = Optimize.execute(originalQuery1.analyze)
1538
- comparePlans(optimized1, correctAnswer1)
1539
-
1540
- // through aggregate
1541
- val originalQuery2 = testRelation
1542
- .groupBy($"a")($"a", $"a" + $"a" as "add", abs($"a") as "abs", count(1) as "ct")
1543
- .where($"add" < 10 && $"add" + $"add" > 10 && $"abs" > 5)
1544
- val optimized2 = Optimize.execute(originalQuery2.analyze)
1545
- val correctAnswer2 = testRelation
1546
- .select($"a", $"b", $"c", $"a" + $"a" as "_common_expr_0")
1547
- .where($"_common_expr_0" < 10 &&
1548
- $"_common_expr_0" + $"_common_expr_0" > 10 &&
1549
- abs($"a") > 5)
1550
- .select($"a", $"b", $"c")
1551
- .groupBy($"a")($"a", $"a" + $"a" as "add", abs($"a") as "abs", count(1) as "ct")
1552
- .analyze
1553
- comparePlans(optimized2, correctAnswer2)
1554
- }
1555
- withSQLConf(SQLConf.USE_COMMON_EXPR_ID_FOR_ALIAS.key -> "false") {
1556
- // partial push down
1557
- val originalQuery3 = testRelation
1558
- .groupBy($"a")($"a", count(1) as "ct")
1559
- .select($"a" + $"a" as "add", $"ct")
1560
- .where($"add" + $"add" > 10 && $"add" > $"ct")
1561
- val optimized3 = Optimize.execute(originalQuery3.analyze)
1562
- val correctAnswer3 = testRelation
1563
- .select($"a", $"b", $"c", $"a" + $"a" as "_common_expr_0")
1564
- .where($"_common_expr_0" + $"_common_expr_0" > 10)
1565
- .select($"a", $"b", $"c")
1566
- .groupBy($"a")($"a", count(1) as "ct", $"a" + $"a" as "add")
1567
- .where($"add" > $"ct")
1568
- .select($"add", $"ct")
1569
- .analyze
1570
- comparePlans(optimized3, correctAnswer3)
1571
- }
1527
+ // through project
1528
+ val originalQuery1 = testRelation
1529
+ .select($"a" + $"b" as "add", $"a" - $"b" as "sub")
1530
+ .where($"add" < 10 && $"add" + $"add" > 10 && $"sub" > 0)
1531
+ val correctAnswer1 = testRelation
1532
+ .select($"a", $"b", $"c", $"a" + $"b" as "add", $"a" - $"b" as "sub")
1533
+ .where($"add" < 10 && $"add" + $"add" > 10 && $"sub" > 0)
1534
+ .select($"add", $"sub")
1535
+ .analyze
1536
+ val optimized1 = Optimize.execute(originalQuery1.analyze)
1537
+ comparePlans(optimized1, correctAnswer1)
1538
+
1539
+ // through aggregate
1540
+ val originalQuery2 = testRelation
1541
+ .groupBy($"a")($"a", $"a" + $"a" as "add", abs($"a") as "abs", count(1) as "ct")
1542
+ .where($"add" < 10 && $"add" + $"add" > 10 && $"abs" > 5)
1543
+ val optimized2 = Optimize.execute(originalQuery2.analyze)
1544
+ val correctAnswer2 = testRelation
1545
+ .select($"a", $"b", $"c", $"a" + $"a" as "add", abs($"a") as "abs")
1546
+ .where($"add" < 10 &&
1547
+ $"add" + $"add" > 10 &&
1548
+ $"abs" > 5)
1549
+ .select($"a", $"b", $"c", $"add", $"abs")
1550
+ .groupBy($"a")($"a", $"a" + $"a" as "add", abs($"a") as "abs", count(1) as "ct")
1551
+ .analyze
1552
+ comparePlans(optimized2, correctAnswer2)
1553
+
1554
+ // partial push down
1555
+ val originalQuery3 = testRelation
1556
+ .groupBy($"a")($"a", count(1) as "ct")
1557
+ .select($"a" + $"a" as "add", $"ct")
1558
+ .where($"add" + $"add" > 10 && $"add" > $"ct")
1559
+ val optimized3 = Optimize.execute(originalQuery3.analyze)
1560
+ val correctAnswer3 = testRelation
1561
+ .select($"a", $"b", $"c", $"a" + $"a" as "add")
1562
+ .where($"add" + $"add" > 10)
1563
+ .select($"a", $"b", $"c", $"add")
1564
+ .groupBy($"a")($"a", count(1) as "ct", $"a" + $"a" as "add")
1565
+ .where($"add" > $"ct")
1566
+ .select($"add", $"ct")
1567
+ .analyze
1568
+ comparePlans(optimized3, correctAnswer3)
1572
1569
}
1573
1570
}
0 commit comments