diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 6b027d907cc8b..2b6c21e12b496 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -667,7 +667,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "chrono", @@ -837,7 +837,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -870,7 +870,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -881,7 +881,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "async-trait", "chrono", @@ -894,7 +894,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -905,7 +905,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubenativeutils/Cargo.lock b/rust/cubenativeutils/Cargo.lock index 21621c70efadf..e2cc185a85665 100644 --- a/rust/cubenativeutils/Cargo.lock +++ b/rust/cubenativeutils/Cargo.lock @@ -598,7 +598,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "chrono", @@ -690,7 +690,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -723,7 +723,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -734,7 +734,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "async-trait", "chrono", @@ -747,7 +747,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -758,7 +758,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index 903eb90eb9699..1973f1d85e295 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -697,7 +697,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "chrono", @@ -821,7 +821,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -854,7 +854,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "ordered-float 2.10.0", @@ -865,7 +865,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "async-trait", "chrono", @@ -878,7 +878,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -889,7 +889,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index 29ab86a7f8eda..f5908d950c4c9 100644 --- a/rust/cubesql/cubesql/Cargo.toml +++ b/rust/cubesql/cubesql/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://cube.dev" [dependencies] arc-swap = "1" -datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "e3bb7fe5b16461893234db44950f539c58081bfe", default-features = false, features = [ +datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "0ba29ac12e2b13444bd536e1cbe4f73411383521", default-features = false, features = [ "regex_expressions", "unicode_expressions", ] } diff --git a/rust/cubesql/cubesql/src/compile/mod.rs b/rust/cubesql/cubesql/src/compile/mod.rs index 4cc5f752d7496..e6bee5af10214 100644 --- a/rust/cubesql/cubesql/src/compile/mod.rs +++ b/rust/cubesql/cubesql/src/compile/mod.rs @@ -17549,4 +17549,41 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), displayable(physical_plan.as_ref()).indent() ); } + + #[tokio::test] + async fn test_subquery_inner_context() { + if !Rewriter::sql_push_down_enabled() { + return; + } + init_testing_logger(); + + let query_plan = convert_select_to_query_plan( + r#" + SELECT customer_gender + FROM KibanaSampleDataEcommerce + WHERE customer_gender IN ( + SELECT customer_gender + FROM KibanaSampleDataEcommerce + WHERE KibanaSampleDataEcommerce.order_date > '2025-01-01' + GROUP BY 1 + ) + GROUP BY 1 + "# + .to_string(), + DatabaseProtocol::PostgreSQL, + ) + .await; + + let logical_plan = query_plan.as_logical_plan(); + let sql = logical_plan.find_cube_scan_wrapped_sql().wrapped_sql.sql; + println!("Generated SQL: {}", sql); + assert!(sql.contains("2025-01-01")); + assert!(sql.contains("customer_gender} IN (SELECT")); + + let physical_plan = query_plan.as_physical_plan().await.unwrap(); + println!( + "Physical plan: {}", + displayable(physical_plan.as_ref()).indent() + ); + } } diff --git a/rust/cubesqlplanner/Cargo.lock b/rust/cubesqlplanner/Cargo.lock index 1e2875c350c4f..024ad1253d50c 100644 --- a/rust/cubesqlplanner/Cargo.lock +++ b/rust/cubesqlplanner/Cargo.lock @@ -617,7 +617,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "chrono", @@ -730,7 +730,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -763,7 +763,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -774,7 +774,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "async-trait", "chrono", @@ -787,7 +787,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow", @@ -798,7 +798,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3bb7fe5b16461893234db44950f539c58081bfe#e3bb7fe5b16461893234db44950f539c58081bfe" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=0ba29ac12e2b13444bd536e1cbe4f73411383521#0ba29ac12e2b13444bd536e1cbe4f73411383521" dependencies = [ "ahash 0.7.8", "arrow",