@@ -3165,6 +3165,83 @@ ORDER BY \"COUNT(count)\" DESC"
31653165 );
31663166 }
31673167
3168+ #[tokio::test]
3169+ async fn superset_pg_time_filter_with_generalized_filters() {
3170+ init_logger();
3171+
3172+ let query_plan = convert_select_to_query_plan(
3173+ "SELECT DATE_TRUNC('week', \"order_date\") AS __timestamp,
3174+ count(count) AS \"COUNT(count)\"
3175+ FROM public.\"KibanaSampleDataEcommerce\"
3176+ WHERE \"customer_gender\" = 'female'\
3177+ AND \"order_date\" >= TO_TIMESTAMP('2021-05-15 00:00:00.000000', 'YYYY-MM-DD HH24:MI:SS.US')
3178+ AND \"customer_gender\" LIKE '%fem%'
3179+ AND \"customer_gender\" LIKE '%fe%'
3180+ AND \"order_date\" < TO_TIMESTAMP('2022-05-15 00:00:00.000000', 'YYYY-MM-DD HH24:MI:SS.US')
3181+ AND \"customer_gender\" LIKE '%f%'
3182+ GROUP BY DATE_TRUNC('week', \"order_date\")
3183+ ORDER BY \"COUNT(count)\" DESC"
3184+ .to_string(),
3185+ DatabaseProtocol::PostgreSQL,
3186+ )
3187+ .await;
3188+
3189+ let logical_plan = query_plan.as_logical_plan();
3190+ assert_eq!(
3191+ logical_plan.find_cube_scan().request,
3192+ V1LoadRequestQuery {
3193+ measures: Some(vec!["KibanaSampleDataEcommerce.count".to_string()]),
3194+ segments: Some(vec![]),
3195+ dimensions: Some(vec![]),
3196+ time_dimensions: Some(vec![V1LoadRequestQueryTimeDimension {
3197+ dimension: "KibanaSampleDataEcommerce.order_date".to_string(),
3198+ granularity: Some("week".to_string()),
3199+ date_range: Some(json!(vec![
3200+ "2021-05-15T00:00:00.000Z".to_string(),
3201+ "2022-05-14T23:59:59.999Z".to_string()
3202+ ]))
3203+ }]),
3204+ order: Some(vec![vec![
3205+ "KibanaSampleDataEcommerce.count".to_string(),
3206+ "desc".to_string()
3207+ ]]),
3208+ limit: None,
3209+ offset: None,
3210+ filters: Some(vec![
3211+ V1LoadRequestQueryFilterItem {
3212+ member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()),
3213+ operator: Some("equals".to_string()),
3214+ values: Some(vec!["female".to_string()]),
3215+ or: None,
3216+ and: None
3217+ },
3218+ V1LoadRequestQueryFilterItem {
3219+ member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()),
3220+ operator: Some("contains".to_string()),
3221+ values: Some(vec!["fem".to_string()]),
3222+ or: None,
3223+ and: None
3224+ },
3225+ V1LoadRequestQueryFilterItem {
3226+ member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()),
3227+ operator: Some("contains".to_string()),
3228+ values: Some(vec!["fe".to_string()]),
3229+ or: None,
3230+ and: None
3231+ },
3232+ V1LoadRequestQueryFilterItem {
3233+ member: Some("KibanaSampleDataEcommerce.customer_gender".to_string()),
3234+ operator: Some("contains".to_string()),
3235+ values: Some(vec!["f".to_string()]),
3236+ or: None,
3237+ and: None
3238+ }
3239+ ]),
3240+ ungrouped: None,
3241+ }
3242+ );
3243+ }
3244+
31683245 #[tokio::test]
31693246 async fn power_bi_dimension_only() {
31703247 init_logger();
0 commit comments