From c0065a7814ca3b10266acf70ced0a572e6fa28b2 Mon Sep 17 00:00:00 2001 From: Mikhail Cheshkov Date: Wed, 29 Jan 2025 14:41:38 +0200 Subject: [PATCH] test(cubesql): Test for explicit members in a simple wrapper with cast --- .../cubesql/src/compile/test/test_wrapper.rs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/rust/cubesql/cubesql/src/compile/test/test_wrapper.rs b/rust/cubesql/cubesql/src/compile/test/test_wrapper.rs index fc6267d32c44e..700f730c5cb93 100644 --- a/rust/cubesql/cubesql/src/compile/test/test_wrapper.rs +++ b/rust/cubesql/cubesql/src/compile/test/test_wrapper.rs @@ -1417,3 +1417,41 @@ async fn wrapper_agg_dimension_over_limit() { .sql .contains("\"ungrouped\": true")); } + +/// Simple wrapper with cast should have explicit members, not zero +#[tokio::test] +async fn wrapper_cast_explicit_members() { + if !Rewriter::sql_push_down_enabled() { + return; + } + init_testing_logger(); + + let query_plan = convert_select_to_query_plan( + // language=PostgreSQL + r#" + SELECT + CAST(dim_date0 AS DATE) AS "dim_date0" + FROM + MultiTypeCube + LIMIT 10 + ; + "# + .to_string(), + DatabaseProtocol::PostgreSQL, + ) + .await; + + let physical_plan = query_plan.as_physical_plan().await.unwrap(); + println!( + "Physical plan: {}", + displayable(physical_plan.as_ref()).indent() + ); + + // Query should mention just a single member + let request = query_plan + .as_logical_plan() + .find_cube_scan_wrapped_sql() + .request; + assert_eq!(request.measures.unwrap().len(), 1); + assert_eq!(request.dimensions.unwrap().len(), 0); +}