From 5d571d4229a5419ddf5340739c6af64b87769b2e Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Wed, 29 Apr 2026 18:17:11 +0400 Subject: [PATCH 1/3] fix(cubesql): Preserve errors when panicking (#10771) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> --- packages/cubejs-backend-native/Cargo.lock | 12 ++++++------ rust/cubesql/Cargo.lock | 12 ++++++------ rust/cubesql/cubesql/Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 94503944e574b..010cf421df2c1 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -702,7 +702,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "arrow", "chrono", @@ -878,7 +878,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "ahash 0.7.8", "arrow", @@ -911,7 +911,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -922,7 +922,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "async-trait", "chrono", @@ -935,7 +935,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "ahash 0.7.8", "arrow", @@ -946,7 +946,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index 6a05dbbf142b3..c1700cd2ac499 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "arrow", "chrono", @@ -832,7 +832,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "ahash 0.7.8", "arrow", @@ -865,7 +865,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "arrow", "ordered-float 2.10.0", @@ -876,7 +876,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "async-trait", "chrono", @@ -889,7 +889,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "ahash 0.7.8", "arrow", @@ -900,7 +900,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=03e683e5967b9fe60eece7e7d469d87621e25439#03e683e5967b9fe60eece7e7d469d87621e25439" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index 9ff0de87961bf..c7f82f8abf70c 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 = "03e683e5967b9fe60eece7e7d469d87621e25439", default-features = false, features = [ +datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "66a5026b7cbd77829014d122cd80056b8904c614", default-features = false, features = [ "regex_expressions", "unicode_expressions", ] } From 6f3c031993a292acca7d7031b18e2e31c8523d1a Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Wed, 29 Apr 2026 20:08:30 +0400 Subject: [PATCH 2/3] fix(backend-native): Respect `isDataQuery` flag in `cubesql` endpoint (#10774) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> --- packages/cubejs-backend-native/src/node_export.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cubejs-backend-native/src/node_export.rs b/packages/cubejs-backend-native/src/node_export.rs index f1cfe06ed1d18..c844055f6623b 100644 --- a/packages/cubejs-backend-native/src/node_export.rs +++ b/packages/cubejs-backend-native/src/node_export.rs @@ -446,7 +446,7 @@ async fn handle_sql_query( }, "apiType": "sql", "duration": span_id.as_ref().unwrap().duration(), - "isDataQuery": true + "isDataQuery": span_id.as_ref().unwrap().is_data_query().await, }), ) .await?; From d6ca598d9080ffc960a63ac5ca4e7a02486385d6 Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Wed, 29 Apr 2026 22:05:44 +0400 Subject: [PATCH 3/3] fix(cubesql): Do not throw error on empty peer based evaluation in window aggregates (#10776) --- packages/cubejs-backend-native/Cargo.lock | 12 ++++++------ rust/cubesql/Cargo.lock | 12 ++++++------ rust/cubesql/cubesql/Cargo.toml | 2 +- rust/cubesql/cubesql/src/compile/mod.rs | 15 +++++++++++++++ ...ubesql__compile__tests__window_aggr_empty.snap | 8 ++++++++ 5 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__window_aggr_empty.snap diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 010cf421df2c1..516fa404fb777 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -702,7 +702,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "arrow", "chrono", @@ -878,7 +878,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "ahash 0.7.8", "arrow", @@ -911,7 +911,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -922,7 +922,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "async-trait", "chrono", @@ -935,7 +935,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "ahash 0.7.8", "arrow", @@ -946,7 +946,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index c1700cd2ac499..3c9068f01d873 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -707,7 +707,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "arrow", "chrono", @@ -832,7 +832,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "ahash 0.7.8", "arrow", @@ -865,7 +865,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "arrow", "ordered-float 2.10.0", @@ -876,7 +876,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "async-trait", "chrono", @@ -889,7 +889,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "ahash 0.7.8", "arrow", @@ -900,7 +900,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=66a5026b7cbd77829014d122cd80056b8904c614#66a5026b7cbd77829014d122cd80056b8904c614" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=fc9fa63d78671bf38f31c3319302579f7c3961de#fc9fa63d78671bf38f31c3319302579f7c3961de" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index c7f82f8abf70c..6b01e5fad3c0f 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 = "66a5026b7cbd77829014d122cd80056b8904c614", default-features = false, features = [ +datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "fc9fa63d78671bf38f31c3319302579f7c3961de", 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 0fb5f90b7f5a1..192080a2c8d11 100644 --- a/rust/cubesql/cubesql/src/compile/mod.rs +++ b/rust/cubesql/cubesql/src/compile/mod.rs @@ -18697,4 +18697,19 @@ LIMIT {{ limit }}{% endif %}"#.to_string(), } ) } + + #[tokio::test] + async fn test_window_aggr_empty() -> Result<(), CubeError> { + insta::assert_snapshot!( + "window_aggr_empty", + execute_query( + "SELECT oid, COUNT(*) OVER() AS c FROM pg_class WHERE oid < 0 GROUP BY 1" + .to_string(), + DatabaseProtocol::PostgreSQL + ) + .await? + ); + + Ok(()) + } } diff --git a/rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__window_aggr_empty.snap b/rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__window_aggr_empty.snap new file mode 100644 index 0000000000000..574dd50403cf6 --- /dev/null +++ b/rust/cubesql/cubesql/src/compile/snapshots/cubesql__compile__tests__window_aggr_empty.snap @@ -0,0 +1,8 @@ +--- +source: cubesql/src/compile/mod.rs +expression: "execute_query(\"SELECT oid, COUNT(*) OVER() AS c FROM pg_class WHERE oid < 0 GROUP BY 1\".to_string(),\nDatabaseProtocol::PostgreSQL).await?" +--- ++-----+---+ +| oid | c | ++-----+---+ ++-----+---+