From ccd9977d336d065f9bf419b53c21223ec5fdd89b Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Tue, 10 Sep 2024 22:24:03 +0200 Subject: [PATCH] BREAKING CHANGE(cubesql): Enable CUBESQL_SQL_NO_IMPLICIT_ORDER by default It's started to be true. it means that SQL API will not add ordering to queries that doesn't specify ORDER BY, previusly it was true only for ungrouped queries --- rust/cubesql/cubesql/src/compile/mod.rs | 309 +++++++++--------- .../cubesql/src/compile/rewrite/converter.rs | 7 +- .../src/compile/test/test_bi_workarounds.rs | 2 +- rust/cubesql/cubesql/src/config/mod.rs | 4 +- 4 files changed, 160 insertions(+), 162 deletions(-) diff --git a/rust/cubesql/cubesql/src/compile/mod.rs b/rust/cubesql/cubesql/src/compile/mod.rs index 765d3a7d0c3fd..ee7316ed39f25 100644 --- a/rust/cubesql/cubesql/src/compile/mod.rs +++ b/rust/cubesql/cubesql/src/compile/mod.rs @@ -80,7 +80,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -124,7 +124,7 @@ mod tests { "MultiTypeCube.dim_num2".to_string(), ]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -163,7 +163,7 @@ mod tests { "MultiTypeCube.dim_str1".to_string(), ]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -186,7 +186,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -209,7 +209,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -237,7 +237,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -269,7 +269,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -310,7 +310,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -341,7 +341,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -370,7 +370,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -405,7 +405,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -496,7 +496,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -537,7 +537,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1143,7 +1143,7 @@ mod tests { "KibanaSampleDataEcommerce.taxful_total_price".to_string() ]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1178,7 +1178,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1274,7 +1274,7 @@ mod tests { segments: Some(vec!["KibanaSampleDataEcommerce.is_female".to_string()]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1301,7 +1301,7 @@ mod tests { segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![ @@ -1344,7 +1344,7 @@ mod tests { "KibanaSampleDataEcommerce.taxful_total_price".to_string() ]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1402,7 +1402,7 @@ mod tests { "2022-04-01T00:00:00.000Z".to_string() ])) }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1684,7 +1684,7 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1771,7 +1771,7 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1823,7 +1823,7 @@ ORDER BY \"COUNT(count)\" DESC" granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1849,7 +1849,7 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1879,7 +1879,7 @@ ORDER BY \"COUNT(count)\" DESC" granularity: Some("year".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1904,7 +1904,7 @@ ORDER BY \"COUNT(count)\" DESC" granularity: Some("year".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1934,7 +1934,7 @@ ORDER BY \"COUNT(count)\" DESC" granularity: Some("week".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -1960,7 +1960,7 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -1992,7 +1992,7 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -2024,7 +2024,7 @@ ORDER BY \"COUNT(count)\" DESC" segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -2070,7 +2070,7 @@ GROUP BY segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -2129,7 +2129,7 @@ GROUP BY dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -2189,7 +2189,7 @@ GROUP BY date_range: None, }, ]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -2243,7 +2243,7 @@ GROUP BY "2022-06-12T23:59:59.999Z".to_string() ])), }]), - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: None, @@ -2354,7 +2354,7 @@ limit dimensions: Some(vec!["WideCube.dim1".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: Some(vec![ @@ -2549,7 +2549,7 @@ limit date_range: None, } ]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -2701,7 +2701,7 @@ from // dimensions: Some(vec![]), // segments: Some(vec![]), // time_dimensions: None, - // order: None, + // order: Some(vec![]), // limit: None, // offset: None, // filters: None, @@ -2728,7 +2728,7 @@ from dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -2776,7 +2776,7 @@ from dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -2830,7 +2830,7 @@ from // dimensions: Some(vec!["Logs.content".to_string()]), // segments: Some(vec![]), // time_dimensions: None, - // order: None, + // order: Some(vec![]), // limit: Some(1000001), // offset: None, // filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -2850,7 +2850,7 @@ from dimensions: Some(vec!["Logs.content".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -2922,7 +2922,7 @@ limit "2024-01-01T00:00:00.000Z".to_string() ])), }]), - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -2990,7 +2990,7 @@ limit dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: None, @@ -3061,7 +3061,7 @@ limit // "2024-01-01T00:00:00.000Z".to_string() // ])), // }]), - // order: None, + // order: Some(vec![]), // limit: Some(1000001), // offset: None, // filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -3086,7 +3086,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3100,7 +3100,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3114,7 +3114,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3128,7 +3128,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3142,7 +3142,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3156,7 +3156,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3170,7 +3170,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3210,7 +3210,7 @@ limit dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3357,7 +3357,7 @@ limit granularity: Some(expected_granularity.to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -3411,7 +3411,7 @@ limit granularity: Some("quarter".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -5107,7 +5107,7 @@ limit segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000), offset: None, filters: None, @@ -5176,7 +5176,7 @@ ORDER BY "ca_4" ASC segments: Some(vec![]), dimensions: Some(vec!["Logs.read".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -5240,7 +5240,7 @@ ORDER BY granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -5279,7 +5279,7 @@ ORDER BY granularity: Some("quarter".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -5364,7 +5364,7 @@ ORDER BY granularity: Some("day".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -5405,7 +5405,7 @@ ORDER BY granularity: Some("year".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -5452,7 +5452,7 @@ ORDER BY segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000), offset: None, filters: None, @@ -6882,7 +6882,7 @@ ORDER BY granularity: Some("day".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -6962,6 +6962,7 @@ ORDER BY MIN(month_count) min_month_count FROM count_by_month GROUP BY quarter0 + ORDER BY quarter0 ASC "#; let expected_cube_scan = V1LoadRequestQuery { @@ -6973,7 +6974,7 @@ ORDER BY granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -7082,7 +7083,7 @@ ORDER BY granularity: Some("day".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -7361,7 +7362,7 @@ ORDER BY segments: Some(vec![]), dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -7631,7 +7632,7 @@ ORDER BY dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -7715,7 +7716,7 @@ ORDER BY dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -7937,7 +7938,7 @@ ORDER BY "source"."str0" ASC granularity: Some("year".to_owned()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -8182,7 +8183,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -8405,7 +8406,7 @@ ORDER BY "source"."str0" ASC granularity: Some("week".to_string()), date_range: None, },]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -8502,7 +8503,7 @@ ORDER BY "source"."str0" ASC granularity: Some(expected_granularity.to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -8589,7 +8590,7 @@ ORDER BY "source"."str0" ASC "2022-07-11T19:00:00.000Z".to_string() ])), }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -8629,7 +8630,7 @@ ORDER BY "source"."str0" ASC granularity: Some("second".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -8684,7 +8685,7 @@ ORDER BY "source"."str0" ASC granularity: Some(granularity.to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -8989,7 +8990,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(50000), offset: None, filters: None, @@ -9010,7 +9011,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(200), offset: Some(200), filters: None, @@ -9078,7 +9079,7 @@ ORDER BY "source"."str0" ASC granularity: Some(granularity.to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9124,7 +9125,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9162,7 +9163,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_owned()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9270,7 +9271,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9289,7 +9290,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9352,7 +9353,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9374,7 +9375,7 @@ ORDER BY "source"."str0" ASC granularity: Some("quarter".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -9609,7 +9610,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -9651,7 +9652,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -9697,7 +9698,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -9744,7 +9745,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![ @@ -9798,7 +9799,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -9843,7 +9844,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -9892,7 +9893,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -9942,7 +9943,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![ @@ -9999,7 +10000,7 @@ ORDER BY "source"."str0" ASC "2019-12-31".to_string(), ])), },]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -10175,7 +10176,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -10202,7 +10203,7 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -10242,7 +10243,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec![]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -11187,7 +11188,7 @@ ORDER BY "source"."str0" ASC }) .collect::>() ), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -11325,7 +11326,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_owned()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -11734,7 +11735,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -11796,7 +11797,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -11963,7 +11964,7 @@ ORDER BY "source"."str0" ASC "2022-11-15T23:59:59.999Z".to_string(), ])) }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -12021,7 +12022,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -12068,7 +12069,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(10001), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -12490,7 +12491,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12579,7 +12580,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12619,7 +12620,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12660,7 +12661,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12737,7 +12738,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -12821,7 +12822,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12858,7 +12859,7 @@ ORDER BY "source"."str0" ASC granularity: Some("day".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12902,7 +12903,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12946,7 +12947,7 @@ ORDER BY "source"."str0" ASC date_range: None }, ]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -12982,7 +12983,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13016,7 +13017,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13084,7 +13085,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13203,7 +13204,7 @@ ORDER BY "source"."str0" ASC granularity: Some("day".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13423,7 +13424,7 @@ ORDER BY "source"."str0" ASC granularity: Some("week".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13469,7 +13470,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13551,7 +13552,7 @@ ORDER BY "source"."str0" ASC granularity: Some("quarter".to_owned()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13596,7 +13597,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13725,7 +13726,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13766,7 +13767,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -13944,7 +13945,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -14064,7 +14065,7 @@ ORDER BY "source"."str0" ASC granularity: Some("year".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -14134,7 +14135,7 @@ ORDER BY "source"."str0" ASC // Order and Limit and nearly pushed to CubeScan but the Projection // before TableScan is a post-processing projection. // Splitting such projections into two may be a good idea. - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -14258,7 +14259,7 @@ ORDER BY "source"."str0" ASC "2022-11-20T23:59:59.999Z".to_string(), ])) }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15281,7 +15282,7 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["MultiTypeCube.dim_date0".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15366,7 +15367,7 @@ ORDER BY "source"."str0" ASC granularity: Some(expected_granularity.to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15415,7 +15416,7 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["MultiTypeCube.dim_date0".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15499,7 +15500,7 @@ ORDER BY "source"."str0" ASC granularity: Some(expected_granularity.to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15549,7 +15550,7 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["MultiTypeCube.dim_str0".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15662,7 +15663,7 @@ ORDER BY "source"."str0" ASC segments: Some(vec![]), dimensions: Some(vec!["MultiTypeCube.dim_str0".to_string()]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -15990,7 +15991,7 @@ ORDER BY "source"."str0" ASC granularity: Some("quarter".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: Some(1000), offset: None, filters: None, @@ -16028,7 +16029,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16069,7 +16070,7 @@ ORDER BY "source"."str0" ASC granularity: Some("month".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16140,7 +16141,7 @@ ORDER BY "source"."str0" ASC date_range: None, } ]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16181,7 +16182,7 @@ ORDER BY "source"."str0" ASC granularity: Some("day".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16243,7 +16244,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16285,7 +16286,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(25000), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -16340,7 +16341,7 @@ ORDER BY "source"."str0" ASC "2020-01-01".to_string(), ])), }]), - order: None, + order: Some(vec![]), limit: Some(25000), offset: None, filters: None, @@ -16382,7 +16383,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(25000), offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -16525,7 +16526,7 @@ ORDER BY "source"."str0" ASC granularity: Some("day".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16627,7 +16628,7 @@ ORDER BY "source"."str0" ASC dimensions: Some(vec!["KibanaSampleDataEcommerce.order_date".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -16757,7 +16758,7 @@ ORDER BY "source"."str0" ASC ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -17218,7 +17219,7 @@ ORDER BY "source"."str0" ASC granularity: Some("year".to_string()), date_range: None, }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -17418,7 +17419,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -17723,7 +17724,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), granularity: Some("day".to_owned()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -17801,7 +17802,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), "2023-12-31 23:59:59.999".to_string() ])), }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -17849,7 +17850,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), granularity: Some("quarter".to_string()), date_range: None }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { @@ -18053,7 +18054,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), date_range: None }, ]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -18107,7 +18108,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), "2024-12-31T23:59:59.999Z".to_string(), ])), },]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -18150,7 +18151,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(500), offset: None, filters: None, @@ -18286,7 +18287,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), ]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -18337,7 +18338,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), "2019-01-31T23:59:59.999Z".to_string() ])) }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![ @@ -18423,7 +18424,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), "2019-01-01T00:00:00.000Z".to_string() ])) }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: None, @@ -18587,7 +18588,7 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), "2024-02-29".to_string() ])) }]), - order: None, + order: Some(vec![]), limit: None, offset: None, filters: Some(vec![V1LoadRequestQueryFilterItem { diff --git a/rust/cubesql/cubesql/src/compile/rewrite/converter.rs b/rust/cubesql/cubesql/src/compile/rewrite/converter.rs index 32fb6ec754778..fd908d44d21a9 100644 --- a/rust/cubesql/cubesql/src/compile/rewrite/converter.rs +++ b/rust/cubesql/cubesql/src/compile/rewrite/converter.rs @@ -2045,12 +2045,9 @@ impl LanguageToLogicalPlanConverter { query.order = if !query_order.is_empty() { Some(query_order) } else { - // Probably if no order was specified in client SQL, + // If no order was specified in client SQL, // there should be no order implicitly added. - // But this is a breaking change. So for now, - // only for ungrouped queries no implicit order is added - // and there is an env flag: CUBESQL_SQL_NO_IMPLICIT_ORDER - // in case when it is set to true - no implicit order is + // in case when CUBESQL_SQL_NO_IMPLICIT_ORDER it is set to true - no implicit order is // added for all queries. // We need to return empty array so the processing in // BaseQuery.js won't automatically add default order diff --git a/rust/cubesql/cubesql/src/compile/test/test_bi_workarounds.rs b/rust/cubesql/cubesql/src/compile/test/test_bi_workarounds.rs index 19e9b5b30b06f..fc8d990339dcc 100644 --- a/rust/cubesql/cubesql/src/compile/test/test_bi_workarounds.rs +++ b/rust/cubesql/cubesql/src/compile/test/test_bi_workarounds.rs @@ -44,7 +44,7 @@ async fn test_powerbi_count_distinct_with_max_case() { dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]), segments: Some(vec![]), time_dimensions: None, - order: None, + order: Some(vec![]), limit: Some(1000001), offset: None, filters: None, diff --git a/rust/cubesql/cubesql/src/config/mod.rs b/rust/cubesql/cubesql/src/config/mod.rs index 1f73528e00df1..19c4110f894b1 100644 --- a/rust/cubesql/cubesql/src/config/mod.rs +++ b/rust/cubesql/cubesql/src/config/mod.rs @@ -168,7 +168,7 @@ impl ConfigObjImpl { stream_mode: env_parse("CUBESQL_STREAM_MODE", false), non_streaming_query_max_row_limit: env_parse("CUBEJS_DB_QUERY_LIMIT", 50000), max_sessions: env_parse("CUBEJS_MAX_SESSIONS", 1024), - no_implicit_order: env_parse("CUBESQL_SQL_NO_IMPLICIT_ORDER", false), + no_implicit_order: env_parse("CUBESQL_SQL_NO_IMPLICIT_ORDER", true), } } } @@ -266,7 +266,7 @@ impl Config { stream_mode: false, non_streaming_query_max_row_limit: 50000, max_sessions: 1024, - no_implicit_order: false, + no_implicit_order: true, }), } }