alamb commented on code in PR #20749:
URL: https://github.com/apache/datafusion/pull/20749#discussion_r2907885397
##########
datafusion/expr/src/udaf.rs:
##########
@@ -691,6 +707,74 @@ pub trait AggregateUDFImpl: Debug + DynEq + DynHash + Send
+ Sync {
None
}
+ /// Rewrite the aggregate to have simpler arguments
Review Comment:
this explains what the rewrite is doing
##########
datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs:
##########
@@ -137,7 +139,8 @@ impl SimplifyExpressions {
} else {
rewrite_expr(expr)
}
- })
+ })?
+ .transform_data(rewrite_aggregate_non_aggregate_aggr_expr)
Review Comment:
this rule is structured as another potential rewrite in the existing
SimplifyExprs pass
##########
datafusion/sqllogictest/test_files/clickbench.slt:
##########
@@ -795,13 +795,16 @@ query TT
EXPLAIN SELECT SUM("ResolutionWidth"), SUM("ResolutionWidth" + 1),
SUM("ResolutionWidth" + 2), SUM("ResolutionWidth" + 3), SUM("ResolutionWidth" +
4), SUM("ResolutionWidth" + 5), SUM("ResolutionWidth" + 6),
SUM("ResolutionWidth" + 7), SUM("ResolutionWidth" + 8), SUM("ResolutionWidth" +
9), SUM("ResolutionWidth" + 10), SUM("ResolutionWidth" + 11),
SUM("ResolutionWidth" + 12), SUM("ResolutionWidth" + 13), SUM("ResolutionWidth"
+ 14), SUM("ResolutionWidth" + 15), SUM("ResolutionWidth" + 16),
SUM("ResolutionWidth" + 17), SUM("ResolutionWidth" + 18), SUM("ResolutionWidth"
+ 19), SUM("ResolutionWidth" + 20), SUM("ResolutionWidth" + 21),
SUM("ResolutionWidth" + 22), SUM("ResolutionWidth" + 23), SUM("ResolutionWidth"
+ 24), SUM("ResolutionWidth" + 25), SUM("ResolutionWidth" + 26),
SUM("ResolutionWidth" + 27), SUM("ResolutionWidth" + 28), SUM("ResolutionWidth"
+ 29), SUM("ResolutionWidth" + 30), SUM("ResolutionWidth" + 31),
SUM("ResolutionWidth" + 32), SUM("ResolutionWidth" + 33), SUM("Resol
utionWidth" + 34), SUM("ResolutionWidth" + 35), SUM("ResolutionWidth" + 36),
SUM("ResolutionWidth" + 37), SUM("ResolutionWidth" + 38), SUM("ResolutionWidth"
+ 39), SUM("ResolutionWidth" + 40), SUM("ResolutionWidth" + 41),
SUM("ResolutionWidth" + 42), SUM("ResolutionWidth" + 43), SUM("ResolutionWidth"
+ 44), SUM("ResolutionWidth" + 45), SUM("ResolutionWidth" + 46),
SUM("ResolutionWidth" + 47), SUM("ResolutionWidth" + 48), SUM("ResolutionWidth"
+ 49), SUM("ResolutionWidth" + 50), SUM("ResolutionWidth" + 51),
SUM("ResolutionWidth" + 52), SUM("ResolutionWidth" + 53), SUM("ResolutionWidth"
+ 54), SUM("ResolutionWidth" + 55), SUM("ResolutionWidth" + 56),
SUM("ResolutionWidth" + 57), SUM("ResolutionWidth" + 58), SUM("ResolutionWidth"
+ 59), SUM("ResolutionWidth" + 60), SUM("ResolutionWidth" + 61),
SUM("ResolutionWidth" + 62), SUM("ResolutionWidth" + 63), SUM("ResolutionWidth"
+ 64), SUM("ResolutionWidth" + 65), SUM("ResolutionWidth" + 66),
SUM("ResolutionWidth" + 67), SUM("ResolutionWidth"
+ 68), SUM("ResolutionWidth" + 69), SUM("ResolutionWidth" + 70),
SUM("ResolutionWidth" + 71), SUM("ResolutionWidth" + 72), SUM("ResolutionWidth"
+ 73), SUM("ResolutionWidth" + 74), SUM("ResolutionWidth" + 75),
SUM("ResolutionWidth" + 76), SUM("ResolutionWidth" + 77), SUM("ResolutionWidth"
+ 78), SUM("ResolutionWidth" + 79), SUM("ResolutionWidth" + 80),
SUM("ResolutionWidth" + 81), SUM("ResolutionWidth" + 82), SUM("ResolutionWidth"
+ 83), SUM("ResolutionWidth" + 84), SUM("ResolutionWidth" + 85),
SUM("ResolutionWidth" + 86), SUM("ResolutionWidth" + 87), SUM("ResolutionWidth"
+ 88), SUM("ResolutionWidth" + 89) FROM hits;
----
logical_plan
-01)Aggregate: groupBy=[[]], aggr=[[sum(__common_expr_1 AS
hits.ResolutionWidth), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(1)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(2)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(3)), sum(__common_expr_1 AS hits.ResolutionWidth +
Int64(4)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(5)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(6)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(7)), sum(__common_expr_1 AS hits.ResolutionWidth +
Int64(8)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(9)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(10)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(11)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(12)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(13)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(14)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(15)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(16)
), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(17)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(18)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(19)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(20)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(21)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(22)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(23)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(24)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(25)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(26)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(27)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(28)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(29)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(30)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(31)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(32)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(33)), sum(__co
mmon_expr_1 AS hits.ResolutionWidth + Int64(34)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(35)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(36)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(37)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(38)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(39)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(40)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(41)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(42)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(43)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(44)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(45)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(46)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(47)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(48)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(49)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(50)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(51)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(52)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(53)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(54)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(55)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(56)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(57)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(58)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(59)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(60)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(61)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(62)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(63)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(64)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(65)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(66)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(67)), sum(__common_expr_1 AS hits.Re
solutionWidth + Int64(68)), sum(__common_expr_1 AS hits.ResolutionWidth +
Int64(69)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(70)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(71)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(72)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(73)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(74)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(75)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(76)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(77)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(78)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(79)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(80)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(81)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(82)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(83)), sum(__common_expr_1 AS hits.ResolutionWidth
+ Int64(84)), sum(__common_expr_1 AS hits.ResolutionWid
th + Int64(85)), sum(__common_expr_1 AS hits.ResolutionWidth + Int64(86)),
sum(__common_expr_1 AS hits.ResolutionWidth + Int64(87)), sum(__common_expr_1
AS hits.ResolutionWidth + Int64(88)), sum(__common_expr_1 AS
hits.ResolutionWidth + Int64(89))]]
-02)--Projection: CAST(hits.ResolutionWidth AS Int64) AS __common_expr_1
-03)----SubqueryAlias: hits
-04)------TableScan: hits_raw projection=[ResolutionWidth]
+01)Projection: sum(hits.ResolutionWidth), sum(hits.ResolutionWidth) +
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(1)),
sum(hits.ResolutionWidth) + Int64(2) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(2)), sum(hits.ResolutionWidth) + Int64(3) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(3)),
sum(hits.ResolutionWidth) + Int64(4) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(4)), sum(hits.ResolutionWidth) + Int64(5) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(5)),
sum(hits.ResolutionWidth) + Int64(6) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(6)), sum(hits.ResolutionWidth) + Int64(7) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(7)),
sum(hits.ResolutionWidth) + Int64(8) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(8)), sum(hits.ResolutionWidth) + Int64(9) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(9)),
sum(hits.ResolutionWidth) + Int64(10) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(10)), sum(
hits.ResolutionWidth) + Int64(11) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(11)), sum(hits.ResolutionWidth) + Int64(12) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(12)),
sum(hits.ResolutionWidth) + Int64(13) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(13)), sum(hits.ResolutionWidth) + Int64(14) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(14)),
sum(hits.ResolutionWidth) + Int64(15) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(15)), sum(hits.ResolutionWidth) + Int64(16) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(16)),
sum(hits.ResolutionWidth) + Int64(17) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(17)), sum(hits.ResolutionWidth) + Int64(18) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(18)),
sum(hits.ResolutionWidth) + Int64(19) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(19)), sum(hits.ResolutionWidth) + Int64(20) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(20)), sum(hits.ResolutionWi
dth) + Int64(21) * __common_expr_1 AS sum(hits.ResolutionWidth + Int64(21)),
sum(hits.ResolutionWidth) + Int64(22) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(22)), sum(hits.ResolutionWidth) + Int64(23) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(23)),
sum(hits.ResolutionWidth) + Int64(24) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(24)), sum(hits.ResolutionWidth) + Int64(25) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(25)),
sum(hits.ResolutionWidth) + Int64(26) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(26)), sum(hits.ResolutionWidth) + Int64(27) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(27)),
sum(hits.ResolutionWidth) + Int64(28) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(28)), sum(hits.ResolutionWidth) + Int64(29) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(29)),
sum(hits.ResolutionWidth) + Int64(30) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(30)), sum(hits.ResolutionWidth) + Int64(31)
* __common_expr_1 AS sum(hits.ResolutionWidth + Int64(31)),
sum(hits.ResolutionWidth) + Int64(32) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(32)), sum(hits.ResolutionWidth) + Int64(33) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(33)),
sum(hits.ResolutionWidth) + Int64(34) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(34)), sum(hits.ResolutionWidth) + Int64(35) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(35)),
sum(hits.ResolutionWidth) + Int64(36) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(36)), sum(hits.ResolutionWidth) + Int64(37) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(37)),
sum(hits.ResolutionWidth) + Int64(38) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(38)), sum(hits.ResolutionWidth) + Int64(39) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(39)),
sum(hits.ResolutionWidth) + Int64(40) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(40)), sum(hits.ResolutionWidth) + Int64(41) *
__common_expr_1
AS sum(hits.ResolutionWidth + Int64(41)), sum(hits.ResolutionWidth) +
Int64(42) * __common_expr_1 AS sum(hits.ResolutionWidth + Int64(42)),
sum(hits.ResolutionWidth) + Int64(43) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(43)), sum(hits.ResolutionWidth) + Int64(44) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(44)),
sum(hits.ResolutionWidth) + Int64(45) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(45)), sum(hits.ResolutionWidth) + Int64(46) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(46)),
sum(hits.ResolutionWidth) + Int64(47) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(47)), sum(hits.ResolutionWidth) + Int64(48) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(48)),
sum(hits.ResolutionWidth) + Int64(49) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(49)), sum(hits.ResolutionWidth) + Int64(50) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(50)),
sum(hits.ResolutionWidth) + Int64(51) * __common_expr_1 AS sum(hits.Reso
lutionWidth + Int64(51)), sum(hits.ResolutionWidth) + Int64(52) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(52)),
sum(hits.ResolutionWidth) + Int64(53) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(53)), sum(hits.ResolutionWidth) + Int64(54) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(54)),
sum(hits.ResolutionWidth) + Int64(55) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(55)), sum(hits.ResolutionWidth) + Int64(56) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(56)),
sum(hits.ResolutionWidth) + Int64(57) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(57)), sum(hits.ResolutionWidth) + Int64(58) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(58)),
sum(hits.ResolutionWidth) + Int64(59) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(59)), sum(hits.ResolutionWidth) + Int64(60) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(60)),
sum(hits.ResolutionWidth) + Int64(61) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int
64(61)), sum(hits.ResolutionWidth) + Int64(62) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(62)), sum(hits.ResolutionWidth) + Int64(63) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(63)),
sum(hits.ResolutionWidth) + Int64(64) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(64)), sum(hits.ResolutionWidth) + Int64(65) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(65)),
sum(hits.ResolutionWidth) + Int64(66) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(66)), sum(hits.ResolutionWidth) + Int64(67) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(67)),
sum(hits.ResolutionWidth) + Int64(68) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(68)), sum(hits.ResolutionWidth) + Int64(69) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(69)),
sum(hits.ResolutionWidth) + Int64(70) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(70)), sum(hits.ResolutionWidth) + Int64(71) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(71)), sum(hits
.ResolutionWidth) + Int64(72) * __common_expr_1 AS sum(hits.ResolutionWidth +
Int64(72)), sum(hits.ResolutionWidth) + Int64(73) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(73)), sum(hits.ResolutionWidth) + Int64(74) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(74)),
sum(hits.ResolutionWidth) + Int64(75) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(75)), sum(hits.ResolutionWidth) + Int64(76) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(76)),
sum(hits.ResolutionWidth) + Int64(77) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(77)), sum(hits.ResolutionWidth) + Int64(78) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(78)),
sum(hits.ResolutionWidth) + Int64(79) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(79)), sum(hits.ResolutionWidth) + Int64(80) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(80)),
sum(hits.ResolutionWidth) + Int64(81) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(81)), sum(hits.ResolutionWidth)
+ Int64(82) * __common_expr_1 AS sum(hits.ResolutionWidth + Int64(82)),
sum(hits.ResolutionWidth) + Int64(83) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(83)), sum(hits.ResolutionWidth) + Int64(84) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(84)),
sum(hits.ResolutionWidth) + Int64(85) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(85)), sum(hits.ResolutionWidth) + Int64(86) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(86)),
sum(hits.ResolutionWidth) + Int64(87) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(87)), sum(hits.ResolutionWidth) + Int64(88) *
__common_expr_1 AS sum(hits.ResolutionWidth + Int64(88)),
sum(hits.ResolutionWidth) + Int64(89) * __common_expr_1 AS
sum(hits.ResolutionWidth + Int64(89))
Review Comment:
This plan shows why this PR makes clickbench Q29 much faster -- it now uses
two aggregates (`SUM` and `COUNT`) rather than 100
##########
datafusion/sqllogictest/test_files/aggregates_simplify.slt:
##########
@@ -106,11 +106,14 @@ query TT
EXPLAIN SELECT SUM(column1 + 1), SUM(column1 + 2) FROM sum_simplify_t;
----
logical_plan
-01)Aggregate: groupBy=[[]], aggr=[[sum(sum_simplify_t.column1 + Int64(1)),
sum(sum_simplify_t.column1 + Int64(2))]]
-02)--TableScan: sum_simplify_t projection=[column1]
+01)Projection: sum(sum_simplify_t.column1) + __common_expr_1 AS
sum(sum_simplify_t.column1 + Int64(1)), sum(sum_simplify_t.column1) + Int64(2)
* __common_expr_1 AS sum(sum_simplify_t.column1 + Int64(2))
+02)--Projection: CAST(count(sum_simplify_t.column1) AS Int64) AS
__common_expr_1, sum(sum_simplify_t.column1)
+03)----Aggregate: groupBy=[[]], aggr=[[sum(sum_simplify_t.column1),
count(sum_simplify_t.column1)]]
Review Comment:
here you can see a single SUM and COUNT aggregate rather than two sums
##########
datafusion/expr/src/udaf.rs:
##########
@@ -301,6 +302,21 @@ impl AggregateUDF {
self.inner.simplify()
}
+ /// Rewrite aggregate to have simpler arguments
Review Comment:
the idea is to add a new special case (and isolated) API to AggregateUDFImpl
to keep this rewrite from polluting most of the rest of the code
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]