@@ -1032,6 +1032,104 @@ async fn test_wrapper_filter_flatten() {
10321032 )
10331033 . await ;
10341034
1035+ assert_eq ! (
1036+ query_plan
1037+ . as_logical_plan( )
1038+ . find_cube_scan_wrapper( )
1039+ . request
1040+ . unwrap( ) ,
1041+ TransportLoadRequestQuery {
1042+ measures: Some ( vec![ json!( {
1043+ "cube_name" : "KibanaSampleDataEcommerce" ,
1044+ "alias" : "sum_kibanasample" ,
1045+ "cube_params" : [ "KibanaSampleDataEcommerce" ] ,
1046+ // This SUM(sumPrice) is invalid in grouped query
1047+ "expr" : "SUM(${KibanaSampleDataEcommerce.sumPrice})" ,
1048+ "grouping_set" : null,
1049+ } )
1050+ . to_string( ) , ] ) ,
1051+ dimensions: Some ( vec![ json!( {
1052+ "cube_name" : "KibanaSampleDataEcommerce" ,
1053+ "alias" : "customer_gender" ,
1054+ "cube_params" : [ "KibanaSampleDataEcommerce" ] ,
1055+ "expr" : "${KibanaSampleDataEcommerce.customer_gender}" ,
1056+ "grouping_set" : null,
1057+ } )
1058+ . to_string( ) , ] ) ,
1059+ segments: Some ( vec![ json!( {
1060+ "cube_name" : "KibanaSampleDataEcommerce" ,
1061+ "alias" : "lower_kibanasamp" ,
1062+ "cube_params" : [ "KibanaSampleDataEcommerce" ] ,
1063+ "expr" : "(LOWER(${KibanaSampleDataEcommerce.customer_gender}) = $0$)" ,
1064+ "grouping_set" : null,
1065+ } )
1066+ . to_string( ) , ] ) ,
1067+ time_dimensions: None ,
1068+ order: Some ( vec![ ] ) ,
1069+ limit: Some ( 50000 ) ,
1070+ offset: None ,
1071+ filters: None ,
1072+ ungrouped: None ,
1073+ }
1074+ ) ;
1075+
1076+ let _physical_plan = query_plan. as_physical_plan ( ) . await . unwrap ( ) ;
1077+ }
1078+
1079+ // There's a lot of breakage due to "aggregate function calls cannot be nested"
1080+ // TODO debug
1081+ // TODO add test like that
1082+
1083+ // TODO recheck this, it seems that specific cube (KibanaSampleDataEcommerce vs MultiTypeCube) can influence extraction
1084+ #[ tokio:: test]
1085+ async fn test_wrapper_double_agg_filter_flatten ( ) {
1086+ if !Rewriter :: sql_push_down_enabled ( ) {
1087+ return ;
1088+ }
1089+ init_testing_logger ( ) ;
1090+
1091+ let query_plan = convert_select_to_query_plan (
1092+ // language=PostgreSQL
1093+ r#"-- SELECT
1094+ -- "Staples"."dim_str2" AS "Prod Type2",
1095+ -- CAST(TRUNC(EXTRACT(MONTH FROM "Staples"."dim_date1")) AS INTEGER) AS "mn:Order Date:ok"
1096+ -- -- AVG("Staples"."avgPrice") AS "sum:Gross Profit:ok"
1097+ -- -- COUNT(*) as c
1098+ -- FROM "MultiTypeCube" "Staples"
1099+ -- WHERE
1100+ -- -- (CAST(TRUNC(EXTRACT(MONTH FROM "Staples"."dim_date1")) AS INTEGER) <= 8)
1101+ -- (Staples.dim_num1 % 100) <= 8
1102+ -- GROUP BY
1103+ -- 1,
1104+ -- 2
1105+
1106+ -- SELECT
1107+ -- "MultiTypeCube"."dim_str2" AS "Prod Type2",
1108+ -- CAST(TRUNC(EXTRACT(MONTH FROM "MultiTypeCube"."dim_date1")) AS INTEGER) AS "mn:Order Date:ok",
1109+ -- AVG("MultiTypeCube"."avgPrice") AS "sum:Gross Profit:ok"
1110+ -- FROM "MultiTypeCube" "MultiTypeCube"
1111+ -- WHERE
1112+ -- (CAST(TRUNC(EXTRACT(MONTH FROM "MultiTypeCube"."dim_date1")) AS INTEGER) <= 8)
1113+ -- GROUP BY
1114+ -- 1,
1115+ -- 2
1116+
1117+ SELECT
1118+ customer_gender,
1119+ CAST(TRUNC(EXTRACT(MONTH FROM order_date)) AS INTEGER),
1120+ AVG(avgPrice)
1121+ FROM
1122+ KibanaSampleDataEcommerce
1123+ WHERE
1124+ CAST(TRUNC(EXTRACT(MONTH FROM order_date)) AS INTEGER) <= 8
1125+ GROUP BY
1126+ 1, 2
1127+ "#
1128+ . to_string ( ) ,
1129+ DatabaseProtocol :: PostgreSQL ,
1130+ )
1131+ . await ;
1132+
10351133 assert_eq ! (
10361134 query_plan
10371135 . as_logical_plan( )
0 commit comments