diff --git a/CHANGELOG.md b/CHANGELOG.md
index 06079596e692f..656ca7dcbb529 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,24 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+### Bug Fixes
+
+- **api-gateway:** subscribe, added POST method ([#10266](https://github.com/cube-js/cube/issues/10266)) ([af53f8f](https://github.com/cube-js/cube/commit/af53f8f63ecb384c73fac3d0a88032ec152db8e3))
+- **server-core:** Access policies row filtering should respect member visibility ([#10257](https://github.com/cube-js/cube/issues/10257)) ([cc0e582](https://github.com/cube-js/cube/commit/cc0e5821669d6babe43d52264ebb3708fe8d1c0f))
+
+### Features
+
+- **cubestore:** Upgrade to DataFusion 46.0.1 ([#10215](https://github.com/cube-js/cube/issues/10215)) ([4ef3442](https://github.com/cube-js/cube/commit/4ef3442827b5c105c0f707674d4dae5ce282ae96))
+- **schema-compiler:** view's cubes multiple join path validation ([#10264](https://github.com/cube-js/cube/issues/10264)) ([d5fe933](https://github.com/cube-js/cube/commit/d5fe93351149362a52d73da36ce773c6960980d8))
+
+### BREAKING CHANGES
+
+- **server-core:** Policies not applicable due to member visibility may stop applying changing row level security filters
+
+- Linter
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Bug Fixes
diff --git a/DEPRECATION.md b/DEPRECATION.md
index c55794741cc52..9e933a771209a 100644
--- a/DEPRECATION.md
+++ b/DEPRECATION.md
@@ -67,6 +67,7 @@ features:
| Deprecated | [`CUBEJS_SCHEDULED_REFRESH_CONCURRENCY`](#cubejs_scheduled_refresh_concurrency) | v1.2.7 | |
| Deprecated | [Node.js 20](#nodejs-20) | v1.3.0 | |
| Deprecated | [`renewQuery` parameter of the `/v1/load` endpoint](#renewquery-parameter-of-the-v1load-endpoint) | v1.3.73 | |
+| Deprecated | [Elasticsearch driver](#elasticsearch-driver) | v1.6.0 | |
### Node.js 8
@@ -416,5 +417,13 @@ no more new features, only security updates. Please upgrade to Node.js 22 or hig
### `renewQuery` parameter of the `/v1/load` endpoint
+**Deprecated in Release: v1.3.73**
+
This parameter is deprecated and will be removed in future releases. See [cache control](https://cube.dev/docs/product/apis-integrations/rest-api#cache-control)
-options and use the new `cache` parameter of the `/v1/load` endpoint instead.
\ No newline at end of file
+options and use the new `cache` parameter of the `/v1/load` endpoint instead.
+
+### Elasticsearch driver
+
+**Deprecated in Release: v1.6.0**
+
+The Elasticsearch driver is deprecated and will be removed in a future release.
\ No newline at end of file
diff --git a/docs/pages/product/apis-integrations/javascript-sdk/reference/cubejs-client-core.mdx b/docs/pages/product/apis-integrations/javascript-sdk/reference/cubejs-client-core.mdx
index ea4d6ec090640..7bd0f1898d3d8 100644
--- a/docs/pages/product/apis-integrations/javascript-sdk/reference/cubejs-client-core.mdx
+++ b/docs/pages/product/apis-integrations/javascript-sdk/reference/cubejs-client-core.mdx
@@ -815,6 +815,7 @@ Name | Type | Optional? | Description |
`progressCallback` | | ✅ Yes | |
`subscribe` | `boolean` | ✅ Yes | Pass `true` to use continuous fetch behavior. |
`signal` | `AbortSignal` | ✅ Yes | AbortSignal to cancel the request. This allows you to manually abort requests using AbortController. |
+`baseRequestId` | `string` | ✅ Yes | Base request ID ([`spanId`](https://cube.dev/docs/product/apis-integrations/core-data-apis/rest-api#request-span-annotation)) to be used for the request. If not provided a random request ID will be generated. |
### `LoadResponse`
diff --git a/docs/pages/product/caching.mdx b/docs/pages/product/caching.mdx
index 301bb5ef7d7e4..300a85b461fa5 100644
--- a/docs/pages/product/caching.mdx
+++ b/docs/pages/product/caching.mdx
@@ -193,9 +193,9 @@ recommend always enabling background refresh.
### Default Refresh Keys
-The default values for `refresh_key` are
+The default values for `refresh_key` are:
-- `every: 2 minute` for Databricks, BigQuery, Athena, Snowflake, and Presto.
+- `every: 2 minute` for Athena, BigQuery, Databricks, Firebolt, Presto, and Snowflake.
- `every: 10 second` for all other databases.
You can use a custom SQL query to check if a refresh is required by changing the
diff --git a/docs/pages/product/configuration/data-sources/elasticsearch.mdx b/docs/pages/product/configuration/data-sources/elasticsearch.mdx
index 49a84cf6f2a0c..eba9efadd70fc 100644
--- a/docs/pages/product/configuration/data-sources/elasticsearch.mdx
+++ b/docs/pages/product/configuration/data-sources/elasticsearch.mdx
@@ -2,13 +2,11 @@
-
+
-Elastic integration, supported by Cube, is also available in Cube Cloud on the
-[Enterprise Premier](https://cube.dev/pricing) product tier.
-[Contact us](https://cube.dev/contact) for details.
+Elasticsearch driver is deprecated and will be removed in a future release.
-
+
## Prerequisites
diff --git a/lerna.json b/lerna.json
index 0bfb480590b23..1238ac39fe49b 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "1.5.16",
+ "version": "1.6.0",
"npmClient": "yarn",
"command": {
"bootstrap": {
diff --git a/packages/cubejs-api-gateway/CHANGELOG.md b/packages/cubejs-api-gateway/CHANGELOG.md
index db9f2df7775f3..a827cc3590089 100644
--- a/packages/cubejs-api-gateway/CHANGELOG.md
+++ b/packages/cubejs-api-gateway/CHANGELOG.md
@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+### Bug Fixes
+
+- **api-gateway:** subscribe, added POST method ([#10266](https://github.com/cube-js/cube/issues/10266)) ([af53f8f](https://github.com/cube-js/cube/commit/af53f8f63ecb384c73fac3d0a88032ec152db8e3))
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json
index 42fe1b3bfdd9f..c2ab716b1809b 100644
--- a/packages/cubejs-api-gateway/package.json
+++ b/packages/cubejs-api-gateway/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/api-gateway",
"description": "Cube.js API Gateway",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,9 +27,9 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/native": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/native": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@ungap/structured-clone": "^0.3.4",
"assert-never": "^1.4.0",
"body-parser": "^1.19.0",
@@ -53,7 +53,7 @@
"zod": "^4.1.13"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/express": "^4.17.21",
"@types/jest": "^29",
"@types/jsonwebtoken": "^9.0.2",
diff --git a/packages/cubejs-api-gateway/src/gateway.ts b/packages/cubejs-api-gateway/src/gateway.ts
index 2810cb91c5d98..96fd18fb2c8e5 100644
--- a/packages/cubejs-api-gateway/src/gateway.ts
+++ b/packages/cubejs-api-gateway/src/gateway.ts
@@ -346,6 +346,16 @@ class ApiGateway {
});
}));
+ app.post(`${this.basePath}/v1/subscribe`, jsonParser, userMiddlewares, userAsyncHandler(async (req: any, res) => {
+ await this.load({
+ query: req.body.query,
+ context: req.context,
+ res: this.resToResultFn(res),
+ queryType: req.body.queryType,
+ cacheMode: req.body.cache,
+ });
+ }));
+
app.get(`${this.basePath}/v1/sql`, userMiddlewares, userAsyncHandler(async (req: any, res) => {
// TODO parse req.query with zod/joi/...
diff --git a/packages/cubejs-athena-driver/CHANGELOG.md b/packages/cubejs-athena-driver/CHANGELOG.md
index dc460373c3fd6..4633d794c2ad7 100644
--- a/packages/cubejs-athena-driver/CHANGELOG.md
+++ b/packages/cubejs-athena-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/athena-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/athena-driver
diff --git a/packages/cubejs-athena-driver/package.json b/packages/cubejs-athena-driver/package.json
index 8afd763d7ba33..6dbed18f8fc9c 100644
--- a/packages/cubejs-athena-driver/package.json
+++ b/packages/cubejs-athena-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/athena-driver",
"description": "Cube.js Athena database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -30,13 +30,13 @@
"dependencies": {
"@aws-sdk/client-athena": "^3.22.0",
"@aws-sdk/credential-providers": "^3.22.0",
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"sqlstring": "^2.3.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"@types/ramda": "^0.27.40",
"typescript": "~5.2.2"
},
diff --git a/packages/cubejs-backend-cloud/CHANGELOG.md b/packages/cubejs-backend-cloud/CHANGELOG.md
index 826df68bab994..a3be55d9667f0 100644
--- a/packages/cubejs-backend-cloud/CHANGELOG.md
+++ b/packages/cubejs-backend-cloud/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/cloud
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/cloud
diff --git a/packages/cubejs-backend-cloud/package.json b/packages/cubejs-backend-cloud/package.json
index 9ac0342d19eb6..41857fa04fb98 100644
--- a/packages/cubejs-backend-cloud/package.json
+++ b/packages/cubejs-backend-cloud/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/cloud",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Cube Cloud package",
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
@@ -30,7 +30,7 @@
"devDependencies": {
"@babel/core": "^7.24.5",
"@babel/preset-env": "^7.24.5",
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/fs-extra": "^9.0.8",
"@types/jest": "^29",
"jest": "^29",
@@ -38,7 +38,7 @@
},
"dependencies": {
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/shared": "1.6.0",
"chokidar": "^3.5.1",
"env-var": "^6.3.0",
"form-data": "^4.0.0",
diff --git a/packages/cubejs-backend-maven/CHANGELOG.md b/packages/cubejs-backend-maven/CHANGELOG.md
index d6ea8f46d7bac..f0340b4227f4a 100644
--- a/packages/cubejs-backend-maven/CHANGELOG.md
+++ b/packages/cubejs-backend-maven/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/maven
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/maven
diff --git a/packages/cubejs-backend-maven/package.json b/packages/cubejs-backend-maven/package.json
index 0e238c7144084..6c704fd4259b4 100644
--- a/packages/cubejs-backend-maven/package.json
+++ b/packages/cubejs-backend-maven/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/maven",
"description": "Cube.js Maven Wrapper for java dependencies downloading",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -31,12 +31,12 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/shared": "1.6.0",
"source-map-support": "^0.5.19",
"xmlbuilder2": "^2.4.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"jest": "^29",
diff --git a/packages/cubejs-backend-native/CHANGELOG.md b/packages/cubejs-backend-native/CHANGELOG.md
index 506e9c1e660b2..f9c8e2a2c74b2 100644
--- a/packages/cubejs-backend-native/CHANGELOG.md
+++ b/packages/cubejs-backend-native/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/native
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json
index b23386c3ef11e..00b2fd78eb1b3 100644
--- a/packages/cubejs-backend-native/package.json
+++ b/packages/cubejs-backend-native/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/native",
- "version": "1.5.16",
+ "version": "1.6.0",
"author": "Cube Dev, Inc.",
"description": "Native module for Cube.js (binding to Rust codebase)",
"main": "dist/js/index.js",
@@ -36,7 +36,7 @@
"dist/js"
],
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"cargo-cp-artifact": "^0.1.9",
@@ -47,8 +47,8 @@
"uuid": "^8.3.2"
},
"dependencies": {
- "@cubejs-backend/cubesql": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/cubesql": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@cubejs-infra/post-installer": "^0.0.7"
},
"resources": {
diff --git a/packages/cubejs-backend-shared/CHANGELOG.md b/packages/cubejs-backend-shared/CHANGELOG.md
index d965772ebfae5..61036a4517606 100644
--- a/packages/cubejs-backend-shared/CHANGELOG.md
+++ b/packages/cubejs-backend-shared/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/shared
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json
index 25ea9afd08a4c..5b18981972a43 100644
--- a/packages/cubejs-backend-shared/package.json
+++ b/packages/cubejs-backend-shared/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/shared",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Shared code for Cube.js backend packages",
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
@@ -27,7 +27,7 @@
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/bytes": "^3.1.5",
"@types/cli-progress": "^3.9.1",
"@types/decompress": "^4.2.7",
diff --git a/packages/cubejs-base-driver/CHANGELOG.md b/packages/cubejs-base-driver/CHANGELOG.md
index 94e3c6119a04d..892a81e155fbc 100644
--- a/packages/cubejs-base-driver/CHANGELOG.md
+++ b/packages/cubejs-base-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/base-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/base-driver
diff --git a/packages/cubejs-base-driver/package.json b/packages/cubejs-base-driver/package.json
index d542908200d9f..92202b4e30644 100644
--- a/packages/cubejs-base-driver/package.json
+++ b/packages/cubejs-base-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/base-driver",
"description": "Cube.js Base Driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -33,11 +33,11 @@
"@aws-sdk/s3-request-presigner": "^3.49.0",
"@azure/identity": "^4.4.1",
"@azure/storage-blob": "^12.9.0",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/shared": "1.6.0",
"@google-cloud/storage": "^7.13.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"jest": "^29",
diff --git a/packages/cubejs-bigquery-driver/CHANGELOG.md b/packages/cubejs-bigquery-driver/CHANGELOG.md
index 39227b75124c6..6dab8753a511d 100644
--- a/packages/cubejs-bigquery-driver/CHANGELOG.md
+++ b/packages/cubejs-bigquery-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/bigquery-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/bigquery-driver
diff --git a/packages/cubejs-bigquery-driver/package.json b/packages/cubejs-bigquery-driver/package.json
index 87e88a6d43ab4..b7557dd277a21 100644
--- a/packages/cubejs-bigquery-driver/package.json
+++ b/packages/cubejs-bigquery-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/bigquery-driver",
"description": "Cube.js BigQuery database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -29,15 +29,15 @@
"main": "index.js",
"types": "dist/src/index.d.ts",
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/shared": "1.6.0",
"@google-cloud/bigquery": "^7.7.0",
"@google-cloud/storage": "^7.13.0",
"ramda": "^0.27.2"
},
"devDependencies": {
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/testing-shared": "1.6.0",
"@types/big.js": "^6.2.2",
"@types/dedent": "^0.7.0",
"@types/jest": "^29",
diff --git a/packages/cubejs-cli/CHANGELOG.md b/packages/cubejs-cli/CHANGELOG.md
index f75c82eb467cb..befc75d2d91d9 100644
--- a/packages/cubejs-cli/CHANGELOG.md
+++ b/packages/cubejs-cli/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package cubejs-cli
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package cubejs-cli
diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json
index 640af0de8de48..4c52002bcf61b 100644
--- a/packages/cubejs-cli/package.json
+++ b/packages/cubejs-cli/package.json
@@ -2,7 +2,7 @@
"name": "cubejs-cli",
"description": "Cube.js Command Line Interface",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -30,10 +30,10 @@
"LICENSE"
],
"dependencies": {
- "@cubejs-backend/cloud": "1.5.16",
+ "@cubejs-backend/cloud": "1.6.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"chalk": "^2.4.2",
"cli-progress": "^3.10",
"commander": "^2.19.0",
@@ -50,8 +50,8 @@
"colors": "1.4.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/server": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/server": "1.6.0",
"@oclif/command": "^1.8.0",
"@types/cli-progress": "^3.8.0",
"@types/cross-spawn": "^6.0.2",
diff --git a/packages/cubejs-clickhouse-driver/CHANGELOG.md b/packages/cubejs-clickhouse-driver/CHANGELOG.md
index f7b3ae2103d87..db25e66e5677c 100644
--- a/packages/cubejs-clickhouse-driver/CHANGELOG.md
+++ b/packages/cubejs-clickhouse-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/clickhouse-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/clickhouse-driver
diff --git a/packages/cubejs-clickhouse-driver/package.json b/packages/cubejs-clickhouse-driver/package.json
index 4428535c121f0..d1030cf01cbc9 100644
--- a/packages/cubejs-clickhouse-driver/package.json
+++ b/packages/cubejs-clickhouse-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/clickhouse-driver",
"description": "Cube.js ClickHouse database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -28,16 +28,16 @@
},
"dependencies": {
"@clickhouse/client": "^1.12.0",
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"moment": "^2.24.0",
"sqlstring": "^2.3.1",
"uuid": "^8.3.2"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"typescript": "~5.2.2"
diff --git a/packages/cubejs-client-core/CHANGELOG.md b/packages/cubejs-client-core/CHANGELOG.md
index a7694da72b11c..3ca013c756b96 100644
--- a/packages/cubejs-client-core/CHANGELOG.md
+++ b/packages/cubejs-client-core/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/core
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/core
diff --git a/packages/cubejs-client-core/package.json b/packages/cubejs-client-core/package.json
index 554dd6fec7192..d59579b66ec13 100644
--- a/packages/cubejs-client-core/package.json
+++ b/packages/cubejs-client-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/core",
- "version": "1.5.16",
+ "version": "1.6.0",
"engines": {},
"repository": {
"type": "git",
@@ -39,7 +39,7 @@
],
"license": "MIT",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/moment-range": "^4.0.0",
"@types/ramda": "^0.27.34",
diff --git a/packages/cubejs-client-dx/CHANGELOG.md b/packages/cubejs-client-dx/CHANGELOG.md
index 74725459d96dd..d73db0add6e6a 100644
--- a/packages/cubejs-client-dx/CHANGELOG.md
+++ b/packages/cubejs-client-dx/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/dx
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/dx
diff --git a/packages/cubejs-client-dx/package.json b/packages/cubejs-client-dx/package.json
index efc166ad6aca2..514529687994e 100644
--- a/packages/cubejs-client-dx/package.json
+++ b/packages/cubejs-client-dx/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/dx",
- "version": "1.5.16",
+ "version": "1.6.0",
"engines": {},
"repository": {
"type": "git",
diff --git a/packages/cubejs-client-ngx/CHANGELOG.md b/packages/cubejs-client-ngx/CHANGELOG.md
index 56efb5b1f15c0..bf7ac395d9a4d 100644
--- a/packages/cubejs-client-ngx/CHANGELOG.md
+++ b/packages/cubejs-client-ngx/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/ngx
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/ngx
diff --git a/packages/cubejs-client-ngx/package.json b/packages/cubejs-client-ngx/package.json
index 01dc2fa3f703a..1627584add711 100644
--- a/packages/cubejs-client-ngx/package.json
+++ b/packages/cubejs-client-ngx/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/ngx",
- "version": "1.5.16",
+ "version": "1.6.0",
"author": "Cube Dev, Inc.",
"engines": {},
"repository": {
diff --git a/packages/cubejs-client-react/CHANGELOG.md b/packages/cubejs-client-react/CHANGELOG.md
index cbb97409b5c74..494e3772f5595 100644
--- a/packages/cubejs-client-react/CHANGELOG.md
+++ b/packages/cubejs-client-react/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/react
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/react
diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json
index 6205feeb7788d..dda419fac34be 100644
--- a/packages/cubejs-client-react/package.json
+++ b/packages/cubejs-client-react/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/react",
- "version": "1.5.16",
+ "version": "1.6.0",
"author": "Cube Dev, Inc.",
"license": "MIT",
"engines": {},
@@ -24,7 +24,7 @@
],
"dependencies": {
"@babel/runtime": "^7.1.2",
- "@cubejs-client/core": "1.5.16",
+ "@cubejs-client/core": "1.6.0",
"core-js": "^3.6.5",
"ramda": "^0.27.2"
},
diff --git a/packages/cubejs-client-vue3/CHANGELOG.md b/packages/cubejs-client-vue3/CHANGELOG.md
index 77fc8899252bb..dde311373d093 100644
--- a/packages/cubejs-client-vue3/CHANGELOG.md
+++ b/packages/cubejs-client-vue3/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/vue3
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/vue3
diff --git a/packages/cubejs-client-vue3/package.json b/packages/cubejs-client-vue3/package.json
index 039075f8fbbdf..b8905a0631a96 100644
--- a/packages/cubejs-client-vue3/package.json
+++ b/packages/cubejs-client-vue3/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/vue3",
- "version": "1.5.16",
+ "version": "1.6.0",
"engines": {},
"repository": {
"type": "git",
@@ -28,7 +28,7 @@
"src"
],
"dependencies": {
- "@cubejs-client/core": "1.5.16",
+ "@cubejs-client/core": "1.6.0",
"ramda": "^0.27.0"
},
"devDependencies": {
diff --git a/packages/cubejs-client-ws-transport/CHANGELOG.md b/packages/cubejs-client-ws-transport/CHANGELOG.md
index 451271283295e..4c49b4716c0d7 100644
--- a/packages/cubejs-client-ws-transport/CHANGELOG.md
+++ b/packages/cubejs-client-ws-transport/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/ws-transport
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/ws-transport
diff --git a/packages/cubejs-client-ws-transport/package.json b/packages/cubejs-client-ws-transport/package.json
index e94b5e55638e4..40e40a7ef734e 100644
--- a/packages/cubejs-client-ws-transport/package.json
+++ b/packages/cubejs-client-ws-transport/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/ws-transport",
- "version": "1.5.16",
+ "version": "1.6.0",
"engines": {},
"repository": {
"type": "git",
@@ -20,7 +20,7 @@
},
"dependencies": {
"@babel/runtime": "^7.1.2",
- "@cubejs-client/core": "1.5.16",
+ "@cubejs-client/core": "1.6.0",
"core-js": "^3.6.5",
"isomorphic-ws": "^4.0.1",
"ws": "^7.3.1"
@@ -33,7 +33,7 @@
"@babel/core": "^7.3.3",
"@babel/preset-env": "^7.3.1",
"@babel/preset-typescript": "^7.12.1",
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/ws": "^7.2.9",
"typescript": "~5.2.2"
},
diff --git a/packages/cubejs-crate-driver/CHANGELOG.md b/packages/cubejs-crate-driver/CHANGELOG.md
index e55cf58bd4f9f..4c9fc78f5a2f9 100644
--- a/packages/cubejs-crate-driver/CHANGELOG.md
+++ b/packages/cubejs-crate-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/crate-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/crate-driver
diff --git a/packages/cubejs-crate-driver/package.json b/packages/cubejs-crate-driver/package.json
index 28d72780594a2..cbca1d4ca33e4 100644
--- a/packages/cubejs-crate-driver/package.json
+++ b/packages/cubejs-crate-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/crate-driver",
"description": "Cube.js Crate database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -28,14 +28,14 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/postgres-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/postgres-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"pg": "^8.7.1"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"testcontainers": "^10.28.0",
"typescript": "~5.2.2"
},
diff --git a/packages/cubejs-cubestore-driver/CHANGELOG.md b/packages/cubejs-cubestore-driver/CHANGELOG.md
index 1f1effae993cb..04b81b353ed06 100644
--- a/packages/cubejs-cubestore-driver/CHANGELOG.md
+++ b/packages/cubejs-cubestore-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/cubestore-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/cubestore-driver
diff --git a/packages/cubejs-cubestore-driver/package.json b/packages/cubejs-cubestore-driver/package.json
index 8c4b442582ac3..2052277426a2e 100644
--- a/packages/cubejs-cubestore-driver/package.json
+++ b/packages/cubejs-cubestore-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/cubestore-driver",
"description": "Cube Store driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -26,10 +26,10 @@
"lint:fix": "eslint --fix src/*.ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/cubestore": "1.5.16",
- "@cubejs-backend/native": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/cubestore": "1.6.0",
+ "@cubejs-backend/native": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"csv-write-stream": "^2.0.0",
"flatbuffers": "23.3.3",
"fs-extra": "^9.1.0",
@@ -41,7 +41,7 @@
"ws": "^7.4.3"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/csv-write-stream": "^2.0.0",
"@types/jest": "^29",
"@types/node": "^20",
diff --git a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md
index 0997162c96341..47faebbfa66c2 100644
--- a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md
+++ b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver
diff --git a/packages/cubejs-databricks-jdbc-driver/package.json b/packages/cubejs-databricks-jdbc-driver/package.json
index 3afb64562ab6e..b7dfedd894f1a 100644
--- a/packages/cubejs-databricks-jdbc-driver/package.json
+++ b/packages/cubejs-databricks-jdbc-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/databricks-jdbc-driver",
"description": "Cube.js Databricks database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -30,17 +30,17 @@
"bin"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/jdbc-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/jdbc-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"node-fetch": "^2.6.1",
"ramda": "^0.27.2",
"source-map-support": "^0.5.19",
"uuid": "^8.3.2"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"@types/ramda": "^0.27.34",
diff --git a/packages/cubejs-dbt-schema-extension/CHANGELOG.md b/packages/cubejs-dbt-schema-extension/CHANGELOG.md
index 52b508d960782..7ba1f0ef966ef 100644
--- a/packages/cubejs-dbt-schema-extension/CHANGELOG.md
+++ b/packages/cubejs-dbt-schema-extension/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension
diff --git a/packages/cubejs-dbt-schema-extension/package.json b/packages/cubejs-dbt-schema-extension/package.json
index 0903d1b6c577a..9f44f3bbd1aa1 100644
--- a/packages/cubejs-dbt-schema-extension/package.json
+++ b/packages/cubejs-dbt-schema-extension/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/dbt-schema-extension",
"description": "Cube.js dbt Schema Extension",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -25,14 +25,14 @@
"lint:fix": "eslint --fix src/* --ext .ts,.js"
},
"dependencies": {
- "@cubejs-backend/schema-compiler": "1.5.16",
+ "@cubejs-backend/schema-compiler": "1.6.0",
"fs-extra": "^9.1.0",
"inflection": "^1.12.0",
"node-fetch": "^2.6.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"stream-to-array": "^2.3.0",
diff --git a/packages/cubejs-docker/CHANGELOG.md b/packages/cubejs-docker/CHANGELOG.md
index 5db4a39f5d10e..ad6e435c48331 100644
--- a/packages/cubejs-docker/CHANGELOG.md
+++ b/packages/cubejs-docker/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/docker
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/docker
diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json
index 01c9eb0372a00..cb53d7c985388 100644
--- a/packages/cubejs-docker/package.json
+++ b/packages/cubejs-docker/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/docker",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Cube.js In Docker (virtual package)",
"author": "Cube Dev, Inc.",
"license": "Apache-2.0",
@@ -9,35 +9,35 @@
"node": ">=18.0.0"
},
"dependencies": {
- "@cubejs-backend/athena-driver": "1.5.16",
- "@cubejs-backend/bigquery-driver": "1.5.16",
- "@cubejs-backend/clickhouse-driver": "1.5.16",
- "@cubejs-backend/crate-driver": "1.5.16",
- "@cubejs-backend/databricks-jdbc-driver": "1.5.16",
- "@cubejs-backend/dbt-schema-extension": "1.5.16",
- "@cubejs-backend/dremio-driver": "1.5.16",
- "@cubejs-backend/druid-driver": "1.5.16",
- "@cubejs-backend/duckdb-driver": "1.5.16",
- "@cubejs-backend/elasticsearch-driver": "1.5.16",
- "@cubejs-backend/firebolt-driver": "1.5.16",
- "@cubejs-backend/hive-driver": "1.5.16",
- "@cubejs-backend/ksql-driver": "1.5.16",
- "@cubejs-backend/materialize-driver": "1.5.16",
- "@cubejs-backend/mongobi-driver": "1.5.16",
- "@cubejs-backend/mssql-driver": "1.5.16",
- "@cubejs-backend/mysql-driver": "1.5.16",
- "@cubejs-backend/oracle-driver": "1.5.16",
- "@cubejs-backend/pinot-driver": "1.5.16",
- "@cubejs-backend/postgres-driver": "1.5.16",
- "@cubejs-backend/prestodb-driver": "1.5.16",
- "@cubejs-backend/questdb-driver": "1.5.16",
- "@cubejs-backend/redshift-driver": "1.5.16",
- "@cubejs-backend/server": "1.5.16",
- "@cubejs-backend/snowflake-driver": "1.5.16",
- "@cubejs-backend/sqlite-driver": "1.5.16",
- "@cubejs-backend/trino-driver": "1.5.16",
- "@cubejs-backend/vertica-driver": "1.5.16",
- "cubejs-cli": "1.5.16",
+ "@cubejs-backend/athena-driver": "1.6.0",
+ "@cubejs-backend/bigquery-driver": "1.6.0",
+ "@cubejs-backend/clickhouse-driver": "1.6.0",
+ "@cubejs-backend/crate-driver": "1.6.0",
+ "@cubejs-backend/databricks-jdbc-driver": "1.6.0",
+ "@cubejs-backend/dbt-schema-extension": "1.6.0",
+ "@cubejs-backend/dremio-driver": "1.6.0",
+ "@cubejs-backend/druid-driver": "1.6.0",
+ "@cubejs-backend/duckdb-driver": "1.6.0",
+ "@cubejs-backend/elasticsearch-driver": "1.6.0",
+ "@cubejs-backend/firebolt-driver": "1.6.0",
+ "@cubejs-backend/hive-driver": "1.6.0",
+ "@cubejs-backend/ksql-driver": "1.6.0",
+ "@cubejs-backend/materialize-driver": "1.6.0",
+ "@cubejs-backend/mongobi-driver": "1.6.0",
+ "@cubejs-backend/mssql-driver": "1.6.0",
+ "@cubejs-backend/mysql-driver": "1.6.0",
+ "@cubejs-backend/oracle-driver": "1.6.0",
+ "@cubejs-backend/pinot-driver": "1.6.0",
+ "@cubejs-backend/postgres-driver": "1.6.0",
+ "@cubejs-backend/prestodb-driver": "1.6.0",
+ "@cubejs-backend/questdb-driver": "1.6.0",
+ "@cubejs-backend/redshift-driver": "1.6.0",
+ "@cubejs-backend/server": "1.6.0",
+ "@cubejs-backend/snowflake-driver": "1.6.0",
+ "@cubejs-backend/sqlite-driver": "1.6.0",
+ "@cubejs-backend/trino-driver": "1.6.0",
+ "@cubejs-backend/vertica-driver": "1.6.0",
+ "cubejs-cli": "1.6.0",
"typescript": "~5.2.2"
},
"resolutions": {
diff --git a/packages/cubejs-dremio-driver/CHANGELOG.md b/packages/cubejs-dremio-driver/CHANGELOG.md
index 95f647f03e2a7..89688a2fb1342 100644
--- a/packages/cubejs-dremio-driver/CHANGELOG.md
+++ b/packages/cubejs-dremio-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/dremio-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-dremio-driver/package.json b/packages/cubejs-dremio-driver/package.json
index 1d99d104566a0..2197d09615c6e 100644
--- a/packages/cubejs-dremio-driver/package.json
+++ b/packages/cubejs-dremio-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/dremio-driver",
"description": "Cube.js Dremio driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -22,15 +22,15 @@
"lint:fix": "eslint driver/*.js"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"axios": "^1.8.3",
"sqlstring": "^2.3.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"jest": "^29"
},
"license": "Apache-2.0",
diff --git a/packages/cubejs-druid-driver/CHANGELOG.md b/packages/cubejs-druid-driver/CHANGELOG.md
index 92874a7e32c38..e4ea3072e1637 100644
--- a/packages/cubejs-druid-driver/CHANGELOG.md
+++ b/packages/cubejs-druid-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/druid-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/druid-driver
diff --git a/packages/cubejs-druid-driver/package.json b/packages/cubejs-druid-driver/package.json
index a4a36fba9b786..6f336555b3139 100644
--- a/packages/cubejs-druid-driver/package.json
+++ b/packages/cubejs-druid-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/druid-driver",
"description": "Cube.js Druid database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -28,13 +28,13 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"axios": "^1.8.3"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"jest": "^29",
diff --git a/packages/cubejs-duckdb-driver/CHANGELOG.md b/packages/cubejs-duckdb-driver/CHANGELOG.md
index 8de3b641eb8f8..ef5c9f8544d65 100644
--- a/packages/cubejs-duckdb-driver/CHANGELOG.md
+++ b/packages/cubejs-duckdb-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/duckdb-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-duckdb-driver/package.json b/packages/cubejs-duckdb-driver/package.json
index 007750c908fb2..788dd03632068 100644
--- a/packages/cubejs-duckdb-driver/package.json
+++ b/packages/cubejs-duckdb-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/duckdb-driver",
"description": "Cube DuckDB database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,15 +27,15 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"duckdb": "^1.4.1"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"jest": "^29",
diff --git a/packages/cubejs-elasticsearch-driver/CHANGELOG.md b/packages/cubejs-elasticsearch-driver/CHANGELOG.md
index e184eab8a6f00..5c99ef722c7b8 100644
--- a/packages/cubejs-elasticsearch-driver/CHANGELOG.md
+++ b/packages/cubejs-elasticsearch-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver
diff --git a/packages/cubejs-elasticsearch-driver/package.json b/packages/cubejs-elasticsearch-driver/package.json
index 3a9118cf9ca88..ff98f10893114 100644
--- a/packages/cubejs-elasticsearch-driver/package.json
+++ b/packages/cubejs-elasticsearch-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/elasticsearch-driver",
"description": "Cube.js elasticsearch database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -23,14 +23,14 @@
"driver"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@elastic/elasticsearch": "7.12.0",
"sqlstring": "^2.3.1"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"testcontainers": "^10.28.0"
diff --git a/packages/cubejs-firebolt-driver/CHANGELOG.md b/packages/cubejs-firebolt-driver/CHANGELOG.md
index 3ae119e2c8ab6..1c8e8e2078610 100644
--- a/packages/cubejs-firebolt-driver/CHANGELOG.md
+++ b/packages/cubejs-firebolt-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/firebolt-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/firebolt-driver
diff --git a/packages/cubejs-firebolt-driver/package.json b/packages/cubejs-firebolt-driver/package.json
index 5a3f8e3dac30c..13d9d1b0f28e5 100644
--- a/packages/cubejs-firebolt-driver/package.json
+++ b/packages/cubejs-firebolt-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/firebolt-driver",
"description": "Cube.js Firebolt database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -28,15 +28,15 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"firebolt-sdk": "1.10.0"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"typescript": "~5.2.2"
},
"publishConfig": {
diff --git a/packages/cubejs-hive-driver/CHANGELOG.md b/packages/cubejs-hive-driver/CHANGELOG.md
index 43d735d5c4723..b4800fe8e109b 100644
--- a/packages/cubejs-hive-driver/CHANGELOG.md
+++ b/packages/cubejs-hive-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/hive-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/hive-driver
diff --git a/packages/cubejs-hive-driver/package.json b/packages/cubejs-hive-driver/package.json
index 780c5d04df702..d2cc4c1e0d9d0 100644
--- a/packages/cubejs-hive-driver/package.json
+++ b/packages/cubejs-hive-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/hive-driver",
"description": "Cube.js Hive database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -17,8 +17,8 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"generic-pool": "^3.8.2",
"jshs2": "^0.4.4",
"sasl-plain": "^0.1.0",
@@ -28,7 +28,7 @@
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16"
+ "@cubejs-backend/linter": "1.6.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/cubejs-jdbc-driver/CHANGELOG.md b/packages/cubejs-jdbc-driver/CHANGELOG.md
index 3eb561b6b0ef1..51b2b6d31d8a0 100644
--- a/packages/cubejs-jdbc-driver/CHANGELOG.md
+++ b/packages/cubejs-jdbc-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/jdbc-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/jdbc-driver
diff --git a/packages/cubejs-jdbc-driver/package.json b/packages/cubejs-jdbc-driver/package.json
index bef8c70a3ce4e..6dcb85bc3817e 100644
--- a/packages/cubejs-jdbc-driver/package.json
+++ b/packages/cubejs-jdbc-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/jdbc-driver",
"description": "Cube.js JDBC database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -25,9 +25,9 @@
"index.js"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
"@cubejs-backend/node-java-maven": "^0.1.3",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/shared": "1.6.0",
"generic-pool": "^3.9.0",
"sqlstring": "^2.3.0"
},
@@ -43,7 +43,7 @@
"testEnvironment": "node"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/node": "^20",
"@types/sqlstring": "^2.3.0",
"typescript": "~5.2.2"
diff --git a/packages/cubejs-ksql-driver/CHANGELOG.md b/packages/cubejs-ksql-driver/CHANGELOG.md
index f5e4c71d243e3..603c0c401a542 100644
--- a/packages/cubejs-ksql-driver/CHANGELOG.md
+++ b/packages/cubejs-ksql-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/ksql-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/ksql-driver
diff --git a/packages/cubejs-ksql-driver/package.json b/packages/cubejs-ksql-driver/package.json
index 8533de501a0d6..fa5c631cbd429 100644
--- a/packages/cubejs-ksql-driver/package.json
+++ b/packages/cubejs-ksql-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/ksql-driver",
"description": "Cube.js ksql database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -25,9 +25,9 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"async-mutex": "0.3.2",
"axios": "^1.8.3",
"kafkajs": "^2.2.3",
@@ -41,7 +41,7 @@
"extends": "../cubejs-linter"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"typescript": "~5.2.2"
}
}
diff --git a/packages/cubejs-linter/CHANGELOG.md b/packages/cubejs-linter/CHANGELOG.md
index 9bcf346174217..81fb0f3b75d2f 100644
--- a/packages/cubejs-linter/CHANGELOG.md
+++ b/packages/cubejs-linter/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/linter
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/linter
diff --git a/packages/cubejs-linter/package.json b/packages/cubejs-linter/package.json
index f9fe00e0d09dc..70c63faa3ec33 100644
--- a/packages/cubejs-linter/package.json
+++ b/packages/cubejs-linter/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/linter",
"description": "Cube.js ESLint (virtual package) for linting code",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
diff --git a/packages/cubejs-materialize-driver/CHANGELOG.md b/packages/cubejs-materialize-driver/CHANGELOG.md
index 322dc7eaf41d5..cdfd0d22a1c46 100644
--- a/packages/cubejs-materialize-driver/CHANGELOG.md
+++ b/packages/cubejs-materialize-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/materialize-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/materialize-driver
diff --git a/packages/cubejs-materialize-driver/package.json b/packages/cubejs-materialize-driver/package.json
index a4308be81f620..fa589cc54907a 100644
--- a/packages/cubejs-materialize-driver/package.json
+++ b/packages/cubejs-materialize-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/materialize-driver",
"description": "Cube.js Materialize database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,17 +27,17 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/postgres-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/postgres-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@types/pg": "^8.6.0",
"pg": "^8.6.0",
"semver": "^7.6.3"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing": "1.6.0",
"typescript": "~5.2.2"
},
"publishConfig": {
diff --git a/packages/cubejs-mongobi-driver/CHANGELOG.md b/packages/cubejs-mongobi-driver/CHANGELOG.md
index 6f0ab3393304e..8be82ab8daefb 100644
--- a/packages/cubejs-mongobi-driver/CHANGELOG.md
+++ b/packages/cubejs-mongobi-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/mongobi-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/mongobi-driver
diff --git a/packages/cubejs-mongobi-driver/package.json b/packages/cubejs-mongobi-driver/package.json
index 67c82e32f1c09..5ada4774af878 100644
--- a/packages/cubejs-mongobi-driver/package.json
+++ b/packages/cubejs-mongobi-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/mongobi-driver",
"description": "Cube.js MongoBI driver",
"author": "krunalsabnis@gmail.com",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,8 +27,8 @@
"integration:mongobi": "jest dist/test"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@types/node": "^20",
"generic-pool": "^3.9.0",
"moment": "^2.29.1",
@@ -39,7 +39,7 @@
"access": "public"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"testcontainers": "^10.28.0",
"typescript": "~5.2.2"
},
diff --git a/packages/cubejs-mssql-driver/CHANGELOG.md b/packages/cubejs-mssql-driver/CHANGELOG.md
index 1f606cac3a401..0abb13273843a 100644
--- a/packages/cubejs-mssql-driver/CHANGELOG.md
+++ b/packages/cubejs-mssql-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/mssql-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/mssql-driver
diff --git a/packages/cubejs-mssql-driver/package.json b/packages/cubejs-mssql-driver/package.json
index ae3f71ac7f118..9e1d4924e02e1 100644
--- a/packages/cubejs-mssql-driver/package.json
+++ b/packages/cubejs-mssql-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/mssql-driver",
"description": "Cube.js MS SQL database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -25,8 +25,8 @@
"lint:fix": "eslint --fix src/* --ext .ts,.js"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"mssql": "^11.0.1"
},
"devDependencies": {
diff --git a/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md b/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md
index 75137bb6f65e7..5b7e5eb30cfea 100644
--- a/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md
+++ b/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver
diff --git a/packages/cubejs-mysql-aurora-serverless-driver/package.json b/packages/cubejs-mysql-aurora-serverless-driver/package.json
index aae36a51a8bd5..001f5a51958c4 100644
--- a/packages/cubejs-mysql-aurora-serverless-driver/package.json
+++ b/packages/cubejs-mysql-aurora-serverless-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/mysql-aurora-serverless-driver",
"description": "Cube.js Aurora Serverless Mysql database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -21,14 +21,14 @@
"lint": "eslint driver/*.js test/*.js"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@types/mysql": "^2.15.15",
"aws-sdk": "^2.787.0",
"data-api-client": "^1.1.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/data-api-client": "^1.2.1",
"@types/jest": "^29",
"jest": "^29",
diff --git a/packages/cubejs-mysql-driver/CHANGELOG.md b/packages/cubejs-mysql-driver/CHANGELOG.md
index d0501341cbd24..a4c6b6128dc56 100644
--- a/packages/cubejs-mysql-driver/CHANGELOG.md
+++ b/packages/cubejs-mysql-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/mysql-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/mysql-driver
diff --git a/packages/cubejs-mysql-driver/package.json b/packages/cubejs-mysql-driver/package.json
index d55b8bebe4faa..b6ddb07eefe39 100644
--- a/packages/cubejs-mysql-driver/package.json
+++ b/packages/cubejs-mysql-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/mysql-driver",
"description": "Cube.js Mysql database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,14 +27,14 @@
"lint:fix": "eslint --fix src/* test/* --ext .ts,.js"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"generic-pool": "^3.9.0",
"mysql": "^2.18.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"@types/jest": "^29",
"@types/mysql": "^2.15.21",
"jest": "^29",
diff --git a/packages/cubejs-oracle-driver/CHANGELOG.md b/packages/cubejs-oracle-driver/CHANGELOG.md
index cca3d5b72c695..0af44f2fbd472 100644
--- a/packages/cubejs-oracle-driver/CHANGELOG.md
+++ b/packages/cubejs-oracle-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/oracle-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/oracle-driver
diff --git a/packages/cubejs-oracle-driver/package.json b/packages/cubejs-oracle-driver/package.json
index 3478f48caa879..e1311e763f5f3 100644
--- a/packages/cubejs-oracle-driver/package.json
+++ b/packages/cubejs-oracle-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/oracle-driver",
"description": "Cube.js oracle database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -13,7 +13,7 @@
},
"main": "driver/OracleDriver.js",
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
"ramda": "^0.27.0"
},
"optionalDependencies": {
diff --git a/packages/cubejs-pinot-driver/CHANGELOG.md b/packages/cubejs-pinot-driver/CHANGELOG.md
index 363f30702df6b..ca15b4777b7b1 100644
--- a/packages/cubejs-pinot-driver/CHANGELOG.md
+++ b/packages/cubejs-pinot-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/pinot-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-pinot-driver/package.json b/packages/cubejs-pinot-driver/package.json
index c6d15cf0fa4a3..cb09538ea3bc4 100644
--- a/packages/cubejs-pinot-driver/package.json
+++ b/packages/cubejs-pinot-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/pinot-driver",
"description": "Cube.js Pinot database driver",
"author": "Julian Ronsse, InTheMemory, Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,9 +27,9 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"node-fetch": "^2.6.1",
"ramda": "^0.27.2",
"sqlstring": "^2.3.3"
@@ -39,7 +39,7 @@
"access": "public"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"should": "^13.2.3",
diff --git a/packages/cubejs-playground/CHANGELOG.md b/packages/cubejs-playground/CHANGELOG.md
index 1a872dd4a1cfd..c93db80e423d9 100644
--- a/packages/cubejs-playground/CHANGELOG.md
+++ b/packages/cubejs-playground/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-client/playground
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-client/playground
diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json
index b4880e2dcea64..39d4ab170e7fa 100644
--- a/packages/cubejs-playground/package.json
+++ b/packages/cubejs-playground/package.json
@@ -1,7 +1,7 @@
{
"name": "@cubejs-client/playground",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"engines": {},
"repository": {
"type": "git",
@@ -69,8 +69,8 @@
"@ant-design/compatible": "^1.0.1",
"@ant-design/icons": "^5.3.5",
"@cube-dev/ui-kit": "0.52.3",
- "@cubejs-client/core": "1.5.16",
- "@cubejs-client/react": "1.5.16",
+ "@cubejs-client/core": "1.6.0",
+ "@cubejs-client/react": "1.6.0",
"@types/flexsearch": "^0.7.3",
"@types/node": "^20",
"@types/react": "^18.3.4",
diff --git a/packages/cubejs-postgres-driver/CHANGELOG.md b/packages/cubejs-postgres-driver/CHANGELOG.md
index 455a42db5fa6e..8d86a5b378ba4 100644
--- a/packages/cubejs-postgres-driver/CHANGELOG.md
+++ b/packages/cubejs-postgres-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/postgres-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/postgres-driver
diff --git a/packages/cubejs-postgres-driver/package.json b/packages/cubejs-postgres-driver/package.json
index d665e3e5c3d11..82e13aaa429fd 100644
--- a/packages/cubejs-postgres-driver/package.json
+++ b/packages/cubejs-postgres-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/postgres-driver",
"description": "Cube.js Postgres database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,8 +27,8 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@types/pg": "^8.6.0",
"@types/pg-query-stream": "^1.0.3",
"moment": "^2.24.0",
@@ -37,8 +37,8 @@
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"testcontainers": "^10.28.0",
"typescript": "~5.2.2"
},
diff --git a/packages/cubejs-prestodb-driver/CHANGELOG.md b/packages/cubejs-prestodb-driver/CHANGELOG.md
index 96dec07ab14e8..54351baffed0c 100644
--- a/packages/cubejs-prestodb-driver/CHANGELOG.md
+++ b/packages/cubejs-prestodb-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/prestodb-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/prestodb-driver
diff --git a/packages/cubejs-prestodb-driver/package.json b/packages/cubejs-prestodb-driver/package.json
index ede94d4410894..f1dd9d854c055 100644
--- a/packages/cubejs-prestodb-driver/package.json
+++ b/packages/cubejs-prestodb-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/prestodb-driver",
"description": "Cube.js Presto database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,8 +27,8 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"presto-client": "^1.1.0",
"ramda": "^0.27.0",
"sqlstring": "^2.3.1"
@@ -38,7 +38,7 @@
"access": "public"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"should": "^13.2.3",
diff --git a/packages/cubejs-query-orchestrator/CHANGELOG.md b/packages/cubejs-query-orchestrator/CHANGELOG.md
index 119e3b2cdd29e..27f4435acf434 100644
--- a/packages/cubejs-query-orchestrator/CHANGELOG.md
+++ b/packages/cubejs-query-orchestrator/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/query-orchestrator
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/query-orchestrator
diff --git a/packages/cubejs-query-orchestrator/package.json b/packages/cubejs-query-orchestrator/package.json
index 5324c229f6bae..e14e3ceecc46b 100644
--- a/packages/cubejs-query-orchestrator/package.json
+++ b/packages/cubejs-query-orchestrator/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/query-orchestrator",
"description": "Cube.js Query Orchestrator and Cache",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -29,15 +29,15 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/cubestore-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/cubestore-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"csv-write-stream": "^2.0.0",
"lru-cache": "^11.1.0",
"ramda": "^0.27.2"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"@types/node": "^20",
"@types/ramda": "^0.27.32",
diff --git a/packages/cubejs-questdb-driver/CHANGELOG.md b/packages/cubejs-questdb-driver/CHANGELOG.md
index 18bdd2d5f67a3..9f7404547f1e3 100644
--- a/packages/cubejs-questdb-driver/CHANGELOG.md
+++ b/packages/cubejs-questdb-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/questdb-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/questdb-driver
diff --git a/packages/cubejs-questdb-driver/package.json b/packages/cubejs-questdb-driver/package.json
index ed19bf36e41d5..90e5f7c059d5a 100644
--- a/packages/cubejs-questdb-driver/package.json
+++ b/packages/cubejs-questdb-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/questdb-driver",
"description": "Cube.js QuestDB database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,9 +27,9 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@types/pg": "^8.6.0",
"moment": "^2.24.0",
"pg": "^8.7.0",
@@ -37,8 +37,8 @@
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"testcontainers": "^10.28.0",
"typescript": "~5.2.2"
},
diff --git a/packages/cubejs-redshift-driver/CHANGELOG.md b/packages/cubejs-redshift-driver/CHANGELOG.md
index e44a6b8c53119..ab2d459d84aa5 100644
--- a/packages/cubejs-redshift-driver/CHANGELOG.md
+++ b/packages/cubejs-redshift-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/redshift-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/redshift-driver
diff --git a/packages/cubejs-redshift-driver/package.json b/packages/cubejs-redshift-driver/package.json
index 55948fbd59733..e08f12c57b8ab 100644
--- a/packages/cubejs-redshift-driver/package.json
+++ b/packages/cubejs-redshift-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/redshift-driver",
"description": "Cube.js Redshift database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -25,13 +25,13 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/postgres-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16"
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/postgres-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"typescript": "~5.2.2"
},
"publishConfig": {
diff --git a/packages/cubejs-schema-compiler/CHANGELOG.md b/packages/cubejs-schema-compiler/CHANGELOG.md
index 46edfb6616f28..5e6bd190ca215 100644
--- a/packages/cubejs-schema-compiler/CHANGELOG.md
+++ b/packages/cubejs-schema-compiler/CHANGELOG.md
@@ -3,6 +3,13 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+### Features
+
+- **cubestore:** Upgrade to DataFusion 46.0.1 ([#10215](https://github.com/cube-js/cube/issues/10215)) ([4ef3442](https://github.com/cube-js/cube/commit/4ef3442827b5c105c0f707674d4dae5ce282ae96))
+- **schema-compiler:** view's cubes multiple join path validation ([#10264](https://github.com/cube-js/cube/issues/10264)) ([d5fe933](https://github.com/cube-js/cube/commit/d5fe93351149362a52d73da36ce773c6960980d8))
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json
index 9c120d8943b98..130d8f532bbc9 100644
--- a/packages/cubejs-schema-compiler/package.json
+++ b/packages/cubejs-schema-compiler/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/schema-compiler",
"description": "Cube schema compiler",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -40,8 +40,8 @@
"@babel/standalone": "^7.24",
"@babel/traverse": "^7.24",
"@babel/types": "^7.24",
- "@cubejs-backend/native": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/native": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"antlr4": "^4.13.2",
"camelcase": "^6.2.0",
"cron-parser": "^4.9.0",
@@ -60,8 +60,8 @@
},
"devDependencies": {
"@clickhouse/client": "^1.12.0",
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
"@types/babel__code-frame": "^7.0.6",
"@types/babel__generator": "^7.6.8",
"@types/babel__traverse": "^7.20.5",
diff --git a/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts b/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts
index d3a3186422b61..d04bd9af513b5 100644
--- a/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts
+++ b/packages/cubejs-schema-compiler/src/compiler/CubeValidator.ts
@@ -1,7 +1,7 @@
import Joi from 'joi';
import cronParser from 'cron-parser';
-import type { CubeSymbols, CubeDefinition } from './CubeSymbols';
+import { CubeSymbols, CubeDefinition, ToString } from './CubeSymbols';
import type { ErrorReporter } from './ErrorReporter';
import { CompilerInterface } from './PrepareCompiler';
@@ -1146,6 +1146,11 @@ export class CubeValidator implements CompilerInterface {
};
const result = cube.isView ? viewSchema.validate(cube, options) : cubeSchema.validate(cube, options);
+ if (cube.isView) {
+ // We need to verify that leaf cubes in view are present only once
+ this.validateUniqueLeafCubes(cube.name, cube.cubes, errorReporter);
+ }
+
if (result.error != null) {
errorReporter.error(formatErrorMessage(result.error));
} else {
@@ -1155,6 +1160,55 @@ export class CubeValidator implements CompilerInterface {
return result;
}
+ /**
+ * Validates that each cube appears only once within each root path in a view.
+ * This ensures that there is only one path to reach each cube within each root's join graph.
+ * For example: 'a.b.c' + 'd.b.c' is valid (different roots), but 'a.b.c' + 'a.d.c' is invalid (same root 'a').
+ */
+ private validateUniqueLeafCubes(viewName: string, cubesArray: any[], errorReporter: ErrorReporter) {
+ if (!cubesArray || cubesArray.length === 0) {
+ return;
+ }
+
+ const rootCubePaths = new Map>>();
+
+ for (const cube of cubesArray) {
+ try {
+ const fullPath = this.cubeSymbols.evaluateReferences(null, cube.joinPath as () => ToString, { collectJoinHints: true });
+ const split = fullPath.split('.');
+ const rootCube = split[0];
+
+ if (!rootCubePaths.has(rootCube)) {
+ rootCubePaths.set(rootCube, new Map>());
+ }
+
+ const cubesJoinPaths = rootCubePaths.get(rootCube)!;
+
+ for (let i = 0; i < split.length; i++) {
+ const cubeName = split[i];
+ const path = split.slice(0, i + 1).join('.');
+
+ if (!cubesJoinPaths.has(cubeName)) {
+ cubesJoinPaths.set(cubeName, new Set());
+ }
+ cubesJoinPaths.get(cubeName)!.add(path);
+ }
+ } catch (e) {
+ // Ignore errors during joinPath evaluation - cube may not be defined yet
+ }
+ }
+
+ // Check for cubes with multiple paths within each root
+ for (const [rootCube, cubesJoinPaths] of rootCubePaths.entries()) {
+ for (const [cubeName, paths] of cubesJoinPaths.entries()) {
+ if (paths.size > 1) {
+ const pathList = Array.from(paths).map(path => `'${path}'`).join(', ');
+ errorReporter.error(`Views can't define multiple join paths to the same cube. View '${viewName}' has multiple paths to '${cubeName}' within root '${rootCube}': ${pathList}. Use extends to create a child cube and reference it instead`);
+ }
+ }
+ }
+ }
+
public isCubeValid(cube: CubeDefinition): boolean {
return this.validCubes.get(cube.name) ?? cube.isSplitView ?? false;
}
diff --git a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts
index 26bf4782b1558..7c8d1cedeaf6a 100644
--- a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts
+++ b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts
@@ -919,13 +919,13 @@ describe('SQL Generation', () => {
if (q.measures[0].includes('count')) {
expect(queryString.includes('DATE_BIN(INTERVAL')).toBeTruthy();
- expect(queryString.includes('INTERVAL \'6 MONTH\'')).toBeTruthy();
+ expect(queryString.toLowerCase().includes('interval \'6 month\'')).toBeTruthy();
} else if (q.measures[0].includes('rollingCountByTrailing2Day')) {
expect(queryString.includes('date_trunc(\'day\'')).toBeTruthy();
- expect(queryString.includes('INTERVAL \'2 DAY\'')).toBeTruthy();
+ expect(queryString.toLowerCase().includes('interval \'2 day\'')).toBeTruthy();
} else if (q.measures[0].includes('rollingCountByLeading2Day')) {
expect(queryString.includes('date_trunc(\'day\'')).toBeTruthy();
- expect(queryString.includes('INTERVAL \'3 DAY\'')).toBeTruthy();
+ expect(queryString.toLowerCase().includes('interval \'3 day\'')).toBeTruthy();
}
});
});
diff --git a/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts b/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts
index f403444b4c4cc..60c44a2431ee8 100644
--- a/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts
+++ b/packages/cubejs-schema-compiler/test/unit/cube-validator.test.ts
@@ -1739,4 +1739,247 @@ describe('Cube Validation', () => {
expect(validationResult.error).toBeTruthy();
});
});
+
+ describe('View joinPath validation - unique leaf nodes', () => {
+ it('view with duplicate leaf nodes - should fail', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.D.E.X', prefix: false, includes: ['*'] },
+ { joinPath: () => 'A.F.X', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ let errorMessage = '';
+ cubeValidator.validate(cube, {
+ error: (message: any) => { errorMessage = message; }
+ } as any);
+
+ expect(errorMessage).toContain('Views can\'t define multiple join paths to the same cube');
+ expect(errorMessage).toContain('View \'test_view\'');
+ expect(errorMessage).toContain('has multiple paths to \'X\'');
+ expect(errorMessage).toContain('within root \'A\'');
+ expect(errorMessage).toContain('\'A.D.E.X\'');
+ expect(errorMessage).toContain('\'A.F.X\'');
+ expect(errorMessage).toContain('Use extends to create a child cube');
+ });
+
+ it('view with unique leaf nodes - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A', prefix: false, includes: ['*'] },
+ { joinPath: () => 'A.D', prefix: false, includes: ['*'] },
+ { joinPath: () => 'A.D.E.X', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+
+ it('view with conflict in one root only - should report only that root', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B.X', prefix: false, includes: ['*'] },
+ { joinPath: () => 'A.C.X', prefix: false, includes: ['*'] },
+ { joinPath: () => 'D.E.X', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ let errorMessage = '';
+ cubeValidator.validate(cube, {
+ error: (msg: any) => { errorMessage = msg; }
+ } as any);
+
+ expect(errorMessage).toContain('has multiple paths to \'X\'');
+ expect(errorMessage).toContain('within root \'A\'');
+ expect(errorMessage).toContain('\'A.B.X\'');
+ expect(errorMessage).toContain('\'A.C.X\'');
+ // D.E.X should NOT be in the error message as it's a different root
+ expect(errorMessage).not.toContain('\'D.E.X\'');
+ });
+
+ it('view with multiple different conflicts in different roots - should report all', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B.X', prefix: false, includes: ['*'] },
+ { joinPath: () => 'A.D.X', prefix: false, includes: ['*'] },
+ { joinPath: () => 'C.E.Y', prefix: false, includes: ['*'] },
+ { joinPath: () => 'C.F.Y', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const errorMessages: string[] = [];
+ cubeValidator.validate(cube, {
+ error: (msg: any) => { errorMessages.push(msg); }
+ } as any);
+
+ const allErrors = errorMessages.join(' ');
+ expect(allErrors).toContain('has multiple paths to \'X\'');
+ expect(allErrors).toContain('has multiple paths to \'Y\'');
+ expect(allErrors).toContain('within root \'A\'');
+ expect(allErrors).toContain('within root \'C\'');
+ expect(allErrors).toContain('\'A.B.X\'');
+ expect(allErrors).toContain('\'A.D.X\'');
+ expect(allErrors).toContain('\'C.E.Y\'');
+ expect(allErrors).toContain('\'C.F.Y\'');
+ });
+
+ it('view with single-segment paths - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A', prefix: false, includes: ['*'] },
+ { joinPath: () => 'B', prefix: false, includes: ['*'] },
+ { joinPath: () => 'C', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+
+ it('view with cube in different roots - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A', prefix: false, includes: ['*'] },
+ { joinPath: () => 'B.A', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+
+ it('view with same cube in middle of different root paths - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B.X', prefix: false, includes: ['*'] },
+ { joinPath: () => 'C.B.Y', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+
+ it('view with complex transitive conflicts - multiple cubes with conflicts - should fail', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B.C', prefix: false, includes: ['*'] },
+ { joinPath: () => 'A.D.C', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ let errorMessage = '';
+ cubeValidator.validate(cube, {
+ error: (msg: any) => { errorMessage = msg; }
+ } as any);
+
+ // All intermediate and leaf cubes that appear in multiple paths should be reported
+ expect(errorMessage).toContain('has multiple paths to \'C\'');
+ expect(errorMessage).toContain('within root \'A\'');
+ expect(errorMessage).toContain('\'A.B.C\'');
+ expect(errorMessage).toContain('\'A.D.C\'');
+ });
+
+ it('view with same cube at different depths in different roots - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B', prefix: false, includes: ['*'] },
+ { joinPath: () => 'C.D.E.B', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+
+ it('view with no transitive conflicts - different cubes in paths - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B.C', prefix: false, includes: ['*'] },
+ { joinPath: () => 'D.E.F', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+
+ it('view with same cube in different roots - should pass', async () => {
+ const cubeValidator = new CubeValidator(new CubeSymbols());
+ const cube = {
+ name: 'test_view',
+ isView: true,
+ fileName: 'fileName',
+ cubes: [
+ { joinPath: () => 'A.B.C', prefix: false, includes: ['*'] },
+ { joinPath: () => 'D.B.C', prefix: false, includes: ['*'] }
+ ]
+ };
+
+ const validationResult = cubeValidator.validate(cube, {
+ error: (msg: any) => { throw new Error(`Unexpected error: ${msg}`); }
+ } as any);
+
+ expect(validationResult.error).toBeFalsy();
+ });
+ });
});
diff --git a/packages/cubejs-server-core/CHANGELOG.md b/packages/cubejs-server-core/CHANGELOG.md
index 4b769709ab8cc..aec79b780f1ae 100644
--- a/packages/cubejs-server-core/CHANGELOG.md
+++ b/packages/cubejs-server-core/CHANGELOG.md
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+### Bug Fixes
+
+- **server-core:** Access policies row filtering should respect member visibility ([#10257](https://github.com/cube-js/cube/issues/10257)) ([cc0e582](https://github.com/cube-js/cube/commit/cc0e5821669d6babe43d52264ebb3708fe8d1c0f))
+
+### BREAKING CHANGES
+
+- **server-core:** Policies not applicable due to member visibility may stop applying changing row level security filters
+
+- Linter
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/server-core
diff --git a/packages/cubejs-server-core/package.json b/packages/cubejs-server-core/package.json
index 7b777ce7afa2b..d8976e27bac53 100644
--- a/packages/cubejs-server-core/package.json
+++ b/packages/cubejs-server-core/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/server-core",
"description": "Cube.js base component to wire all backend components together",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -29,16 +29,16 @@
"unit": "jest --runInBand --forceExit --coverage dist/test"
},
"dependencies": {
- "@cubejs-backend/api-gateway": "1.5.16",
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/cloud": "1.5.16",
- "@cubejs-backend/cubestore-driver": "1.5.16",
+ "@cubejs-backend/api-gateway": "1.6.0",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/cloud": "1.6.0",
+ "@cubejs-backend/cubestore-driver": "1.6.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/native": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
- "@cubejs-backend/templates": "1.5.16",
+ "@cubejs-backend/native": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
+ "@cubejs-backend/templates": "1.6.0",
"codesandbox-import-utils": "^2.1.12",
"cross-spawn": "^7.0.1",
"fs-extra": "^8.1.0",
@@ -62,8 +62,8 @@
"ws": "^7.5.3"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-client/playground": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-client/playground": "1.6.0",
"@types/cross-spawn": "^6.0.2",
"@types/express": "^4.17.21",
"@types/fs-extra": "^9.0.8",
diff --git a/packages/cubejs-server-core/src/core/CompilerApi.ts b/packages/cubejs-server-core/src/core/CompilerApi.ts
index 5826cce518e94..d67285a409c8e 100644
--- a/packages/cubejs-server-core/src/core/CompilerApi.ts
+++ b/packages/cubejs-server-core/src/core/CompilerApi.ts
@@ -521,7 +521,26 @@ export class CompilerApi {
return { query, denied: false };
}
- const queryCubes = await this.getCubesFromQuery(evaluatedQuery, context);
+ // Get the SQL to extract member names from the query
+ const sql = await this.getSql(evaluatedQuery, { requestId: context?.requestId });
+ const queryMemberNames = new Set(sql.memberNames);
+ const queryCubes = new Set(sql.memberNames.map(memberName => memberName.split('.')[0]));
+
+ // Identify cubes that are accessed through views.
+ // Similar to PostgreSQL views: views act as a security boundary for member access.
+ // When a cube is accessed via a view, we skip the cube's member-level restrictions
+ // and only apply row-level filters. The view controls what members are exposed.
+ const cubesAccessedViaView = new Set();
+ for (const cubeName of queryCubes) {
+ const cube = cubeEvaluator.cubeFromPath(cubeName);
+ if (cube.isView) {
+ // Track which underlying cubes are accessed through this view
+ const underlyingCubes = new Set(
+ (cube.includedMembers || []).map((m: any) => m.memberPath.split('.')[0])
+ );
+ underlyingCubes.forEach(c => cubesAccessedViaView.add(c));
+ }
+ }
// We collect Cube and View filters separately because they have to be
// applied in "two layers": first Cube filters, then View filters on top
@@ -537,7 +556,118 @@ export class CompilerApi {
let hasAccessPermission = false;
const userPolicies = await this.getApplicablePolicies(cube, context, compilers);
- for (const policy of userPolicies) {
+ // Filter out policies that don't grant member-level access to query members
+ //
+ // Policies define access in two dimensions: Members (columns) and Rows.
+ // We first filter by member access, then apply row-level filters.
+ //
+ // Example setup:
+ // - Policy 1 covers members: a, b (with row filter R1)
+ // - Policy 2 covers members: b, c (with row filter R2)
+ //
+ // Members
+ // ^
+ // | ┌─────────────────────────────┐
+ // c | │ Policy 2 │
+ // | ┌───┼─────────────┐ │
+ // b | │ │ (overlap) │ │
+ // | │ └─────────────┼───────────────┘
+ // a | │ Policy 1 │
+ // | └─────────────────┘
+ // └──────────────────────────────────────────> Rows
+ // R1 rows R2 rows
+ //
+ // ═══════════════════════════════════════════════════════════════════
+ // Case 1: Query members (a, b)
+ // Only Policy 1 covers ALL queried members → R1 rows visible
+ //
+ // Members
+ // ^
+ // | ┌─────────────────────────────┐
+ // c | │ Policy 2 │
+ // | ┌───┼─────────────┐ │
+ // b | │░░░│░░(query)░░░░│ │
+ // | │░░░└─────────────┼───────────────┘
+ // a | │░░░░Policy 1░░░░░│
+ // | └─────────────────┘
+ // └──────────────────────────────────────────> Rows
+ // ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
+ // R1 rows visible
+ //
+ // ═══════════════════════════════════════════════════════════════════
+ // Case 2: Query members (b, c)
+ // Only Policy 2 covers ALL queried members → R2 rows visible
+ //
+ // Members
+ // ^
+ // | ┌─────────────────────────────┐
+ // c | │░░░░░░░░░░Policy 2░░░░░░░░░░░│
+ // | ┌───┼─────────────┐░░░░░░░░░░░░░░░│
+ // b | │ │░░(query)░░░░│░░░░░░░░░░░░░░░│
+ // | │ └─────────────┼───────────────┘
+ // a | │ Policy 1 │
+ // | └─────────────────┘
+ // └──────────────────────────────────────────> Rows
+ // ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
+ // R2 rows visible
+ //
+ // ═══════════════════════════════════════════════════════════════════
+ // Case 3: Query member (b) only
+ // Both policies cover member b → Union of R1 ∪ R2 rows visible
+ //
+ // Members
+ // ^
+ // | ┌─────────────────────────────┐
+ // c | │ Policy 2 │
+ // | ┌───┼─────────────┐ │
+ // b | │░░░│░░(query)░░░░│░░░░░░░░░░░░░░░│
+ // | │ └─────────────┼───────────────┘
+ // a | │ Policy 1 │
+ // | └─────────────────┘
+ // └──────────────────────────────────────────> Rows
+ // ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
+ // R1 ∪ R2 rows visible (union)
+ //
+ // ═══════════════════════════════════════════════════════════════════
+ // Case 4: Query members (a, b, c)
+ // Neither policy covers ALL three → NO rows visible (denied)
+ //
+ // Members
+ // ^
+ // | ┌─────────────────────────────┐
+ // c | │ Policy 2 │
+ // | ┌───┼─────────────┐ │
+ // b | │ │ (query) │ │
+ // | │ └─────────────┼───────────────┘
+ // a | │ Policy 1 │
+ // | └─────────────────┘
+ // └──────────────────────────────────────────> Rows
+ //
+ // No policy covers {a,b,c} → Access denied, empty result
+ //
+ const policiesWithMemberAccess = userPolicies.filter((policy: any) => {
+ // If there's no memberLevel policy, all members are accessible
+ if (!policy.memberLevel) {
+ return true;
+ }
+
+ // PostgreSQL-style view behavior: if this cube is accessed through a view,
+ // the view grants access to all members it exposes.
+ // We only apply row-level filters from the cube, not member-level restrictions.
+ if (cubesAccessedViaView.has(cubeName)) {
+ return true;
+ }
+
+ const cubeMembersInQuery = Array.from(queryMemberNames).filter(
+ memberName => memberName.startsWith(`${cubeName}.`)
+ );
+
+ // Check if the policy grants access to all members used in the query
+ return [...cubeMembersInQuery].every(memberName => policy.memberLevel.includesMembers.includes(memberName) &&
+ !policy.memberLevel.excludesMembers.includes(memberName));
+ });
+
+ for (const policy of policiesWithMemberAccess) {
hasAccessPermission = true;
(policy?.rowLevel?.filters || []).forEach((filter: any) => {
filtersMap[cubeName] = filtersMap[cubeName] || {};
diff --git a/packages/cubejs-server/CHANGELOG.md b/packages/cubejs-server/CHANGELOG.md
index bd9e36288fd52..90c3e963fd722 100644
--- a/packages/cubejs-server/CHANGELOG.md
+++ b/packages/cubejs-server/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/server
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/packages/cubejs-server/package.json b/packages/cubejs-server/package.json
index 5d9a6788df759..db8a7cb28fd09 100644
--- a/packages/cubejs-server/package.json
+++ b/packages/cubejs-server/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/server",
"description": "Cube.js all-in-one server",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"types": "index.d.ts",
"repository": {
"type": "git",
@@ -40,11 +40,11 @@
"jest:shapshot": "jest --updateSnapshot test"
},
"dependencies": {
- "@cubejs-backend/cubestore-driver": "1.5.16",
+ "@cubejs-backend/cubestore-driver": "1.6.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/native": "1.5.16",
- "@cubejs-backend/server-core": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/native": "1.6.0",
+ "@cubejs-backend/server-core": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@oclif/color": "^1.0.0",
"@oclif/command": "^1.8.13",
"@oclif/config": "^1.18.2",
@@ -61,8 +61,8 @@
"ws": "^7.1.2"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
"@oclif/dev-cli": "^1.23.1",
"@types/body-parser": "^1.19.0",
"@types/cors": "^2.8.8",
diff --git a/packages/cubejs-snowflake-driver/CHANGELOG.md b/packages/cubejs-snowflake-driver/CHANGELOG.md
index e0f59a5b7fdc2..fa364db091cf8 100644
--- a/packages/cubejs-snowflake-driver/CHANGELOG.md
+++ b/packages/cubejs-snowflake-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/snowflake-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Bug Fixes
diff --git a/packages/cubejs-snowflake-driver/package.json b/packages/cubejs-snowflake-driver/package.json
index 4af3428470ba1..45a5b5a184f71 100644
--- a/packages/cubejs-snowflake-driver/package.json
+++ b/packages/cubejs-snowflake-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/snowflake-driver",
"description": "Cube.js Snowflake database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -26,8 +26,8 @@
},
"dependencies": {
"@aws-sdk/client-s3": "^3.726.0",
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"date-fns-timezone": "^0.1.4",
"snowflake-sdk": "^2.2.0"
},
@@ -39,7 +39,7 @@
"extends": "../cubejs-linter"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"typescript": "~5.2.2"
}
}
diff --git a/packages/cubejs-sqlite-driver/CHANGELOG.md b/packages/cubejs-sqlite-driver/CHANGELOG.md
index 760efbca20f3e..4af81b5c69fe6 100644
--- a/packages/cubejs-sqlite-driver/CHANGELOG.md
+++ b/packages/cubejs-sqlite-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/sqlite-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/sqlite-driver
diff --git a/packages/cubejs-sqlite-driver/package.json b/packages/cubejs-sqlite-driver/package.json
index 40b8a86835218..9970e35488909 100644
--- a/packages/cubejs-sqlite-driver/package.json
+++ b/packages/cubejs-sqlite-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/sqlite-driver",
"description": "Cube.js Sqlite database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -18,13 +18,13 @@
"unit": "jest"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"sqlite3": "^5.1.7"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"jest": "^29"
},
"publishConfig": {
diff --git a/packages/cubejs-templates/CHANGELOG.md b/packages/cubejs-templates/CHANGELOG.md
index aed667225ad02..376183216c4f1 100644
--- a/packages/cubejs-templates/CHANGELOG.md
+++ b/packages/cubejs-templates/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/templates
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/templates
diff --git a/packages/cubejs-templates/package.json b/packages/cubejs-templates/package.json
index 1b4a8f98dfef1..d821a0a24df9f 100644
--- a/packages/cubejs-templates/package.json
+++ b/packages/cubejs-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/templates",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Cube.js Templates helpers",
"author": "Cube Dev, Inc.",
"repository": {
@@ -31,7 +31,7 @@
"extends": "../cubejs-linter"
},
"dependencies": {
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/shared": "1.6.0",
"cross-spawn": "^7.0.3",
"decompress": "^4.2.1",
"decompress-targz": "^4.1.1",
@@ -41,7 +41,7 @@
"source-map-support": "^0.5.19"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"typescript": "~5.2.2"
}
}
diff --git a/packages/cubejs-testing-drivers/CHANGELOG.md b/packages/cubejs-testing-drivers/CHANGELOG.md
index 86f07e0c997b2..b728023b5840b 100644
--- a/packages/cubejs-testing-drivers/CHANGELOG.md
+++ b/packages/cubejs-testing-drivers/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/testing-drivers
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/testing-drivers
diff --git a/packages/cubejs-testing-drivers/package.json b/packages/cubejs-testing-drivers/package.json
index 22dc5b8199178..f429cb1c3b288 100644
--- a/packages/cubejs-testing-drivers/package.json
+++ b/packages/cubejs-testing-drivers/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/testing-drivers",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Cube.js drivers test suite",
"author": "Cube Dev, Inc.",
"repository": {
@@ -72,24 +72,24 @@
"dist/src"
],
"dependencies": {
- "@cubejs-backend/athena-driver": "1.5.16",
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/bigquery-driver": "1.5.16",
- "@cubejs-backend/clickhouse-driver": "1.5.16",
- "@cubejs-backend/cubestore-driver": "1.5.16",
- "@cubejs-backend/databricks-jdbc-driver": "1.5.16",
+ "@cubejs-backend/athena-driver": "1.6.0",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/bigquery-driver": "1.6.0",
+ "@cubejs-backend/clickhouse-driver": "1.6.0",
+ "@cubejs-backend/cubestore-driver": "1.6.0",
+ "@cubejs-backend/databricks-jdbc-driver": "1.6.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/mssql-driver": "1.5.16",
- "@cubejs-backend/mysql-driver": "1.5.16",
- "@cubejs-backend/postgres-driver": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
- "@cubejs-backend/server-core": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
- "@cubejs-backend/snowflake-driver": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
- "@cubejs-client/core": "1.5.16",
- "@cubejs-client/ws-transport": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/mssql-driver": "1.6.0",
+ "@cubejs-backend/mysql-driver": "1.6.0",
+ "@cubejs-backend/postgres-driver": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
+ "@cubejs-backend/server-core": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
+ "@cubejs-backend/snowflake-driver": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
+ "@cubejs-client/core": "1.6.0",
+ "@cubejs-client/ws-transport": "1.6.0",
"@jest/globals": "^29",
"@types/jest": "^29",
"@types/node": "^20",
diff --git a/packages/cubejs-testing-shared/CHANGELOG.md b/packages/cubejs-testing-shared/CHANGELOG.md
index f4666dcb0be75..a09103c94f75b 100644
--- a/packages/cubejs-testing-shared/CHANGELOG.md
+++ b/packages/cubejs-testing-shared/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/testing-shared
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/testing-shared
diff --git a/packages/cubejs-testing-shared/package.json b/packages/cubejs-testing-shared/package.json
index 6e24ce632d537..f128ebf6aafaf 100644
--- a/packages/cubejs-testing-shared/package.json
+++ b/packages/cubejs-testing-shared/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/testing-shared",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Cube.js Testing Helpers",
"author": "Cube Dev, Inc.",
"repository": {
@@ -26,16 +26,16 @@
],
"dependencies": {
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/query-orchestrator": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"@testcontainers/kafka": "~10.28.0",
"dedent": "^0.7.0",
"node-fetch": "^2.6.7",
"testcontainers": "^10.28.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@jest/globals": "^29",
"@types/dedent": "^0.7.0",
"@types/jest": "^29",
diff --git a/packages/cubejs-testing/CHANGELOG.md b/packages/cubejs-testing/CHANGELOG.md
index f92f20b04edcb..0f649db3f3a57 100644
--- a/packages/cubejs-testing/CHANGELOG.md
+++ b/packages/cubejs-testing/CHANGELOG.md
@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+### Bug Fixes
+
+- **server-core:** Access policies row filtering should respect member visibility ([#10257](https://github.com/cube-js/cube/issues/10257)) ([cc0e582](https://github.com/cube-js/cube/commit/cc0e5821669d6babe43d52264ebb3708fe8d1c0f))
+
+### BREAKING CHANGES
+
+- **server-core:** Policies not applicable due to member visibility may stop applying changing row level security filters
+
+- Linter
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/testing
diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js b/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js
index 9fd301aade759..3814ea6306784 100644
--- a/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js
+++ b/packages/cubejs-testing/birdbox-fixtures/rbac/cube.js
@@ -91,6 +91,47 @@ module.exports = {
},
};
}
+ // Developer user for testing overlapping policies scenario
+ // where group "*" has empty member includes and "developer" has row filter
+ if (user === 'developer') {
+ if (password && password !== 'developer_password') {
+ throw new Error(`Password doesn't match for ${user}`);
+ }
+ return {
+ password,
+ superuser: false,
+ securityContext: {
+ auth: {
+ username: 'developer',
+ userAttributes: {
+ region: 'CA',
+ allowedCities: ['Los Angeles', 'New York'],
+ },
+ roles: [],
+ groups: ['developer'],
+ },
+ },
+ };
+ }
+ // User for testing two-dimensional policy overlap (matches diagram in CompilerApi.ts)
+ // Has policy2_role, so both Policy 1 (*) and Policy 2 (policy2_role) apply
+ if (user === 'policy_test') {
+ if (password && password !== 'policy_test_password') {
+ throw new Error(`Password doesn't match for ${user}`);
+ }
+ return {
+ password,
+ superuser: false,
+ securityContext: {
+ auth: {
+ username: 'policy_test',
+ userAttributes: {},
+ roles: ['policy2_role'],
+ groups: [],
+ },
+ },
+ };
+ }
throw new Error(`User "${user}" doesn't exist`);
}
};
diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/customers.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/customers.yaml
new file mode 100644
index 0000000000000..e6b327f29c0e2
--- /dev/null
+++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/customers.yaml
@@ -0,0 +1,69 @@
+# Test case for overlapping access policies with member-level and row-level filters.
+#
+# This tests the scenario where:
+# - Policy 1: group "*" with memberLevel.includes: [] (no members)
+# - Policy 2: group "developer" with memberLevel.includes: "*" and row_level filters
+# - Policy 3: group "admin" with memberLevel.includes: "*" and allowAll
+#
+# The row-level filter from the developer policy SHOULD be applied when a developer
+# queries for members, because:
+#
+# Members
+# ^
+# | ┌─────────────────┐
+# | │ Policy 1 │ (no members, no row filter)
+# | │ ┌─────────────┼───────────────┐
+# | │ │ │ │
+# | └───┼─────────────┘ Policy 2 │ (all members, with row filter)
+# | │ │
+# | └─────────────────────────────┘
+# └──────────────────────────────────────────> Rows
+#
+# Policy 1 covers no members (empty includes), so it should not affect row filtering.
+# Policy 2 covers all members with a row filter, so the filter MUST be applied.
+
+cubes:
+ - name: customers
+ sql_table: users
+
+ measures:
+ - name: count
+ type: count
+
+ - name: total_count
+ sql: "1"
+ type: sum
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ - name: city
+ sql: city
+ type: string
+
+ access_policy:
+ # Policy 1: All groups, but grants access to NO members
+ - group: "*"
+ member_level:
+ includes: []
+
+ # Policy 2: Developers get all members, but with row-level filter on city
+ - group: developer
+ member_level:
+ includes: "*"
+ row_level:
+ filters:
+ - member: city
+ operator: equals
+ values: security_context.auth.userAttributes.allowedCities
+
+ # Policy 3: Admins get all members with no row restrictions
+ - group: leadership
+ member_level:
+ includes: "*"
+ row_level:
+ allow_all: true
+
diff --git a/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml
new file mode 100644
index 0000000000000..9fe920caf8744
--- /dev/null
+++ b/packages/cubejs-testing/birdbox-fixtures/rbac/model/cubes/policy_overlap_test.yaml
@@ -0,0 +1,81 @@
+# Test view for validating two-dimensional policy behavior
+# Matches the diagram in CompilerApi.ts:559-647
+#
+# Base cube has no policies - the view applies the access policies
+#
+# Policy 1: covers members a, b with row filter R1 (id < 500)
+# Policy 2: covers members b, c with row filter R2 (id >= 500)
+#
+# Expected behavior:
+# Query (a, b) → Only Policy 1 applies → R1 rows (id < 500)
+# Query (b, c) → Only Policy 2 applies → R2 rows (id >= 500)
+# Query (b) → Both policies apply → R1 ∪ R2 rows (all rows)
+# Query (a, b, c) → Neither covers all → Empty result (denied)
+
+cubes:
+ # Base cube with no access policy
+ - name: policy_overlap_base
+ sql_table: public.line_items
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ # Member "a" - only covered by Policy 1
+ - name: member_a
+ sql: order_id
+ type: number
+
+ # Member "b" - covered by both Policy 1 and Policy 2
+ - name: member_b
+ sql: product_id
+ type: number
+
+ # Member "c" - only covered by Policy 2
+ - name: member_c
+ sql: quantity
+ type: number
+
+ measures:
+ - name: count
+ type: count
+
+views:
+ # View with two-dimensional access policies
+ - name: policy_overlap_test
+ cubes:
+ - join_path: policy_overlap_base
+ includes: "*"
+
+ access_policy:
+ # Policy 1: covers members a, b (and count, id for filtering) with row filter R1 (id < 500)
+ - role: "*"
+ member_level:
+ includes:
+ - id
+ - count
+ - member_a
+ - member_b
+ row_level:
+ filters:
+ - member: id
+ operator: lt
+ values:
+ - "500"
+
+ # Policy 2: covers members b, c (and count, id for filtering) with row filter R2 (id >= 500)
+ - role: "policy2_role"
+ member_level:
+ includes:
+ - id
+ - count
+ - member_b
+ - member_c
+ row_level:
+ filters:
+ - member: id
+ operator: gte
+ values:
+ - "500"
diff --git a/packages/cubejs-testing/package.json b/packages/cubejs-testing/package.json
index deb5189334607..ac6f3d53b2534 100644
--- a/packages/cubejs-testing/package.json
+++ b/packages/cubejs-testing/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/testing",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "Cube.js e2e tests",
"author": "Cube Dev, Inc.",
"repository": {
@@ -99,15 +99,15 @@
"birdbox-fixtures"
],
"dependencies": {
- "@cubejs-backend/cubestore-driver": "1.5.16",
+ "@cubejs-backend/cubestore-driver": "1.6.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/ksql-driver": "1.5.16",
- "@cubejs-backend/postgres-driver": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
- "@cubejs-client/ws-transport": "1.5.16",
+ "@cubejs-backend/ksql-driver": "1.6.0",
+ "@cubejs-backend/postgres-driver": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
+ "@cubejs-client/ws-transport": "1.6.0",
"dedent": "^0.7.0",
"fs-extra": "^8.1.0",
"http-proxy": "^1.18.1",
@@ -118,8 +118,8 @@
},
"devDependencies": {
"@4tw/cypress-drag-drop": "^1.6.0",
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-client/core": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-client/core": "1.6.0",
"@jest/globals": "^29",
"@types/dedent": "^0.7.0",
"@types/http-proxy": "^1.17.5",
diff --git a/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap b/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap
index 645cd46bdd9ae..e0df534316b73 100644
--- a/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap
+++ b/packages/cubejs-testing/test/__snapshots__/smoke-rbac.test.ts.snap
@@ -761,6 +761,81 @@ Array [
]
`;
+exports[`Cube RBAC Engine RBAC via SQL API admin (overlapping policies - allowAll) SELECT * from customers should not apply row-level filter for admin: customers_admin 1`] = `
+Array [
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Austin",
+ "count": "1",
+ "total_count": 1,
+ },
+]
+`;
+
exports[`Cube RBAC Engine RBAC via SQL API default policy SELECT with member expressions: users_member_expression 1`] = `
Array [
Object {
@@ -769,6 +844,746 @@ Array [
]
`;
+exports[`Cube RBAC Engine RBAC via SQL API developer (overlapping policies) SELECT * from customers should apply row-level filter: customers_developer 1`] = `
+Array [
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+ Object {
+ "__cubeJoinField": null,
+ "__user": null,
+ "city": "Los Angeles",
+ "count": "1",
+ "total_count": 1,
+ },
+]
+`;
+
+exports[`Cube RBAC Engine RBAC via SQL API developer (overlapping policies) SELECT count from customers should apply row-level filter: customers_developer_count 1`] = `
+Array [
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+ Object {
+ "count": "1",
+ },
+]
+`;
+
exports[`Cube RBAC Engine RBAC via SQL API manager SELECT * from line_items: line_items_manager 1`] = `Array []`;
exports[`Cube RBAC Engine RBAC via SQL changing users Switching user should allow more members to be visible: line_items 1`] = `
diff --git a/packages/cubejs-testing/test/smoke-rbac.test.ts b/packages/cubejs-testing/test/smoke-rbac.test.ts
index 2d825ebf77609..87e1bce85404c 100644
--- a/packages/cubejs-testing/test/smoke-rbac.test.ts
+++ b/packages/cubejs-testing/test/smoke-rbac.test.ts
@@ -220,6 +220,164 @@ describe('Cube RBAC Engine', () => {
});
});
+ /**
+ * Test case for overlapping access policies with member-level and row-level filters.
+ *
+ * This tests the scenario where:
+ * - Policy 1: group "*" with memberLevel.includes: [] (no members)
+ * - Policy 2: group "developer" with memberLevel.includes: "*" and row_level filters
+ *
+ * The row-level filter from the developer policy SHOULD be applied when a developer
+ * queries for members, because:
+ *
+ * Members
+ * ^
+ * | ┌─────────────────┐
+ * | │ Policy 1 │ (no members, no row filter)
+ * | │ ┌─────────────┼───────────────┐
+ * | │ │ │ │
+ * | └───┼─────────────┘ Policy 2 │ (all members, with row filter)
+ * | │ │
+ * | └─────────────────────────────┘
+ * └──────────────────────────────────────────> Rows
+ *
+ * Policy 1 covers no members (empty includes), so it should not affect row filtering.
+ * Policy 2 covers all members with a row filter, so the filter MUST be applied.
+ */
+ describe('RBAC via SQL API developer (overlapping policies)', () => {
+ let connection: PgClient;
+
+ beforeAll(async () => {
+ connection = await createPostgresClient('developer', 'developer_password');
+ });
+
+ afterAll(async () => {
+ await connection.end();
+ }, JEST_AFTER_ALL_DEFAULT_TIMEOUT);
+
+ test('SELECT * from customers should apply row-level filter', async () => {
+ const res = await connection.query('SELECT * FROM customers limit 10');
+ // This query should return rows filtered by city (Los Angeles, New York) from Policy 2
+ // even though Policy 1 (group "*") has empty member includes
+ expect(res.rows).toMatchSnapshot('customers_developer');
+ expect(res.rows.length).toBeGreaterThan(0);
+ });
+
+ test('SELECT count from customers should apply row-level filter', async () => {
+ const res = await connection.query('SELECT count FROM customers');
+ // Count should reflect the filtered rows
+ expect(res.rows).toMatchSnapshot('customers_developer_count');
+ });
+ });
+
+ describe('RBAC via SQL API admin (overlapping policies - allowAll)', () => {
+ let connection: PgClient;
+
+ beforeAll(async () => {
+ // Admin is in 'leadership' group which has allowAll
+ connection = await createPostgresClient('admin', 'admin_password');
+ });
+
+ afterAll(async () => {
+ await connection.end();
+ }, JEST_AFTER_ALL_DEFAULT_TIMEOUT);
+
+ test('SELECT * from customers should not apply row-level filter for admin', async () => {
+ const res = await connection.query('SELECT * FROM customers limit 10');
+ // Admin should see all rows without any filter (allowAll)
+ expect(res.rows).toMatchSnapshot('customers_admin');
+ });
+ });
+
+ /**
+ * Two-dimensional policy overlap test (matches diagram in CompilerApi.ts:559-647)
+ *
+ * Policy 1 (role "*"): covers members a, b, id with row filter R1 (id < 500)
+ * Policy 2 (role "policy2_role"): covers members b, c, id with row filter R2 (id >= 500)
+ *
+ * Members
+ * ^
+ * | ┌─────────────────────────────┐
+ * c | │ Policy 2 │
+ * | ┌───┼─────────────┐ │
+ * b | │ │ (overlap) │ │
+ * | │ └─────────────┼───────────────┘
+ * a | │ Policy 1 │
+ * | └─────────────────┘
+ * └──────────────────────────────────────────> Rows
+ * R1 (id<500) R2 (id>=500)
+ */
+ describe('RBAC two-dimensional policy overlap (a,b,c diagram)', () => {
+ let connection: PgClient;
+
+ beforeAll(async () => {
+ // User has policy2_role, so both Policy 1 (*) and Policy 2 apply
+ connection = await createPostgresClient('policy_test', 'policy_test_password');
+ });
+
+ afterAll(async () => {
+ await connection.end();
+ }, JEST_AFTER_ALL_DEFAULT_TIMEOUT);
+
+ /**
+ * Case 1: Query members (a, b)
+ * Only Policy 1 covers ALL queried members → R1 rows visible (id < 500)
+ */
+ test('Case 1: Query (a, b) → Only R1 rows (id < 500)', async () => {
+ const res = await connection.query(
+ 'SELECT member_a, member_b FROM policy_overlap_test LIMIT 1000'
+ );
+ // R1 filter: id < 500, so count should be exactly 499
+ expect(res.rows.length).toBe(499);
+ });
+
+ /**
+ * Case 2: Query members (b, c)
+ * Only Policy 2 covers ALL queried members → R2 rows visible (id >= 500)
+ */
+ test('Case 2: Query (b, c) → Only R2 rows (id >= 500)', async () => {
+ const res = await connection.query(
+ 'SELECT member_b, member_c FROM policy_overlap_test LIMIT 60000'
+ );
+ // R2 filter: id >= 500, should get rows from the upper range
+ // The exact count depends on total rows in line_items table
+ expect(res.rows.length).toBeGreaterThan(0);
+ });
+
+ /**
+ * Case 3: Query member (b) only
+ * Both policies cover member b → Union of R1 ∪ R2 rows visible (all rows)
+ */
+ test('Case 3: Query (b) only → R1 ∪ R2 rows (union, all rows)', async () => {
+ // First get count from R1 only (querying a, b)
+ const r1Res = await connection.query(
+ 'SELECT member_a, member_b FROM policy_overlap_test LIMIT 1000'
+ );
+ const r1Count = r1Res.rows.length;
+
+ // Now get count from union (querying just b - both policies apply)
+ const unionRes = await connection.query(
+ 'SELECT member_b FROM policy_overlap_test LIMIT 60000'
+ );
+ const unionCount = unionRes.rows.length;
+
+ // Union should return more rows than R1 alone
+ expect(unionCount).toBeGreaterThan(r1Count);
+ });
+
+ /**
+ * Case 4: Query members (a, b, c)
+ * Neither policy covers ALL three → NO rows visible (denied)
+ */
+ test('Case 4: Query (a, b, c) → Access denied (empty result)', async () => {
+ const res = await connection.query(
+ 'SELECT member_a, member_b, member_c FROM policy_overlap_test LIMIT 10'
+ );
+ // No policy covers all three members, so access is denied
+ expect(res.rows.length).toBe(0);
+ });
+ });
+
describe('RBAC via REST API', () => {
let client: CubeApi;
let defaultClient: CubeApi;
@@ -249,6 +407,9 @@ describe('Cube RBAC Engine', () => {
});
test('line_items hidden price_dim', async () => {
+ // When querying hidden members, row-level security denies access
+ // by filtering out all rows (returns empty result)
+ // TODO we should evaluate member access before the query runs and bounce early with an error
let query: Query = {
measures: ['line_items.count'],
dimensions: ['line_items.price_dim'],
@@ -256,13 +417,10 @@ describe('Cube RBAC Engine', () => {
'line_items.price_dim': 'asc',
},
};
- let error = '';
- try {
- await client.load(query, {});
- } catch (e: any) {
- error = e.toString();
- }
- expect(error).toContain('You requested hidden member');
+ const hiddenMemberResult = await client.load(query, {});
+ // Row-level security denies access by returning empty results
+ expect(hiddenMemberResult.rawData()).toEqual([]);
+
query = {
measures: ['line_items_view_no_policy.count'],
dimensions: ['line_items_view_no_policy.price_dim'],
diff --git a/packages/cubejs-trino-driver/CHANGELOG.md b/packages/cubejs-trino-driver/CHANGELOG.md
index 8dfcfa6f1f108..0bf58294000d5 100644
--- a/packages/cubejs-trino-driver/CHANGELOG.md
+++ b/packages/cubejs-trino-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/trino-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/trino-driver
diff --git a/packages/cubejs-trino-driver/package.json b/packages/cubejs-trino-driver/package.json
index 0d6f2560d9c0a..c41f1c8ee3c7c 100644
--- a/packages/cubejs-trino-driver/package.json
+++ b/packages/cubejs-trino-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/trino-driver",
"description": "Cube.js Trino database driver",
"author": "Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,10 +27,10 @@
"lint:fix": "eslint --fix src/* --ext .ts"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/prestodb-driver": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/prestodb-driver": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"node-fetch": "^2.6.1",
"presto-client": "^1.1.0",
"sqlstring": "^2.3.1"
@@ -40,7 +40,7 @@
"access": "public"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"testcontainers": "^10.28.0",
diff --git a/packages/cubejs-vertica-driver/CHANGELOG.md b/packages/cubejs-vertica-driver/CHANGELOG.md
index 80aed46c3cfaf..65e3fe5e21ae2 100644
--- a/packages/cubejs-vertica-driver/CHANGELOG.md
+++ b/packages/cubejs-vertica-driver/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/vertica-driver
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/vertica-driver
diff --git a/packages/cubejs-vertica-driver/package.json b/packages/cubejs-vertica-driver/package.json
index abc376dce3960..5082c7628215b 100644
--- a/packages/cubejs-vertica-driver/package.json
+++ b/packages/cubejs-vertica-driver/package.json
@@ -2,7 +2,7 @@
"name": "@cubejs-backend/vertica-driver",
"description": "Cube.js Vertica database driver",
"author": "Eduard Karacharov, Tim Brown, Cube Dev, Inc.",
- "version": "1.5.16",
+ "version": "1.6.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -19,16 +19,16 @@
"lint:fix": "eslint --fix **/*.js"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.5.16",
- "@cubejs-backend/query-orchestrator": "1.5.16",
- "@cubejs-backend/schema-compiler": "1.5.16",
- "@cubejs-backend/shared": "1.5.16",
+ "@cubejs-backend/base-driver": "1.6.0",
+ "@cubejs-backend/query-orchestrator": "1.6.0",
+ "@cubejs-backend/schema-compiler": "1.6.0",
+ "@cubejs-backend/shared": "1.6.0",
"vertica-nodejs": "^1.0.3"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.5.16",
- "@cubejs-backend/testing-shared": "1.5.16",
+ "@cubejs-backend/linter": "1.6.0",
+ "@cubejs-backend/testing-shared": "1.6.0",
"@types/jest": "^29",
"jest": "^29",
"testcontainers": "^10.28.0"
diff --git a/rust/cubesql/CHANGELOG.md b/rust/cubesql/CHANGELOG.md
index b7b0ad7a1f314..37885e2ccf5b6 100644
--- a/rust/cubesql/CHANGELOG.md
+++ b/rust/cubesql/CHANGELOG.md
@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+**Note:** Version bump only for package @cubejs-backend/cubesql
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
### Features
diff --git a/rust/cubesql/package.json b/rust/cubesql/package.json
index b75efaf929c81..bfa5c998d7fd9 100644
--- a/rust/cubesql/package.json
+++ b/rust/cubesql/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/cubesql",
- "version": "1.5.16",
+ "version": "1.6.0",
"description": "SQL API for Cube as proxy over MySQL protocol.",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
diff --git a/rust/cubestore/.cargo/config.toml b/rust/cubestore/.cargo/config.toml
index 6e30debfdcad5..25ec84694a067 100644
--- a/rust/cubestore/.cargo/config.toml
+++ b/rust/cubestore/.cargo/config.toml
@@ -1,11 +1,15 @@
-[target."x86_64-unknown-linux-gnu"]
-# todo, move to rust-lld, when it will be in the stable or after (nightly-2024-05-18)
-rustflags = ["-C", "link-arg=-fuse-ld=lld"]
-
-[target."aarch64-unknown-linux-gnu"]
-# todo, move to rust-lld, when it will be in the stable or after (nightly-2024-05-18)
-rustflags = ["-C", "link-arg=-fuse-ld=lld"]
+#[target."x86_64-unknown-linux-gnu"]
+## todo, move to rust-lld, when it will be in the stable or after (nightly-2024-05-18)
+#rustflags = ["-C", "link-arg=-fuse-ld=lld"]
+#
+#[target."aarch64-unknown-linux-gnu"]
+## todo, move to rust-lld, when it will be in the stable or after (nightly-2024-05-18)
+#rustflags = ["-C", "link-arg=-fuse-ld=lld"]
# If you are going to use local fork, feel free to uncomment
#paths = ["../../../sqlparser-rs", "../../../arrow-datafusion/datafusion"]
-#paths = ["../../../arrow-datafusion/datafusion"]
+#paths = [
+# "../../../arrow-datafusion/datafusion/common",
+# "../../../arrow-datafusion/datafusion/physical-plan",
+# "../../../arrow-datafusion/datafusion/core"
+#]
diff --git a/rust/cubestore/CHANGELOG.md b/rust/cubestore/CHANGELOG.md
index caebc4eab409c..951af3ef7a48d 100644
--- a/rust/cubestore/CHANGELOG.md
+++ b/rust/cubestore/CHANGELOG.md
@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.6.0](https://github.com/cube-js/cube/compare/v1.5.16...v1.6.0) (2025-12-18)
+
+### Features
+
+- **cubestore:** Upgrade to DataFusion 46.0.1 ([#10215](https://github.com/cube-js/cube/issues/10215)) ([4ef3442](https://github.com/cube-js/cube/commit/4ef3442827b5c105c0f707674d4dae5ce282ae96))
+
## [1.5.16](https://github.com/cube-js/cube/compare/v1.5.15...v1.5.16) (2025-12-17)
**Note:** Version bump only for package @cubejs-backend/cubestore
diff --git a/rust/cubestore/Cargo.lock b/rust/cubestore/Cargo.lock
index 07899c065d873..ac354abf0ef5f 100644
--- a/rust/cubestore/Cargo.lock
+++ b/rust/cubestore/Cargo.lock
@@ -48,6 +48,12 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
[[package]]
name = "adler32"
version = "1.2.0"
@@ -100,11 +106,25 @@ dependencies = [
"version_check",
]
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if 1.0.0",
+ "const-random",
+ "getrandom 0.2.14",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
[[package]]
name = "aho-corasick"
-version = "0.7.18"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
dependencies = [
"memchr",
]
@@ -124,6 +144,27 @@ dependencies = [
"alloc-no-stdlib",
]
+[[package]]
+name = "allocator-api2"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "anes"
version = "0.1.6"
@@ -157,35 +198,222 @@ version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
+[[package]]
+name = "arrayref"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
+
[[package]]
name = "arrayvec"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+[[package]]
+name = "arrayvec"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
+
[[package]]
name = "arrow"
-version = "5.0.0"
-source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube#a9707aec73b95b590e5a452e786e66729f5d2d72"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-arith",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-csv",
+ "arrow-data",
+ "arrow-ipc",
+ "arrow-json",
+ "arrow-ord",
+ "arrow-row",
+ "arrow-schema",
+ "arrow-select",
+ "arrow-string",
+]
+
+[[package]]
+name = "arrow-arith"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "num 0.4.3",
+]
+
+[[package]]
+name = "arrow-array"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
dependencies = [
- "bitflags 1.3.2",
+ "ahash 0.8.11",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "chrono-tz 0.10.0",
+ "half 2.4.1",
+ "hashbrown 0.15.4",
+ "num 0.4.3",
+]
+
+[[package]]
+name = "arrow-buffer"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "bytes 1.10.1",
+ "half 2.4.1",
+ "num 0.4.3",
+]
+
+[[package]]
+name = "arrow-cast"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "atoi",
+ "base64 0.22.1",
"chrono",
"comfy-table",
+ "half 2.4.1",
+ "lexical-core 1.0.2",
+ "num 0.4.3",
+ "ryu",
+]
+
+[[package]]
+name = "arrow-csv"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-cast",
+ "arrow-schema",
+ "chrono",
"csv",
- "flatbuffers 2.0.0",
- "hex",
- "indexmap 1.7.0",
+ "csv-core",
"lazy_static",
- "lexical-core",
- "multiversion",
- "num 0.4.0",
- "rand 0.8.4",
"regex",
+]
+
+[[package]]
+name = "arrow-data"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-buffer",
+ "arrow-schema",
+ "half 2.4.1",
+ "num 0.4.3",
+]
+
+[[package]]
+name = "arrow-ipc"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "flatbuffers 24.12.23",
+ "lz4_flex",
+]
+
+[[package]]
+name = "arrow-json"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-schema",
+ "chrono",
+ "half 2.4.1",
+ "indexmap",
+ "lexical-core 1.0.2",
+ "num 0.4.3",
"serde",
- "serde_derive",
"serde_json",
]
+[[package]]
+name = "arrow-ord"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+]
+
+[[package]]
+name = "arrow-row"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "half 2.4.1",
+]
+
+[[package]]
+name = "arrow-schema"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "arrow-select"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "ahash 0.8.11",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "num 0.4.3",
+]
+
+[[package]]
+name = "arrow-string"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
+dependencies = [
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-data",
+ "arrow-schema",
+ "arrow-select",
+ "memchr",
+ "num 0.4.3",
+ "regex",
+ "regex-syntax",
+]
+
[[package]]
name = "async-compression"
version = "0.3.8"
@@ -199,6 +427,23 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "async-compression"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857"
+dependencies = [
+ "bzip2 0.4.4",
+ "flate2",
+ "futures-core",
+ "memchr",
+ "pin-project-lite 0.2.14",
+ "tokio",
+ "xz2",
+ "zstd",
+ "zstd-safe",
+]
+
[[package]]
name = "async-io"
version = "1.6.0"
@@ -282,7 +527,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -303,7 +548,16 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "atoi"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528"
+dependencies = [
+ "num-traits 0.2.19",
]
[[package]]
@@ -339,9 +593,9 @@ checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
[[package]]
name = "autocfg"
-version = "1.0.1"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "aws-creds"
@@ -378,7 +632,7 @@ dependencies = [
"cc",
"cfg-if 1.0.0",
"libc",
- "miniz_oxide",
+ "miniz_oxide 0.4.4",
"object",
"rustc-demangle",
]
@@ -403,9 +657,9 @@ checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
[[package]]
name = "base64"
-version = "0.22.0"
+version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bigdecimal"
@@ -415,7 +669,7 @@ checksum = "1374191e2dd25f9ae02e3aa95041ed5d747fc77b3c102b49fe2dd9a8117a6244"
dependencies = [
"num-bigint 0.2.6",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
"serde",
]
@@ -427,10 +681,23 @@ checksum = "cc403c26e6b03005522e6e8053384c4e881dfe5b2bf041c0c2c49be33d64a539"
dependencies = [
"num-bigint 0.3.3",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
"serde",
]
+[[package]]
+name = "bigdecimal"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a22f228ab7a1b23027ccc6c350b72868017af7ea8356fbdf19f8d991c690013"
+dependencies = [
+ "autocfg 1.4.0",
+ "libm",
+ "num-bigint 0.4.6",
+ "num-integer",
+ "num-traits 0.2.19",
+]
+
[[package]]
name = "bincode"
version = "1.3.3"
@@ -472,6 +739,28 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
+name = "blake3"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0"
+dependencies = [
+ "arrayref",
+ "arrayvec 0.7.6",
+ "cc",
+ "cfg-if 1.0.0",
+ "constant_time_eq",
+]
+
[[package]]
name = "block-buffer"
version = "0.7.3"
@@ -513,9 +802,9 @@ dependencies = [
[[package]]
name = "brotli"
-version = "3.3.2"
+version = "7.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71cb90ade945043d3d53597b2fc359bb063db8ade2bcffe7997351d0756e9d50"
+checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@@ -524,9 +813,9 @@ dependencies = [
[[package]]
name = "brotli-decompressor"
-version = "2.3.2"
+version = "4.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
+checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@@ -540,7 +829,7 @@ checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279"
dependencies = [
"lazy_static",
"memchr",
- "regex-automata",
+ "regex-automata 0.1.10",
"serde",
]
@@ -576,18 +865,36 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
[[package]]
name = "bytes"
-version = "1.6.0"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+
+[[package]]
+name = "bzip2"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
+dependencies = [
+ "bzip2-sys",
+ "libc",
+]
+
+[[package]]
+name = "bzip2"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47"
+dependencies = [
+ "bzip2-sys",
+]
[[package]]
name = "bzip2-sys"
-version = "0.1.11+1.0.8"
+version = "0.1.13+1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
dependencies = [
"cc",
- "libc",
"pkg-config",
]
@@ -636,12 +943,13 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.0.94"
+version = "1.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7"
+checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362"
dependencies = [
"jobserver",
"libc",
+ "shlex",
]
[[package]]
@@ -667,17 +975,17 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
-version = "0.4.20"
+version = "0.4.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6127248204b9aba09a362f6c930ef6a78f2c1b2215f8a7b398c06e1083f17af0"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
"js-sys",
- "num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
"serde",
- "time 0.1.43",
"wasm-bindgen",
- "winapi 0.3.9",
+ "windows-targets 0.52.4",
]
[[package]]
@@ -687,7 +995,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf9cc2b23599e6d7479755f3594285efb3f74a1bdca7a7374948bc831e23a552"
dependencies = [
"chrono",
- "chrono-tz-build",
+ "chrono-tz-build 0.1.0",
+ "phf",
+]
+
+[[package]]
+name = "chrono-tz"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6"
+dependencies = [
+ "chrono",
+ "chrono-tz-build 0.4.0",
"phf",
]
@@ -702,6 +1021,16 @@ dependencies = [
"phf_codegen",
]
+[[package]]
+name = "chrono-tz-build"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7"
+dependencies = [
+ "parse-zoneinfo",
+ "phf_codegen",
+]
+
[[package]]
name = "ciborium"
version = "0.2.0"
@@ -726,7 +1055,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
dependencies = [
"ciborium-io",
- "half",
+ "half 1.8.2",
]
[[package]]
@@ -797,7 +1126,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33dc6ee89f0440f1fc8356fc01d5451831bd9f390d9cce6a42b5805b63b36e27"
dependencies = [
"base64 0.13.0",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"chrono",
"dotenv",
"futures",
@@ -852,9 +1181,9 @@ dependencies = [
[[package]]
name = "comfy-table"
-version = "4.1.1"
+version = "7.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11e95a3e867422fd8d04049041f5671f94d53c32a9dcd82e2be268714942f3f3"
+checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7"
dependencies = [
"strum",
"strum_macros",
@@ -890,6 +1219,12 @@ dependencies = [
"tiny-keccak",
]
+[[package]]
+name = "constant_time_eq"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
+
[[package]]
name = "core-foundation"
version = "0.9.1"
@@ -902,9 +1237,9 @@ dependencies = [
[[package]]
name = "core-foundation-sys"
-version = "0.8.2"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "cpufeatures"
@@ -947,7 +1282,7 @@ dependencies = [
"futures",
"is-terminal",
"itertools 0.10.1",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
"once_cell",
"oorandom",
"plotters",
@@ -1018,7 +1353,7 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"cfg-if 0.1.10",
"crossbeam-utils 0.7.2",
"lazy_static",
@@ -1033,7 +1368,7 @@ version = "0.9.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"cfg-if 1.0.0",
"crossbeam-utils 0.8.15",
"memoffset 0.8.0",
@@ -1066,7 +1401,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"cfg-if 0.1.10",
"lazy_static",
]
@@ -1193,7 +1528,7 @@ dependencies = [
"actix-rt",
"anyhow",
"arc-swap",
- "async-compression",
+ "async-compression 0.3.8",
"async-std",
"async-stream",
"async-trait",
@@ -1201,9 +1536,9 @@ dependencies = [
"bigdecimal 0.2.0",
"bincode",
"byteorder",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"chrono",
- "chrono-tz",
+ "chrono-tz 0.8.2",
"cloud-storage",
"criterion",
"csv",
@@ -1215,6 +1550,9 @@ dependencies = [
"cubeshared",
"cubezetasketch",
"datafusion",
+ "datafusion-datasource",
+ "datafusion-proto",
+ "datafusion-proto-common",
"deadqueue",
"deepsize",
"deflate",
@@ -1227,10 +1565,10 @@ dependencies = [
"hex",
"http-auth-basic",
"humansize",
- "indexmap 2.10.0",
+ "indexmap",
"indoc",
"ipc-channel",
- "itertools 0.11.0",
+ "itertools 0.14.0",
"json",
"lazy_static",
"libc",
@@ -1239,21 +1577,23 @@ dependencies = [
"md5 0.8.0",
"memchr",
"mockall",
- "moka 0.10.1",
+ "moka",
"msql-srv",
"nanoid",
"num 0.3.1",
+ "object_store",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-otlp",
"opentelemetry_sdk",
- "parquet-format 2.6.1",
+ "parquet-format",
"parse-size",
"paste",
"pin-project",
"pin-project-lite 0.2.14",
"pretty_assertions",
- "rand 0.8.4",
+ "prost",
+ "rand 0.8.5",
"rdkafka",
"regex",
"reqwest 0.12.5",
@@ -1285,7 +1625,7 @@ dependencies = [
name = "cubestore-sql-tests"
version = "0.1.0"
dependencies = [
- "async-compression",
+ "async-compression 0.3.8",
"async-trait",
"base64 0.13.0",
"criterion",
@@ -1294,7 +1634,8 @@ dependencies = [
"flate2",
"indoc",
"ipc-channel",
- "itertools 0.9.0",
+ "itertools 0.14.0",
+ "lazy_static",
"log",
"pretty_assertions",
"reqwest 0.12.5",
@@ -1338,7 +1679,7 @@ dependencies = [
"proc-macro2",
"quote",
"scratch",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -1355,7 +1696,21 @@ checksum = "928bc249a7e3cd554fd2e8e08a426e9670c50bbfc9a621653cfa9accc9641783"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "dashmap"
+version = "6.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
+dependencies = [
+ "cfg-if 1.0.0",
+ "crossbeam-utils 0.8.15",
+ "hashbrown 0.14.5",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
]
[[package]]
@@ -1366,73 +1721,525 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "datafusion"
-version = "4.0.0-SNAPSHOT"
-source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube#735f2cb8051be9f196a3fdb09005c6e939dab1aa"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
dependencies = [
- "ahash",
"arrow",
+ "arrow-ipc",
+ "arrow-schema",
"async-trait",
+ "bytes 1.10.1",
+ "bzip2 0.5.2",
"chrono",
+ "datafusion-catalog",
+ "datafusion-catalog-listing",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-datasource",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-expr-common",
+ "datafusion-functions",
+ "datafusion-functions-aggregate",
+ "datafusion-functions-nested",
+ "datafusion-functions-table",
+ "datafusion-functions-window",
+ "datafusion-macros",
+ "datafusion-optimizer",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "datafusion-physical-optimizer",
+ "datafusion-physical-plan",
+ "datafusion-sql",
+ "flate2",
"futures",
- "hashbrown 0.11.2",
- "itertools 0.9.0",
- "lazy_static",
+ "itertools 0.14.0",
"log",
- "lru",
- "md-5",
- "moka 0.8.6",
- "num_cpus",
- "ordered-float 2.7.0",
+ "object_store",
+ "parking_lot",
"parquet",
- "paste",
- "pin-project-lite 0.2.14",
- "rand 0.8.4",
+ "rand 0.8.5",
"regex",
"serde",
- "serde_derive",
- "sha2 0.9.5",
- "smallvec",
"sqlparser",
+ "tempfile",
"tokio",
- "tokio-stream",
"tracing",
"tracing-futures",
- "unicode-segmentation",
+ "url",
+ "uuid 1.16.0",
+ "xz2",
+ "zstd",
]
[[package]]
-name = "deadqueue"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16a2561fd313df162315935989dceb8c99db4ee1933358270a57a3cfb8c957f3"
+name = "datafusion-catalog"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
dependencies = [
- "crossbeam-queue",
- "tokio",
+ "arrow",
+ "async-trait",
+ "dashmap",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-plan",
+ "datafusion-sql",
+ "futures",
+ "itertools 0.14.0",
+ "log",
+ "parking_lot",
]
[[package]]
-name = "deepsize"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cdb987ec36f6bf7bfbea3f928b75590b736fc42af8e54d97592481351b2b96c"
+name = "datafusion-catalog-listing"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
dependencies = [
- "deepsize_derive",
+ "arrow",
+ "async-trait",
+ "datafusion-catalog",
+ "datafusion-common",
+ "datafusion-datasource",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "datafusion-physical-plan",
+ "futures",
+ "log",
+ "object_store",
+ "tokio",
]
[[package]]
-name = "deepsize_derive"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "990101d41f3bc8c1a45641024377ee284ecc338e5ecf3ea0f0e236d897c72796"
+name = "datafusion-common"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.107",
-]
-
-[[package]]
-name = "deflate"
-version = "1.0.0"
+ "ahash 0.8.11",
+ "arrow",
+ "arrow-ipc",
+ "base64 0.22.1",
+ "half 2.4.1",
+ "hashbrown 0.14.5",
+ "indexmap",
+ "libc",
+ "log",
+ "object_store",
+ "parquet",
+ "paste",
+ "recursive",
+ "sqlparser",
+ "tokio",
+ "web-time",
+]
+
+[[package]]
+name = "datafusion-common-runtime"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "log",
+ "tokio",
+]
+
+[[package]]
+name = "datafusion-datasource"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "async-compression 0.4.17",
+ "async-trait",
+ "bytes 1.10.1",
+ "bzip2 0.5.2",
+ "chrono",
+ "datafusion-catalog",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "datafusion-physical-plan",
+ "flate2",
+ "futures",
+ "glob",
+ "itertools 0.14.0",
+ "log",
+ "object_store",
+ "rand 0.8.5",
+ "tokio",
+ "tokio-util",
+ "url",
+ "xz2",
+ "zstd",
+]
+
+[[package]]
+name = "datafusion-doc"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+
+[[package]]
+name = "datafusion-execution"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "dashmap",
+ "datafusion-common",
+ "datafusion-expr",
+ "futures",
+ "log",
+ "object_store",
+ "parking_lot",
+ "rand 0.8.5",
+ "tempfile",
+ "tracing",
+ "tracing-futures",
+ "url",
+]
+
+[[package]]
+name = "datafusion-expr"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "chrono",
+ "datafusion-common",
+ "datafusion-doc",
+ "datafusion-expr-common",
+ "datafusion-functions-aggregate-common",
+ "datafusion-functions-window-common",
+ "datafusion-physical-expr-common",
+ "indexmap",
+ "paste",
+ "recursive",
+ "serde_json",
+ "sqlparser",
+]
+
+[[package]]
+name = "datafusion-expr-common"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "datafusion-common",
+ "indexmap",
+ "itertools 0.14.0",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-functions"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "arrow-buffer",
+ "base64 0.22.1",
+ "blake2",
+ "blake3",
+ "chrono",
+ "datafusion-common",
+ "datafusion-doc",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-expr-common",
+ "datafusion-macros",
+ "hex",
+ "itertools 0.14.0",
+ "log",
+ "md-5",
+ "rand 0.8.5",
+ "regex",
+ "sha2 0.10.8",
+ "unicode-segmentation",
+ "uuid 1.16.0",
+]
+
+[[package]]
+name = "datafusion-functions-aggregate"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "ahash 0.8.11",
+ "arrow",
+ "datafusion-common",
+ "datafusion-doc",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions-aggregate-common",
+ "datafusion-macros",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "half 2.4.1",
+ "log",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-functions-aggregate-common"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "ahash 0.8.11",
+ "arrow",
+ "datafusion-common",
+ "datafusion-expr-common",
+ "datafusion-physical-expr-common",
+]
+
+[[package]]
+name = "datafusion-functions-nested"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "arrow-ord",
+ "datafusion-common",
+ "datafusion-doc",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions",
+ "datafusion-functions-aggregate",
+ "datafusion-macros",
+ "datafusion-physical-expr-common",
+ "itertools 0.14.0",
+ "log",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-functions-table"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "async-trait",
+ "datafusion-catalog",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-physical-plan",
+ "parking_lot",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-functions-window"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "datafusion-common",
+ "datafusion-doc",
+ "datafusion-expr",
+ "datafusion-functions-window-common",
+ "datafusion-macros",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "log",
+ "paste",
+]
+
+[[package]]
+name = "datafusion-functions-window-common"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "datafusion-common",
+ "datafusion-physical-expr-common",
+]
+
+[[package]]
+name = "datafusion-macros"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "datafusion-expr",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "datafusion-optimizer"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "chrono",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-physical-expr",
+ "indexmap",
+ "itertools 0.14.0",
+ "log",
+ "recursive",
+ "regex",
+ "regex-syntax",
+]
+
+[[package]]
+name = "datafusion-physical-expr"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "ahash 0.8.11",
+ "arrow",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-expr-common",
+ "datafusion-functions-aggregate-common",
+ "datafusion-physical-expr-common",
+ "half 2.4.1",
+ "hashbrown 0.14.5",
+ "indexmap",
+ "itertools 0.14.0",
+ "log",
+ "paste",
+ "petgraph",
+]
+
+[[package]]
+name = "datafusion-physical-expr-common"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "ahash 0.8.11",
+ "arrow",
+ "datafusion-common",
+ "datafusion-expr-common",
+ "hashbrown 0.14.5",
+ "itertools 0.14.0",
+]
+
+[[package]]
+name = "datafusion-physical-optimizer"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "datafusion-common",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-expr-common",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "datafusion-physical-plan",
+ "itertools 0.14.0",
+ "log",
+ "recursive",
+]
+
+[[package]]
+name = "datafusion-physical-plan"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "ahash 0.8.11",
+ "arrow",
+ "arrow-ord",
+ "arrow-schema",
+ "async-trait",
+ "chrono",
+ "datafusion-common",
+ "datafusion-common-runtime",
+ "datafusion-execution",
+ "datafusion-expr",
+ "datafusion-functions-window-common",
+ "datafusion-physical-expr",
+ "datafusion-physical-expr-common",
+ "futures",
+ "half 2.4.1",
+ "hashbrown 0.14.5",
+ "indexmap",
+ "itertools 0.14.0",
+ "log",
+ "parking_lot",
+ "pin-project-lite 0.2.14",
+ "serde",
+ "tokio",
+ "tracing",
+ "tracing-futures",
+]
+
+[[package]]
+name = "datafusion-proto"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "chrono",
+ "datafusion",
+ "datafusion-common",
+ "datafusion-expr",
+ "datafusion-proto-common",
+ "object_store",
+ "prost",
+]
+
+[[package]]
+name = "datafusion-proto-common"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "datafusion-common",
+ "prost",
+]
+
+[[package]]
+name = "datafusion-sql"
+version = "46.0.1"
+source = "git+https://github.com/cube-js/arrow-datafusion?branch=cube-46.0.1#2e928bb7230630e8d8e66ed8fcc1b6d759302a8a"
+dependencies = [
+ "arrow",
+ "bigdecimal 0.4.8",
+ "datafusion-common",
+ "datafusion-expr",
+ "indexmap",
+ "log",
+ "recursive",
+ "regex",
+ "sqlparser",
+]
+
+[[package]]
+name = "deadqueue"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16a2561fd313df162315935989dceb8c99db4ee1933358270a57a3cfb8c957f3"
+dependencies = [
+ "crossbeam-queue",
+ "tokio",
+]
+
+[[package]]
+name = "deepsize"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cdb987ec36f6bf7bfbea3f928b75590b736fc42af8e54d97592481351b2b96c"
+dependencies = [
+ "deepsize_derive",
+]
+
+[[package]]
+name = "deepsize_derive"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990101d41f3bc8c1a45641024377ee284ecc338e5ecf3ea0f0e236d897c72796"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.107",
+]
+
+[[package]]
+name = "deflate"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f"
dependencies = [
@@ -1501,6 +2308,17 @@ dependencies = [
"subtle",
]
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "dlv-list"
version = "0.5.2"
@@ -1622,7 +2440,7 @@ dependencies = [
"proc-macro2",
"quote",
"syn 1.0.107",
- "synstructure",
+ "synstructure 0.12.5",
]
[[package]]
@@ -1654,26 +2472,31 @@ checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98"
dependencies = [
"cfg-if 1.0.0",
"libc",
- "redox_syscall",
+ "redox_syscall 0.2.10",
"winapi 0.3.9",
]
+[[package]]
+name = "fixedbitset"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
+
[[package]]
name = "flatbuffers"
-version = "2.0.0"
+version = "23.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef4c5738bcd7fad10315029c50026f83c9da5e4a21f8ed66826f43e0e2bde5f6"
+checksum = "77f5399c2c9c50ae9418e522842ad362f61ee48b346ac106807bd355a8a7c619"
dependencies = [
"bitflags 1.3.2",
- "smallvec",
- "thiserror",
+ "rustc_version",
]
[[package]]
name = "flatbuffers"
-version = "23.1.21"
+version = "24.12.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77f5399c2c9c50ae9418e522842ad362f61ee48b346ac106807bd355a8a7c619"
+checksum = "4f1baf0dbf96932ec9a3038d57900329c015b0bfb7b63d904f3bc27e2b02a096"
dependencies = [
"bitflags 1.3.2",
"rustc_version",
@@ -1681,15 +2504,13 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.22"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f"
+checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece"
dependencies = [
- "cfg-if 1.0.0",
"crc32fast",
- "libc",
"libz-sys",
- "miniz_oxide",
+ "miniz_oxide 0.8.8",
]
[[package]]
@@ -1711,7 +2532,7 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -1849,7 +2670,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -1939,6 +2760,18 @@ dependencies = [
"wasi 0.11.0+wasi-snapshot-preview1",
]
+[[package]]
+name = "getrandom"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "r-efi",
+ "wasi 0.14.2+wasi-0.2.4",
+]
+
[[package]]
name = "ghash"
version = "0.5.1"
@@ -1967,13 +2800,13 @@ version = "0.3.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http 0.2.12",
- "indexmap 2.10.0",
+ "indexmap",
"slab",
"tokio",
"tokio-util",
@@ -1986,13 +2819,13 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http 1.1.0",
- "indexmap 2.10.0",
+ "indexmap",
"slab",
"tokio",
"tokio-util",
@@ -2005,20 +2838,35 @@ version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if 1.0.0",
+ "crunchy",
+ "num-traits 0.2.19",
+]
+
[[package]]
name = "hashbrown"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
dependencies = [
- "ahash",
+ "ahash 0.7.4",
]
[[package]]
name = "hashbrown"
-version = "0.14.3"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+dependencies = [
+ "ahash 0.8.11",
+ "allocator-api2",
+]
[[package]]
name = "hashbrown"
@@ -2034,7 +2882,7 @@ checksum = "f0b7591fb62902706ae8e7aaff416b1b0fa2c0fd0878b46dc13baa3712d8a855"
dependencies = [
"base64 0.13.0",
"bitflags 1.3.2",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"headers-core",
"http 0.2.12",
"mime",
@@ -2060,6 +2908,12 @@ dependencies = [
"unicode-segmentation",
]
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
[[package]]
name = "hermit-abi"
version = "0.1.19"
@@ -2105,7 +2959,7 @@ version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"fnv",
"itoa 1.0.1",
]
@@ -2116,7 +2970,7 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"fnv",
"itoa 1.0.1",
]
@@ -2136,7 +2990,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"http 0.2.12",
"pin-project-lite 0.2.14",
]
@@ -2147,7 +3001,7 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"http 1.1.0",
]
@@ -2157,7 +3011,7 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"futures-core",
"http 1.1.0",
"http-body 1.0.0",
@@ -2185,13 +3039,19 @@ dependencies = [
"libm",
]
+[[package]]
+name = "humantime"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424"
+
[[package]]
name = "hyper"
version = "0.14.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"futures-channel",
"futures-core",
"futures-util",
@@ -2215,7 +3075,7 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"futures-channel",
"futures-util",
"h2 0.4.4",
@@ -2230,74 +3090,216 @@ dependencies = [
]
[[package]]
-name = "hyper-rustls"
-version = "0.27.2"
+name = "hyper-rustls"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
+dependencies = [
+ "futures-util",
+ "http 1.1.0",
+ "hyper 1.2.0",
+ "hyper-util",
+ "rustls",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls",
+ "tower-service",
+ "webpki-roots",
+]
+
+[[package]]
+name = "hyper-tls"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+dependencies = [
+ "bytes 1.10.1",
+ "hyper 0.14.28",
+ "native-tls",
+ "tokio",
+ "tokio-native-tls",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
+dependencies = [
+ "bytes 1.10.1",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "hyper 1.2.0",
+ "pin-project-lite 0.2.14",
+ "socket2 0.5.6",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "icu_collections"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d"
+
+[[package]]
+name = "icu_normalizer"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "utf16_iter",
+ "utf8_iter",
+ "write16",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7"
+
+[[package]]
+name = "icu_properties"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
+checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
dependencies = [
- "futures-util",
- "http 1.1.0",
- "hyper 1.2.0",
- "hyper-util",
- "rustls",
- "rustls-pki-types",
- "tokio",
- "tokio-rustls",
- "tower-service",
- "webpki-roots",
+ "displaydoc",
+ "icu_collections",
+ "icu_locid_transform",
+ "icu_properties_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
]
[[package]]
-name = "hyper-tls"
-version = "0.5.0"
+name = "icu_properties_data"
+version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
+checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2"
+
+[[package]]
+name = "icu_provider"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
dependencies = [
- "bytes 1.6.0",
- "hyper 0.14.28",
- "native-tls",
- "tokio",
- "tokio-native-tls",
+ "displaydoc",
+ "icu_locid",
+ "icu_provider_macros",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerovec",
]
[[package]]
-name = "hyper-util"
-version = "0.1.3"
+name = "icu_provider_macros"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
- "bytes 1.6.0",
- "futures-channel",
- "futures-util",
- "http 1.1.0",
- "http-body 1.0.0",
- "hyper 1.2.0",
- "pin-project-lite 0.2.14",
- "socket2 0.5.6",
- "tokio",
- "tower",
- "tower-service",
- "tracing",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
]
[[package]]
name = "idna"
-version = "0.5.0"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
dependencies = [
- "unicode-bidi",
- "unicode-normalization",
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
]
[[package]]
-name = "indexmap"
-version = "1.7.0"
+name = "idna_adapter"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
+checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
dependencies = [
- "autocfg 1.0.1",
- "hashbrown 0.11.2",
+ "icu_normalizer",
+ "icu_properties",
]
[[package]]
@@ -2321,9 +3323,9 @@ dependencies = [
[[package]]
name = "inout"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
dependencies = [
"generic-array 0.14.4",
]
@@ -2343,6 +3345,12 @@ version = "1.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48dc51180a9b377fd75814d0cc02199c20f8e99433d6762f650d39cdbbd3b56f"
+[[package]]
+name = "integer-encoding"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02"
+
[[package]]
name = "iovec"
version = "0.1.4"
@@ -2364,10 +3372,10 @@ dependencies = [
"lazy_static",
"libc",
"mio 0.8.11",
- "rand 0.8.4",
+ "rand 0.8.5",
"serde",
"tempfile",
- "uuid 1.3.0",
+ "uuid 1.16.0",
"windows",
]
@@ -2388,15 +3396,6 @@ dependencies = [
"windows-sys 0.52.0",
]
-[[package]]
-name = "itertools"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
-dependencies = [
- "either",
-]
-
[[package]]
name = "itertools"
version = "0.10.1"
@@ -2408,18 +3407,18 @@ dependencies = [
[[package]]
name = "itertools"
-version = "0.11.0"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
dependencies = [
"either",
]
[[package]]
name = "itertools"
-version = "0.13.0"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
dependencies = [
"either",
]
@@ -2438,9 +3437,9 @@ checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
[[package]]
name = "jobserver"
-version = "0.1.23"
+version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5ca711fd837261e14ec9e674f092cbb931d3fa1482b017ae59328ddc6f3212b"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
dependencies = [
"libc",
]
@@ -2521,7 +3520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f404a90a744e32e8be729034fc33b90cf2a56418fbf594d69aa3c0214ad414e5"
dependencies = [
"cfg-if 1.0.0",
- "lexical-core",
+ "lexical-core 0.7.6",
]
[[package]]
@@ -2530,18 +3529,82 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
dependencies = [
- "arrayvec",
+ "arrayvec 0.5.2",
"bitflags 1.3.2",
"cfg-if 1.0.0",
"ryu",
"static_assertions",
]
+[[package]]
+name = "lexical-core"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0431c65b318a590c1de6b8fd6e72798c92291d27762d94c9e6c37ed7a73d8458"
+dependencies = [
+ "lexical-parse-float",
+ "lexical-parse-integer",
+ "lexical-util",
+ "lexical-write-float",
+ "lexical-write-integer",
+]
+
+[[package]]
+name = "lexical-parse-float"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb17a4bdb9b418051aa59d41d65b1c9be5affab314a872e5ad7f06231fb3b4e0"
+dependencies = [
+ "lexical-parse-integer",
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-parse-integer"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5df98f4a4ab53bf8b175b363a34c7af608fe31f93cc1fb1bf07130622ca4ef61"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-util"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85314db53332e5c192b6bca611fb10c114a80d1b831ddac0af1e9be1b9232ca0"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-write-float"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e7c3ad4e37db81c1cbe7cf34610340adc09c322871972f74877a712abc6c809"
+dependencies = [
+ "lexical-util",
+ "lexical-write-integer",
+ "static_assertions",
+]
+
+[[package]]
+name = "lexical-write-integer"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb89e9f6958b83258afa3deed90b5de9ef68eef090ad5086c791cd2345610162"
+dependencies = [
+ "lexical-util",
+ "static_assertions",
+]
+
[[package]]
name = "libc"
-version = "0.2.153"
+version = "0.2.172"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
[[package]]
name = "libloading"
@@ -2550,7 +3613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19"
dependencies = [
"cfg-if 1.0.0",
- "windows-targets 0.52.4",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -2576,9 +3639,9 @@ dependencies = [
[[package]]
name = "libz-sys"
-version = "1.1.3"
+version = "1.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66"
+checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472"
dependencies = [
"cc",
"libc",
@@ -2601,12 +3664,19 @@ version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+[[package]]
+name = "litemap"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
+
[[package]]
name = "lock_api"
-version = "0.4.6"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
dependencies = [
+ "autocfg 1.4.0",
"scopeguard",
]
@@ -2629,23 +3699,23 @@ dependencies = [
]
[[package]]
-name = "lz4"
-version = "1.23.2"
+name = "lz4_flex"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aac20ed6991e01bf6a2e68cc73df2b389707403662a8ba89f68511fb340f724c"
+checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5"
dependencies = [
- "libc",
- "lz4-sys",
+ "twox-hash",
]
[[package]]
-name = "lz4-sys"
-version = "1.9.2"
+name = "lzma-sys"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dca79aa95d8b3226213ad454d328369853be3a1382d89532a854f4d69640acae"
+checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
dependencies = [
"cc",
"libc",
+ "pkg-config",
]
[[package]]
@@ -2665,7 +3735,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -2676,13 +3746,12 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "md-5"
-version = "0.9.1"
+version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15"
+checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
dependencies = [
- "block-buffer 0.9.0",
- "digest 0.9.0",
- "opaque-debug 0.3.0",
+ "cfg-if 1.0.0",
+ "digest 0.10.7",
]
[[package]]
@@ -2699,9 +3768,9 @@ checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0"
[[package]]
name = "memchr"
-version = "2.4.0"
+version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memoffset"
@@ -2709,7 +3778,7 @@ version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
]
[[package]]
@@ -2718,7 +3787,7 @@ version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
]
[[package]]
@@ -2727,7 +3796,7 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
]
[[package]]
@@ -2759,7 +3828,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
dependencies = [
"adler",
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
+dependencies = [
+ "adler2",
]
[[package]]
@@ -2793,6 +3871,17 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "mio"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+dependencies = [
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "mio-uds"
version = "0.6.8"
@@ -2843,28 +3932,6 @@ dependencies = [
"syn 1.0.107",
]
-[[package]]
-name = "moka"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "975fa04238144061e7f8df9746b2e9cd93ef85881da5548d842a7c6a4b614415"
-dependencies = [
- "crossbeam-channel 0.5.7",
- "crossbeam-epoch 0.8.2",
- "crossbeam-utils 0.8.15",
- "num_cpus",
- "once_cell",
- "parking_lot",
- "quanta",
- "scheduled-thread-pool",
- "skeptic",
- "smallvec",
- "tagptr",
- "thiserror",
- "triomphe",
- "uuid 1.3.0",
-]
-
[[package]]
name = "moka"
version = "0.10.1"
@@ -2888,7 +3955,7 @@ dependencies = [
"tagptr",
"thiserror",
"triomphe",
- "uuid 1.3.0",
+ "uuid 1.16.0",
]
[[package]]
@@ -2901,7 +3968,7 @@ dependencies = [
"chrono",
"mysql_common",
"nom",
- "rand 0.8.4",
+ "rand 0.8.5",
"time 0.2.7",
"tokio",
]
@@ -2912,7 +3979,7 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"encoding_rs",
"futures-util",
"http 0.2.12",
@@ -2924,26 +3991,6 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "multiversion"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "025c962a3dd3cc5e0e520aa9c612201d127dcdf28616974961a649dca64f5373"
-dependencies = [
- "multiversion-macros",
-]
-
-[[package]]
-name = "multiversion-macros"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8a3e2bde382ebf960c1f3e79689fa5941625fe9bf694a1cb64af3e85faff3af"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 1.0.107",
-]
-
[[package]]
name = "mysql_common"
version = "0.22.2"
@@ -2961,7 +4008,7 @@ dependencies = [
"lazy_static",
"lexical",
"num-bigint 0.2.6",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
"rand 0.7.3",
"regex",
"rust_decimal",
@@ -3039,21 +4086,21 @@ dependencies = [
"num-integer",
"num-iter",
"num-rational 0.3.2",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
name = "num"
-version = "0.4.0"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
dependencies = [
- "num-bigint 0.4.3",
- "num-complex 0.4.0",
+ "num-bigint 0.4.6",
+ "num-complex 0.4.6",
"num-integer",
"num-iter",
- "num-rational 0.4.0",
- "num-traits 0.2.14",
+ "num-rational 0.4.2",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3062,9 +4109,9 @@ version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3073,20 +4120,19 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
name = "num-bigint"
-version = "0.4.3"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
dependencies = [
- "autocfg 1.0.1",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3095,16 +4141,16 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
name = "num-complex"
-version = "0.4.0"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3115,23 +4161,22 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num-integer"
-version = "0.1.44"
+version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
dependencies = [
- "autocfg 1.0.1",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
name = "num-iter"
-version = "0.1.42"
+version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3140,22 +4185,21 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"num-bigint 0.3.3",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
name = "num-rational"
-version = "0.4.0"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
dependencies = [
- "autocfg 1.0.1",
- "num-bigint 0.4.3",
+ "num-bigint 0.4.6",
"num-integer",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3164,16 +4208,17 @@ version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
name = "num-traits"
-version = "0.2.14"
+version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
+ "libm",
]
[[package]]
@@ -3226,7 +4271,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -3247,6 +4292,27 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "object_store"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6eb4c22c6154a1e759d7099f9ffad7cc5ef8245f9efbab4a41b92623079c82f3"
+dependencies = [
+ "async-trait",
+ "bytes 1.10.1",
+ "chrono",
+ "futures",
+ "humantime",
+ "itertools 0.13.0",
+ "parking_lot",
+ "percent-encoding",
+ "snafu",
+ "tokio",
+ "tracing",
+ "url",
+ "walkdir",
+]
+
[[package]]
name = "once_cell"
version = "1.19.0"
@@ -3336,7 +4402,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6351496aeaa49d7c267fb480678d85d1cd30c5edb20b497c48c56f62a8c14b99"
dependencies = [
"async-trait",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"http 1.1.0",
"opentelemetry",
"reqwest 0.12.5",
@@ -3390,7 +4456,7 @@ dependencies = [
"once_cell",
"opentelemetry",
"percent-encoding",
- "rand 0.8.4",
+ "rand 0.8.5",
"serde_json",
"thiserror",
"tokio",
@@ -3403,7 +4469,7 @@ version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3412,7 +4478,7 @@ version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "039f02eb0f69271f26abe3202189275d7aa2258b903cb0281b5de710a2570ff3"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -3422,7 +4488,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
dependencies = [
"dlv-list",
- "hashbrown 0.14.3",
+ "hashbrown 0.14.5",
]
[[package]]
@@ -3462,38 +4528,55 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.3"
+version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if 1.0.0",
"libc",
- "redox_syscall",
+ "redox_syscall 0.5.7",
"smallvec",
- "windows-sys 0.36.1",
+ "windows-targets 0.52.4",
]
[[package]]
name = "parquet"
-version = "5.0.0"
-source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube#a9707aec73b95b590e5a452e786e66729f5d2d72"
+version = "54.2.1"
+source = "git+https://github.com/cube-js/arrow-rs.git?branch=cube-46.0.1#03cb44c47e39a51826e4bc1f49aeae4c34b02631"
dependencies = [
"aes-gcm",
- "arrow",
- "base64 0.13.0",
+ "ahash 0.8.11",
+ "arrow-array",
+ "arrow-buffer",
+ "arrow-cast",
+ "arrow-data",
+ "arrow-ipc",
+ "arrow-schema",
+ "arrow-select",
+ "base64 0.22.1",
"brotli",
- "byteorder",
+ "bytes 1.10.1",
"chrono",
"flate2",
- "lz4",
- "num-bigint 0.4.3",
- "parquet-format 4.0.0",
- "rand 0.8.4",
+ "futures",
+ "half 2.4.1",
+ "hashbrown 0.15.4",
+ "lz4_flex",
+ "num 0.4.3",
+ "num-bigint 0.4.6",
+ "object_store",
+ "paste",
+ "rand 0.8.5",
+ "seq-macro",
"serde",
"sha3",
+ "simdutf8",
"snap",
- "thrift",
+ "thrift 0.17.0",
+ "tokio",
+ "twox-hash",
"zstd",
+ "zstd-sys",
]
[[package]]
@@ -3502,16 +4585,7 @@ version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5bc6b23543b5dedc8f6cce50758a35e5582e148e0cfa26bd0cacd569cda5b71"
dependencies = [
- "thrift",
-]
-
-[[package]]
-name = "parquet-format"
-version = "4.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f0c06cdcd5460967c485f9c40a821746f5955ad81990533c7fae95dbd9bc0b5"
-dependencies = [
- "thrift",
+ "thrift 0.13.0",
]
[[package]]
@@ -3531,9 +4605,9 @@ dependencies = [
[[package]]
name = "paste"
-version = "1.0.5"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "peeking_take_while"
@@ -3558,6 +4632,16 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+[[package]]
+name = "petgraph"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772"
+dependencies = [
+ "fixedbitset",
+ "indexmap",
+]
+
[[package]]
name = "phf"
version = "0.11.1"
@@ -3584,7 +4668,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf"
dependencies = [
"phf_shared",
- "rand 0.8.4",
+ "rand 0.8.5",
]
[[package]]
@@ -3613,7 +4697,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -3646,7 +4730,7 @@ version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
dependencies = [
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
"plotters-backend",
"plotters-svg",
"wasm-bindgen",
@@ -3788,9 +4872,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
[[package]]
name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
dependencies = [
"unicode-ident",
]
@@ -3801,7 +4885,7 @@ version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"prost-derive",
]
@@ -3812,10 +4896,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5"
dependencies = [
"anyhow",
- "itertools 0.13.0",
+ "itertools 0.10.1",
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -3824,6 +4908,15 @@ version = "2.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db50e77ae196458ccd3dc58a31ea1a90b0698ab1b7928d89f644c25d72070267"
+[[package]]
+name = "psm"
+version = "0.1.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f58e5423e24c18cc840e1c98370b3993c6649cd1678b4d24318bcf0a083cbe88"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "pulldown-cmark"
version = "0.9.1"
@@ -3867,7 +4960,7 @@ version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"pin-project-lite 0.2.14",
"quinn-proto",
"quinn-udp",
@@ -3885,8 +4978,8 @@ version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd"
dependencies = [
- "bytes 1.6.0",
- "rand 0.8.4",
+ "bytes 1.10.1",
+ "rand 0.8.5",
"ring 0.17.8",
"rustc-hash 2.0.0",
"rustls",
@@ -3911,13 +5004,19 @@ dependencies = [
[[package]]
name = "quote"
-version = "1.0.35"
+version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
+[[package]]
+name = "r-efi"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
[[package]]
name = "rand"
version = "0.6.5"
@@ -3952,14 +5051,13 @@ dependencies = [
[[package]]
name = "rand"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.3",
- "rand_hc 0.3.1",
]
[[package]]
@@ -4031,25 +5129,16 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
dependencies = [
- "rand_core 0.3.1",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core 0.5.1",
+ "rand_core 0.3.1",
]
[[package]]
name = "rand_hc"
-version = "0.3.1"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
- "rand_core 0.6.3",
+ "rand_core 0.5.1",
]
[[package]]
@@ -4120,7 +5209,7 @@ version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
dependencies = [
- "autocfg 1.0.1",
+ "autocfg 1.4.0",
"crossbeam-deque 0.8.1",
"either",
"rayon-core",
@@ -4181,6 +5270,26 @@ dependencies = [
"rand_core 0.3.1",
]
+[[package]]
+name = "recursive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0786a43debb760f491b1bc0269fe5e84155353c67482b9e60d0cfb596054b43e"
+dependencies = [
+ "recursive-proc-macro-impl",
+ "stacker",
+]
+
+[[package]]
+name = "recursive-proc-macro-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b"
+dependencies = [
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "redox_syscall"
version = "0.2.10"
@@ -4190,14 +5299,24 @@ dependencies = [
"bitflags 1.3.2",
]
+[[package]]
+name = "redox_syscall"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
[[package]]
name = "regex"
-version = "1.5.4"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [
"aho-corasick",
"memchr",
+ "regex-automata 0.4.8",
"regex-syntax",
]
@@ -4207,11 +5326,22 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+[[package]]
+name = "regex-automata"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
[[package]]
name = "regex-syntax"
-version = "0.6.25"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "reqwest"
@@ -4220,7 +5350,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
dependencies = [
"base64 0.21.5",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"encoding_rs",
"futures-core",
"futures-util",
@@ -4261,8 +5391,8 @@ version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37"
dependencies = [
- "base64 0.22.0",
- "bytes 1.6.0",
+ "base64 0.22.1",
+ "bytes 1.10.1",
"futures-channel",
"futures-core",
"futures-util",
@@ -4386,8 +5516,8 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5446d1cf2dfe2d6367c8b27f2082bdf011e60e76fa1fcd140047f535156d6e7"
dependencies = [
- "arrayvec",
- "num-traits 0.2.14",
+ "arrayvec 0.5.2",
+ "num-traits 0.2.19",
"serde",
]
@@ -4460,7 +5590,7 @@ version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
dependencies = [
- "base64 0.22.0",
+ "base64 0.22.1",
"rustls-pki-types",
]
@@ -4489,9 +5619,9 @@ checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088"
[[package]]
name = "ryu"
-version = "1.0.5"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "same-file"
@@ -4583,11 +5713,17 @@ dependencies = [
"serde",
]
+[[package]]
+name = "seq-macro"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4"
+
[[package]]
name = "serde"
-version = "1.0.197"
+version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5"
dependencies = [
"serde_derive",
]
@@ -4615,13 +5751,13 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.197"
+version = "1.0.214"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -4630,7 +5766,6 @@ version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
dependencies = [
- "indexmap 2.10.0",
"itoa 1.0.1",
"ryu",
"serde",
@@ -4644,7 +5779,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -4701,19 +5836,6 @@ dependencies = [
"opaque-debug 0.2.3",
]
-[[package]]
-name = "sha2"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12"
-dependencies = [
- "block-buffer 0.9.0",
- "cfg-if 1.0.0",
- "cpufeatures 0.1.5",
- "digest 0.9.0",
- "opaque-debug 0.3.0",
-]
-
[[package]]
name = "sha2"
version = "0.10.8"
@@ -4756,9 +5878,9 @@ dependencies = [
[[package]]
name = "shlex"
-version = "1.0.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42a568c8f2cd051a4d283bd6eb0343ac214c1b0f1ac19f93e1175b2dee38c73d"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "signal-hook-registry"
@@ -4769,6 +5891,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "simdutf8"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
+
[[package]]
name = "simple_asn1"
version = "0.4.1"
@@ -4777,7 +5905,7 @@ checksum = "692ca13de57ce0613a363c8c2f1de925adebc81b04c923ac60c5488bb44abe4b"
dependencies = [
"chrono",
"num-bigint 0.2.6",
- "num-traits 0.2.14",
+ "num-traits 0.2.19",
]
[[package]]
@@ -4826,6 +5954,27 @@ version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+[[package]]
+name = "snafu"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019"
+dependencies = [
+ "snafu-derive",
+]
+
+[[package]]
+name = "snafu-derive"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "snap"
version = "1.0.5"
@@ -4866,10 +6015,41 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]]
name = "sqlparser"
-version = "0.9.0"
-source = "git+https://github.com/cube-js/sqlparser-rs.git?rev=4388f6712dae5073c2d71d74f64cae2edd418066#4388f6712dae5073c2d71d74f64cae2edd418066"
+version = "0.54.0"
+source = "git+https://github.com/cube-js/sqlparser-rs.git?branch=cube-46.0.1#26fd2d4b7b44273f373e719dfae4bd1968216eeb"
dependencies = [
"log",
+ "recursive",
+ "sqlparser_derive",
+]
+
+[[package]]
+name = "sqlparser_derive"
+version = "0.3.0"
+source = "git+https://github.com/cube-js/sqlparser-rs.git?branch=cube-46.0.1#26fd2d4b7b44273f373e719dfae4bd1968216eeb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "stacker"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601f9201feb9b09c00266478bf459952b9ef9a6b94edb2f21eba14ab681a60a9"
+dependencies = [
+ "cc",
+ "cfg-if 1.0.0",
+ "libc",
+ "psm",
+ "windows-sys 0.52.0",
]
[[package]]
@@ -4910,7 +6090,7 @@ version = "0.4.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
dependencies = [
- "heck",
+ "heck 0.3.3",
"proc-macro-error",
"proc-macro2",
"quote",
@@ -4919,20 +6099,21 @@ dependencies = [
[[package]]
name = "strum"
-version = "0.21.0"
+version = "0.26.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2"
+checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
[[package]]
name = "strum_macros"
-version = "0.21.1"
+version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec"
+checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be"
dependencies = [
- "heck",
+ "heck 0.5.0",
"proc-macro2",
"quote",
- "syn 1.0.107",
+ "rustversion",
+ "syn 2.0.87",
]
[[package]]
@@ -4954,9 +6135,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.58"
+version = "2.0.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
+checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
dependencies = [
"proc-macro2",
"quote",
@@ -4987,6 +6168,17 @@ dependencies = [
"unicode-xid",
]
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "system-configuration"
version = "0.5.1"
@@ -5107,12 +6299,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c6d965454947cc7266d22716ebfd07b18d84ebaf35eec558586bbb2a8cb6b5b"
dependencies = [
"byteorder",
- "integer-encoding",
+ "integer-encoding 1.1.7",
"log",
"ordered-float 1.1.1",
"threadpool",
]
+[[package]]
+name = "thrift"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09"
+dependencies = [
+ "byteorder",
+ "integer-encoding 3.0.4",
+ "ordered-float 2.7.0",
+]
+
[[package]]
name = "tikv-jemalloc-sys"
version = "0.5.4+5.3.0-patched"
@@ -5210,6 +6413,16 @@ dependencies = [
"crunchy",
]
+[[package]]
+name = "tinystr"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
[[package]]
name = "tinytemplate"
version = "1.2.1"
@@ -5237,32 +6450,31 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
-version = "1.37.0"
+version = "1.44.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
+checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48"
dependencies = [
"backtrace",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"libc",
- "mio 0.8.11",
- "num_cpus",
+ "mio 1.0.3",
"parking_lot",
"pin-project-lite 0.2.14",
"signal-hook-registry",
"socket2 0.5.6",
"tokio-macros",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "tokio-macros"
-version = "2.2.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
]
[[package]]
@@ -5317,7 +6529,7 @@ version = "0.7.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"futures-core",
"futures-io",
"futures-sink",
@@ -5342,8 +6554,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
dependencies = [
"async-trait",
- "base64 0.22.0",
- "bytes 1.6.0",
+ "base64 0.22.1",
+ "bytes 1.10.1",
"http 1.1.0",
"http-body 1.0.0",
"http-body-util",
@@ -5423,6 +6635,8 @@ version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
dependencies = [
+ "futures",
+ "futures-task",
"pin-project",
"tracing",
]
@@ -5501,13 +6715,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9"
dependencies = [
"byteorder",
- "bytes 1.6.0",
+ "bytes 1.10.1",
"data-encoding",
"http 0.2.12",
"httparse",
"log",
"native-tls",
- "rand 0.8.4",
+ "rand 0.8.5",
"sha1 0.10.6",
"thiserror",
"url",
@@ -5520,7 +6734,7 @@ version = "1.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if 0.1.10",
"rand 0.6.5",
"static_assertions",
]
@@ -5540,27 +6754,12 @@ dependencies = [
"version_check",
]
-[[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
[[package]]
name = "unicode-ident"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
-[[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
-
[[package]]
name = "unicode-segmentation"
version = "1.8.0"
@@ -5609,9 +6808,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "url"
-version = "2.5.2"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
dependencies = [
"form_urlencoded",
"idna",
@@ -5624,6 +6823,18 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+[[package]]
+name = "utf16_iter"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
[[package]]
name = "uuid"
version = "0.8.2"
@@ -5636,11 +6847,13 @@ dependencies = [
[[package]]
name = "uuid"
-version = "1.3.0"
+version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
+checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
dependencies = [
- "getrandom 0.2.14",
+ "getrandom 0.3.2",
+ "js-sys",
+ "wasm-bindgen",
]
[[package]]
@@ -5669,9 +6882,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "version_check"
-version = "0.9.3"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "waker-fn"
@@ -5706,7 +6919,7 @@ version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1e92e22e03ff1230c03a1a8ee37d2f89cd489e2e541b7550d6afad96faed169"
dependencies = [
- "bytes 1.6.0",
+ "bytes 1.10.1",
"futures-channel",
"futures-util",
"headers",
@@ -5749,6 +6962,15 @@ version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+[[package]]
+name = "wasi"
+version = "0.14.2+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
[[package]]
name = "wasm-bindgen"
version = "0.2.92"
@@ -5770,7 +6992,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
"wasm-bindgen-shared",
]
@@ -5804,7 +7026,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.58",
+ "syn 2.0.87",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -5919,16 +7141,12 @@ dependencies = [
]
[[package]]
-name = "windows-sys"
-version = "0.36.1"
+name = "windows-core"
+version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows_aarch64_msvc 0.36.1",
- "windows_i686_gnu 0.36.1",
- "windows_i686_msvc 0.36.1",
- "windows_x86_64_gnu 0.36.1",
- "windows_x86_64_msvc 0.36.1",
+ "windows-targets 0.52.4",
]
[[package]]
@@ -6012,12 +7230,6 @@ version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.36.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
-
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.0"
@@ -6036,12 +7248,6 @@ version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
-[[package]]
-name = "windows_i686_gnu"
-version = "0.36.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
-
[[package]]
name = "windows_i686_gnu"
version = "0.42.0"
@@ -6060,12 +7266,6 @@ version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
-[[package]]
-name = "windows_i686_msvc"
-version = "0.36.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
-
[[package]]
name = "windows_i686_msvc"
version = "0.42.0"
@@ -6084,12 +7284,6 @@ version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.36.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
-
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.0"
@@ -6126,12 +7320,6 @@ version = "0.52.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.36.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
-
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.0"
@@ -6170,6 +7358,27 @@ dependencies = [
"windows-sys 0.48.0",
]
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
+name = "write16"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+[[package]]
+name = "writeable"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+
[[package]]
name = "ws2_32-sys"
version = "0.2.1"
@@ -6195,38 +7404,132 @@ version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
+[[package]]
+name = "xz2"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
+dependencies = [
+ "lzma-sys",
+]
+
+[[package]]
+name = "yoke"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+ "synstructure 0.13.1",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+ "synstructure 0.13.1",
+]
+
[[package]]
name = "zeroize"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+[[package]]
+name = "zerovec"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "zstd"
-version = "0.12.4"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c"
+checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
-version = "6.0.6"
+version = "7.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581"
+checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059"
dependencies = [
- "libc",
"zstd-sys",
]
[[package]]
name = "zstd-sys"
-version = "2.0.8+zstd.1.5.5"
+version = "2.0.13+zstd.1.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c"
+checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa"
dependencies = [
"cc",
- "libc",
"pkg-config",
]
diff --git a/rust/cubestore/cubedatasketches/src/error.rs b/rust/cubestore/cubedatasketches/src/error.rs
index 1459d86f3dbaf..6ea4f5705a377 100644
--- a/rust/cubestore/cubedatasketches/src/error.rs
+++ b/rust/cubestore/cubedatasketches/src/error.rs
@@ -30,21 +30,21 @@ impl Display for DataSketchesError {
impl DataSketchesError {
pub fn new(message: Str) -> Self {
- return Self {
+ Self {
message: message.to_string(),
- };
+ }
}
}
impl From for DataSketchesError {
fn from(err: std::io::Error) -> Self {
- return DataSketchesError::new(err);
+ DataSketchesError::new(err)
}
}
#[cfg(not(target_os = "windows"))]
impl From for DataSketchesError {
fn from(err: dsrs::DataSketchesError) -> Self {
- return DataSketchesError::new(err);
+ DataSketchesError::new(err)
}
}
diff --git a/rust/cubestore/cubedatasketches/src/native.rs b/rust/cubestore/cubedatasketches/src/native.rs
index 723c9a2f03dea..e379c43098767 100644
--- a/rust/cubestore/cubedatasketches/src/native.rs
+++ b/rust/cubestore/cubedatasketches/src/native.rs
@@ -37,22 +37,22 @@ impl Debug for HLLDataSketch {
impl HLLDataSketch {
pub fn read(data: &[u8]) -> Result {
- return Ok(Self {
+ Ok(Self {
instance: HLLSketch::deserialize(data)?,
- });
+ })
}
pub fn cardinality(&self) -> u64 {
- return self.instance.estimate().round() as u64;
+ self.instance.estimate().round() as u64
}
pub fn get_lg_config_k(&self) -> u8 {
- return self.instance.get_lg_config_k();
+ self.instance.get_lg_config_k()
}
pub fn write(&self) -> Vec {
// TODO(ovr): Better way?
- self.instance.serialize().as_ref().iter().copied().collect()
+ self.instance.serialize().as_ref().to_vec()
}
}
@@ -80,13 +80,13 @@ impl HLLUnionDataSketch {
}
pub fn get_lg_config_k(&self) -> u8 {
- return self.instance.get_lg_config_k();
+ self.instance.get_lg_config_k()
}
pub fn write(&self) -> Vec {
let sketch = self.instance.sketch(HLLType::HLL_4);
// TODO(ovr): Better way?
- sketch.serialize().as_ref().iter().copied().collect()
+ sketch.serialize().as_ref().to_vec()
}
pub fn merge_with(&mut self, other: HLLDataSketch) -> Result<()> {
@@ -94,4 +94,19 @@ impl HLLUnionDataSketch {
Ok(())
}
+
+ /// Allocated size, not including size_of::(). Must be exact.
+ pub fn allocated_size(&self) -> usize {
+ let lg_k = self.get_lg_config_k();
+ let k = 1 << lg_k;
+
+ // HLL union starts with an hll sketch with HLL_8, and the storage footprint according to
+ // hll.hpp (in datasketches-rs) is k bytes. We are assuming we're using maximum memory
+ // usage, even though the HLL implementation internally starts out with smaller buffers
+ // (until you add enough rows). Also, we're eyeballing the C++ struct overhead as 32 bytes.
+ //
+ // This function is supposed to be exact, but it is not exact.
+
+ 32 + k
+ }
}
diff --git a/rust/cubestore/cubedatasketches/src/unsupported.rs b/rust/cubestore/cubedatasketches/src/unsupported.rs
index cfc82bd91a711..27c093dddbe3a 100644
--- a/rust/cubestore/cubedatasketches/src/unsupported.rs
+++ b/rust/cubestore/cubedatasketches/src/unsupported.rs
@@ -65,4 +65,8 @@ impl HLLUnionDataSketch {
pub fn merge_with(&mut self, _other: HLLDataSketch) -> Result<()> {
unimplemented!();
}
+
+ pub fn allocated_size(&self) -> usize {
+ unimplemented!();
+ }
}
diff --git a/rust/cubestore/cubehll/src/error.rs b/rust/cubestore/cubehll/src/error.rs
index 428a00639ed0d..978bb2f114abf 100644
--- a/rust/cubestore/cubehll/src/error.rs
+++ b/rust/cubestore/cubehll/src/error.rs
@@ -14,20 +14,20 @@ impl Display for HllError {
impl HllError {
pub fn new(message: Str) -> HllError {
- return HllError {
+ HllError {
message: message.to_string(),
- };
+ }
}
}
impl From for HllError {
fn from(err: std::io::Error) -> Self {
- return HllError::new(err);
+ HllError::new(err)
}
}
impl From for HllError {
fn from(err: serde_json::Error) -> Self {
- return HllError::new(err);
+ HllError::new(err)
}
}
diff --git a/rust/cubestore/cubehll/src/instance.rs b/rust/cubestore/cubehll/src/instance.rs
index e2b7626aa617c..d72ce0e4a5edc 100644
--- a/rust/cubestore/cubehll/src/instance.rs
+++ b/rust/cubestore/cubehll/src/instance.rs
@@ -36,16 +36,16 @@ pub const MAX_BUCKETS: u32 = 65536;
impl HllInstance {
pub fn new(num_buckets: u32) -> Result {
assert!(num_buckets <= MAX_BUCKETS);
- return Ok(HllInstance::Sparse(SparseHll::new(index_bit_length(
+ Ok(HllInstance::Sparse(SparseHll::new(index_bit_length(
num_buckets,
- )?)?));
+ )?)?))
}
pub fn num_buckets(&self) -> u32 {
- return match self {
+ match self {
Sparse(s) => number_of_buckets(s.index_bit_len),
Dense(d) => number_of_buckets(d.index_bit_len),
- };
+ }
}
/// Callers must check that `num_buckets()` is the same for `self` and `other`.
@@ -61,10 +61,10 @@ impl HllInstance {
}
pub fn index_bit_len(&self) -> u8 {
- return match self {
+ match self {
Sparse(s) => s.index_bit_len,
Dense(d) => d.index_bit_len,
- };
+ }
}
/// Returns true iff `self.make_dense_if_necessary` has to be run.
@@ -75,15 +75,15 @@ impl HllInstance {
l.merge_with(r);
// We need the make this call, but borrow checker won't let us use `self` here.
// self.make_dense_if_necessary();
- return true;
+ true
}
(Dense(l), Sparse(r)) => {
l.merge_with_sparse(r);
- return false;
+ false
}
(l, Dense(r)) => {
l.ensure_dense().merge_with(r);
- return false;
+ false
}
}
}
@@ -122,7 +122,7 @@ impl HllInstance {
"Cannot read HLL with undefined encoding".to_string(),
))
}
- n if 1 <= n && n <= 4 => n,
+ n if (1..=4).contains(&n) => n,
n => {
return Err(HllError::new(format!(
"Unknown HLL encoding ordinal: {}",
@@ -131,7 +131,7 @@ impl HllInstance {
}
};
let reg_width = 1 + ((data[1] & 0b11100000) >> 5);
- if reg_width < 1 || 6 < reg_width {
+ if !(1..=6).contains(®_width) {
return Err(HllError::new(format!(
"Register width must be between 1 and 6, got {}",
reg_width
@@ -139,7 +139,7 @@ impl HllInstance {
}
let log_num_buckets = data[1] & 0b00011111;
// Note: the upper limit in storage spec is 31, but our implementation is limited to 16.
- if log_num_buckets < 4 || 16 < log_num_buckets {
+ if !(4..=16).contains(&log_num_buckets) {
return Err(HllError::new(format!(
"Log2m must be between 4 and 16, got {}",
log_num_buckets
@@ -158,7 +158,7 @@ impl HllInstance {
data.len()
)));
}
- return HllInstance::new(num_buckets);
+ HllInstance::new(num_buckets)
}
ENC_EXPLICIT => {
if data.len() % 8 != 0 {
@@ -216,11 +216,11 @@ impl HllInstance {
values.push(zeroes as u8);
}
- return Ok(HllInstance::Sparse(SparseHll::new_from_indices_and_values(
+ Ok(HllInstance::Sparse(SparseHll::new_from_indices_and_values(
log_num_buckets,
indices,
&values,
- )?));
+ )?))
}
ENC_SPARSE => {
let mut cursor = BitCursor::new(data);
@@ -231,11 +231,11 @@ impl HllInstance {
indices.push((e >> reg_width) as u32);
values.push((e & ((1 << reg_width) - 1)) as u8);
}
- return Ok(HllInstance::Sparse(SparseHll::new_from_indices_and_values(
+ Ok(HllInstance::Sparse(SparseHll::new_from_indices_and_values(
log_num_buckets,
indices,
&values,
- )?));
+ )?))
}
ENC_FULL => {
let expected_bits = num_buckets * reg_width as u32;
@@ -253,10 +253,10 @@ impl HllInstance {
for _ in 0..num_buckets {
values.push(cursor.read_bits(reg_width as usize).unwrap() as u8)
}
- return Ok(HllInstance::Dense(DenseHll::new_from_entries(
+ Ok(HllInstance::Dense(DenseHll::new_from_entries(
log_num_buckets,
values,
- )?));
+ )?))
}
enc => panic!("Unhandled encoding ordinal {}", enc),
}
@@ -306,19 +306,19 @@ impl HllInstance {
if data.is_empty() {
return Err(HllError::new("hll input data is empty"));
}
- return match data[0] {
+ match data[0] {
TAG_SPARSE_V2 => Ok(HllInstance::Sparse(SparseHll::read(&data[1..])?)),
TAG_DENSE_V1 => Ok(HllInstance::Dense(DenseHll::read_v1(&data[1..])?)),
TAG_DENSE_V2 => Ok(HllInstance::Dense(DenseHll::read(&data[1..])?)),
_ => Err(HllError::new(format!("invalid hll format tag {}", data[0]))),
- };
+ }
}
pub fn write(&self) -> Vec {
- return match self {
+ match self {
Sparse(s) => s.write(),
Dense(s) => s.write(),
- };
+ }
}
fn ensure_dense(&mut self) -> &mut DenseHll {
@@ -354,6 +354,14 @@ impl HllInstance {
self.ensure_dense();
}
}
+
+ /// Allocated size (not including sizeof::). Must be exact.
+ pub fn allocated_size(&self) -> usize {
+ match self {
+ Sparse(sparse) => sparse.allocated_size(),
+ Dense(dense) => dense.allocated_size(),
+ }
+ }
}
#[derive(Debug, Clone)]
@@ -371,10 +379,10 @@ impl SparseHll {
pub fn new(index_bit_len: u8) -> Result {
SparseHll::is_valid_bit_len(index_bit_len)?;
- return Ok(SparseHll {
+ Ok(SparseHll {
index_bit_len,
entries: Vec::with_capacity(1),
- });
+ })
}
fn new_from_indices_and_values(
@@ -411,8 +419,7 @@ impl SparseHll {
}
// Sort by bucket index.
- entries
- .sort_unstable_by(|l, r| (l >> (32 - index_bit_len)).cmp(&(r >> (32 - index_bit_len))));
+ entries.sort_unstable_by_key(|l| l >> (32 - index_bit_len));
Ok(SparseHll {
index_bit_len,
@@ -434,10 +441,10 @@ impl SparseHll {
if c.position() != data.len() as u64 {
return Err(HllError::new("input is too big"));
}
- return Ok(SparseHll {
+ Ok(SparseHll {
index_bit_len,
entries,
- });
+ })
}
pub fn write(&self) -> Vec {
@@ -451,7 +458,7 @@ impl SparseHll {
for e in &self.entries {
r.write_u32::(*e).unwrap();
}
- return r;
+ r
}
pub fn cardinality(&self) -> u64 {
@@ -460,7 +467,7 @@ impl SparseHll {
// while in the sparse regime.
let total_buckets = number_of_buckets(SparseHll::EXTENDED_PREFIX_BITS);
let zero_buckets = total_buckets - self.entries.len() as u32;
- return linear_counting(zero_buckets, total_buckets).round() as u64;
+ linear_counting(zero_buckets, total_buckets).round() as u64
}
pub fn merge_with(&mut self, o: &SparseHll) {
@@ -471,11 +478,11 @@ impl SparseHll {
// TODO: this can panic if Sparse HLL had too much precision.
let mut d = DenseHll::new(self.index_bit_len);
self.each_bucket(|bucket, zeros| d.insert(bucket, zeros));
- return d;
+ d
}
fn estimate_in_memory_size(&self) -> usize {
- return size_of::() + 32 * self.entries.capacity();
+ size_of::() + 32 * self.entries.capacity()
}
fn each_bucket(&self, mut f: F)
@@ -547,27 +554,27 @@ impl SparseHll {
}
result.resize(index, 0);
- return result;
+ result
}
fn encode_entry(bucket_index: u32, value: u8) -> u32 {
- return (bucket_index << SparseHll::VALUE_BITS) | value as u32;
+ (bucket_index << SparseHll::VALUE_BITS) | value as u32
}
fn decode_bucket_value(entry: u32) -> u8 {
- return (entry & SparseHll::VALUE_MASK) as u8;
+ (entry & SparseHll::VALUE_MASK) as u8
}
fn decode_bucket_index(entry: u32) -> u32 {
- return SparseHll::decode_bucket_index_with_bit_len(SparseHll::EXTENDED_PREFIX_BITS, entry);
+ SparseHll::decode_bucket_index_with_bit_len(SparseHll::EXTENDED_PREFIX_BITS, entry)
}
fn decode_bucket_index_with_bit_len(index_bit_len: u8, entry: u32) -> u32 {
- return entry >> (32 - index_bit_len);
+ entry >> (32 - index_bit_len)
}
fn is_valid_bit_len(index_bit_len: u8) -> Result<()> {
- if 1 <= index_bit_len && index_bit_len <= SparseHll::EXTENDED_PREFIX_BITS {
+ if (1..=SparseHll::EXTENDED_PREFIX_BITS).contains(&index_bit_len) {
Ok(())
} else {
Err(HllError::new(format!(
@@ -576,6 +583,14 @@ impl SparseHll {
)))
}
}
+
+ /// Allocated size (not including size_of::). Must be exact.
+ pub fn allocated_size(&self) -> usize {
+ fn vec_alloc_size(v: &Vec) -> usize {
+ v.capacity() * size_of::()
+ }
+ vec_alloc_size(&self.entries)
+ }
}
#[derive(Debug, Clone)]
@@ -599,15 +614,15 @@ impl DenseHll {
pub fn new(index_bit_len: u8) -> DenseHll {
DenseHll::is_valid_bit_len(index_bit_len).unwrap();
- let num_buckets = number_of_buckets(index_bit_len) as u32;
- return DenseHll {
+ let num_buckets = number_of_buckets(index_bit_len);
+ DenseHll {
index_bit_len,
baseline: 0,
baseline_count: num_buckets,
deltas: vec![0; (num_buckets * DenseHll::BITS_PER_BUCKET / 8) as usize],
overflow_buckets: Vec::new(),
overflow_values: Vec::new(),
- };
+ }
}
pub fn new_from_entries(index_bit_len: u8, values: Vec) -> Result {
@@ -658,9 +673,9 @@ impl DenseHll {
pub fn read_v1(_data: &[u8]) -> Result {
// TODO: implement this for completeness. Airlift can read Dense HLL in V1 format.
- return Err(HllError::new(
+ Err(HllError::new(
"reading of v1 dense sketches is not implemented",
- ));
+ ))
}
pub fn read(data: &[u8]) -> Result {
@@ -709,14 +724,14 @@ impl DenseHll {
}
}
- return Ok(DenseHll {
+ Ok(DenseHll {
index_bit_len,
baseline,
baseline_count,
deltas,
overflow_buckets,
overflow_values,
- });
+ })
}
pub fn write(&self) -> Vec {
@@ -737,7 +752,7 @@ impl DenseHll {
r.write_u16::(e.try_into().unwrap()).unwrap();
}
r.extend_from_slice(&of_values);
- return r;
+ r
}
pub fn cardinality(&self) -> u64 {
@@ -758,7 +773,7 @@ impl DenseHll {
}
let estimate = (alpha(self.index_bit_len) * num_buckets as f64 * num_buckets as f64) / sum;
- return self.correct_bias(estimate).round() as u64;
+ self.correct_bias(estimate).round() as u64
}
pub fn merge_with_sparse(&mut self, other: &SparseHll) {
@@ -803,14 +818,14 @@ impl DenseHll {
if delta1 == DenseHll::MAX_DELTA {
overflow_entry = self.find_overflow_entry(bucket);
if let Some(oe) = overflow_entry {
- value1 += self.overflow_values[oe] as u8;
+ value1 += self.overflow_values[oe];
}
} else {
overflow_entry = None
}
if delta2 == DenseHll::MAX_DELTA {
- value2 += other.get_overflow(bucket) as u8;
+ value2 += other.get_overflow(bucket);
}
let new_value = max(value1, value2);
@@ -827,7 +842,7 @@ impl DenseHll {
bucket += 1;
}
- self.deltas[i] = new_slot as u8;
+ self.deltas[i] = new_slot;
}
self.baseline = new_baseline as u8;
@@ -903,15 +918,14 @@ impl DenseHll {
bias = (((raw_estimate - x0) * (y1 - y0)) / (x1 - x0)) + y0;
}
- return raw_estimate - bias;
+ raw_estimate - bias
}
fn find_overflow_entry(&self, bucket: u32) -> Option {
- return self
- .overflow_buckets
+ self.overflow_buckets
.iter()
.find_position(|x| **x == bucket)
- .map(|x| x.0);
+ .map(|x| x.0)
}
fn adjust_baseline_if_needed(&mut self) {
@@ -971,7 +985,7 @@ impl DenseHll {
} else if let Some(oe) = overflow_entry {
self.remove_overflow(oe);
}
- return delta as u8;
+ delta
}
fn add_overflow(&mut self, bucket: u32, overflow: u8) {
@@ -1004,7 +1018,7 @@ impl DenseHll {
if delta == DenseHll::MAX_DELTA as u32 {
delta += self.get_overflow(bucket) as u32;
}
- return self.baseline as u32 + delta;
+ self.baseline as u32 + delta
}
fn get_overflow(&self, bucket: u32) -> u8 {
@@ -1013,41 +1027,41 @@ impl DenseHll {
return self.overflow_values[i];
}
}
- return 0;
+ 0
}
fn get_delta(&self, bucket: u32) -> u8 {
- return DenseHll::get_delta_impl(&self.deltas, bucket);
+ DenseHll::get_delta_impl(&self.deltas, bucket)
}
fn get_delta_impl(deltas: &[u8], bucket: u32) -> u8 {
let slot = DenseHll::bucket_to_slot(bucket) as usize;
- return (deltas[slot] >> DenseHll::shift_for_bucket(bucket)) & DenseHll::BUCKET_MASK;
+ (deltas[slot] >> DenseHll::shift_for_bucket(bucket)) & DenseHll::BUCKET_MASK
}
fn set_delta(&mut self, bucket: u32, value: u8) {
let slot = DenseHll::bucket_to_slot(bucket) as usize;
// clear the old value
- let clear_mask = (DenseHll::BUCKET_MASK << DenseHll::shift_for_bucket(bucket)) as u8;
+ let clear_mask = DenseHll::BUCKET_MASK << DenseHll::shift_for_bucket(bucket);
self.deltas[slot] &= !clear_mask;
// set the new value
- let set_mask = (value << DenseHll::shift_for_bucket(bucket)) as u8;
+ let set_mask = value << DenseHll::shift_for_bucket(bucket);
self.deltas[slot] |= set_mask;
}
fn bucket_to_slot(bucket: u32) -> u32 {
- return bucket >> 1;
+ bucket >> 1
}
fn shift_for_bucket(bucket: u32) -> u32 {
// ((1 - bucket) % 2) * BITS_PER_BUCKET
- return ((!bucket) & 1) << 2;
+ ((!bucket) & 1) << 2
}
fn is_valid_bit_len(index_bit_len: u8) -> Result<()> {
- if 1 <= index_bit_len && index_bit_len <= 16 {
+ if (1..=16).contains(&index_bit_len) {
Ok(())
} else {
Err(HllError::new(format!(
@@ -1063,7 +1077,7 @@ impl DenseHll {
// to dense representation can happen at different points.
// note: we don't take into account overflow entries since their number can vary.
- return size_of::() + /*deltas*/8 * number_of_buckets(index_bit_len) as usize / 2;
+ size_of::() + /*deltas*/8 * number_of_buckets(index_bit_len) as usize / 2
}
/// Unlike airlift, we provide a copy of the overflow_bucket to to the reference semantics.
@@ -1098,7 +1112,7 @@ impl DenseHll {
}
}
- return (of_buckets, of_values);
+ (of_buckets, of_values)
}
#[allow(dead_code)]
@@ -1139,6 +1153,16 @@ impl DenseHll {
self.overflow_buckets
);
}
+
+ /// Allocated size of the type. Does not include size_of::. Must be exact.
+ pub fn allocated_size(&self) -> usize {
+ fn vec_alloc_size(v: &Vec) -> usize {
+ v.capacity() * size_of::()
+ }
+ vec_alloc_size(&self.deltas)
+ + vec_alloc_size(&self.overflow_buckets)
+ + vec_alloc_size(&self.overflow_values)
+ }
}
// TODO: replace with a library routine for binary search.
@@ -1160,7 +1184,7 @@ fn search(raw_estimate: f64, estimate_curve: &[f64]) -> i32 {
}
}
- return -(low as i32 + 1);
+ -(low as i32 + 1)
}
fn index_bit_length(n: u32) -> Result {
@@ -1173,36 +1197,36 @@ fn index_bit_length(n: u32) -> Result {
#[allow(dead_code)]
fn compute_index(hash: u64, index_bit_len: u8) -> u32 {
- return (hash >> (64 - index_bit_len)) as u32;
+ (hash >> (64 - index_bit_len)) as u32
}
fn compute_value(hash: u64, index_bit_len: u8) -> u8 {
- return number_of_leading_zeros(hash, index_bit_len) + 1;
+ number_of_leading_zeros(hash, index_bit_len) + 1
}
#[allow(dead_code)]
fn number_of_leading_zeros(hash: u64, index_bit_len: u8) -> u8 {
// place a 1 in the LSB to preserve the original number of leading zeros if the hash happens to be 0.
let value = (hash << index_bit_len) | (1 << (index_bit_len - 1));
- return value.leading_zeros() as u8;
+ value.leading_zeros() as u8
}
fn number_of_buckets(index_bit_len: u8) -> u32 {
- return 1 << index_bit_len;
+ 1 << index_bit_len
}
fn alpha(index_bit_len: u8) -> f64 {
- return match index_bit_len {
+ match index_bit_len {
4 => 0.673,
5 => 0.697,
6 => 0.709,
_ => 0.7213 / (1. + 1.079 / number_of_buckets(index_bit_len) as f64),
- };
+ }
}
fn linear_counting(zero_buckets: u32, total_buckets: u32) -> f64 {
let total_f = total_buckets as f64;
- return total_f * (total_f / (zero_buckets as f64)).ln();
+ total_f * (total_f / (zero_buckets as f64)).ln()
}
// const TAG_SPARSE_V1: u8 = 0; // Unsupported.
@@ -1247,7 +1271,7 @@ impl BitCursor<'_> {
self.bit_pos = 0;
}
}
- return Some(r);
+ Some(r)
}
}
@@ -1728,10 +1752,10 @@ mod tests {
impl TestingHll {
pub fn new(index_bit_len: u8) -> TestingHll {
- return TestingHll {
+ TestingHll {
index_bit_length: index_bit_len,
buckets: vec![0; number_of_buckets(index_bit_len) as usize],
- };
+ }
}
pub fn insert_hash(&mut self, hash: u64) {
@@ -1742,7 +1766,7 @@ mod tests {
}
pub fn buckets(&self) -> &[u32] {
- return &self.buckets;
+ &self.buckets
}
}
}
diff --git a/rust/cubestore/cubehll/src/sketch.rs b/rust/cubestore/cubehll/src/sketch.rs
index bfcfe7c802eea..11bd6288855b2 100644
--- a/rust/cubestore/cubehll/src/sketch.rs
+++ b/rust/cubestore/cubehll/src/sketch.rs
@@ -31,46 +31,46 @@ impl HllSketch {
/// Create a sketch for an empty set of elements.
/// The number of buckets is a power of two, not more than 65536.
pub fn new(num_buckets: u32) -> Result {
- return Ok(HllSketch {
+ Ok(HllSketch {
instance: HllInstance::new(num_buckets)?,
- });
+ })
}
/// Maximum number of buckets used for this representation.
pub fn num_buckets(&self) -> u32 {
- return self.instance.num_buckets();
+ self.instance.num_buckets()
}
pub fn index_bit_len(&self) -> u8 {
- return self.instance.index_bit_len();
+ self.instance.index_bit_len()
}
pub fn read(data: &[u8]) -> Result {
- return Ok(HllSketch {
+ Ok(HllSketch {
instance: HllInstance::read(data)?,
- });
+ })
}
pub fn read_hll_storage_spec(data: &[u8]) -> Result {
- return Ok(HllSketch {
+ Ok(HllSketch {
instance: HllInstance::read_hll_storage_spec(data)?,
- });
+ })
}
/// Read from the snowflake JSON format, i.e. result of HLL_EXPORT serialized to string.
pub fn read_snowflake(s: &str) -> Result {
- return Ok(HllSketch {
+ Ok(HllSketch {
instance: HllInstance::read_snowflake(s)?,
- });
+ })
}
pub fn write(&self) -> Vec {
- return self.instance.write();
+ self.instance.write()
}
/// Produces an estimate of the current set size.
pub fn cardinality(&self) -> u64 {
- return self.instance.cardinality();
+ self.instance.cardinality()
}
/// Merges elements from `o` into the current sketch.
@@ -80,4 +80,9 @@ impl HllSketch {
pub fn merge_with(&mut self, o: &HllSketch) {
self.instance.merge_with(&o.instance);
}
+
+ /// Allocated size (not including sizeof::). Must be exact.
+ pub fn allocated_size(&self) -> usize {
+ self.instance.allocated_size()
+ }
}
diff --git a/rust/cubestore/cubestore-sql-tests/Cargo.toml b/rust/cubestore/cubestore-sql-tests/Cargo.toml
index e2b9e69c244a7..6e84c3f1ba7bd 100644
--- a/rust/cubestore/cubestore-sql-tests/Cargo.toml
+++ b/rust/cubestore/cubestore-sql-tests/Cargo.toml
@@ -28,6 +28,11 @@ name = "cluster"
path = "tests/cluster.rs"
harness = false
+[[test]]
+name = "migration"
+path = "tests/migration.rs"
+harness = false
+
[target.'cfg(not(target_os = "windows"))'.dependencies]
ipc-channel = { version = "0.18.0" }
@@ -37,7 +42,8 @@ async-compression = { version = "0.3.7", features = ["gzip", "tokio"] }
async-trait = "0.1.36"
cubestore = { path = "../cubestore" }
flate2 = "1.0.22"
-itertools = "0.9.0"
+itertools = "0.14.0"
+lazy_static = "1.4.0"
log = "0.4.11"
pretty_assertions = "0.7.1"
reqwest = { version = "0.12.5", features = ["json", "rustls-tls", "stream", "http2"], default-features = false }
diff --git a/rust/cubestore/cubestore-sql-tests/src/benches.rs b/rust/cubestore/cubestore-sql-tests/src/benches.rs
index b74d4021d3e50..90ed40ba3c902 100644
--- a/rust/cubestore/cubestore-sql-tests/src/benches.rs
+++ b/rust/cubestore/cubestore-sql-tests/src/benches.rs
@@ -1,4 +1,5 @@
-use crate::{to_rows, SqlClient};
+use crate::files::download_and_unzip;
+use crate::to_rows;
use async_trait::async_trait;
use cubestore::cluster::Cluster;
use cubestore::config::{env_parse, Config, CubeServices};
@@ -6,23 +7,19 @@ use cubestore::metastore::{Column, ColumnType};
use cubestore::table::TableValue;
use cubestore::util::strings::path_to_string;
use cubestore::CubeError;
-use flate2::read::GzDecoder;
use std::any::Any;
-use std::io::Cursor;
-use std::path::Path;
use std::sync::Arc;
use std::time::Duration;
-use tar::Archive;
use tokio::time::timeout;
pub type BenchState = dyn Any + Send + Sync;
#[async_trait]
pub trait Bench: Send + Sync {
- fn config(self: &Self, prefix: &str) -> (String, Config);
- async fn setup(self: &Self, services: &CubeServices) -> Result, CubeError>;
+ fn config(&self, prefix: &str) -> (String, Config);
+ async fn setup(&'life0 self, services: &CubeServices) -> Result, CubeError>;
async fn bench(
- self: &Self,
+ &'life0 self,
services: &CubeServices,
state: Arc,
) -> Result<(), CubeError>;
@@ -33,12 +30,12 @@ fn config_name(prefix: &str, name: &str) -> String {
}
pub fn cubestore_benches() -> Vec> {
- return vec![
+ vec![
Arc::new(SimpleBench {}),
Arc::new(ParquetMetadataCacheBench {}),
Arc::new(CacheSetGetBench {}),
Arc::new(QueueListBench::new(16 * 1024)),
- ];
+ ]
}
pub struct SimpleBenchState {
@@ -47,20 +44,20 @@ pub struct SimpleBenchState {
pub struct SimpleBench;
#[async_trait]
impl Bench for SimpleBench {
- fn config(self: &Self, prefix: &str) -> (String, Config) {
+ fn config(&self, prefix: &str) -> (String, Config) {
let name = config_name(prefix, "simple");
let config = Config::test(name.as_str());
(name, config)
}
- async fn setup(self: &Self, _services: &CubeServices) -> Result, CubeError> {
+ async fn setup(&'life0 self, _services: &CubeServices) -> Result, CubeError> {
Ok(Arc::new(SimpleBenchState {
query: "SELECT 23".to_string(),
}))
}
async fn bench(
- self: &Self,
+ &'life0 self,
services: &CubeServices,
state: Arc,
) -> Result<(), CubeError> {
@@ -83,7 +80,7 @@ impl Bench for SimpleBench {
pub struct ParquetMetadataCacheBench;
#[async_trait]
impl Bench for ParquetMetadataCacheBench {
- fn config(self: &Self, prefix: &str) -> (String, Config) {
+ fn config(&self, prefix: &str) -> (String, Config) {
let name = config_name(prefix, "parquet_metadata_cache");
let config = Config::test(name.as_str()).update_config(|mut c| {
c.partition_split_threshold = 10_000_000;
@@ -97,7 +94,7 @@ impl Bench for ParquetMetadataCacheBench {
(name, config)
}
- async fn setup(self: &Self, services: &CubeServices) -> Result, CubeError> {
+ async fn setup(&'life0 self, services: &CubeServices) -> Result, CubeError> {
let dataset_path = download_and_unzip(
"https://github.com/cube-js/testing-fixtures/raw/master/github-commits.tar.gz",
"github-commits",
@@ -115,7 +112,7 @@ impl Bench for ParquetMetadataCacheBench {
.await?;
// Wait for all pending (compaction) jobs to finish.
- wait_for_all_jobs(&services).await?;
+ wait_for_all_jobs(services).await?;
let state = Arc::new(());
@@ -126,7 +123,7 @@ impl Bench for ParquetMetadataCacheBench {
}
async fn bench(
- self: &Self,
+ &'life0 self,
services: &CubeServices,
_state: Arc,
) -> Result<(), CubeError> {
@@ -150,13 +147,13 @@ impl Bench for ParquetMetadataCacheBench {
pub struct CacheSetGetBench;
#[async_trait]
impl Bench for CacheSetGetBench {
- fn config(self: &Self, prefix: &str) -> (String, Config) {
+ fn config(&self, prefix: &str) -> (String, Config) {
let name = config_name(prefix, "cache_set_get");
let config = Config::test(name.as_str()).update_config(|c| c);
(name, config)
}
- async fn setup(self: &Self, services: &CubeServices) -> Result, CubeError> {
+ async fn setup(&'life0 self, services: &CubeServices) -> Result, CubeError> {
services
.sql_service
.exec_query("CACHE SET TTL 600 'my_key' 'my_value'")
@@ -167,7 +164,7 @@ impl Bench for CacheSetGetBench {
}
async fn bench(
- self: &Self,
+ &'life0 self,
services: &CubeServices,
_state: Arc,
) -> Result<(), CubeError> {
@@ -195,13 +192,13 @@ impl QueueListBench {
#[async_trait]
impl Bench for crate::benches::QueueListBench {
- fn config(self: &Self, prefix: &str) -> (String, Config) {
+ fn config(&self, prefix: &str) -> (String, Config) {
let name = config_name(prefix, "queue_list_bench");
let config = Config::test(name.as_str()).update_config(|c| c);
(name, config)
}
- async fn setup(self: &Self, services: &CubeServices) -> Result, CubeError> {
+ async fn setup(&'life0 self, services: &CubeServices) -> Result, CubeError> {
for i in 1..5_001 {
services
.sql_service
@@ -219,7 +216,7 @@ impl Bench for crate::benches::QueueListBench {
}
async fn bench(
- self: &Self,
+ &'life0 self,
services: &CubeServices,
_state: Arc,
) -> Result<(), CubeError> {
@@ -243,21 +240,6 @@ impl Bench for crate::benches::QueueListBench {
}
}
-async fn download_and_unzip(url: &str, dataset: &str) -> Result, CubeError> {
- let root = std::env::current_dir()?.join("data");
- let dataset_path = root.join(dataset);
- if !dataset_path.exists() {
- println!("Downloading {}", dataset);
- let response = reqwest::get(url).await?;
- let content = Cursor::new(response.bytes().await?);
- let tarfile = GzDecoder::new(content);
- let mut archive = Archive::new(tarfile);
- archive.unpack(root)?;
- }
- assert!(dataset_path.exists());
- Ok(dataset_path.into_boxed_path())
-}
-
async fn wait_for_all_jobs(services: &CubeServices) -> Result<(), CubeError> {
let wait_for = services
.meta_store
diff --git a/rust/cubestore/cubestore-sql-tests/src/files.rs b/rust/cubestore/cubestore-sql-tests/src/files.rs
index 27bfc122ac1d2..e42cc6a7ca2dd 100644
--- a/rust/cubestore/cubestore-sql-tests/src/files.rs
+++ b/rust/cubestore/cubestore-sql-tests/src/files.rs
@@ -1,9 +1,57 @@
use cubestore::CubeError;
+use flate2::read::GzDecoder;
+use std::io::Cursor;
use std::io::Write;
+use std::path::Path;
+use tar::Archive;
use tempfile::NamedTempFile;
pub fn write_tmp_file(text: &str) -> Result {
let mut file = NamedTempFile::new()?;
file.write_all(text.as_bytes())?;
- return Ok(file);
+ Ok(file)
+}
+
+pub async fn download_and_unzip(url: &str, dataset: &str) -> Result, CubeError> {
+ let root = std::env::current_dir()?.join("data");
+ let dataset_path = root.join(dataset);
+ if !dataset_path.exists() {
+ println!("Downloading {}", dataset);
+ let response = reqwest::get(url).await?;
+ let content = Cursor::new(response.bytes().await?);
+ let tarfile = GzDecoder::new(content);
+ let mut archive = Archive::new(tarfile);
+ archive.unpack(root)?;
+ }
+ assert!(dataset_path.exists());
+ Ok(dataset_path.into_boxed_path())
+}
+
+/// Recursively copies files and directories from `from` to `to`, which must not exist yet. Errors
+/// if anything other than a file or directory is found.
+///
+/// We don't use a lib because the first that was tried was broken.
+pub fn recursive_copy_directory(from: &Path, to: &Path) -> Result<(), CubeError> {
+ let dir = std::fs::read_dir(from)?;
+
+ // This errors if the destination already exists, and that's what we want.
+ std::fs::create_dir(to)?;
+
+ for entry in dir {
+ let entry = entry?;
+ let file_type = entry.file_type()?;
+ if file_type.is_dir() {
+ recursive_copy_directory(&entry.path(), &to.join(entry.file_name()))?;
+ } else if file_type.is_file() {
+ let _file_size = std::fs::copy(entry.path(), to.join(entry.file_name()))?;
+ } else {
+ return Err(CubeError::corrupt_data(format!(
+ "cannot copy file of type {:?} at location {:?}",
+ file_type,
+ entry.path()
+ )));
+ }
+ }
+
+ Ok(())
}
diff --git a/rust/cubestore/cubestore-sql-tests/src/lib.rs b/rust/cubestore/cubestore-sql-tests/src/lib.rs
index 058030bda31b6..5e9ca55ad1184 100644
--- a/rust/cubestore/cubestore-sql-tests/src/lib.rs
+++ b/rust/cubestore/cubestore-sql-tests/src/lib.rs
@@ -15,7 +15,7 @@ use test::{ShouldPanic, TestDesc, TestDescAndFn, TestName, TestType};
use tests::sql_tests;
mod benches;
-mod files;
+pub mod files;
#[cfg(not(target_os = "windows"))]
pub mod multiproc;
#[allow(unused_parens, non_snake_case)]
@@ -31,6 +31,33 @@ pub trait SqlClient: Send + Sync {
query: &str,
) -> Result, CubeError>;
async fn plan_query(&self, query: &str) -> Result;
+ fn prefix(&self) -> &str;
+ /// Used by FilterWritesSqlClient in migration tests, ignored for others.
+ fn migration_run_next_query(&self) {}
+ /// Used by FilterWritesSqlClient in migration tests, ignored for others.
+ fn migration_hardcode_next_query(&self, _next_result: Result, CubeError>) {}
+}
+
+impl dyn SqlClient {
+ /// Use this instead of prefix() so that other uses of prefix() are easily searchable and
+ /// enumerable.
+ fn is_migration(&self) -> bool {
+ self.prefix() == "migration"
+ }
+
+ /// Doesn't do anything but is a searchable token for later test management.
+ fn note_non_idempotent_migration_test(&self) {}
+
+ /// We tolerate the next query but we want to revisit later because maybe it should be a rule in
+ /// the FilterWritesSqlClient's recognized queries list.
+ fn tolerate_next_query_revisit(&self) {
+ self.migration_run_next_query()
+ }
+
+ /// Hardcodes an error return value, for when the presence of an error but not the message is asserted.
+ fn migration_hardcode_generic_err(&self) {
+ self.migration_hardcode_next_query(Err(CubeError::user(String::new())));
+ }
}
pub fn run_sql_tests(
@@ -38,7 +65,7 @@ pub fn run_sql_tests(
extra_args: Vec,
runner: impl Fn(/*test_name*/ &str, TestFn) + RefUnwindSafe + Send + Sync + Clone + 'static,
) {
- let tests = sql_tests()
+ let tests = sql_tests(prefix)
.into_iter()
.map(|(name, test_fn)| {
let runner = runner.clone();
@@ -80,10 +107,16 @@ fn merge_args(mut base: Vec, extra: Vec) -> Vec {
base
}
+pub struct BasicSqlClient {
+ /// Used rarely in some test cases, or maybe frequently for the "migration" prefix.
+ pub prefix: &'static str,
+ pub service: Arc,
+}
+
#[async_trait]
-impl SqlClient for Arc {
+impl SqlClient for BasicSqlClient {
async fn exec_query(&self, query: &str) -> Result, CubeError> {
- self.as_ref().exec_query(query).await
+ self.service.as_ref().exec_query(query).await
}
async fn exec_query_with_context(
@@ -91,11 +124,18 @@ impl SqlClient for Arc {
context: SqlQueryContext,
query: &str,
) -> Result, CubeError> {
- self.as_ref().exec_query_with_context(context, query).await
+ self.service
+ .as_ref()
+ .exec_query_with_context(context, query)
+ .await
}
async fn plan_query(&self, query: &str) -> Result {
- self.as_ref().plan_query(query).await
+ self.service.as_ref().plan_query(query).await
+ }
+
+ fn prefix(&self) -> &str {
+ self.prefix
}
}
diff --git a/rust/cubestore/cubestore-sql-tests/src/multiproc.rs b/rust/cubestore/cubestore-sql-tests/src/multiproc.rs
index 55d8df8a5d727..b71c242ff1cbb 100644
--- a/rust/cubestore/cubestore-sql-tests/src/multiproc.rs
+++ b/rust/cubestore/cubestore-sql-tests/src/multiproc.rs
@@ -37,7 +37,7 @@ where
for inputs in worker_inputs {
let (send_done, recv_done) = ipc_channel::ipc::bytes_channel().unwrap();
let args = (send_init.clone(), recv_done, inputs, timeout);
- let handle = respawn(args, &[], &[]).unwrap();
+ let handle = respawn(args, &["--".to_string(), "--nocapture".to_string()], &[]).unwrap();
// Ensure we signal completion to all started workers even if errors occur along the way.
join_workers.push(scopeguard::guard(
(send_done, handle),
@@ -52,7 +52,7 @@ where
// Wait until the workers are ready.
tokio::time::timeout(test.worker_init_timeout(), async move {
let mut recv_init = recv_inits;
- for _ in 0..num_workers as usize {
+ for _ in 0..num_workers {
recv_init = tokio::task::spawn_blocking(move || {
recv_init.recv().unwrap();
recv_init
@@ -97,7 +97,7 @@ where
eprintln!("ERROR: Stopping worker after timeout");
return -1;
}
- return 0;
+ 0
})
}
@@ -155,7 +155,7 @@ impl WaitCompletion {
}
}
-fn ack_error(r: Result) -> () {
+fn ack_error(r: Result) {
if let Err(e) = r {
eprintln!("Error: {:?}", e);
}
diff --git a/rust/cubestore/cubestore-sql-tests/src/rows.rs b/rust/cubestore/cubestore-sql-tests/src/rows.rs
index 26c38833c1891..4847beee89e33 100644
--- a/rust/cubestore/cubestore-sql-tests/src/rows.rs
+++ b/rust/cubestore/cubestore-sql-tests/src/rows.rs
@@ -67,7 +67,7 @@ impl ToValue for Decimal {
impl ToValue for f64 {
fn to_val(&self) -> TableValue {
- TableValue::Float(self.clone().into())
+ TableValue::Float((*self).into())
}
}
diff --git a/rust/cubestore/cubestore-sql-tests/src/tests.rs b/rust/cubestore/cubestore-sql-tests/src/tests.rs
index 45aa7820b9c4e..24a2c15c125c1 100644
--- a/rust/cubestore/cubestore-sql-tests/src/tests.rs
+++ b/rust/cubestore/cubestore-sql-tests/src/tests.rs
@@ -14,6 +14,7 @@ use cubestore::CubeError;
use indoc::indoc;
use itertools::Itertools;
use pretty_assertions::assert_eq;
+use std::collections::HashSet;
use std::env;
use std::fs::File;
use std::future::Future;
@@ -32,13 +33,14 @@ pub type TestFn = Box<
+ Sync
+ RefUnwindSafe,
>;
-pub fn sql_tests() -> Vec<(&'static str, TestFn)> {
- return vec![
+pub fn sql_tests(prefix: &str) -> Vec<(&'static str, TestFn)> {
+ let test_list = vec![
t("insert", insert),
t("select_test", select_test),
t("refresh_selects", refresh_selects),
t("negative_numbers", negative_numbers),
t("negative_decimal", negative_decimal),
+ t("decimal_math", decimal_math),
t("custom_types", custom_types),
t("group_by_boolean", group_by_boolean),
t("group_by_decimal", group_by_decimal),
@@ -57,6 +59,7 @@ pub fn sql_tests() -> Vec<(&'static str, TestFn)> {
t("in_list", in_list),
t("in_list_with_union", in_list_with_union),
t("numeric_cast", numeric_cast),
+ t("planning_numeric_cast", planning_numeric_cast),
t("cast_timestamp_to_utf8", cast_timestamp_to_utf8),
t("numbers_to_bool", numbers_to_bool),
t("union", union),
@@ -235,6 +238,10 @@ pub fn sql_tests() -> Vec<(&'static str, TestFn)> {
"filter_multiple_in_for_decimal",
filter_multiple_in_for_decimal,
),
+ t(
+ "planning_filter_multiple_in_for_decimal",
+ planning_filter_multiple_in_for_decimal,
+ ),
t("panic_worker", panic_worker),
t(
"planning_filter_index_selection",
@@ -292,6 +299,17 @@ pub fn sql_tests() -> Vec<(&'static str, TestFn)> {
t("sys_cachestore_healthcheck", sys_cachestore_healthcheck),
];
+ let test_list = if prefix == "migration" {
+ test_list
+ .into_iter()
+ .filter(|(name, _)| !excluded_from_migration_test(name))
+ .collect()
+ } else {
+ test_list
+ };
+
+ return test_list;
+
fn t(name: &'static str, f: fn(Box) -> F) -> (&'static str, TestFn)
where
F: Future