@@ -17883,4 +17883,72 @@ LIMIT {{ limit }}{% endif %}"#.to_string(),
17883
17883
}
17884
17884
)
17885
17885
}
17886
+
17887
+ #[tokio::test]
17888
+ async fn test_tableau_trunc_extract_year_and_month_rev() {
17889
+ if !Rewriter::sql_push_down_enabled() {
17890
+ return;
17891
+ }
17892
+ init_testing_logger();
17893
+
17894
+ let logical_plan = convert_select_to_query_plan(
17895
+ r#"
17896
+ SELECT SUM("KibanaSampleDataEcommerce"."sumPrice") AS "sum:sumPrice:ok"
17897
+ FROM "public"."KibanaSampleDataEcommerce" "KibanaSampleDataEcommerce"
17898
+ WHERE (
17899
+ "KibanaSampleDataEcommerce"."id" != 0
17900
+ AND CAST(TRUNC(EXTRACT(YEAR FROM "KibanaSampleDataEcommerce"."order_date")) AS INTEGER) = 2024
17901
+ AND CAST(TRUNC(EXTRACT(MONTH FROM "KibanaSampleDataEcommerce"."order_date")) AS INTEGER) = 2
17902
+ AND "KibanaSampleDataEcommerce"."customer_gender" IS NOT NULL
17903
+ )
17904
+ HAVING COUNT(1) > 0
17905
+ "#
17906
+ .to_string(),
17907
+ DatabaseProtocol::PostgreSQL,
17908
+ )
17909
+ .await
17910
+ .as_logical_plan();
17911
+
17912
+ assert_eq!(
17913
+ logical_plan.find_cube_scan().request,
17914
+ V1LoadRequestQuery {
17915
+ measures: Some(vec!["KibanaSampleDataEcommerce.sumPrice".to_string(),]),
17916
+ dimensions: Some(vec![]),
17917
+ segments: Some(vec![]),
17918
+ time_dimensions: Some(vec![V1LoadRequestQueryTimeDimension {
17919
+ dimension: "KibanaSampleDataEcommerce.order_date".to_string(),
17920
+ granularity: None,
17921
+ date_range: Some(json!(vec![
17922
+ "2024-02-01".to_string(),
17923
+ "2024-02-29".to_string(),
17924
+ ])),
17925
+ }]),
17926
+ order: Some(vec![]),
17927
+ filters: Some(vec![
17928
+ V1LoadRequestQueryFilterItem {
17929
+ member: Some("KibanaSampleDataEcommerce.id".to_string()),
17930
+ operator: Some("notEquals".to_string()),
17931
+ values: Some(vec!["0".to_string()]),
17932
+ or: None,
17933
+ and: None,
17934
+ },
17935
+ V1LoadRequestQueryFilterItem {
17936
+ member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()),
17937
+ operator: Some("set".to_string()),
17938
+ values: None,
17939
+ or: None,
17940
+ and: None,
17941
+ },
17942
+ V1LoadRequestQueryFilterItem {
17943
+ member: Some("KibanaSampleDataEcommerce.count".to_string()),
17944
+ operator: Some("gt".to_string()),
17945
+ values: Some(vec!["0".to_string()]),
17946
+ or: None,
17947
+ and: None,
17948
+ },
17949
+ ]),
17950
+ ..Default::default()
17951
+ }
17952
+ )
17953
+ }
17886
17954
}
0 commit comments