Skip to content

Commit 5aa29b0

Browse files
committed
more double agg tests
1 parent f910523 commit 5aa29b0

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

rust/cubesql/cubesql/src/compile/test/test_wrapper.rs

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

Comments
 (0)