Skip to content

Commit 76038a2

Browse files
committed
chore(cubesql): Add tests for SUM(1)
1 parent 33a51f2 commit 76038a2

File tree

1 file changed

+63
-18
lines changed
  • rust/cubesql/cubesql/src/compile

1 file changed

+63
-18
lines changed

rust/cubesql/cubesql/src/compile/mod.rs

Lines changed: 63 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)