diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index a12db095b2ef3..82d4b17525110 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "arrow", "chrono", @@ -838,7 +838,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "ahash 0.7.8", "arrow", @@ -871,7 +871,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -882,7 +882,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "async-trait", "chrono", @@ -895,7 +895,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "ahash 0.7.8", "arrow", @@ -906,7 +906,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "ahash 0.7.8", "arrow", @@ -3108,7 +3108,7 @@ dependencies = [ [[package]] name = "sqlparser" version = "0.16.0" -source = "git+https://github.com/cube-js/sqlparser-rs.git?rev=e14d5bf45367edd8679cbc15ccee56693da8e4fb#e14d5bf45367edd8679cbc15ccee56693da8e4fb" +source = "git+https://github.com/cube-js/sqlparser-rs.git?rev=16f051486de78a23a0ff252155dd59fc2d35497d#16f051486de78a23a0ff252155dd59fc2d35497d" dependencies = [ "log", ] diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index 9afd011a25bdf..fa25e6fe03543 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" 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=6ac106244a1d4699f36d2bcbf435ca37363d1e21#6ac106244a1d4699f36d2bcbf435ca37363d1e21" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=46de6806e4faae260691b5b1269a54785e76c76f#46de6806e4faae260691b5b1269a54785e76c76f" dependencies = [ "ahash 0.7.8", "arrow", @@ -2946,7 +2946,7 @@ dependencies = [ [[package]] name = "sqlparser" version = "0.16.0" -source = "git+https://github.com/cube-js/sqlparser-rs.git?rev=e14d5bf45367edd8679cbc15ccee56693da8e4fb#e14d5bf45367edd8679cbc15ccee56693da8e4fb" +source = "git+https://github.com/cube-js/sqlparser-rs.git?rev=16f051486de78a23a0ff252155dd59fc2d35497d#16f051486de78a23a0ff252155dd59fc2d35497d" dependencies = [ "log", ] diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index 6ef2a1a01a5a9..7c8aa181b19af 100644 --- a/rust/cubesql/cubesql/Cargo.toml +++ b/rust/cubesql/cubesql/Cargo.toml @@ -10,14 +10,14 @@ homepage = "https://cube.dev" [dependencies] arc-swap = "1" -datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "6ac106244a1d4699f36d2bcbf435ca37363d1e21", default-features = false, features = [ +datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "46de6806e4faae260691b5b1269a54785e76c76f", default-features = false, features = [ "regex_expressions", "unicode_expressions", ] } thiserror = "2" cubeclient = { path = "../cubeclient" } pg-srv = { path = "../pg-srv" } -sqlparser = { git = 'https://github.com/cube-js/sqlparser-rs.git', rev = "e14d5bf45367edd8679cbc15ccee56693da8e4fb" } +sqlparser = { git = 'https://github.com/cube-js/sqlparser-rs.git', rev = "16f051486de78a23a0ff252155dd59fc2d35497d" } base64 = "0.13.0" tokio = { version = "^1.35", features = ["full", "rt", "tracing"] } serde = { version = "^1.0", features = ["derive"] } diff --git a/rust/cubesql/cubesql/src/compile/plan.rs b/rust/cubesql/cubesql/src/compile/plan.rs index 0cebadbdb2df8..d452cc8fce07c 100644 --- a/rust/cubesql/cubesql/src/compile/plan.rs +++ b/rust/cubesql/cubesql/src/compile/plan.rs @@ -28,6 +28,8 @@ pub enum CommandCompletion { Commit, Use, Rollback, + Savepoint, + Release, Set, Select(u32), DeclareCursor, diff --git a/rust/cubesql/cubesql/src/compile/router.rs b/rust/cubesql/cubesql/src/compile/router.rs index 4d5cbe28cd25b..064eea803c452 100644 --- a/rust/cubesql/cubesql/src/compile/router.rs +++ b/rust/cubesql/cubesql/src/compile/router.rs @@ -132,6 +132,20 @@ impl QueryRouter { CommandCompletion::Rollback, )) } + (ast::Statement::Savepoint { .. }, DatabaseProtocol::PostgreSQL) => { + // TODO: Real support + Ok(QueryPlan::MetaOk( + StatusFlags::empty(), + CommandCompletion::Savepoint, + )) + } + (ast::Statement::Release { .. }, DatabaseProtocol::PostgreSQL) => { + // TODO: Real support + Ok(QueryPlan::MetaOk( + StatusFlags::empty(), + CommandCompletion::Release, + )) + } (ast::Statement::Discard { object_type }, DatabaseProtocol::PostgreSQL) => { // TODO: Cursors + Portals self.state.clear_prepared_statements().await; diff --git a/rust/cubesql/cubesql/src/sql/types.rs b/rust/cubesql/cubesql/src/sql/types.rs index 9df4e1670440a..323b9841f0447 100644 --- a/rust/cubesql/cubesql/src/sql/types.rs +++ b/rust/cubesql/cubesql/src/sql/types.rs @@ -129,6 +129,8 @@ impl CommandCompletion { CommandCompletion::Prepare => CommandComplete::Plain("PREPARE".to_string()), CommandCompletion::Commit => CommandComplete::Plain("COMMIT".to_string()), CommandCompletion::Rollback => CommandComplete::Plain("ROLLBACK".to_string()), + CommandCompletion::Savepoint => CommandComplete::Plain("SAVEPOINT".to_string()), + CommandCompletion::Release => CommandComplete::Plain("RELEASE".to_string()), CommandCompletion::Set => CommandComplete::Plain("SET".to_string()), CommandCompletion::Use => CommandComplete::Plain("USE".to_string()), CommandCompletion::DeclareCursor => {