@@ -3307,27 +3307,72 @@ mod tests {
33073307
33083308 #[tokio::test]
33093309 async fn tableau_having_count_on_cube_without_count() {
3310+ if !Rewriter::sql_push_down_enabled() {
3311+ return;
3312+ }
33103313 init_logger();
33113314
3312- // let query_plan = convert_select_to_query_plan(
3313- // "SELECT COUNT(DISTINCT \"Logs\".\"agentCount\") AS \"sum:count:ok\" FROM \"public\".\"Logs\" \"Logs\" HAVING (COUNT(1) > 0)".to_string(),
3314- // DatabaseProtocol::PostgreSQL,
3315- // ).await;
3315+ let query_plan = convert_select_to_query_plan(
3316+ "SELECT COUNT(DISTINCT \"Logs\".\"agentCount\") AS \"sum:count:ok\" FROM \"public\".\"Logs\" \"Logs\" HAVING (COUNT(1) > 0)".to_string(),
3317+ DatabaseProtocol::PostgreSQL,
3318+ ).await;
33163319
3317- // let logical_plan = query_plan.as_logical_plan();
3318- // assert_eq!(
3319- // logical_plan.find_cube_scan().request,
3320- // V1LoadRequestQuery {
3321- // measures: Some(vec!["Logs.agentCount".to_string()]),
3322- // segments: Some(vec![]),
3323- // dimensions: Some(vec![]),
3324- // time_dimensions: None,
3325- // order: None,
3326- // limit: None,
3327- // offset: None,
3328- // filters: None,
3329- // }
3330- // );
3320+ let physical_plan = query_plan.as_physical_plan().await.unwrap();
3321+ println!(
3322+ "Physical plan: {}",
3323+ displayable(physical_plan.as_ref()).indent()
3324+ );
3325+
3326+ let logical_plan = query_plan.as_logical_plan();
3327+ assert_eq!(
3328+ logical_plan.find_cube_scan().request,
3329+ V1LoadRequestQuery {
3330+ measures: Some(vec![]),
3331+ segments: Some(vec![]),
3332+ dimensions: Some(vec![]),
3333+ time_dimensions: None,
3334+ order: None,
3335+ limit: None,
3336+ offset: None,
3337+ filters: None,
3338+ ungrouped: Some(true),
3339+ }
3340+ );
3341+ }
3342+
3343+ #[tokio::test]
3344+ async fn tableau_having_count_with_sum_on_cube_without_count() {
3345+ if !Rewriter::sql_push_down_enabled() {
3346+ return;
3347+ }
3348+ init_logger();
3349+
3350+ let query_plan = convert_select_to_query_plan(
3351+ "SELECT COUNT(DISTINCT \"Logs\".\"agentCount\") AS \"sum:count:ok\", SUM(1) AS \"count:ok\" FROM \"public\".\"Logs\" \"Logs\" HAVING (COUNT(1) > 0)".to_string(),
3352+ DatabaseProtocol::PostgreSQL,
3353+ ).await;
3354+
3355+ let physical_plan = query_plan.as_physical_plan().await.unwrap();
3356+ println!(
3357+ "Physical plan: {}",
3358+ displayable(physical_plan.as_ref()).indent()
3359+ );
3360+
3361+ let logical_plan = query_plan.as_logical_plan();
3362+ assert_eq!(
3363+ logical_plan.find_cube_scan().request,
3364+ V1LoadRequestQuery {
3365+ measures: Some(vec![]),
3366+ segments: Some(vec![]),
3367+ dimensions: Some(vec![]),
3368+ time_dimensions: None,
3369+ order: None,
3370+ limit: None,
3371+ offset: None,
3372+ filters: None,
3373+ ungrouped: Some(true),
3374+ }
3375+ );
33313376 }
33323377
33333378 #[tokio::test]
0 commit comments