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]

Reply via email to