File tree Expand file tree Collapse file tree 1 file changed +56
-0
lines changed
rust/cubesql/cubesql/src/compile/test Expand file tree Collapse file tree 1 file changed +56
-0
lines changed Original file line number Diff line number Diff line change @@ -1240,3 +1240,59 @@ async fn select_agg_where_false() {
12401240 }
12411241 ) ;
12421242}
1243+
1244+ /// Aggregation(dimension) with falsy filter should NOT get pushed to CubeScan with limit=0
1245+ #[ tokio:: test]
1246+ async fn wrapper_dimension_agg_where_false ( ) {
1247+ if !Rewriter :: sql_push_down_enabled ( ) {
1248+ return ;
1249+ }
1250+ init_testing_logger ( ) ;
1251+
1252+ let query_plan = convert_select_to_query_plan (
1253+ // language=PostgreSQL
1254+ r#"
1255+ SELECT
1256+ MAX(customer_gender)
1257+ FROM
1258+ KibanaSampleDataEcommerce
1259+ WHERE 1 = 0
1260+ "#
1261+ . to_string ( ) ,
1262+ DatabaseProtocol :: PostgreSQL ,
1263+ )
1264+ . await ;
1265+
1266+ let physical_plan = query_plan. as_physical_plan ( ) . await . unwrap ( ) ;
1267+ println ! (
1268+ "Physical plan: {}" ,
1269+ displayable( physical_plan. as_ref( ) ) . indent( )
1270+ ) ;
1271+
1272+ let logical_plan = query_plan. as_logical_plan ( ) ;
1273+ assert_eq ! (
1274+ logical_plan. find_cube_scan( ) . request,
1275+ V1LoadRequestQuery {
1276+ measures: Some ( vec![ ] ) ,
1277+ dimensions: Some ( vec![ ] ) ,
1278+ segments: Some ( vec![ ] ) ,
1279+ order: Some ( vec![ ] ) ,
1280+ limit: Some ( 0 ) ,
1281+ ungrouped: Some ( true ) ,
1282+ ..Default :: default ( )
1283+ }
1284+ ) ;
1285+
1286+ assert ! ( logical_plan
1287+ . find_cube_scan_wrapper( )
1288+ . wrapped_sql
1289+ . unwrap( )
1290+ . sql
1291+ . contains( "\" limit\" :0" ) ) ;
1292+ assert ! ( logical_plan
1293+ . find_cube_scan_wrapper( )
1294+ . wrapped_sql
1295+ . unwrap( )
1296+ . sql
1297+ . contains( "\" ungrouped\" :true" ) ) ;
1298+ }
You can’t perform that action at this time.
0 commit comments