11use super :: { Aggregate , AggregateFunction , HelperMapping , RewriteOutput , RewritePlan } ;
22use pg_query:: protobuf:: { FuncCall , Node , ResTarget , String as PgString } ;
33use pg_query:: { NodeEnum , ParseResult } ;
4- use tracing:: debug;
54
65/// Query rewrite engine. Currently supports injecting helper aggregates for AVG.
76#[ derive( Default ) ]
@@ -13,19 +12,18 @@ impl RewriteEngine {
1312 }
1413
1514 /// Rewrite a SELECT query, adding helper aggregates when necessary.
16- pub fn rewrite_select ( & self , sql : & str , aggregate : & Aggregate ) -> RewriteOutput {
17- match pg_query:: parse ( sql) {
18- Ok ( parsed) => self . rewrite_parsed ( parsed, aggregate, sql) ,
19- Err ( err) => {
20- debug ! ( "rewrite failed to parse SELECT: {}" , err) ;
21- RewriteOutput :: new ( sql. to_string ( ) , RewritePlan :: new ( ) )
22- }
23- }
15+ pub fn rewrite_select (
16+ & self ,
17+ ast : & ParseResult ,
18+ sql : & str ,
19+ aggregate : & Aggregate ,
20+ ) -> RewriteOutput {
21+ self . rewrite_parsed ( ast, aggregate, sql)
2422 }
2523
2624 fn rewrite_parsed (
2725 & self ,
28- parsed : ParseResult ,
26+ parsed : & ParseResult ,
2927 aggregate : & Aggregate ,
3028 original_sql : & str ,
3129 ) -> RewriteOutput {
@@ -171,7 +169,7 @@ mod tests {
171169 None => panic ! ( "empty" ) ,
172170 } ;
173171 let aggregate = Aggregate :: parse ( stmt) . unwrap ( ) ;
174- RewriteEngine :: new ( ) . rewrite_select ( sql, & aggregate)
172+ RewriteEngine :: new ( ) . rewrite_select ( & ast , sql, & aggregate)
175173 }
176174
177175 #[ test]
0 commit comments