diff --git a/.github/workflows/drivers-tests.yml b/.github/workflows/drivers-tests.yml
index f9703134b349f..ad5c5e6f42702 100644
--- a/.github/workflows/drivers-tests.yml
+++ b/.github/workflows/drivers-tests.yml
@@ -241,6 +241,13 @@ jobs:
# secrets as job-level environment variables, then referencing the environment variables
# to conditionally run steps in the job.
DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY: ${{ secrets.DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY }}
+
+ # redshift Test Serverless Instance is so tiny that it can't serve a few test suites at once,
+ # so we constrain it to 1 test suite at time.
+ concurrency:
+ group: ${{ contains(matrix.database, 'redshift') && 'redshift-global' || format('drivers-tests-{0}-{1}', matrix.database, github.run_id) }}
+ cancel-in-progress: false
+
strategy:
matrix:
database:
diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml
index 0cd822e65f8dc..c64a6de399c92 100644
--- a/.github/workflows/push.yml
+++ b/.github/workflows/push.yml
@@ -86,11 +86,8 @@ jobs:
node-version: [22.x]
# Don't forget to update build-native-release
python-version: [3.11]
- transpile-worker-threads: [false, true]
fail-fast: false
- env:
- CUBEJS_TRANSPILATION_WORKER_THREADS: ${{ matrix.transpile-worker-threads }}
steps:
- id: get-tag-out
run: echo "$OUT"
@@ -144,16 +141,16 @@ jobs:
- name: Lerna test
run: yarn lerna run --concurrency 1 --stream --no-prefix unit
- name: Fix lcov paths
- if: (matrix.node-version == '22.x' && matrix.transpile-worker-threads == true)
+ if: (matrix.node-version == '22.x')
run: |
./.github/actions/codecov-fix.sh
- name: Combine all fixed LCOV files
- if: (matrix.node-version == '22.x' && matrix.transpile-worker-threads == true)
+ if: (matrix.node-version == '22.x')
run: |
echo "" > ./combined-unit.lcov
find ./packages -type f -name lcov.fixed.info -exec cat {} + >> ./combined-unit.lcov || true
- name: Upload coverage artifact
- if: (matrix.node-version == '22.x' && matrix.transpile-worker-threads == true)
+ if: (matrix.node-version == '22.x')
uses: actions/upload-artifact@v4
with:
name: coverage-unit
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 30e010f0f9361..23af935d198f9 100644
--- a/CHANGELOG.md
+++ b/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+### Bug Fixes
+
+- **cubesql:** Always repartition joins when right side has multiple partitions ([#10105](https://github.com/cube-js/cube/issues/10105)) ([ae32748](https://github.com/cube-js/cube/commit/ae327483caabba974e271fb52f4ccc5fd5fa5789))
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
### Features
diff --git a/README.md b/README.md
index 5c28ba01cdbbc..978f4e3d4bffb 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,4 @@
![]()
-
-
-
diff --git a/docs/pages/product/apis-integrations/rest-api/query-format.mdx b/docs/pages/product/apis-integrations/rest-api/query-format.mdx
index 17683e70f1d0e..32405961d0d7c 100644
--- a/docs/pages/product/apis-integrations/rest-api/query-format.mdx
+++ b/docs/pages/product/apis-integrations/rest-api/query-format.mdx
@@ -34,13 +34,31 @@ The default value is `false`.
- `offset`: The number of initial rows to be skipped for your query. The default
value is `0`.
- `order`: An object, where the keys are measures or dimensions to order by and
- their corresponding values are either `asc` or `desc`. The order of the fields
- to order on is based on the order of the keys in the object. If not provided,
- [default ordering][ref-default-order] is applied. If an empty object (`[]`) is
- provided, no ordering is applied.
+ their corresponding values are either `asc` or `desc`. For [time dimensions][ref-default-granularities],
+ a granularity can be optionally provided, e.g., `orders.created_at.month`.
+ The order of the fields to order on is based on the order of the keys in the object.
+ If not provided, the [default ordering][ref-default-order] is applied.
+ If an empty object (`[]`) is provided, no ordering is applied.
- `timezone`: A [time zone][ref-time-zone] for your query. You can set the
desired time zone in the [TZ Database Name](https://en.wikipedia.org/wiki/Tz_database)
format, e.g., `America/Los_Angeles`.
+- `renewQuery`: If `renewQuery` is set to `true`, Cube will renew all
+ [`refreshKey`][ref-schema-ref-preaggs-refreshkey] for queries and query
+ results in the foreground. However, if the
+ [`refreshKey`][ref-schema-ref-preaggs-refreshkey] (or
+ [`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every]) doesn't
+ indicate that there's a need for an update this setting has no effect. The
+ default value is `false`.
+
+
+
+Cube provides only eventual consistency guarantee. Using a small
+[`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every] value together
+with `renewQuery` to achieve immediate consistency can lead to endless
+refresh loops and overall system instability.
+
+
+
- `ungrouped`: If set to `true`, Cube will run an [ungrouped
query][ref-ungrouped-query].
- `joinHints`: Query-time [join hints][ref-join-hints], provided as an array of
@@ -673,4 +691,4 @@ refer to its documentation for more examples.
[ref-default-granularities]: /product/data-modeling/concepts#time-dimensions
[ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities
[wiki-iso-8601]: https://en.wikipedia.org/wiki/ISO_8601
-[ref-join-hints]: /product/data-modeling/concepts/working-with-joins#join-hints
\ No newline at end of file
+[ref-join-hints]: /product/data-modeling/concepts/working-with-joins#join-hints
diff --git a/docs/pages/product/caching/recipes/non-additivity.mdx b/docs/pages/product/caching/recipes/non-additivity.mdx
index bd959dc3aea77..e7cf33d942c05 100644
--- a/docs/pages/product/caching/recipes/non-additivity.mdx
+++ b/docs/pages/product/caching/recipes/non-additivity.mdx
@@ -165,8 +165,7 @@ cube(`users`, {
### Decomposing into a formula with additive measures
-Non-additive `avg` measures can be rewritten as
-[calculated measures](/product/data-modeling/reference/measures#calculated-measures)
+Non-additive `avg` measures can be rewritten as [calculated measures][ref-calculated-measures]
that reference additive measures only. Then, this additive measures can be used
in pre-aggregations. Please note, however, that you shouldn't include `avg_age`
measure in your pre-aggregation as it renders it non-additive.
@@ -245,4 +244,5 @@ or run it with the `docker-compose up` command. You'll see the result, including
queried data, in the console.
-[ref-percentile-recipe]: /product/data-modeling/recipes/percentiles
\ No newline at end of file
+[ref-percentile-recipe]: /product/data-modeling/recipes/percentiles
+[ref-calculated-measures]: /product/data-modeling/concepts/calculated-members#calculated-measures
\ No newline at end of file
diff --git a/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx b/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx
index 9155604ee1dca..0b3468e015301 100644
--- a/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx
+++ b/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx
@@ -52,7 +52,9 @@ docker run -it -p 4000:4000 --env-file=.env cube-jdk
| `CUBEJS_DB_NAME` | The name of the database to connect to | A valid database name | ✅ |
| `CUBEJS_DB_DATABRICKS_URL` | The URL for a JDBC connection | A valid JDBC URL | ✅ |
| `CUBEJS_DB_DATABRICKS_ACCEPT_POLICY` | Whether or not to accept the license terms for the Databricks JDBC driver | `true`, `false` | ✅ |
-| `CUBEJS_DB_DATABRICKS_TOKEN` | The [personal access token][databricks-docs-pat] used to authenticate the Databricks connection | A valid token | ✅ |
+| `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_ID` | The OAuth client ID for [service principal][ref-databricks-m2m-oauth] authentication | A valid client ID | ❌ |
+| `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_SECRET` | The OAuth client secret for [service principal][ref-databricks-m2m-oauth] authentication | A valid client secret | ❌ |
+| `CUBEJS_DB_DATABRICKS_TOKEN` | The [personal access token][databricks-docs-pat] used to authenticate the Databricks connection | A valid token | ❌ |
| `CUBEJS_DB_DATABRICKS_CATALOG` | The name of the [Databricks catalog][databricks-catalog] to connect to | A valid catalog name | ❌ |
| `CUBEJS_DB_EXPORT_BUCKET_MOUNT_DIR` | The path for the [Databricks DBFS mount][databricks-docs-dbfs] (Not needed if using Unity Catalog connection) | A valid mount path | ❌ |
| `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ |
@@ -201,3 +203,4 @@ bucket][self-preaggs-export-bucket] **must be** configured.
[databricks-docs-approx-agg-fns]: https://docs.databricks.com/en/sql/language-manual/functions/approx_count_distinct.html
[self-preaggs-simple]: #simple
[self-preaggs-export-bucket]: #export-bucket
+[ref-databricks-m2m-oauth]: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m
\ No newline at end of file
diff --git a/docs/pages/product/configuration/data-sources/duckdb.mdx b/docs/pages/product/configuration/data-sources/duckdb.mdx
index 1f9fe9d73645b..ca24e226c560b 100644
--- a/docs/pages/product/configuration/data-sources/duckdb.mdx
+++ b/docs/pages/product/configuration/data-sources/duckdb.mdx
@@ -72,8 +72,8 @@ deployment][ref-demo-deployment] in Cube Cloud.
| `CUBEJS_DB_DUCKDB_S3_USE_SSL` | Use SSL for connection | A boolean | ❌ |
| `CUBEJS_DB_DUCKDB_S3_URL_STYLE` | To choose the S3 URL style(vhost or path) | `vhost` or `path` | ❌ |
| `CUBEJS_DB_DUCKDB_S3_SESSION_TOKEN` | The token for the S3 session | A valid Session Token | ❌ |
-| `CUBEJS_DB_DUCKDB_EXTENSIONS` | A comma-separated list of DuckDB extensions to install and load | A comma-separated list of DuckDB extensions | ❌ |
-| `CUBEJS_DB_DUCKDB_COMMUNITY_EXTENSIONS` | A comma-separated list of DuckDB community extensions to install and load | A comma-separated list of DuckDB community extensions | ❌ |
+| `CUBEJS_DB_DUCKDB_EXTENSIONS` | A comma-separated list of DuckDB extensions to install and load | A comma-separated list of DuckDB extensions | ❌ |
+| `CUBEJS_DB_DUCKDB_COMMUNITY_EXTENSIONS` | A comma-separated list of DuckDB community extensions to install and load | A comma-separated list of DuckDB community extensions | ❌ |
| `CUBEJS_DB_DUCKDB_S3_USE_CREDENTIAL_CHAIN` | A flag to use credentials chain for secrets for S3 connections | `true`, `false`. Defaults to `false` | ❌ |
| `CUBEJS_CONCURRENCY` | The number of [concurrent queries][ref-data-source-concurrency] to the data source | A valid number | ❌ |
diff --git a/docs/pages/product/configuration/data-sources/presto.mdx b/docs/pages/product/configuration/data-sources/presto.mdx
index 722be8aa68607..fae2ccffe37fd 100644
--- a/docs/pages/product/configuration/data-sources/presto.mdx
+++ b/docs/pages/product/configuration/data-sources/presto.mdx
@@ -30,6 +30,7 @@ CUBEJS_DB_SCHEMA=my_presto_schema
| `CUBEJS_DB_USER` | The username used to connect to the database | A valid database username | ✅ |
| `CUBEJS_DB_PASS` | The password used to connect to the database | A valid database password | ✅ |
| `CUBEJS_DB_PRESTO_CATALOG` | The catalog within Presto to connect to | A valid catalog name within a Presto database | ✅ |
+| `CUBEJS_DB_PRESTO_AUTH_TOKEN` | The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header. | A valid authentication token | ❌ |
| `CUBEJS_DB_SCHEMA` | The schema within the database to connect to | A valid schema name within a Presto database | ✅ |
| `CUBEJS_DB_SSL` | If `true`, enables SSL encryption for database connections from Cube | `true`, `false` | ❌ |
| `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ |
diff --git a/docs/pages/product/configuration/data-sources/trino.mdx b/docs/pages/product/configuration/data-sources/trino.mdx
index d035c396f1fdf..04d43a6c6575d 100644
--- a/docs/pages/product/configuration/data-sources/trino.mdx
+++ b/docs/pages/product/configuration/data-sources/trino.mdx
@@ -30,6 +30,7 @@ CUBEJS_DB_SCHEMA=my_trino_schema
| `CUBEJS_DB_USER` | The username used to connect to the database | A valid database username | ✅ |
| `CUBEJS_DB_PASS` | The password used to connect to the database | A valid database password | ✅ |
| `CUBEJS_DB_PRESTO_CATALOG` | The catalog within Presto to connect to | A valid catalog name within a Presto database | ✅ |
+| `CUBEJS_DB_PRESTO_AUTH_TOKEN` | The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header. | A valid authentication token | ❌ |
| `CUBEJS_DB_SCHEMA` | The schema within the database to connect to | A valid schema name within a Presto database | ✅ |
| `CUBEJS_DB_SSL` | If `true`, enables SSL encryption for database connections from Cube | `true`, `false` | ❌ |
| `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ |
diff --git a/docs/pages/product/configuration/reference/environment-variables.mdx b/docs/pages/product/configuration/reference/environment-variables.mdx
index be8295c305d9d..4aba9df27a209 100644
--- a/docs/pages/product/configuration/reference/environment-variables.mdx
+++ b/docs/pages/product/configuration/reference/environment-variables.mdx
@@ -239,6 +239,22 @@ The name of the [Databricks catalog][databricks-catalog] to connect to.
[databricks-catalog]: (https://docs.databricks.com/en/data-governance/unity-catalog/create-catalogs.html)
+## `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_ID`
+
+The OAuth client ID for [service principal][ref-databricks-m2m-oauth] authentication in Databricks.
+
+| Possible Values | Default in Development | Default in Production |
+| ---------------------- | ---------------------- | --------------------- |
+| A valid client ID | N/A | N/A |
+
+## `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_SECRET`
+
+The OAuth client secret for [service principal][ref-databricks-m2m-oauth] authentication in Databricks.
+
+| Possible Values | Default in Development | Default in Production |
+| ---------------------- | ---------------------- | --------------------- |
+| A valid client secret | N/A | N/A |
+
## `CUBEJS_DB_DATABRICKS_TOKEN`
The [personal access token][databricks-docs-pat] used to authenticate the
@@ -680,6 +696,14 @@ The catalog within Presto/Trino to connect to.
| --------------------------------------------------- | ---------------------- | --------------------- |
| A valid catalog name within a Presto/Trino database | N/A | N/A |
+## `CUBEJS_DB_PRESTO_AUTH_TOKEN`
+
+The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header.
+
+| Possible Values | Default in Development | Default in Production |
+| --------------- | ---------------------- | --------------------- |
+| A valid authentication token | N/A | N/A |
+
## `CUBEJS_DB_QUERY_TIMEOUT`
The timeout value for any queries made to the database by Cube.
@@ -742,6 +766,22 @@ username/password, or `SNOWFLAKE_JWT` with key pairs.
| ---------------------------- | ---------------------- | --------------------- |
| `SNOWFLAKE`, `SNOWFLAKE_JWT` | `SNOWFLAKE` | `SNOWFLAKE` |
+## `CUBEJS_DB_SNOWFLAKE_OAUTH_TOKEN`
+
+The OAuth token to use with Snowflake.
+
+| Possible Values | Default in Development | Default in Production |
+| ------------------------------ | ---------------------- | --------------------- |
+| A valid OAuth token | N/A | N/A |
+
+## `CUBEJS_DB_SNOWFLAKE_OAUTH_TOKEN_PATH`
+
+The path to the file containing the OAuth token for Snowflake.
+
+| Possible Values | Default in Development | Default in Production |
+| ------------------------------ | ---------------------- | --------------------- |
+| A valid OAuth token | N/A | N/A |
+
## `CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE`
If `true`, [keep the Snowflake connection alive
@@ -1405,7 +1445,7 @@ code in worker threads.
| Possible Values | Default in Development | Default in Production |
| --------------- | ---------------------- | --------------------- |
-| `true`, `false` | `false` | `false` |
+| `true`, `false` | `true` | `true` |
@@ -1837,6 +1877,7 @@ The port for a Cube deployment to listen to API connections on.
[ref-dataviz-tools]: /product/configuration/visualization-tools
[ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id
[ref-environments]: /product/workspace/environments
+[ref-databricks-m2m-oauth]: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m
[ref-mdx-api]: /product/apis-integrations/mdx-api
[ref-mdx-api-locale]: /product/apis-integrations/mdx-api#measure-format
[ref-time-dimensions]: /product/data-modeling/reference/dimensions#time
diff --git a/docs/pages/product/data-modeling/concepts.mdx b/docs/pages/product/data-modeling/concepts.mdx
index d175a3d0562a4..588406a7ce6e6 100644
--- a/docs/pages/product/data-modeling/concepts.mdx
+++ b/docs/pages/product/data-modeling/concepts.mdx
@@ -42,7 +42,7 @@ metrics-first approaches.
_Cubes_ represent datasets in Cube and are conceptually similar to [views in
SQL][wiki-view-sql]. Cubes are usually declared in separate files with one
cube per file. Typically, a cube points to a single table in
-your database using the [`sql_table` property][ref-schema-ref-sql-table]:
+your [data source][ref-data-sources] using the [`sql_table` property][ref-schema-ref-sql-table]:
@@ -104,6 +104,9 @@ Cubes and their members can be further referenced by [views](#views).
Note that cubes support [extension][ref-extending-cubes],
[polymorphism][ref-polymorphic-cubes], and [data blending][ref-data-blending].
+Custom calendars, such as retail calendars, can be implemented using [calendar
+cubes][ref-calendar-cubes].
+
Cubes can be defined statically and you can also build [dynamic data
models][ref-dynamic-data-models].
@@ -850,4 +853,6 @@ See the reference documentaton for the full list of pre-aggregation
[ref-custom-calendar-recipe]: /product/data-modeling/recipes/custom-calendar
[ref-cube-with-dbt]: /product/data-modeling/recipes/dbt
[ref-apis-support]: /product/apis-integrations#data-modeling
-[ref-viz-tools]: /product/configuration/visualization-tools
\ No newline at end of file
+[ref-viz-tools]: /product/configuration/visualization-tools
+[ref-data-sources]: /product/configuration/data-sources
+[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes
\ No newline at end of file
diff --git a/docs/pages/product/data-modeling/concepts/_meta.js b/docs/pages/product/data-modeling/concepts/_meta.js
index 5c26138e38f43..0c799f03ac780 100644
--- a/docs/pages/product/data-modeling/concepts/_meta.js
+++ b/docs/pages/product/data-modeling/concepts/_meta.js
@@ -2,7 +2,8 @@ module.exports = {
"calculated-members": "Calculated members",
"multi-stage-calculations": "Multi-stage calculations",
"working-with-joins": "Joins between cubes",
+ "calendar-cubes": "Calendar cubes",
"code-reusability-extending-cubes": "Extension",
"polymorphic-cubes": "Polymorphic cubes",
"data-blending": "Data blending"
-}
\ No newline at end of file
+}
diff --git a/docs/pages/product/data-modeling/concepts/calculated-members.mdx b/docs/pages/product/data-modeling/concepts/calculated-members.mdx
index e5faefb5b8c4e..053efa0a957c6 100644
--- a/docs/pages/product/data-modeling/concepts/calculated-members.mdx
+++ b/docs/pages/product/data-modeling/concepts/calculated-members.mdx
@@ -17,6 +17,8 @@ into formulas that involve simpler measures. Also, calculated measures [can
help][ref-decomposition-recipe] to use [non-additive][ref-non-additive] measures with
pre-aggregations.
+### Members of the same cube
+
In the following example, the `completed_ratio` measure is calculated as a division of
`completed_count` by total `count`. Note that the result is also multiplied by `1.0`
since [integer division in SQL][link-postgres-division] would otherwise produce an
@@ -90,6 +92,149 @@ FROM (
) AS "orders"
```
+### Members of other cubes
+
+If you have `first_cube` that is [joined][ref-joins] to `second_cube`, you can define a
+calculated measure that references measures from both `first_cube` and `second_cube`.
+When you query for this calculated measure, Cube will transparently generate SQL with
+necessary joins.
+
+In the following example, the `orders.purchases_to_users_ratio` measure references the
+`purchases` measure from the `orders` cube and the `count` measure from the `users` cube:
+
+
+
+```javascript
+cube(`orders`, {
+ sql: `
+ SELECT 1 AS id, 11 AS user_id, 'processing' AS status UNION ALL
+ SELECT 2 AS id, 11 AS user_id, 'completed' AS status UNION ALL
+ SELECT 3 AS id, 11 AS user_id, 'completed' AS status
+ `,
+
+ dimensions: {
+ id: {
+ sql: `id`,
+ type: `number`,
+ primary_key: true
+ }
+ },
+
+ measures: {
+ purchases: {
+ type: `count`,
+ filters: [{
+ sql: `${CUBE}.status = 'completed'`
+ }]
+ }
+ }
+})
+
+cube(`users`, {
+ sql: `
+ SELECT 11 AS id, 'Alice' AS name UNION ALL
+ SELECT 12 AS id, 'Bob' AS name UNION ALL
+ SELECT 13 AS id, 'Eve' AS name
+ `,
+
+ joins: {
+ orders: {
+ sql: `${CUBE}.id = ${orders}.user_id`,
+ relationship: `one_to_many`
+ }
+ },
+
+ dimensions: {
+ id: {
+ sql: `id`,
+ type: `number`,
+ primary_key: true
+ }
+ },
+
+ measures: {
+ count: {
+ type: `count`
+ },
+
+ purchases_to_users_ratio: {
+ sql: `100.0 * ${orders.purchases} / ${CUBE.count}`,
+ type: `number`,
+ format: `percent`
+ }
+ }
+})
+```
+
+```yaml
+cubes:
+ - name: orders
+ sql: >
+ SELECT 1 AS id, 11 AS user_id, 'processing' AS status UNION ALL
+ SELECT 2 AS id, 11 AS user_id, 'completed' AS status UNION ALL
+ SELECT 3 AS id, 11 AS user_id, 'completed' AS status
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ measures:
+ - name: purchases
+ type: count
+ filters:
+ - sql: "{CUBE}.status = 'completed'"
+
+ - name: users
+ sql: >
+ SELECT 11 AS id, 'Alice' AS name UNION ALL
+ SELECT 12 AS id, 'Bob' AS name UNION ALL
+ SELECT 13 AS id, 'Eve' AS name
+
+ joins:
+ - name: orders
+ sql: "{CUBE}.id = {orders}.user_id"
+ relationship: one_to_many
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ measures:
+ - name: count
+ type: count
+
+ - name: purchases_to_users_ratio
+ sql: "1.0 * {orders.purchases} / {CUBE.count}"
+ type: number
+```
+
+
+
+If you query for `users.purchases_to_users_ratio`, Cube will generate the following SQL:
+
+```sql
+SELECT
+ 1.0 * COUNT(
+ CASE
+ WHEN ("orders".status = 'completed') THEN "orders".id
+ END
+ ) / COUNT(DISTINCT "users".id) "users__purchases_to_users_ratio"
+FROM (
+ SELECT 11 AS id, 'Alice' AS name UNION ALL
+ SELECT 12 AS id, 'Bob' AS name UNION ALL
+ SELECT 13 AS id, 'Eve' AS name
+) AS "users"
+LEFT JOIN (
+ SELECT 1 AS id, 11 AS user_id, 'processing' AS status UNION ALL
+ SELECT 2 AS id, 11 AS user_id, 'completed' AS status UNION ALL
+ SELECT 3 AS id, 11 AS user_id, 'completed' AS status
+) AS "orders" ON "users".id = "orders".user_id
+```
+
## Proxy dimensions
**Proxy dimensions reference dimensions from the same cube or other cubes.**
diff --git a/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx b/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx
new file mode 100644
index 0000000000000..55fcf42a3b2b3
--- /dev/null
+++ b/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx
@@ -0,0 +1,467 @@
+# Calendar cubes
+
+_Calendar cubes_ are used to implement custom calendars, such as retail calendars.
+If your data model contains a calendar table, it can be modeled as a calendar cube.
+
+Calendar cubes can be used to [override](#overriding-time-shifts) the default time
+shift behavior of time-shift measures as well as [override](#overriding-granularities)
+the default granularities of time dimensions.
+
+
+
+Calendar cubes are powered by Tesseract, the [next-generation data modeling
+engine][link-tesseract]. Tesseract is currently in preview. Use the
+`CUBEJS_TESSERACT_SQL_PLANNER` environment variable to enable it.
+
+
+
+## Configuration
+
+Calendar cubes are [cubes][ref-cubes] where the [`calendar` parameter][ref-cubes-calendar]
+is set to `true`. This indicates that the cube is a calendar cube and allow the use of
+custom time shifts and granularities.
+
+
+
+```yaml
+cubes:
+ - name: fiscal_calendar
+ calendar: true
+ sql: >
+ SELECT
+ date_key,
+ calendar_date,
+ start_of_week, start_of_month, start_of_year,
+ week_ago, month_ago, year_ago
+ FROM calendar_table
+
+ dimensions:
+ - name: date_key
+ sql: date
+ type: time
+ primary_key: true
+
+ - name: date
+ sql: date
+ type: time
+
+ time_shift:
+ - type: prior
+ interval: 1 week
+ sql: "{CUBE}.week_ago"
+
+ - type: prior
+ interval: 1 month
+ sql: "{CUBE}.month_ago"
+
+ - type: prior
+ interval: 1 year
+ sql: "{CUBE}.year_ago"
+
+ granularities:
+ - name: week
+ sql: "{CUBE}.start_of_week"
+
+ - name: month
+ sql: "{CUBE}.start_of_month"
+
+ - name: year
+ sql: "{CUBE}.start_of_year"
+```
+
+```javascript
+cube('fiscal_calendar', {
+ calendar: true,
+ sql: `
+ SELECT
+ date_key,
+ calendar_date,
+ start_of_week, start_of_month, start_of_year,
+ week_ago, month_ago, year_ago
+ FROM calendar_table
+ `,
+
+ dimensions: {
+ date_key: {
+ sql: 'date_key',
+ type: 'time',
+ primary_key: true
+ },
+
+ date: {
+ sql: 'calendar_date',
+ type: 'time',
+
+ time_shift: [
+ { type: 'prior', interval: '1 week', sql: '{CUBE}.week_ago' },
+ { type: 'prior', interval: '1 month', sql: '{CUBE}.month_ago' },
+ { type: 'prior', interval: '1 year', sql: '{CUBE}.year_ago' }
+ ],
+
+ granularities: [
+ { name: 'week', sql: '{CUBE}.start_of_week' },
+ { name: 'month', sql: '{CUBE}.start_of_month' },
+ { name: 'year', sql: '{CUBE}.start_of_year' }
+ ]
+ }
+ }
+})
+```
+
+
+
+Calendar cubes are only useful when they are joined with other cubes in the data model.
+
+
+
+```yaml
+cubes:
+ - name: sales
+ sql_table: sales_facts
+
+ joins:
+ - name: fiscal_calendar
+ sql: "{CUBE}.date = {fiscal_calendar.date_key}"
+ relationship: many_to_one
+
+ # ...
+```
+
+```javascript
+cube(`sales`, {
+ sql_table: `sales_facts`,
+
+ joins: {
+ fiscal_calendar: {
+ sql: `${CUBE}.date = ${fiscal_calendar.date_key}`,
+ relationship: `many_to_one`
+ }
+ },
+
+ // ...
+})
+```
+
+
+
+## Overriding time shifts
+
+Calendar cubes can be used to override the default time shift behavior of [time-shift
+measures][ref-time-shift]. It can help implement custom time shifts or reuse common time
+shifts across multiple cubes.
+
+By default, a time shift like `prior` + `1 month` will add `INTERVAL '1 month'` to the
+time dimension value in the generated SQL. However, with custom calendars, a more nuanced
+approach is often needed, such as mapping each date to another pre-calculated date from
+the calendar table.
+
+In the following example, the `custom_calendar` cube defines a custom time shift for
+`prior` + `1 month` that uses the `month_ago` column from the calendar table. It also
+defines a custom time shift `my_favorite_time_shift` of type `prior` + the `42 days`
+interval.
+
+
+
+```yaml
+cubes:
+ - name: custom_calendar
+ calendar: true
+ sql: >
+ SELECT '2025-01-01' AS date, '2024-12-15' AS month_ago UNION ALL
+ SELECT '2025-02-01' AS date, '2025-01-15' AS month_ago UNION ALL
+ SELECT '2025-03-01' AS date, '2025-02-15' AS month_ago UNION ALL
+ SELECT '2025-04-01' AS date, '2025-03-15' AS month_ago UNION ALL
+ SELECT '2025-05-01' AS date, '2025-04-15' AS month_ago UNION ALL
+ SELECT '2025-06-01' AS date, '2025-05-15' AS month_ago
+
+ dimensions:
+ - name: date_key
+ sql: "{CUBE}.date::TIMESTAMP"
+ type: time
+ primary_key: true
+
+ - name: date
+ sql: "{CUBE}.date::TIMESTAMP"
+ type: time
+
+ time_shift:
+ - type: prior
+ interval: 1 month
+ sql: "{CUBE}.month_ago::TIMESTAMP"
+
+ - type: prior
+ interval: 42 days
+ name: my_favorite_time_shift
+
+ - name: sales
+ sql: >
+ SELECT 1 AS id, 101 AS amount, '2025-01-01'::TIMESTAMP AS date UNION ALL
+ SELECT 2 AS id, 202 AS amount, '2025-02-01'::TIMESTAMP AS date UNION ALL
+ SELECT 3 AS id, 303 AS amount, '2025-03-01'::TIMESTAMP AS date UNION ALL
+ SELECT 4 AS id, 404 AS amount, '2025-04-01'::TIMESTAMP AS date UNION ALL
+ SELECT 5 AS id, 505 AS amount, '2025-05-01'::TIMESTAMP AS date UNION ALL
+ SELECT 6 AS id, 606 AS amount, '2025-06-01'::TIMESTAMP AS date
+
+ joins:
+ - name: custom_calendar
+ sql: "{CUBE}.date = {custom_calendar.date_key}"
+ relationship: many_to_one
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ measures:
+ - name: total_sales
+ sql: amount
+ type: sum
+
+ - name: total_sales_prior_month
+ sql: "{total_sales}"
+ type: number
+ time_shift:
+ - type: prior
+ interval: 1 month
+
+ - name: total_sales_few_days_ago
+ sql: "{total_sales}"
+ type: number
+ time_shift:
+ - name: my_favorite_time_shift
+```
+
+```javascript
+cube(`custom_calendar`, {
+ calendar: true,
+ sql: `
+ SELECT '2025-01-01' AS date, '2024-12-15' AS month_ago UNION ALL
+ SELECT '2025-02-01' AS date, '2025-01-15' AS month_ago UNION ALL
+ SELECT '2025-03-01' AS date, '2025-02-15' AS month_ago UNION ALL
+ SELECT '2025-04-01' AS date, '2025-03-15' AS month_ago UNION ALL
+ SELECT '2025-05-01' AS date, '2025-04-15' AS month_ago UNION ALL
+ SELECT '2025-06-01' AS date, '2025-05-15' AS month_ago
+ `,
+
+ dimensions: {
+ date_key: {
+ sql: `${CUBE}.date::TIMESTAMP`,
+ type: `time`,
+ primary_key: true
+ },
+
+ date: {
+ sql: `${CUBE}.date::TIMESTAMP`,
+ type: `time`,
+
+ time_shift: [
+ { type: `prior`, interval: `1 month`, sql: `${CUBE}.month_ago::TIMESTAMP` },
+ { type: `prior`, interval: `42 days`, name: `my_favorite_time_shift` }
+ ]
+ }
+ }
+})
+
+cube(`sales`, {
+ sql: `
+ SELECT 1 AS id, 101 AS amount, '2025-01-01'::TIMESTAMP AS date UNION ALL
+ SELECT 2 AS id, 202 AS amount, '2025-02-01'::TIMESTAMP AS date UNION ALL
+ SELECT 3 AS id, 303 AS amount, '2025-03-01'::TIMESTAMP AS date UNION ALL
+ SELECT 4 AS id, 404 AS amount, '2025-04-01'::TIMESTAMP AS date UNION ALL
+ SELECT 5 AS id, 505 AS amount, '2025-05-01'::TIMESTAMP AS date UNION ALL
+ SELECT 6 AS id, 606 AS amount, '2025-06-01'::TIMESTAMP AS date
+ `,
+
+ joins: {
+ custom_calendar: {
+ sql: `${CUBE}.date = ${custom_calendar.date_key}`,
+ relationship: `many_to_one`
+ }
+ },
+
+ dimensions: {
+ id: {
+ sql: `id`,
+ type: `number`,
+ primary_key: true
+ }
+ },
+
+ measures: {
+ total_sales: {
+ sql: `amount`,
+ type: `sum`
+ },
+
+ total_sales_prior_month: {
+ sql: `{total_sales}`,
+ type: `number`,
+ time_shift: [
+ { type: `prior`, interval: `1 month` }
+ ]
+ },
+
+ total_sales_few_days_ago: {
+ sql: `{total_sales}`,
+ type: `number`,
+ time_shift: [
+ { name: `my_favorite_time_shift` }
+ ]
+ }
+ }
+})
+```
+
+
+
+Whe `sales.total_sales_prior_month` and `sales.total_sales_few_days_ago` measures are
+queried together with the `calendar.date` time dimension, the generate SQL will use the
+custom time shifts defined in the `custom_calendar` cube: one with the `month_ago`
+column and another with `INTERVAL '42 days'`.
+
+## Overriding granularities
+
+Calendar cubes can be used to override the default [granularities][ref-granularities] of
+[time dimensions][ref-time-dimension].
+
+By default, SQL functions like `DATE_TRUNC` are used to calculate default granularities,
+such as `day`, `month`, or `year`. However, custom calendars often have different
+definitions for these periods, e.g., a retail calendar might use 4-5-4 week patterns.
+
+Calendar cubes allow you to define custom SQL expressions for each granularity.
+In the following example, the `fiscal_calendar` cube overrides the default `month`
+granularity to the to a pre-calculated `mid_month` column:
+
+
+
+```yaml
+cubes:
+ - name: custom_calendar
+ calendar: true
+ sql: >
+ SELECT '2025-01-02' AS date, '2025-01-15' AS mid_month UNION ALL
+ SELECT '2025-02-04' AS date, '2025-02-15' AS mid_month UNION ALL
+ SELECT '2025-03-09' AS date, '2025-03-15' AS mid_month UNION ALL
+ SELECT '2025-04-17' AS date, '2025-04-15' AS mid_month UNION ALL
+ SELECT '2025-05-21' AS date, '2025-05-15' AS mid_month UNION ALL
+ SELECT '2025-06-30' AS date, '2025-06-15' AS mid_month
+
+ dimensions:
+ - name: date_key
+ sql: date
+ type: time
+ primary_key: true
+
+ - name: date
+ sql: date
+ type: time
+ primary_key: true
+
+ granularities:
+ - name: month
+ sql: "{CUBE}.mid_month::TIMESTAMP"
+
+ - name: sales
+ sql: >
+ SELECT 1 AS id, 101 AS amount, '2025-01-02'::TIMESTAMP AS date UNION ALL
+ SELECT 2 AS id, 202 AS amount, '2025-02-04'::TIMESTAMP AS date UNION ALL
+ SELECT 3 AS id, 303 AS amount, '2025-03-09'::TIMESTAMP AS date UNION ALL
+ SELECT 4 AS id, 404 AS amount, '2025-04-17'::TIMESTAMP AS date UNION ALL
+ SELECT 5 AS id, 505 AS amount, '2025-05-21'::TIMESTAMP AS date UNION ALL
+ SELECT 6 AS id, 606 AS amount, '2025-06-30'::TIMESTAMP AS date
+
+ joins:
+ - name: custom_calendar
+ sql: "{CUBE}.date = {custom_calendar.date}"
+ relationship: many_to_one
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ measures:
+ - name: revenue
+ sql: amount
+ type: sum
+```
+
+```javascript
+cube(`custom_calendar`, {
+ calendar: true,
+ sql: `
+ SELECT '2025-01-02' AS date, '2025-01-15' AS mid_month UNION ALL
+ SELECT '2025-02-04' AS date, '2025-02-15' AS mid_month UNION ALL
+ SELECT '2025-03-09' AS date, '2025-03-15' AS mid_month UNION ALL
+ SELECT '2025-04-17' AS date, '2025-04-15' AS mid_month UNION ALL
+ SELECT '2025-05-21' AS date, '2025-05-15' AS mid_month UNION ALL
+ SELECT '2025-06-30' AS date, '2025-06-15' AS mid_month
+ `,
+
+ dimensions: {
+ date_key: {
+ sql: `date`,
+ type: `time`,
+ primary_key: true
+ },
+
+ date: {
+ sql: `date`,
+ type: `time`,
+ primary_key: true,
+
+ granularities: [
+ { name: `month`, sql: `${CUBE}.mid_month::TIMESTAMP` }
+ ]
+ }
+ }
+})
+
+cube(`sales`, {
+ sql: `
+ SELECT 1 AS id, 101 AS amount, '2025-01-02'::TIMESTAMP AS date UNION ALL
+ SELECT 2 AS id, 202 AS amount, '2025-02-04'::TIMESTAMP AS date UNION ALL
+ SELECT 3 AS id, 303 AS amount, '2025-03-09'::TIMESTAMP AS date UNION ALL
+ SELECT 4 AS id, 404 AS amount, '2025-04-17'::TIMESTAMP AS date UNION ALL
+ SELECT 5 AS id, 505 AS amount, '2025-05-21'::TIMESTAMP AS date UNION ALL
+ SELECT 6 AS id, 606 AS amount, '2025-06-30'::TIMESTAMP AS date
+ `,
+
+ joins: {
+ custom_calendar: {
+ sql: `${CUBE}.date = ${custom_calendar.date}`,
+ relationship: `many_to_one`
+ }
+ },
+
+ dimensions: {
+ id: {
+ sql: `id`,
+ type: `number`,
+ primary_key: true
+ }
+ },
+
+ measures: {
+ revenue: {
+ sql: `amount`,
+ type: `sum`
+ }
+ }
+})
+```
+
+
+
+When querying `sales.revenue` by `custom_calendar.date` with monthly granularity, the
+`mid_month` column will be used instead of the standard `DATE_TRUNC('month', date)`
+expression in the generated SQL.
+
+
+[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift
+[ref-time-dimension]: /product/data-modeling/concepts#time-dimensions
+[ref-granularities]: /product/data-modeling/reference/dimensions#granularities
+[ref-cubes]: /product/data-modeling/reference/cube
+[ref-cubes-calendar]: /product/data-modeling/reference/cube#calendar
\ No newline at end of file
diff --git a/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx b/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx
index e0e179e046ebc..d2b227764d9ab 100644
--- a/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx
+++ b/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx
@@ -26,8 +26,8 @@ Please track [this issue](https://github.com/cube-js/cube/issues/8487).
Common uses of multi-stage calculations:
- [Rolling window](#rolling-window) calculations.
+- [Time-shift](#time-shift) calculations, e.g., year-over-year sales growth.
- [Period-to-date](#period-to-date) calculations, e.g., year-to-date (YTD) analysis.
-- [Prior date](#prior-date) calculations, e.g., year-over-year sales growth.
- [Fixed dimension](#fixed-dimension) calculations, e.g., comparing individual items to a broader dataset or calculating percent of total.
- [Ranking](#ranking) calculations.
@@ -98,45 +98,48 @@ Query and result:
-## Period-to-date
+## Time shift
-Period-to-date calculations can be used to analyze data over different time periods:
+A _time-shift measure_ calculates the value of another measure at a different point in
+time. This is achieved by _shifting_ the time dimension from the query in the necessary
+direction during the calculation. Time-shifts are configured using the [`time_shift`
+parameter][ref-ref-time-shift] of a measure.
-- Year-to-date (YTD) analysis.
-- Quarter-to-date (QTD) analysis.
-- Month-to-date (MTD) analysis.
+Typically, this is used to compare the current value of a measure with its prior value,
+such as the same time last year. For example, if you have the `revenue` measure, you can
+calculate its value for the same time last year:
```yaml
-- name: revenue_ytd
- sql: revenue
- type: sum
- rolling_window:
- type: to_date
- granularity: year
-
-- name: revenue_qtd
- sql: revenue
- type: sum
- rolling_window:
- type: to_date
- granularity: quarter
-
-- name: revenue_mtd
- sql: revenue
- type: sum
- rolling_window:
- type: to_date
- granularity: month
+- name: revenue_prior_year
+ multi_stage: true
+ sql: "{revenue}"
+ type: number
+ time_shift:
+ - interval: 1 year
+ type: prior
```
+You can use time-shift measures with [calendar cubes][ref-calendar-cubes] to customize
+how time-shifting works, e.g., to shift the time dimension to the prior date in a retail
+calendar.
+
### Example
Data model:
```yaml
cubes:
- - name: period_to_date
+ - name: prior_date
sql: |
+ SELECT '2023-04-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-05-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-06-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-07-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-08-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-09-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-10-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-11-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
+ SELECT '2023-12-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
SELECT '2024-01-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
SELECT '2024-02-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
SELECT '2024-03-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL
@@ -162,55 +165,71 @@ cubes:
type: time
measures:
- - name: revenue_ytd
- sql: revenue
- type: sum
- rolling_window:
- type: to_date
- granularity: year
-
- - name: revenue_qtd
+ - name: revenue
sql: revenue
type: sum
- rolling_window:
- type: to_date
- granularity: quarter
-
- - name: revenue_mtd
+
+ - name: revenue_ytd
sql: revenue
type: sum
rolling_window:
type: to_date
- granularity: month
+ granularity: year
+
+ - name: revenue_prior_year
+ multi_stage: true
+ sql: "{revenue}"
+ type: number
+ time_shift:
+ - time_dimension: time
+ interval: 1 year
+ type: prior
+
+ - name: revenue_prior_year_ytd
+ multi_stage: true
+ sql: "{revenue_ytd}"
+ type: number
+ time_shift:
+ - time_dimension: time
+ interval: 1 year
+ type: prior
```
-Query and result:
+Queries and results:
-
+
-## Prior date
+
+
+## Period-to-date
-Prior date calculations can be used to find the difference between two aggregated
-measures, like year-over-year sales growth.
+Period-to-date calculations can be used to analyze data over different time periods:
+
+- Year-to-date (YTD) analysis.
+- Quarter-to-date (QTD) analysis.
+- Month-to-date (MTD) analysis.
```yaml
-- name: revenue_prior_year
- multi_stage: true
- sql: "{revenue}"
- type: number
- time_shift:
- - time_dimension: calendar.CalendarDate
- interval: 1 year
- type: prior
-
-- name: revenue_prior_year_ytd
- multi_stage: true
- sql: "{revenue_ytd}"
- type: number
- time_shift:
- - time_dimension: calendar.CalendarDate
- interval: 1 year
- type: prior
+- name: revenue_ytd
+ sql: revenue
+ type: sum
+ rolling_window:
+ type: to_date
+ granularity: year
+
+- name: revenue_qtd
+ sql: revenue
+ type: sum
+ rolling_window:
+ type: to_date
+ granularity: quarter
+
+- name: revenue_mtd
+ sql: revenue
+ type: sum
+ rolling_window:
+ type: to_date
+ granularity: month
```
### Example
@@ -255,41 +274,31 @@ cubes:
type: time
measures:
- - name: revenue
- sql: revenue
- type: sum
-
- name: revenue_ytd
sql: revenue
type: sum
rolling_window:
type: to_date
granularity: year
-
- - name: revenue_prior_year
- multi_stage: true
- sql: "{revenue}"
- type: number
- time_shift:
- - time_dimension: time
- interval: 1 year
- type: prior
-
- - name: revenue_prior_year_ytd
- multi_stage: true
- sql: "{revenue_ytd}"
- type: number
- time_shift:
- - time_dimension: time
- interval: 1 year
- type: prior
+
+ - name: revenue_qtd
+ sql: revenue
+ type: sum
+ rolling_window:
+ type: to_date
+ granularity: quarter
+
+ - name: revenue_mtd
+ sql: revenue
+ type: sum
+ rolling_window:
+ type: to_date
+ granularity: month
```
-Queries and results:
-
-
+Query and result:
-
+
## Fixed dimension
@@ -459,4 +468,6 @@ Query and result:
[ref-measures]: /product/data-modeling/concepts#measures
[ref-dimensions]: /product/data-modeling/concepts#dimensions
[ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window
-[link-cte]: https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL#Common_table_expression
\ No newline at end of file
+[link-cte]: https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL#Common_table_expression
+[ref-ref-time-shift]: /product/data-modeling/reference/measures#time_shift
+[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes
diff --git a/docs/pages/product/data-modeling/recipes/period-over-period.mdx b/docs/pages/product/data-modeling/recipes/period-over-period.mdx
index fb807b71e0fa2..aceb93f6fcef6 100644
--- a/docs/pages/product/data-modeling/recipes/period-over-period.mdx
+++ b/docs/pages/product/data-modeling/recipes/period-over-period.mdx
@@ -10,26 +10,26 @@ revenue, etc.
In Cube, calculating a period-over-period metric involves the following
steps:
-- Define a couple of [`rolling_window` measures][ref-rolling-window] with
-different windows, i.e., one for _this period_ and the other for the
-_previous period_.
+- Define a [multi-stage measure][ref-multi-stage] for the _current period_.
+- Define a [time-shift measure][link-time-shift] that references the current
+period measure and shifts it to the _previous period_.
- Define a [calculated measure][ref-calculated-measure] that references
-these `rolling_window` measures and uses them in a calculation, e.g.,
-divides or subtracts them.
+these measures and uses them in a calculation, e.g., divides or subtracts them.
-Tesseract, the [next-generation data modeling engine][link-tesseract],
-provides a more efficient way to calculate [period-over-period changes][link-period-over-period].
-Tesseract is currently in preview. Use the `CUBEJS_TESSERACT_SQL_PLANNER`
-environment variable to enable it.
+Multi-stage calculations are powered by Tesseract, the [next-generation data modeling
+engine][link-tesseract]. Tesseract is currently in preview. Use the
+`CUBEJS_TESSERACT_SQL_PLANNER` environment variable to enable it.
The following data model allows to calculate a month-over-month change of
-some value. `current_month_sum` and `previous_month_sum` measures define
-two rolling windows and the `month_over_month_ratio` measure divides
-their values:
+some value. `current_month_sum` is the base measure, `previous_month_sum`
+is a time-shift measure that shifts the current month data to the previous
+month, and the `month_over_month_ratio` measure divides their values:
+
+
```yaml
cubes:
@@ -53,22 +53,68 @@ cubes:
- name: current_month_sum
sql: value
type: sum
- rolling_window:
- trailing: 1 month
- offset: end
- name: previous_month_sum
- sql: value
- type: sum
- rolling_window:
- trailing: 1 month
- offset: start
+ multi_stage: true
+ sql: "{current_month_sum}"
+ type: number
+ time_shift:
+ - interval: 1 month
+ type: prior
- name: month_over_month_ratio
- sql: "{current_month_sum} / {previous_month_sum}"
+ multi_stage: true
+ sql: "{current_month_sum} / NULLIF({previous_month_sum}, 0)"
type: number
```
+```javascript
+cube(`month_over_month`, {
+ sql: `
+ SELECT 1 AS value, '2024-01-01'::TIMESTAMP AS date UNION ALL
+ SELECT 2 AS value, '2024-01-01'::TIMESTAMP AS date UNION ALL
+ SELECT 3 AS value, '2024-02-01'::TIMESTAMP AS date UNION ALL
+ SELECT 4 AS value, '2024-02-01'::TIMESTAMP AS date UNION ALL
+ SELECT 5 AS value, '2024-03-01'::TIMESTAMP AS date UNION ALL
+ SELECT 6 AS value, '2024-03-01'::TIMESTAMP AS date UNION ALL
+ SELECT 7 AS value, '2024-04-01'::TIMESTAMP AS date UNION ALL
+ SELECT 8 AS value, '2024-04-01'::TIMESTAMP AS date
+ `,
+
+ dimensions: {
+ date: {
+ sql: `date`,
+ type: `time`
+ }
+ },
+
+ measures: {
+ current_month_sum: {
+ sql: `value`,
+ type: `sum`
+ },
+
+ previous_month_sum: {
+ multi_stage: true,
+ sql: `${current_month_sum}`,
+ type: `number`,
+ time_shift: [{
+ interval: `1 month`,
+ type: `prior`
+ }]
+ },
+
+ month_over_month_ratio: {
+ multi_stage: true,
+ sql: `${current_month_sum} / NULLIF(${previous_month_sum}, 0)`,
+ type: `number`
+ }
+ }
+})
+```
+
+
+
## Result
Often, when calculating period-over-period changes, you would also use a
@@ -81,23 +127,24 @@ that matches the period, i.e., `month` for month-over-month calculations:
{
"dimension": "month_over_month.date",
"granularity": "month",
- "dateRange": "this year"
+ "dateRange": ["2024-01-01", "2025-01-01"]
}
],
"measures": [
"month_over_month.current_month_sum",
"month_over_month.previous_month_sum",
- "month_over_month.change"
+ "month_over_month.month_over_month_ratio"
]
}
```
Here's the result:
-
+
+
-[ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window
+[ref-multi-stage]: /product/data-modeling/concepts/multi-stage-calculations
[ref-calculated-measure]: /product/data-modeling/overview#4-using-calculated-measures
[ref-time-dimension-granularity]: /product/apis-integrations/rest-api/query-format#time-dimensions-format
[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine
-[link-period-over-period]: /product/data-modeling/concepts/multi-stage-calculations#prior-date
\ No newline at end of file
+[link-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift
diff --git a/docs/pages/product/data-modeling/reference/cube.mdx b/docs/pages/product/data-modeling/reference/cube.mdx
index e85105401c4c2..c43ae050bf0ef 100644
--- a/docs/pages/product/data-modeling/reference/cube.mdx
+++ b/docs/pages/product/data-modeling/reference/cube.mdx
@@ -593,6 +593,16 @@ cubes:
+### `calendar`
+
+The `calendar` parameter is used to mark [calendar cubes][ref-calendar-cubes].
+It's set to `false` by default.
+
+When set to `true`, Cube will treat this cube as a calendar cube and allow to
+[override time-shifts][ref-calendar-cubes-time-shifts] and [granularities][ref-calendar-cubes-granularities]
+on its [time dimensions][ref-time-dimensions]. This can be useful for [time-shift
+calculations][ref-time-shift] with a custom calendar.
+
### `pre_aggregations`
The `pre_aggregations` parameter is used to configure [pre-aggregations][ref-ref-pre-aggs].
@@ -636,4 +646,9 @@ The `access_policy` parameter is used to configure [data access policies][ref-re
[ref-ref-pre-aggs]: /product/data-modeling/reference/pre-aggregations
[ref-ref-dap]: /product/data-modeling/reference/data-access-policies
[ref-syntax-cube-sql]: /product/data-modeling/syntax#cubesql-function
-[ref-extension]: /product/data-modeling/concepts/code-reusability-extending-cubes
\ No newline at end of file
+[ref-extension]: /product/data-modeling/concepts/code-reusability-extending-cubes
+[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes
+[ref-calendar-cubes-time-shifts]: /product/data-modeling/concepts/calendar-cubes#time-shifts
+[ref-calendar-cubes-granularities]: /product/data-modeling/concepts/calendar-cubes#granularities
+[ref-time-dimensions]: /product/data-modeling/concepts#time-dimensions
+[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift
\ No newline at end of file
diff --git a/docs/pages/product/data-modeling/reference/dimensions.mdx b/docs/pages/product/data-modeling/reference/dimensions.mdx
index d8bcc24d68f00..e4d088b76dfe3 100644
--- a/docs/pages/product/data-modeling/reference/dimensions.mdx
+++ b/docs/pages/product/data-modeling/reference/dimensions.mdx
@@ -148,6 +148,42 @@ cube(`products`, {
})
```
+### `title`
+
+You can use the `title` parameter to change a dimension's displayed name. By
+default, Cube will humanize your dimension key to create a display name. In
+order to override default behavior, please use the `title` property:
+
+
+
+```javascript
+cube(`products`, {
+ // ...
+
+ dimensions: {
+ meta_value: {
+ title: `Size`,
+ sql: `meta_value`,
+ type: `string`
+ }
+ }
+})
+```
+
+```yaml
+cubes:
+ - name: products
+ # ...
+
+ dimensions:
+ - name: meta_value
+ title: Size
+ sql: meta_value
+ type: string
+```
+
+
+
### `description`
This parameter provides a human-readable description of a dimension.
@@ -184,6 +220,42 @@ cubes:
+### `public`
+
+The `public` parameter is used to manage the visibility of a dimension. Valid
+values for `public` are `true` and `false`. When set to `false`, this dimension
+**cannot** be queried through the API. Defaults to `true`.
+
+
+
+```javascript
+cube(`products`, {
+ // ...
+
+ dimensions: {
+ comment: {
+ sql: `comment`,
+ type: `string`,
+ public: false
+ }
+ }
+})
+```
+
+```yaml
+cubes:
+ - name: products
+ # ...
+
+ dimensions:
+ - name: comment
+ sql: comment
+ type: string
+ public: false
+```
+
+
+
### `format`
`format` is an optional parameter. It is used to format the output of dimensions
@@ -419,42 +491,6 @@ cubes:
-### `public`
-
-The `public` parameter is used to manage the visibility of a dimension. Valid
-values for `public` are `true` and `false`. When set to `false`, this dimension
-**cannot** be queried through the API. Defaults to `true`.
-
-
-
-```javascript
-cube(`products`, {
- // ...
-
- dimensions: {
- comment: {
- sql: `comment`,
- type: `string`,
- public: false
- }
- }
-})
-```
-
-```yaml
-cubes:
- - name: products
- # ...
-
- dimensions:
- - name: comment
- sql: comment
- type: string
- public: false
-```
-
-
-
### `sql`
`sql` is a required parameter. It can take any valid SQL expression depending on
@@ -525,42 +561,6 @@ cubes:
-### `title`
-
-You can use the `title` parameter to change a dimension's displayed name. By
-default, Cube will humanize your dimension key to create a display name. In
-order to override default behavior, please use the `title` property:
-
-
-
-```javascript
-cube(`products`, {
- // ...
-
- dimensions: {
- meta_value: {
- title: `Size`,
- sql: `meta_value`,
- type: `string`
- }
- }
-})
-```
-
-```yaml
-cubes:
- - name: products
- # ...
-
- dimensions:
- - name: meta_value
- title: Size
- sql: meta_value
- type: string
-```
-
-
-
### `type`
`type` is a required parameter. There are various types that can be assigned to
@@ -700,6 +700,193 @@ cube(`orders`, {
+#### Calendar cubes
+
+When the `granularities` parameter is used in time dimensions within [calendar
+cubes][ref-calendar-cubes], you can still use it to define custom granularities.
+
+Additionally, you can override the _default granularities_. This can be useful for
+modeling custom calendars, such as fiscal calendars.
+
+
+
+```yaml
+cubes:
+ - name: fiscal_calendar
+ calendar: true
+ sql: >
+ SELECT
+ date_key,
+ calendar_date,
+ start_of_month,
+ start_of_quarter,
+ start_of_year
+ FROM calendar_table
+
+ dimensions:
+ - name: date_key
+ sql: date_key
+ type: time
+ primary_key: true
+
+ - name: date
+ sql: calendar_date
+ type: time
+ granularities:
+ - name: month
+ sql: "{CUBE}.start_of_month"
+
+ - name: quarter
+ sql: "{CUBE}.start_of_quarter"
+
+ - name: year
+ sql: "{CUBE}.start_of_year"
+
+```
+
+```javascript
+cube(`fiscal_calendar`, {
+ calendar: true,
+ sql: `
+ SELECT
+ date_key,
+ calendar_date,
+ start_of_month,
+ start_of_quarter,
+ start_of_year
+ FROM calendar_table
+ `,
+
+ dimensions: {
+ date_key: {
+ sql: `date_key`,
+ type: `time`,
+ primary_key: true
+ },
+
+ date: {
+ sql: `calendar_date`,
+ type: `time`,
+ granularities: {
+ month: {
+ sql: `${CUBE}.start_of_month`
+ },
+ quarter: {
+ sql: `${CUBE}.start_of_quarter`
+ },
+ year: {
+ sql: `${CUBE}.start_of_year`
+ }
+ }
+ }
+ }
+})
+```
+
+
+
+### `time_shift`
+
+The `time_shift` parameter allows overriding the time shift behavior for time dimensions
+within [calendar cubes][ref-calendar-cubes]. Such time shifts can be referenced in
+[time-shift measures][ref-time-shift] of other cubes, enabling the use of custom calendars.
+
+The `time_shift` parameter can only be set on _time dimensions_ within _calendar cubes_,
+i.e., cubes where the [`calendar` parameter][ref-cube-calendar] is set to `true`.
+
+The `time_shift` parameter accepts an array of time shift definitions. Each definition
+can include `time_dimension`, `type`, `interval`, and `name` parameters, similarly to the
+[`time_shift` parameter][ref-measure-time-shift] of time-shift measures. Additionally,
+you can use the `sql` parameter to define a custom time mapping using a SQL expression.
+
+
+
+```yaml
+cubes:
+ - name: fiscal_calendar
+ calendar: true
+ sql: >
+ SELECT
+ date_key,
+ calendar_date,
+ fiscal_date_prior_year,
+ fiscal_date_next_quarter
+ FROM calendar_table
+
+ dimensions:
+ - name: date_key
+ sql: date_key
+ type: time
+ primary_key: true
+
+ - name: date
+ sql: calendar_date
+ type: time
+ time_shift:
+ - name: prior_calendar_year
+ type: prior
+ interval: 1 year
+
+ - name: next_calendar_quarter
+ type: next
+ interval: 1 quarter
+
+ - name: prior_fiscal_year
+ sql: "{CUBE}.fiscal_date_prior_year"
+
+ - name: next_fiscal_quarter
+ sql: "{CUBE}.fiscal_date_next_quarter"
+```
+
+```javascript
+cube(`fiscal_calendar`, {
+ calendar: true,
+ sql: `
+ SELECT
+ date_key,
+ calendar_date,
+ fiscal_date_prior_year,
+ fiscal_date_next_quarter
+ FROM calendar_table
+ `,
+
+ dimensions: {
+ date_key: {
+ sql: `date_key`,
+ type: `time`,
+ primary_key: true
+ },
+
+ date: {
+ sql: `calendar_date`,
+ type: `time`,
+ time_shift: [
+ {
+ name: `prior_calendar_year`,
+ type: `prior`,
+ interval: `1 year`
+ },
+ {
+ name: `next_calendar_quarter`,
+ type: `next`,
+ interval: `1 quarter`
+ },
+ {
+ name: `prior_fiscal_year`,
+ sql: `${CUBE}.fiscal_date_prior_year`
+ },
+ {
+ name: `next_fiscal_quarter`,
+ sql: `${CUBE}.fiscal_date_next_quarter`
+ }
+ ]
+ }
+ }
+});
+```
+
+
+
[ref-ref-cubes]: /product/data-modeling/reference/cube
[ref-schema-ref-joins]: /product/data-modeling/reference/joins
@@ -716,4 +903,8 @@ cube(`orders`, {
[link-date-time-string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format
[ref-custom-granularity-recipe]: /product/data-modeling/recipes/custom-granularity
[ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies
-[ref-data-sources]: /product/configuration/data-sources
\ No newline at end of file
+[ref-data-sources]: /product/configuration/data-sources
+[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes
+[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift
+[ref-cube-calendar]: /product/data-modeling/reference/cube#calendar
+[ref-measure-time-shift]: /product/data-modeling/reference/measures#time_shift
diff --git a/docs/pages/product/data-modeling/reference/measures.mdx b/docs/pages/product/data-modeling/reference/measures.mdx
index fea84705e73d9..7de4a76b86a21 100644
--- a/docs/pages/product/data-modeling/reference/measures.mdx
+++ b/docs/pages/product/data-modeling/reference/measures.mdx
@@ -50,6 +50,42 @@ cubes:
+### `title`
+
+You can use the `title` parameter to change a measure’s displayed name. By
+default, Cube will humanize your measure key to create a display name. In order
+to override default behavior, please use the `title` parameter.
+
+
+
+```javascript
+cube(`orders`, {
+ // ...
+
+ measures: {
+ orders_count: {
+ title: `Number of Orders Placed`,
+ sql: `id`,
+ type: `count`
+ }
+ }
+})
+```
+
+```yaml
+cubes:
+ - name: orders
+ # ...
+
+ measures:
+ - name: orders_count
+ title: Number of Orders Placed
+ sql: id
+ type: count
+```
+
+
+
### `description`
This parameter provides a human-readable description of a measure.
@@ -86,14 +122,45 @@ cubes:
-### `drill_members`
+### `public`
-Using the `drill_members` parameter, you can define a set of [drill
-down][ref-drilldowns] fields for the measure. `drill_members` is defined as an
-array of dimensions. Cube automatically injects dimensions’ names and other
-cubes’ names with dimensions in the context, so you can reference these
-variables in the `drill_members` array. [Learn more about how to define and use
-drill downs][ref-drilldowns].
+The `public` parameter is used to manage the visibility of a measure. Valid
+values for `public` are `true` and `false`. When set to `false`, this measure
+**cannot** be queried through the API. Defaults to `true`.
+
+
+
+```javascript
+cube(`orders`, {
+ // ...
+
+ measures: {
+ orders_count: {
+ sql: `id`,
+ type: `count`,
+ public: false
+ }
+ }
+})
+```
+
+```yaml
+cubes:
+ - name: orders
+ # ...
+
+ measures:
+ - name: orders_count
+ sql: id
+ type: count
+ public: false
+```
+
+
+
+### `meta`
+
+Custom metadata. Can be used to pass any information to the frontend.
@@ -105,7 +172,9 @@ cube(`orders`, {
revenue: {
type: `sum`,
sql: `price`,
- drill_members: [id, price, status, products.name, products.id]
+ meta: {
+ any: "value"
+ }
}
}
})
@@ -120,20 +189,18 @@ cubes:
- name: revenue
type: sum
sql: price
- drill_members:
- - id
- - price
- - status
- - products.name
- - products.id
+ meta:
+ any: value
```
-### `filters`
+### `sql`
-If you want to add some conditions for a metric's calculation, you should use
-the `filters` parameter. The syntax looks like the following:
+`sql` is a required parameter. It can take any valid SQL expression depending on
+the `type` of the measure. Please refer to the [Measure Types
+Guide][ref-schema-ref-types-formats-measures-types] for detailed information on
+the corresponding `sql` parameter.
@@ -142,10 +209,9 @@ cube(`orders`, {
// ...
measures: {
- orders_completed_count: {
- sql: `id`,
- type: `count`,
- filters: [{ sql: `${CUBE}.status = 'completed'` }]
+ users_count: {
+ sql: `COUNT(*)`,
+ type: `number`
}
}
})
@@ -157,21 +223,25 @@ cubes:
# ...
measures:
- - name: orders_completed_count
- sql: id
- type: count
- filters:
- - sql: "{CUBE}.status = 'completed'"
+ - name: users_count
+ sql: "COUNT(*)"
+ type: number
```
-### `format`
+Depending on the measure [type](#type), the `sql` parameter would either:
+* Be skipped (in case of the `count` type).
+* Contain an aggregate function, e.g., `STRING_AGG(string_dimension, ',')`
+(in case of `string`, `time`, `boolean`, and `number` types).
+* Contain a non-aggregated expression that Cube would wrap into an aggregate
+function according to the measure type (in case of the `avg`, `count_distinct`,
+`count_distinct_approx`, `min`, `max`, and `sum` types).
-`format` is an optional parameter. It is used to format the output of measures
-in different ways, for example, as currency for `revenue`. Please refer to the
-[Measure Formats][ref-schema-ref-types-formats-measures-formats] for the full
-list of supported formats.
+### `filters`
+
+If you want to add some conditions for a metric's calculation, you should use
+the `filters` parameter. The syntax looks like the following:
@@ -180,10 +250,10 @@ cube(`orders`, {
// ...
measures: {
- total: {
- sql: `amount`,
- type: `sum`,
- format: `currency`
+ orders_completed_count: {
+ sql: `id`,
+ type: `count`,
+ filters: [{ sql: `${CUBE}.status = 'completed'` }]
}
}
})
@@ -195,17 +265,21 @@ cubes:
# ...
measures:
- - name: total
- sql: amount
- type: sum
- format: currency
+ - name: orders_completed_count
+ sql: id
+ type: count
+ filters:
+ - sql: "{CUBE}.status = 'completed'"
```
-### `meta`
+### `type`
-Custom metadata. Can be used to pass any information to the frontend.
+`type` is a required parameter. There are various types that can be assigned to
+a measure. Please refer to the [Measure
+Types][ref-schema-ref-types-formats-measures-types] for the full list of measure
+types.
@@ -214,12 +288,9 @@ cube(`orders`, {
// ...
measures: {
- revenue: {
- type: `sum`,
- sql: `price`,
- meta: {
- any: "value"
- }
+ orders_count: {
+ sql: `id`,
+ type: `count`
}
}
})
@@ -231,11 +302,9 @@ cubes:
# ...
measures:
- - name: revenue
- type: sum
- sql: price
- meta:
- any: value
+ - name: orders_count
+ sql: id
+ type: count
```
@@ -348,127 +417,442 @@ cubes:
-### `public`
+### `multi_stage`
-The `public` parameter is used to manage the visibility of a measure. Valid
-values for `public` are `true` and `false`. When set to `false`, this measure
-**cannot** be queried through the API. Defaults to `true`.
+The `multi_stage` parameter is used to define measures that are used with [multi-stage
+calculations][ref-multi-stage], e.g., [time-shift measures][ref-time-shift].
+```yaml
+cubes:
+ - name: time_shift
+ sql: >
+ SELECT '2024-01-01'::TIMESTAMP AS time, 100 AS revenue UNION ALL
+ SELECT '2024-02-01'::TIMESTAMP AS time, 200 AS revenue UNION ALL
+ SELECT '2024-03-01'::TIMESTAMP AS time, 300 AS revenue UNION ALL
+
+ SELECT '2025-01-01'::TIMESTAMP AS time, 400 AS revenue UNION ALL
+ SELECT '2025-02-01'::TIMESTAMP AS time, 500 AS revenue UNION ALL
+ SELECT '2025-03-01'::TIMESTAMP AS time, 600 AS revenue
+
+ dimensions:
+ - name: time
+ sql: time
+ type: time
+
+ measures:
+ - name: revenue
+ sql: revenue
+ type: sum
+
+ - name: revenue_prior_year
+ multi_stage: true
+ sql: "{revenue}"
+ type: number
+ time_shift:
+ - time_dimension: time
+ interval: 1 year
+ type: prior
+```
+
```javascript
-cube(`orders`, {
- // ...
+cube(`time_shift`, {
+ sql: `
+ SELECT '2024-01-01'::TIMESTAMP AS time, 100 AS revenue UNION ALL
+ SELECT '2024-02-01'::TIMESTAMP AS time, 200 AS revenue UNION ALL
+ SELECT '2024-03-01'::TIMESTAMP AS time, 300 AS revenue UNION ALL
+
+ SELECT '2025-01-01'::TIMESTAMP AS time, 400 AS revenue UNION ALL
+ SELECT '2025-02-01'::TIMESTAMP AS time, 500 AS revenue UNION ALL
+ SELECT '2025-03-01'::TIMESTAMP AS time, 600 AS revenue
+ `,
+
+ dimensions: {
+ time: {
+ sql: `time`,
+ type: `time`
+ }
+ },
measures: {
- orders_count: {
- sql: `id`,
- type: `count`,
- public: false
+ revenue: {
+ sql: `revenue`,
+ type: `sum`
+ },
+
+ revenue_prior_year: {
+ multi_stage: true,
+ sql: `${revenue}`,
+ type: `number`,
+ time_shift: [
+ {
+ time_dimension: `time`,
+ interval: `1 year`,
+ type: `prior`
+ }
+ ]
}
}
})
```
-```yaml
-cubes:
- - name: orders
- # ...
+
- measures:
- - name: orders_count
- sql: id
- type: count
- public: false
-```
+### `time_shift`
-
+The `time_shift` parameter is used to configure a [time shift][ref-time-shift] for a
+measure. It accepts an array of time shift configurations that consist of `time_dimension`,
+`type`, `interval`, and `name` parameters.
-### `sql`
+#### `type` and `interval`
-`sql` is a required parameter. It can take any valid SQL expression depending on
-the `type` of the measure. Please refer to the [Measure Types
-Guide][ref-schema-ref-types-formats-measures-types] for detailed information on
-the corresponding `sql` parameter.
+These parameters define the time shift direction and size. The `type` can be either
+`prior` (shifting time backwards) or `next` (shifting time forwards).
+The `interval` parameter defines the size of the time shift and has the following format:
+`quantity unit`, e.g., `1 year` or `7 days`.
-```javascript
-cube(`orders`, {
- // ...
+```yaml
+ measures:
+ - name: revenue
+ sql: revenue
+ type: sum
+
+ - name: revenue_7d_ago
+ multi_stage: true
+ sql: "{revenue}"
+ type: number
+ time_shift:
+ - interval: 7 days
+ type: prior
+
+ - name: revenue_1y_ago
+ multi_stage: true
+ sql: "{revenue}"
+ type: number
+ time_shift:
+ - interval: 1 year
+ type: prior
+```
+```javascript
measures: {
- users_count: {
- sql: `COUNT(*)`,
- type: `number`
+ revenue: {
+ sql: `revenue`,
+ type: `sum`
+ },
+
+ revenue_7d_ago: {
+ multi_stage: true,
+ sql: `${revenue}`,
+ type: `number`,
+ time_shift: [
+ {
+ interval: `7 days`,
+ type: `prior`
+ }
+ ]
+ },
+
+ revenue_1y_ago: {
+ multi_stage: true,
+ sql: `${revenue}`,
+ type: `number`,
+ time_shift: [
+ {
+ interval: `1 year`,
+ type: `prior`
+ }
+ ]
}
}
-})
```
-```yaml
-cubes:
- - name: orders
- # ...
+
+
+#### `time_dimension`
+
+The `time_dimension` parameter is used to specify the time dimension for the time shift.
+If it's omitted, Cube will apply the time shift to all time dimensions in the query.
+In this case, only single time shift configuration is allowed in `time_shift`.
+
+If `time_dimension` is specified, the time shift will only happen if the query contains
+this very time dimension. This is useful if you'd like to apply different time shifts to
+different time dimensions or if you want to apply a time shift only when a specific time
+dimension is present in the query.
+
+
+```yaml
measures:
- - name: users_count
- sql: "COUNT(*)"
+ - name: revenue
+ sql: revenue
+ type: sum
+
+ - name: lagging_revenue
+ multi_stage: true
+ sql: "{revenue}"
type: number
+ time_shift:
+ - time_dimension: purchase_date
+ interval: 3 months
+ type: prior
+
+ - time_dimension: shipping_date
+ interval: 2 months
+ type: prior
+
+ - time_dimension: delivery_date
+ interval: 1 month
+ type: prior
```
-
+```javascript
+ measures: {
+ revenue: {
+ sql: `revenue`,
+ type: `sum`
+ },
-Depending on the measure [type](#type), the `sql` parameter would either:
-* Be skipped (in case of the `count` type).
-* Contain an aggregate function, e.g., `STRING_AGG(string_dimension, ',')`
-(in case of `string`, `time`, `boolean`, and `number` types).
-* Contain a non-aggregated expression that Cube would wrap into an aggregate
-function according to the measure type (in case of the `avg`, `count_distinct`,
-`count_distinct_approx`, `min`, `max`, and `sum` types).
+ lagging_revenue: {
+ multi_stage: true,
+ sql: `${revenue}`,
+ type: `number`,
+ time_shift: [
+ {
+ time_dimension: `purchase_date`,
+ interval: `3 months`,
+ type: `prior`
+ },
+ {
+ time_dimension: `shipping_date`,
+ interval: `2 months`,
+ type: `prior`
+ },
+ {
+ time_dimension: `delivery_date`,
+ interval: `1 month`,
+ type: `prior`
+ }
+ ]
+ }
+ }
+```
-### `title`
+
-You can use the `title` parameter to change a measure’s displayed name. By
-default, Cube will humanize your measure key to create a display name. In order
-to override default behavior, please use the `title` parameter.
+#### `name`
+
+The `name` parameter is used to reference a _named time shift_ that is defined on a time
+dimension from a [calendar cube][ref-calendar-cubes]. Named time shifts are used in cases
+when different measures use the same time shift configuration (e.g., `prior` + `1 year`)
+but have to be shifted differently depending on the custom calendar.
+```yaml
+cubes:
+ - name: sales_calendar
+ calendar: true
+ sql: >
+ SELECT '2025-06-02Z' AS date, '2024-06-01Z' AS mapped_date, '2024-06-03Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-03Z' AS date, '2024-06-02Z' AS mapped_date, '2024-06-04Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-04Z' AS date, '2024-06-03Z' AS mapped_date, '2024-06-05Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-05Z' AS date, '2024-06-04Z' AS mapped_date, '2024-06-06Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-06Z' AS date, '2024-06-05Z' AS mapped_date, '2024-06-07Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-07Z' AS date, '2024-06-06Z' AS mapped_date, '2024-06-08Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-08Z' AS date, '2024-06-07Z' AS mapped_date, '2024-06-09Z' AS mapped_date_alt
+
+ dimensions:
+ - name: date_key
+ sql: "{CUBE}.date::TIMESTAMP"
+ type: time
+ primary_key: true
+
+ - name: date
+ sql: "{CUBE}.date::TIMESTAMP"
+ type: time
+ time_shift:
+ - name: 1_year_prior
+ sql: "{CUBE}.mapped_date::TIMESTAMP"
+
+ - name: 1_year_prior_alternative
+ sql: "{CUBE}.mapped_date_alt::TIMESTAMP"
+
+ - name: sales
+ sql: >
+ SELECT 101 AS id, '2024-06-01Z' AS date, 101 AS amount UNION ALL
+ SELECT 102 AS id, '2024-06-02Z' AS date, 102 AS amount UNION ALL
+ SELECT 103 AS id, '2024-06-03Z' AS date, 103 AS amount UNION ALL
+ SELECT 104 AS id, '2024-06-04Z' AS date, 104 AS amount UNION ALL
+ SELECT 105 AS id, '2024-06-05Z' AS date, 105 AS amount UNION ALL
+ SELECT 106 AS id, '2024-06-06Z' AS date, 106 AS amount UNION ALL
+ SELECT 107 AS id, '2024-06-07Z' AS date, 107 AS amount UNION ALL
+ SELECT 108 AS id, '2024-06-08Z' AS date, 108 AS amount UNION ALL
+ SELECT 109 AS id, '2024-06-09Z' AS date, 109 AS amount UNION ALL
+
+ SELECT 202 AS id, '2025-06-02Z' AS date, 202 AS amount UNION ALL
+ SELECT 203 AS id, '2025-06-03Z' AS date, 203 AS amount UNION ALL
+ SELECT 204 AS id, '2025-06-04Z' AS date, 204 AS amount UNION ALL
+ SELECT 205 AS id, '2025-06-05Z' AS date, 205 AS amount UNION ALL
+ SELECT 206 AS id, '2025-06-06Z' AS date, 206 AS amount UNION ALL
+ SELECT 207 AS id, '2025-06-07Z' AS date, 207 AS amount UNION ALL
+ SELECT 208 AS id, '2025-06-08Z' AS date, 208 AS amount
+
+ joins:
+ - name: sales_calendar
+ sql: "{sales.date} = {sales_calendar.date_key}"
+ relationship: many_to_one
+
+ dimensions:
+ - name: id
+ sql: id
+ type: number
+ primary_key: true
+
+ - name: date
+ sql: "{CUBE}.date::TIMESTAMP"
+ type: time
+ public: false
+
+ measures:
+ - name: total_amount
+ sql: amount
+ type: sum
+
+ - name: total_amount_1y_prior
+ multi_stage: true
+ sql: "{total_amount}"
+ type: number
+ time_shift:
+ - name: 1_year_prior
+
+ - name: total_amount_1y_prior_alternative
+ multi_stage: true
+ sql: "{total_amount}"
+ type: number
+ time_shift:
+ - name: 1_year_prior_alternative
+```
+
```javascript
-cube(`orders`, {
- // ...
+cube(`sales_calendar`, {
+ sql: `
+ SELECT '2025-06-02Z' AS date, '2024-06-01Z' AS mapped_date, '2024-06-03Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-03Z' AS date, '2024-06-02Z' AS mapped_date, '2024-06-04Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-04Z' AS date, '2024-06-03Z' AS mapped_date, '2024-06-05Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-05Z' AS date, '2024-06-04Z' AS mapped_date, '2024-06-06Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-06Z' AS date, '2024-06-05Z' AS mapped_date, '2024-06-07Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-07Z' AS date, '2024-06-06Z' AS mapped_date, '2024-06-08Z' AS mapped_date_alt UNION ALL
+ SELECT '2025-06-08Z' AS date, '2024-06-07Z' AS mapped_date, '2024-06-09Z' AS mapped_date_alt
+ `,
+
+ dimensions: {
+ date_key: {
+ sql: `${CUBE}.date::TIMESTAMP`,
+ type: `time`,
+ primary_key: true
+ },
- measures: {
- orders_count: {
- title: `Number of Orders Placed`,
- sql: `id`,
- type: `count`
+ date: {
+ sql: `${CUBE}.date::TIMESTAMP`,
+ type: `time`,
+ time_shift: [
+ {
+ name: `1_year_prior`,
+ sql: `${CUBE}.mapped_date::TIMESTAMP`
+ },
+ {
+ name: `1_year_prior_alternative`,
+ sql: `${CUBE}.mapped_date_alt::TIMESTAMP`
+ }
+ ]
}
}
})
-```
-```yaml
-cubes:
- - name: orders
- # ...
+cube(`sales`, {
+ sql: `
+ SELECT 101 AS id, '2024-06-01Z' AS date, 101 AS amount UNION ALL
+ SELECT 102 AS id, '2024-06-02Z' AS date, 102 AS amount UNION ALL
+ SELECT 103 AS id, '2024-06-03Z' AS date, 103 AS amount UNION ALL
+ SELECT 104 AS id, '2024-06-04Z' AS date, 104 AS amount UNION ALL
+ SELECT 105 AS id, '2024-06-05Z' AS date, 105 AS amount UNION ALL
+ SELECT 106 AS id, '2024-06-06Z' AS date, 106 AS amount UNION ALL
+ SELECT 107 AS id, '2024-06-07Z' AS date, 107 AS amount UNION ALL
+ SELECT 108 AS id, '2024-06-08Z' AS date, 108 AS amount UNION ALL
+ SELECT 109 AS id, '2024-06-09Z' AS date, 109 AS amount UNION ALL
+
+ SELECT 202 AS id, '2025-06-02Z' AS date, 202 AS amount UNION ALL
+ SELECT 203 AS id, '2025-06-03Z' AS date, 203 AS amount UNION ALL
+ SELECT 204 As id, '2025-06-04Z' As date, 204 As amount UNION ALL
+ SELECT 205 As id, '2025-06-05Z' As date, 205 As amount UNION ALL
+ SELECT 206 As id, '2025-06-06Z' As date, 206 As amount UNION ALL
+ SELECT 207 As id, '2025-06-07Z' As date, 207 As amount UNION ALL
+ SELECT 208 As id, '2025-06-08Z' As date, 208 As amount
+ `,
+
+ joins: {
+ sales_calendar: {
+ sql: `${sales}.date = ${sales_calendar}.date_key`,
+ relationship: `many_to_one`
+ }
+ },
- measures:
- - name: orders_count
- title: Number of Orders Placed
- sql: id
- type: count
+ dimensions: {
+ id: {
+ sql: `id`,
+ type: `number`,
+ primary_key: true
+ },
+
+ date: {
+ sql: `${CUBE}.date::TIMESTAMP`,
+ type: `time`,
+ public: false
+ }
+ },
+
+ measures: {
+ total_amount: {
+ sql: `amount`,
+ type: `sum`
+ },
+
+ total_amount_1y_prior: {
+ multi_stage: true,
+ sql: `${total_amount}`,
+ type: `number`,
+ time_shift: [{
+ name: `1_year_prior`
+ }]
+ },
+
+ total_amount_1y_prior_alternative: {
+ multi_stage: true,
+ sql: `${total_amount}`,
+ type: `number`,
+ time_shift: [{
+ name: `1_year_prior_alternative`
+ }]
+ }
+ }
+)
```
-### `type`
+Named time shifts also allow to reuse the same time shift configuration across multiple
+measures and cubes where they are defined.
-`type` is a required parameter. There are various types that can be assigned to
-a measure. Please refer to the [Measure
-Types][ref-schema-ref-types-formats-measures-types] for the full list of measure
-types.
+### `format`
+
+`format` is an optional parameter. It is used to format the output of measures
+in different ways, for example, as currency for `revenue`. Please refer to the
+[Measure Formats][ref-schema-ref-types-formats-measures-formats] for the full
+list of supported formats.
@@ -477,9 +861,10 @@ cube(`orders`, {
// ...
measures: {
- orders_count: {
- sql: `id`,
- type: `count`
+ total: {
+ sql: `amount`,
+ type: `sum`,
+ format: `currency`
}
}
})
@@ -491,18 +876,22 @@ cubes:
# ...
measures:
- - name: orders_count
- sql: id
- type: count
+ - name: total
+ sql: amount
+ type: sum
+ format: currency
```
-## Calculated measures
+### `drill_members`
-In the case where you need to specify a formula for measure calculating with
-other measures, you can compose a formula in `sql`. For example, to calculate
-the conversion of buyers of all users.
+Using the `drill_members` parameter, you can define a set of [drill
+down][ref-drilldowns] fields for the measure. `drill_members` is defined as an
+array of dimensions. Cube automatically injects dimensions’ names and other
+cubes’ names with dimensions in the context, so you can reference these
+variables in the `drill_members` array. [Learn more about how to define and use
+drill downs][ref-drilldowns].
@@ -511,10 +900,10 @@ cube(`orders`, {
// ...
measures: {
- purchases_to_created_account_ratio: {
- sql: `${purchases} / ${users.count} * 100.0`,
- type: `number`,
- format: `percent`
+ revenue: {
+ type: `sum`,
+ sql: `price`,
+ drill_members: [id, price, status, products.name, products.id]
}
}
})
@@ -526,17 +915,19 @@ cubes:
# ...
measures:
- - name: purchases_to_created_account_ratio
- sql: "{purchases} / {users.count} * 100.0"
- type: number
- format: percent
+ - name: revenue
+ type: sum
+ sql: price
+ drill_members:
+ - id
+ - price
+ - status
+ - products.name
+ - products.id
```
-You can create calculated measures from several joined cubes. In this case, a
-join will be created automatically.
-
[ref-ref-cubes]: /product/data-modeling/reference/cube
[ref-schema-ref-types-formats-measures-types]:
@@ -548,4 +939,7 @@ join will be created automatically.
[ref-playground]: /product/workspace/playground
[ref-apis]: /product/apis-integrations
[ref-rolling-window]: /product/data-modeling/concepts/multi-stage-calculations#rolling-window
-[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine
\ No newline at end of file
+[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine
+[ref-multi-stage]: /product/data-modeling/concepts/multi-stage-calculations
+[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift
+[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes
diff --git a/docs/pages/product/data-modeling/reference/types-and-formats.mdx b/docs/pages/product/data-modeling/reference/types-and-formats.mdx
index 89b67d765b582..095490a054e41 100644
--- a/docs/pages/product/data-modeling/reference/types-and-formats.mdx
+++ b/docs/pages/product/data-modeling/reference/types-and-formats.mdx
@@ -133,9 +133,8 @@ cubes:
### `number`
-The `number` type is usually used, when performing arithmetic operations on
-arithmetic operations on measures. [Learn more about Calculated
-Measures][ref-schema-ref-calc-measures].
+The `number` type is usually used, when performing arithmetic operations on measures,
+e.g., in [calculated measures][ref-calculated-measures].
The `sql` parameter is required and must include any valid SQL expression
with an aggregate function that returns a value of the numeric type.
@@ -1002,6 +1001,5 @@ cubes:
[ref-string-time-dims]: /product/data-modeling/recipes/string-time-dimensions
[ref-schema-ref-preaggs-rollup]:
/product/data-modeling/reference/pre-aggregations#rollup
-[ref-schema-ref-calc-measures]:
- /product/data-modeling/reference/measures#calculated-measures
+[ref-calculated-measures]: /product/data-modeling/concepts/calculated-members#calculated-measures
[ref-drilldowns]: /product/apis-integrations/recipes/drilldowns
diff --git a/docs/pages/product/distribution.mdx b/docs/pages/product/distribution.mdx
index d6251b7b24fbb..ee068b25ae389 100644
--- a/docs/pages/product/distribution.mdx
+++ b/docs/pages/product/distribution.mdx
@@ -84,7 +84,8 @@ List of LTS releases:
| Version | Status | End-of-life date |
| --- | --- | --- |
-| `v1.0.x` | Active | October 29, 2025 |
+| `v1.4.x` | Active | October 29, 2026 |
+| `v1.0.x` | End-of-life | October 29, 2025 |
[link-repo]: https://github.com/cube-js/cube
diff --git a/docs/yarn.lock b/docs/yarn.lock
index dce8bef41188c..ffca3cf9c958d 100644
--- a/docs/yarn.lock
+++ b/docs/yarn.lock
@@ -143,6 +143,13 @@
algoliasearch "^4.17.0"
classnames "^2.3.2"
+"@cube-dev/purple-banner@https://github.com/cubedevinc/purple-banner/releases/download/v2.0.21/cube-dev-purple-banner-2.0.21.tgz":
+ version "2.0.21"
+ resolved "https://github.com/cubedevinc/purple-banner/releases/download/v2.0.21/cube-dev-purple-banner-2.0.21.tgz#57217ed1c3952b5ba8f235d9863f07dc9921d3c4"
+ dependencies:
+ classnames "^2.3.1"
+ dayjs "^1.11.7"
+
"@cubejs-client/core@^0.32.17":
version "0.32.30"
resolved "https://registry.yarnpkg.com/@cubejs-client/core/-/core-0.32.30.tgz#40bad1199635363a82a1a5e9f4718a67f2fe4f59"
@@ -1016,6 +1023,11 @@ character-reference-invalid@^2.0.0:
optionalDependencies:
fsevents "~2.3.2"
+classnames@^2.3.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
+ integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
+
classnames@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
diff --git a/lerna.json b/lerna.json
index aded0f2709591..bba0afe6c206a 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "1.3.86",
+ "version": "1.4.0",
"npmClient": "yarn",
"command": {
"bootstrap": {
diff --git a/packages/cubejs-api-gateway/CHANGELOG.md b/packages/cubejs-api-gateway/CHANGELOG.md
index 6599d39e1eb2f..1db482fcf0f82 100644
--- a/packages/cubejs-api-gateway/CHANGELOG.md
+++ b/packages/cubejs-api-gateway/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/api-gateway
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/api-gateway
diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json
index 8b8d74f178197..dc780f76b30db 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -27,9 +27,9 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/native": "1.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/native": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"@ungap/structured-clone": "^0.3.4",
"assert-never": "^1.4.0",
"body-parser": "^1.19.0",
@@ -52,7 +52,7 @@
"uuid": "^8.3.2"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"@types/express": "^4.17.21",
"@types/jest": "^29",
"@types/jsonwebtoken": "^9.0.2",
diff --git a/packages/cubejs-athena-driver/CHANGELOG.md b/packages/cubejs-athena-driver/CHANGELOG.md
index 17ea06bd64be6..c2c1db8437d94 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/athena-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 1a44620b5b03a..f5753efa938e1 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"sqlstring": "^2.3.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 219b267e742ca..e6ccad29da262 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/cloud
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 a72e4ead996f5..2c63763d66a5f 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.3.86",
+ "version": "1.4.0",
"description": "Cube Cloud package",
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
@@ -25,7 +25,7 @@
"devDependencies": {
"@babel/core": "^7.24.5",
"@babel/preset-env": "^7.24.5",
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"@types/fs-extra": "^9.0.8",
"@types/jest": "^29",
"jest": "^29",
@@ -33,7 +33,7 @@
},
"dependencies": {
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/shared": "1.4.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 3e0b91c2fae0f..8110c99be9e05 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/maven
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 26cac4162d4d7..7f67551585d86 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.3.86",
+ "version": "1.4.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -31,12 +31,12 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/shared": "1.4.0",
"source-map-support": "^0.5.19",
"xmlbuilder2": "^2.4.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 e9e5132de5eb2..05e7f240a9ae6 100644
--- a/packages/cubejs-backend-native/CHANGELOG.md
+++ b/packages/cubejs-backend-native/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+### Bug Fixes
+
+- **cubesql:** Always repartition joins when right side has multiple partitions ([#10105](https://github.com/cube-js/cube/issues/10105)) ([ae32748](https://github.com/cube-js/cube/commit/ae327483caabba974e271fb52f4ccc5fd5fa5789))
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/native
diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock
index 2905b1a7ade4a..45941c342a94d 100644
--- a/packages/cubejs-backend-native/Cargo.lock
+++ b/packages/cubejs-backend-native/Cargo.lock
@@ -667,7 +667,7 @@ dependencies = [
[[package]]
name = "cube-ext"
version = "1.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"arrow",
"chrono",
@@ -839,7 +839,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
[[package]]
name = "datafusion"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"ahash 0.7.8",
"arrow",
@@ -872,7 +872,7 @@ dependencies = [
[[package]]
name = "datafusion-common"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"arrow",
"ordered-float 2.10.1",
@@ -883,7 +883,7 @@ dependencies = [
[[package]]
name = "datafusion-data-access"
version = "1.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"async-trait",
"chrono",
@@ -896,7 +896,7 @@ dependencies = [
[[package]]
name = "datafusion-expr"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"ahash 0.7.8",
"arrow",
@@ -907,7 +907,7 @@ dependencies = [
[[package]]
name = "datafusion-physical-expr"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"ahash 0.7.8",
"arrow",
diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json
index 7aef8d7fb32f2..518b5361f4959 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.3.86",
+ "version": "1.4.0",
"author": "Cube Dev, Inc.",
"description": "Native module for Cube.js (binding to Rust codebase)",
"main": "dist/js/index.js",
@@ -35,7 +35,7 @@
"dist/js"
],
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"@types/jest": "^29",
"@types/node": "^20",
"cargo-cp-artifact": "^0.1.9",
@@ -46,8 +46,8 @@
"uuid": "^8.3.2"
},
"dependencies": {
- "@cubejs-backend/cubesql": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/cubesql": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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 2e18ca0d6a769..488ff0c06f711 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/shared
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/shared
diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json
index 274c4c313abeb..6340b338b0a8f 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.3.86",
+ "version": "1.4.0",
"description": "Shared code for Cube.js backend packages",
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
@@ -22,7 +22,7 @@
"author": "Cube Dev, Inc.",
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"@types/bytes": "^3.1.5",
"@types/cli-progress": "^3.9.1",
"@types/decompress": "^4.2.7",
@@ -43,7 +43,6 @@
"decompress": "^4.2.1",
"env-var": "^6.3.0",
"fs-extra": "^9.1.0",
- "https-proxy-agent": "^7.0.6",
"lru-cache": "^11.1.0",
"moment-range": "^4.0.2",
"moment-timezone": "^0.5.47",
diff --git a/packages/cubejs-backend-shared/src/env.ts b/packages/cubejs-backend-shared/src/env.ts
index 8491e3d7b5b81..ae5952f726af9 100644
--- a/packages/cubejs-backend-shared/src/env.ts
+++ b/packages/cubejs-backend-shared/src/env.ts
@@ -229,7 +229,7 @@ const variables: Record any> = {
.default('true')
.asBoolStrict(),
transpilationWorkerThreads: () => get('CUBEJS_TRANSPILATION_WORKER_THREADS')
- .default('false')
+ .default('true')
.asBoolStrict(),
allowNonStrictDateRangeMatching: () => get('CUBEJS_PRE_AGGREGATIONS_ALLOW_NON_STRICT_DATE_RANGE_MATCH')
.default('true')
diff --git a/packages/cubejs-backend-shared/src/proxy.ts b/packages/cubejs-backend-shared/src/proxy.ts
index 55ecf84e8cb3d..dfbf4a8b2f3e8 100644
--- a/packages/cubejs-backend-shared/src/proxy.ts
+++ b/packages/cubejs-backend-shared/src/proxy.ts
@@ -1,48 +1,8 @@
-import { exec } from 'child_process';
import { ProxyAgent } from 'proxy-agent';
-import { HttpsProxyAgent } from 'https-proxy-agent';
-
-let npmProxy: string;
-let npmProxyInitialized = false;
-
-function getCommandOutput(command: string) {
- return new Promise((resolve, reject) => {
- exec(command, (error, stdout) => {
- if (error) {
- reject(error.message);
- return;
- }
-
- resolve(stdout);
- });
- });
-}
-
-/**
- * @deprecated
- * use ProxyAgent instead
- */
-export async function getProxySettings(): Promise {
- const [proxy] = (
- await Promise.all([getCommandOutput('npm config -g get https-proxy'), getCommandOutput('npm config -g get proxy')])
- )
- .map((s) => s.trim())
- .filter((s) => !['null', 'undefined', ''].includes(s));
-
- npmProxyInitialized = true;
-
- return proxy;
-}
export async function getHttpAgentForProxySettings() {
- if (!npmProxyInitialized) {
- npmProxy = await getProxySettings();
+ if (!process.env.HTTP_PROXY && !process.env.HTTPS_PROXY) {
+ return undefined;
}
-
- if (npmProxy) {
- console.warn('Npm proxy settings are deprecated. Please use HTTP_PROXY, HTTPS_PROXY environment variables instead.');
- return new HttpsProxyAgent(npmProxy);
- }
-
return new ProxyAgent();
}
diff --git a/packages/cubejs-base-driver/CHANGELOG.md b/packages/cubejs-base-driver/CHANGELOG.md
index 6bc5f91e70284..d3032f1a56a37 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/base-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 333f5ad828181..795f3719ae8f4 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.3.86",
+ "version": "1.4.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.3.86",
+ "@cubejs-backend/shared": "1.4.0",
"@google-cloud/storage": "^7.13.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 6981c2a3f6fc9..c64e6cff08b01 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/bigquery-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 767eb726d8f45..d79908c3501be 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -28,15 +28,15 @@
"main": "index.js",
"types": "dist/src/index.d.ts",
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/shared": "1.4.0",
"@google-cloud/bigquery": "^7.7.0",
"@google-cloud/storage": "^7.13.0",
"ramda": "^0.27.2"
},
"devDependencies": {
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/testing-shared": "1.4.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 6f31959644c12..9538ec7980da1 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package cubejs-cli
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package cubejs-cli
diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json
index e17a2051e72b1..88ded7b5cca01 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -30,10 +30,10 @@
"LICENSE"
],
"dependencies": {
- "@cubejs-backend/cloud": "1.3.86",
+ "@cubejs-backend/cloud": "1.4.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
- "@cubejs-backend/server": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/server": "1.4.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 edcf7f98bdbbd..b766abff9a416 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/clickhouse-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 d0d0a419973ea..5c44d80b8dfb8 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"moment": "^2.24.0",
"sqlstring": "^2.3.1",
"uuid": "^8.3.2"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 85cd4f5fc334d..db45edc08559f 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/core
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 369fd3b7b3e91..edb7f36491f8d 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.3.86",
+ "version": "1.4.0",
"engines": {},
"repository": {
"type": "git",
@@ -38,7 +38,7 @@
],
"license": "MIT",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 4db960b6888d8..5c1a5f4691336 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/dx
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 ec0cef2f48148..3cd5c02ebd04c 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.3.86",
+ "version": "1.4.0",
"engines": {},
"repository": {
"type": "git",
diff --git a/packages/cubejs-client-ngx/CHANGELOG.md b/packages/cubejs-client-ngx/CHANGELOG.md
index 6348a6bddf45a..49a7c84dd6cbd 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/ngx
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 97daa4353b097..d6fdecd83ae9d 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.3.86",
+ "version": "1.4.0",
"author": "Cube Dev, Inc.",
"engines": {},
"repository": {
diff --git a/packages/cubejs-client-react/CHANGELOG.md b/packages/cubejs-client-react/CHANGELOG.md
index 7eb515e0cc39f..c1658545f97c3 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/react
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 49319c1f285cf..a5954c3b470cb 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.3.86",
+ "version": "1.4.0",
"author": "Cube Dev, Inc.",
"license": "MIT",
"engines": {},
@@ -24,7 +24,7 @@
],
"dependencies": {
"@babel/runtime": "^7.1.2",
- "@cubejs-client/core": "1.3.86",
+ "@cubejs-client/core": "1.4.0",
"core-js": "^3.6.5",
"ramda": "^0.27.2"
},
diff --git a/packages/cubejs-client-vue/CHANGELOG.md b/packages/cubejs-client-vue/CHANGELOG.md
index 9a0a68eac0663..25e2f4449fed8 100644
--- a/packages/cubejs-client-vue/CHANGELOG.md
+++ b/packages/cubejs-client-vue/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.4.0](https://github.com/cube-js/cube.js/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/vue
+
## [1.3.86](https://github.com/cube-js/cube.js/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-client/vue
diff --git a/packages/cubejs-client-vue/package.json b/packages/cubejs-client-vue/package.json
index 5a580e4c69d15..83935bf7e742f 100644
--- a/packages/cubejs-client-vue/package.json
+++ b/packages/cubejs-client-vue/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-client/vue",
- "version": "1.3.86",
+ "version": "1.4.0",
"engines": {},
"repository": {
"type": "git",
@@ -28,7 +28,7 @@
"src"
],
"dependencies": {
- "@cubejs-client/core": "1.3.86",
+ "@cubejs-client/core": "1.4.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 2350324848173..97a828ed80664 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.4.0](https://github.com/cube-js/cube.js/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/vue3
+
## [1.3.86](https://github.com/cube-js/cube.js/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 7afda03962eb1..1d60b216d7db8 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.3.86",
+ "version": "1.4.0",
"engines": {},
"repository": {
"type": "git",
@@ -28,7 +28,7 @@
"src"
],
"dependencies": {
- "@cubejs-client/core": "1.3.86",
+ "@cubejs-client/core": "1.4.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 9cb69bd2d602a..9d8a0a71d803a 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/ws-transport
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 e921421a5cdb8..cbbf8118ef630 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.3.86",
+ "version": "1.4.0",
"engines": {},
"repository": {
"type": "git",
@@ -20,7 +20,7 @@
},
"dependencies": {
"@babel/runtime": "^7.1.2",
- "@cubejs-client/core": "1.3.86",
+ "@cubejs-client/core": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.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 2d5f1357cda59..155920d8d250a 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/crate-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 25940a2ace764..e0d9b1c80c965 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/postgres-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"pg": "^8.7.1"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 8a076c6c8fc18..8aaa6de29b298 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/cubestore-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 3272f73bb4542..4658d51510543 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/cubestore": "1.3.86",
- "@cubejs-backend/native": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/cubestore": "1.4.0",
+ "@cubejs-backend/native": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.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 ac878ffd71692..b54b4537e1244 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 fea259b1853d9..7fea422fe0136 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.3.86",
+ "version": "1.4.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -30,17 +30,17 @@
"bin"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/jdbc-driver": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/jdbc-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.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 b19e7d25d1022..91e8c4fd3242d 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 1b6717252c43b..7ab89d4d46933 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.3.86",
+ "version": "1.4.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.3.86",
+ "@cubejs-backend/schema-compiler": "1.4.0",
"fs-extra": "^9.1.0",
"inflection": "^1.12.0",
"node-fetch": "^2.6.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing": "1.4.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 914bbede9fd3c..92f9d0bb2998b 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/docker
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/docker
diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json
index fa93910eac1ff..40dece24f8cbc 100644
--- a/packages/cubejs-docker/package.json
+++ b/packages/cubejs-docker/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/docker",
- "version": "1.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/bigquery-driver": "1.3.86",
- "@cubejs-backend/clickhouse-driver": "1.3.86",
- "@cubejs-backend/crate-driver": "1.3.86",
- "@cubejs-backend/databricks-jdbc-driver": "1.3.86",
- "@cubejs-backend/dbt-schema-extension": "1.3.86",
- "@cubejs-backend/dremio-driver": "1.3.86",
- "@cubejs-backend/druid-driver": "1.3.86",
- "@cubejs-backend/duckdb-driver": "1.3.86",
- "@cubejs-backend/elasticsearch-driver": "1.3.86",
- "@cubejs-backend/firebolt-driver": "1.3.86",
- "@cubejs-backend/hive-driver": "1.3.86",
- "@cubejs-backend/ksql-driver": "1.3.86",
- "@cubejs-backend/materialize-driver": "1.3.86",
- "@cubejs-backend/mongobi-driver": "1.3.86",
- "@cubejs-backend/mssql-driver": "1.3.86",
- "@cubejs-backend/mysql-driver": "1.3.86",
- "@cubejs-backend/oracle-driver": "1.3.86",
- "@cubejs-backend/pinot-driver": "1.3.86",
- "@cubejs-backend/postgres-driver": "1.3.86",
- "@cubejs-backend/prestodb-driver": "1.3.86",
- "@cubejs-backend/questdb-driver": "1.3.86",
- "@cubejs-backend/redshift-driver": "1.3.86",
- "@cubejs-backend/server": "1.3.86",
- "@cubejs-backend/snowflake-driver": "1.3.86",
- "@cubejs-backend/sqlite-driver": "1.3.86",
- "@cubejs-backend/trino-driver": "1.3.86",
- "@cubejs-backend/vertica-driver": "1.3.86",
- "cubejs-cli": "1.3.86",
+ "@cubejs-backend/athena-driver": "1.4.0",
+ "@cubejs-backend/bigquery-driver": "1.4.0",
+ "@cubejs-backend/clickhouse-driver": "1.4.0",
+ "@cubejs-backend/crate-driver": "1.4.0",
+ "@cubejs-backend/databricks-jdbc-driver": "1.4.0",
+ "@cubejs-backend/dbt-schema-extension": "1.4.0",
+ "@cubejs-backend/dremio-driver": "1.4.0",
+ "@cubejs-backend/druid-driver": "1.4.0",
+ "@cubejs-backend/duckdb-driver": "1.4.0",
+ "@cubejs-backend/elasticsearch-driver": "1.4.0",
+ "@cubejs-backend/firebolt-driver": "1.4.0",
+ "@cubejs-backend/hive-driver": "1.4.0",
+ "@cubejs-backend/ksql-driver": "1.4.0",
+ "@cubejs-backend/materialize-driver": "1.4.0",
+ "@cubejs-backend/mongobi-driver": "1.4.0",
+ "@cubejs-backend/mssql-driver": "1.4.0",
+ "@cubejs-backend/mysql-driver": "1.4.0",
+ "@cubejs-backend/oracle-driver": "1.4.0",
+ "@cubejs-backend/pinot-driver": "1.4.0",
+ "@cubejs-backend/postgres-driver": "1.4.0",
+ "@cubejs-backend/prestodb-driver": "1.4.0",
+ "@cubejs-backend/questdb-driver": "1.4.0",
+ "@cubejs-backend/redshift-driver": "1.4.0",
+ "@cubejs-backend/server": "1.4.0",
+ "@cubejs-backend/snowflake-driver": "1.4.0",
+ "@cubejs-backend/sqlite-driver": "1.4.0",
+ "@cubejs-backend/trino-driver": "1.4.0",
+ "@cubejs-backend/vertica-driver": "1.4.0",
+ "cubejs-cli": "1.4.0",
"typescript": "~5.2.2"
},
"resolutions": {
diff --git a/packages/cubejs-dremio-driver/CHANGELOG.md b/packages/cubejs-dremio-driver/CHANGELOG.md
index 44e67efd0545d..79e1ba2e20477 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/dremio-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/dremio-driver
diff --git a/packages/cubejs-dremio-driver/package.json b/packages/cubejs-dremio-driver/package.json
index cf4c169bb2216..3ea5f6518227d 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"axios": "^1.8.3",
"sqlstring": "^2.3.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.0",
"jest": "^29"
},
"license": "Apache-2.0",
diff --git a/packages/cubejs-druid-driver/CHANGELOG.md b/packages/cubejs-druid-driver/CHANGELOG.md
index c4fa608b5aa1c..108bed960ebcc 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/druid-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 28764dc3eaaa8..4098d061edf9f 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.3.86",
+ "version": "1.4.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
@@ -28,13 +28,13 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"axios": "^1.8.3"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 6e1f1d355c7d9..a56377f2193cf 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/duckdb-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/duckdb-driver
diff --git a/packages/cubejs-duckdb-driver/package.json b/packages/cubejs-duckdb-driver/package.json
index f335a7b110575..b867700fc9ce5 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
- "duckdb": "^1.3.1"
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
+ "duckdb": "^1.4.1"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 b14af4e75b17c..ede0070eb71a1 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 6b4b2b2e60524..823fe4ff3c2c3 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -23,14 +23,14 @@
"driver"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"@elastic/elasticsearch": "7.12.0",
"sqlstring": "^2.3.1"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 6722abec32a22..54ea2bf26e004 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/firebolt-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 c37475f413014..493306ee7856b 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"firebolt-sdk": "1.10.0"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.0",
"typescript": "~5.2.2"
},
"publishConfig": {
diff --git a/packages/cubejs-hive-driver/CHANGELOG.md b/packages/cubejs-hive-driver/CHANGELOG.md
index ed7b25038f4f2..bc39221dd2198 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/hive-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 c5e3b18e74c0e..cf80cc77396f1 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86"
+ "@cubejs-backend/linter": "1.4.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/cubejs-jdbc-driver/CHANGELOG.md b/packages/cubejs-jdbc-driver/CHANGELOG.md
index 37750541e5a2c..8bb781c10b2fb 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/jdbc-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 afa314d4c4751..7e834b7ffc543 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -25,9 +25,9 @@
"index.js"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
"@cubejs-backend/node-java-maven": "^0.1.3",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/shared": "1.4.0",
"generic-pool": "^3.9.0",
"sqlstring": "^2.3.0"
},
@@ -43,7 +43,7 @@
"testEnvironment": "node"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 e2f092345e71e..5d79a2608a670 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/ksql-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 28538c40bf1d1..686816b5adf93 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"typescript": "~5.2.2"
}
}
diff --git a/packages/cubejs-linter/CHANGELOG.md b/packages/cubejs-linter/CHANGELOG.md
index 43e3f71243d98..87cd2c8157bf6 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/linter
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/linter
diff --git a/packages/cubejs-linter/package.json b/packages/cubejs-linter/package.json
index 575e7e5e877b1..f561eba9390af 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.3.86",
+ "version": "1.4.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 9f88d3a5ae134..55c44abd625b0 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/materialize-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 96fe6605a81ea..8e09fb69b08fd 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/postgres-driver": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/postgres-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"@types/pg": "^8.6.0",
"pg": "^8.6.0",
"semver": "^7.6.3"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing": "1.4.0",
"typescript": "~5.2.2"
},
"publishConfig": {
diff --git a/packages/cubejs-mongobi-driver/CHANGELOG.md b/packages/cubejs-mongobi-driver/CHANGELOG.md
index 417466a54f659..0ffb845599b7a 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/mongobi-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 bdd2423a3f0a2..689fd55abc1e7 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"@types/node": "^20",
"generic-pool": "^3.9.0",
"moment": "^2.29.1",
@@ -39,7 +39,7 @@
"access": "public"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 6bd85523627c6..252f4e8063877 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/mssql-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 6ba2b53d2fcf4..30d17689f63c7 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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 66d9e70bc6a97..1802c27f1ed96 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 e6eafefca8359..c5bef8b9dc89e 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"@types/mysql": "^2.15.15",
"aws-sdk": "^2.787.0",
"data-api-client": "^1.1.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 bb76eeafb0276..dab716047e4a4 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/mysql-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 264c94f8c1aa7..ec5091d0f4855 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"generic-pool": "^3.9.0",
"mysql": "^2.18.1"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 44a2637d67b05..654ebf9dbad6c 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/oracle-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 adab63b6fcc41..b318900d4722b 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.3.86",
+ "version": "1.4.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.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
"ramda": "^0.27.0"
},
"optionalDependencies": {
diff --git a/packages/cubejs-pinot-driver/CHANGELOG.md b/packages/cubejs-pinot-driver/CHANGELOG.md
index a379ef8efea0d..6fc6f7fbcbb73 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/pinot-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/pinot-driver
diff --git a/packages/cubejs-pinot-driver/package.json b/packages/cubejs-pinot-driver/package.json
index 572bbc9774572..7183e332ad378 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.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 90f288ea0a040..6c62059dbeb23 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-client/playground
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-client/playground
diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json
index 68afa5aff9e8a..0bdf3c3a9dc0b 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-client/react": "1.3.86",
+ "@cubejs-client/core": "1.4.0",
+ "@cubejs-client/react": "1.4.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 2687aff8a6b45..71725783f8f44 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/postgres-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 8719f781469f4..4d4d8215595d9 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 3d9ecb4b7a113..6d612e4a7be8c 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/prestodb-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 10c6646cca4d0..a0e66f11bcad9 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.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 7422fd31d72d1..2f0512f84572c 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/query-orchestrator
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 a854d376f6e58..1d9d431fc31d6 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -29,15 +29,15 @@
"dist/src/*"
],
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/cubestore-driver": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/cubestore-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"csv-write-stream": "^2.0.0",
"lru-cache": "^11.1.0",
"ramda": "^0.27.2"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 1ed6861a8e91c..1a98ff5f11cda 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/questdb-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 bcabe92062257..d1ff62b6c7154 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.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 aceff3dc5a50c..7ff094aaa5dfa 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/redshift-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 6f81030952002..b866892593019 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/postgres-driver": "1.3.86",
- "@cubejs-backend/shared": "1.3.86"
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/postgres-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"typescript": "~5.2.2"
},
"publishConfig": {
diff --git a/packages/cubejs-schema-compiler/CHANGELOG.md b/packages/cubejs-schema-compiler/CHANGELOG.md
index f3cd364304565..b1795eec9ac47 100644
--- a/packages/cubejs-schema-compiler/CHANGELOG.md
+++ b/packages/cubejs-schema-compiler/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/schema-compiler
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
### Features
diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json
index ee0e232333305..904772b74b4d7 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/native": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.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-server-core/CHANGELOG.md b/packages/cubejs-server-core/CHANGELOG.md
index df96dfb477266..ac080575cd0b6 100644
--- a/packages/cubejs-server-core/CHANGELOG.md
+++ b/packages/cubejs-server-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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/server-core
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 cccc93c54e5b0..c65447c6c0360 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -29,14 +29,14 @@
"unit": "jest --runInBand --forceExit --coverage dist/test"
},
"dependencies": {
- "@cubejs-backend/api-gateway": "1.3.86",
- "@cubejs-backend/cloud": "1.3.86",
+ "@cubejs-backend/api-gateway": "1.4.0",
+ "@cubejs-backend/cloud": "1.4.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/native": "1.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
- "@cubejs-backend/templates": "1.3.86",
+ "@cubejs-backend/native": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
+ "@cubejs-backend/templates": "1.4.0",
"codesandbox-import-utils": "^2.1.12",
"cross-spawn": "^7.0.1",
"fs-extra": "^8.1.0",
@@ -59,9 +59,9 @@
"ws": "^7.5.3"
},
"devDependencies": {
- "@cubejs-backend/cubestore-driver": "1.3.86",
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-client/playground": "1.3.86",
+ "@cubejs-backend/cubestore-driver": "1.4.0",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-client/playground": "1.4.0",
"@types/cross-spawn": "^6.0.2",
"@types/express": "^4.17.21",
"@types/fs-extra": "^9.0.8",
diff --git a/packages/cubejs-server/CHANGELOG.md b/packages/cubejs-server/CHANGELOG.md
index fca52b5031a5e..87c294853e329 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/server
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/server
diff --git a/packages/cubejs-server/package.json b/packages/cubejs-server/package.json
index a2216ed492224..61993ee09a787 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.3.86",
+ "version": "1.4.0",
"types": "index.d.ts",
"repository": {
"type": "git",
@@ -40,11 +40,11 @@
"jest:shapshot": "jest --updateSnapshot test"
},
"dependencies": {
- "@cubejs-backend/cubestore-driver": "1.3.86",
+ "@cubejs-backend/cubestore-driver": "1.4.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/native": "1.3.86",
- "@cubejs-backend/server-core": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/native": "1.4.0",
+ "@cubejs-backend/server-core": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.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 ba5e0548cab9f..22f1b7a59fdee 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/snowflake-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/snowflake-driver
diff --git a/packages/cubejs-snowflake-driver/package.json b/packages/cubejs-snowflake-driver/package.json
index e4862d82f44da..a134cd276ad3b 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"date-fns-timezone": "^0.1.4",
"snowflake-sdk": "^2.2.0"
},
@@ -39,7 +39,7 @@
"extends": "../cubejs-linter"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"typescript": "~5.2.2"
}
}
diff --git a/packages/cubejs-sqlite-driver/CHANGELOG.md b/packages/cubejs-sqlite-driver/CHANGELOG.md
index 2b5c544b9f3ba..dfcfd6d7ac10b 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/sqlite-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 503347c8c6c12..aca48731f42f3 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
@@ -18,13 +18,13 @@
"unit": "jest"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"sqlite3": "^5.1.7"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"jest": "^29"
},
"publishConfig": {
diff --git a/packages/cubejs-templates/CHANGELOG.md b/packages/cubejs-templates/CHANGELOG.md
index e6b6199ff959f..b4e36607378ba 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/templates
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/templates
diff --git a/packages/cubejs-templates/package.json b/packages/cubejs-templates/package.json
index 28888467e3bbd..1a2b9274a5dd2 100644
--- a/packages/cubejs-templates/package.json
+++ b/packages/cubejs-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/templates",
- "version": "1.3.86",
+ "version": "1.4.0",
"description": "Cube.js Templates helpers",
"author": "Cube Dev, Inc.",
"license": "Apache-2.0",
@@ -26,7 +26,7 @@
"extends": "../cubejs-linter"
},
"dependencies": {
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/shared": "1.4.0",
"cross-spawn": "^7.0.3",
"decompress": "^4.2.1",
"decompress-targz": "^4.1.1",
@@ -36,7 +36,7 @@
"source-map-support": "^0.5.19"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"typescript": "~5.2.2"
}
}
diff --git a/packages/cubejs-testing-drivers/CHANGELOG.md b/packages/cubejs-testing-drivers/CHANGELOG.md
index 6b8122124bef3..0cfa21aecc3da 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/testing-drivers
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 4351f0bcc8bc7..ec154ca8e842e 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.3.86",
+ "version": "1.4.0",
"description": "Cube.js drivers test suite",
"author": "Cube Dev, Inc.",
"license": "MIT",
@@ -67,24 +67,24 @@
"dist/src"
],
"dependencies": {
- "@cubejs-backend/athena-driver": "1.3.86",
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/bigquery-driver": "1.3.86",
- "@cubejs-backend/clickhouse-driver": "1.3.86",
- "@cubejs-backend/cubestore-driver": "1.3.86",
- "@cubejs-backend/databricks-jdbc-driver": "1.3.86",
+ "@cubejs-backend/athena-driver": "1.4.0",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/bigquery-driver": "1.4.0",
+ "@cubejs-backend/clickhouse-driver": "1.4.0",
+ "@cubejs-backend/cubestore-driver": "1.4.0",
+ "@cubejs-backend/databricks-jdbc-driver": "1.4.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/mssql-driver": "1.3.86",
- "@cubejs-backend/mysql-driver": "1.3.86",
- "@cubejs-backend/postgres-driver": "1.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
- "@cubejs-backend/server-core": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
- "@cubejs-backend/snowflake-driver": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
- "@cubejs-client/core": "1.3.86",
- "@cubejs-client/ws-transport": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/mssql-driver": "1.4.0",
+ "@cubejs-backend/mysql-driver": "1.4.0",
+ "@cubejs-backend/postgres-driver": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.0",
+ "@cubejs-backend/server-core": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
+ "@cubejs-backend/snowflake-driver": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.0",
+ "@cubejs-client/core": "1.4.0",
+ "@cubejs-client/ws-transport": "1.4.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 246b33fada5f8..b6a096d097fda 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/testing-shared
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 4d2d2c5d0eedf..ef7f263c801d6 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.3.86",
+ "version": "1.4.0",
"description": "Cube.js Testing Helpers",
"author": "Cube Dev, Inc.",
"license": "Apache-2.0",
@@ -21,16 +21,16 @@
],
"dependencies": {
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/query-orchestrator": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/query-orchestrator": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
"@testcontainers/kafka": "~10.28.0",
"dedent": "^0.7.0",
"node-fetch": "^2.6.7",
"testcontainers": "^10.28.0"
},
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.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 2408aa6203302..07d67efddc241 100644
--- a/packages/cubejs-testing/CHANGELOG.md
+++ b/packages/cubejs-testing/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/testing
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/testing
diff --git a/packages/cubejs-testing/package.json b/packages/cubejs-testing/package.json
index 6aa1791d38764..6438816b6389c 100644
--- a/packages/cubejs-testing/package.json
+++ b/packages/cubejs-testing/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/testing",
- "version": "1.3.86",
+ "version": "1.4.0",
"description": "Cube.js e2e tests",
"author": "Cube Dev, Inc.",
"license": "Apache-2.0",
@@ -94,15 +94,15 @@
"birdbox-fixtures"
],
"dependencies": {
- "@cubejs-backend/cubestore-driver": "1.3.86",
+ "@cubejs-backend/cubestore-driver": "1.4.0",
"@cubejs-backend/dotenv": "^9.0.2",
- "@cubejs-backend/ksql-driver": "1.3.86",
- "@cubejs-backend/postgres-driver": "1.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
- "@cubejs-client/ws-transport": "1.3.86",
+ "@cubejs-backend/ksql-driver": "1.4.0",
+ "@cubejs-backend/postgres-driver": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.0",
+ "@cubejs-client/ws-transport": "1.4.0",
"dedent": "^0.7.0",
"fs-extra": "^8.1.0",
"http-proxy": "^1.18.1",
@@ -113,8 +113,8 @@
},
"devDependencies": {
"@4tw/cypress-drag-drop": "^1.6.0",
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-client/core": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-client/core": "1.4.0",
"@jest/globals": "^29",
"@types/dedent": "^0.7.0",
"@types/http-proxy": "^1.17.5",
diff --git a/packages/cubejs-trino-driver/CHANGELOG.md b/packages/cubejs-trino-driver/CHANGELOG.md
index 5b54cad34e8c9..0312e2db6ebdc 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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/trino-driver
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 728c6a69153cb..c344955f49d61 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.3.86",
+ "version": "1.4.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.3.86",
- "@cubejs-backend/prestodb-driver": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/prestodb-driver": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
+ "@cubejs-backend/shared": "1.4.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.3.86",
+ "@cubejs-backend/linter": "1.4.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 ae8126b448bff..e816ca6c59c12 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.4.0](https://github.com/cube-js/cube.js/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/vertica-driver
+
## [1.3.86](https://github.com/cube-js/cube.js/compare/v1.3.85...v1.3.86) (2025-10-29)
**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 b2d80daa7a120..0c3f0ae81ad4b 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.3.86",
+ "version": "1.4.0",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.js.git",
@@ -19,15 +19,15 @@
"lint:fix": "eslint --fix **/*.js"
},
"dependencies": {
- "@cubejs-backend/base-driver": "1.3.86",
- "@cubejs-backend/query-orchestrator": "1.3.86",
- "@cubejs-backend/schema-compiler": "1.3.86",
+ "@cubejs-backend/base-driver": "1.4.0",
+ "@cubejs-backend/query-orchestrator": "1.4.0",
+ "@cubejs-backend/schema-compiler": "1.4.0",
"vertica-nodejs": "^1.0.3"
},
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
- "@cubejs-backend/testing-shared": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
+ "@cubejs-backend/testing-shared": "1.4.0",
"@types/jest": "^29",
"jest": "^29",
"testcontainers": "^10.28.0"
diff --git a/rust/cubesql/CHANGELOG.md b/rust/cubesql/CHANGELOG.md
index 3faf5692adeab..f9c06ca499da7 100644
--- a/rust/cubesql/CHANGELOG.md
+++ b/rust/cubesql/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+### Bug Fixes
+
+- **cubesql:** Always repartition joins when right side has multiple partitions ([#10105](https://github.com/cube-js/cube/issues/10105)) ([ae32748](https://github.com/cube-js/cube/commit/ae327483caabba974e271fb52f4ccc5fd5fa5789))
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/cubesql
diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock
index 2f1f943713ffa..31690f3dfed5c 100644
--- a/rust/cubesql/Cargo.lock
+++ b/rust/cubesql/Cargo.lock
@@ -697,7 +697,7 @@ dependencies = [
[[package]]
name = "cube-ext"
version = "1.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"arrow",
"chrono",
@@ -821,7 +821,7 @@ dependencies = [
[[package]]
name = "datafusion"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"ahash 0.7.8",
"arrow",
@@ -854,7 +854,7 @@ dependencies = [
[[package]]
name = "datafusion-common"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"arrow",
"ordered-float 2.10.0",
@@ -865,7 +865,7 @@ dependencies = [
[[package]]
name = "datafusion-data-access"
version = "1.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"async-trait",
"chrono",
@@ -878,7 +878,7 @@ dependencies = [
[[package]]
name = "datafusion-expr"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"ahash 0.7.8",
"arrow",
@@ -889,7 +889,7 @@ dependencies = [
[[package]]
name = "datafusion-physical-expr"
version = "7.0.0"
-source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49"
+source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea"
dependencies = [
"ahash 0.7.8",
"arrow",
diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml
index 1a66c2c7599d5..bb9c23a1aca89 100644
--- a/rust/cubesql/cubesql/Cargo.toml
+++ b/rust/cubesql/cubesql/Cargo.toml
@@ -10,7 +10,7 @@ homepage = "https://cube.dev"
[dependencies]
arc-swap = "1"
-datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "e3eb4cf60bab0136b3925fe4795f82f67dad7e49", default-features = false, features = [
+datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "8e60e17fb5872d50e00ee65bf2200e1ebe5122ea", default-features = false, features = [
"regex_expressions",
"unicode_expressions",
] }
diff --git a/rust/cubesql/package.json b/rust/cubesql/package.json
index 31ebf7761724f..7e0a4a914417f 100644
--- a/rust/cubesql/package.json
+++ b/rust/cubesql/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/cubesql",
- "version": "1.3.86",
+ "version": "1.4.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/CHANGELOG.md b/rust/cubestore/CHANGELOG.md
index 7be867ec2f58e..3051063e9b5e6 100644
--- a/rust/cubestore/CHANGELOG.md
+++ b/rust/cubestore/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.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29)
+
+**Note:** Version bump only for package @cubejs-backend/cubestore
+
## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29)
**Note:** Version bump only for package @cubejs-backend/cubestore
diff --git a/rust/cubestore/package.json b/rust/cubestore/package.json
index 2a72f655829c0..4b7e2c5345083 100644
--- a/rust/cubestore/package.json
+++ b/rust/cubestore/package.json
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/cubestore",
- "version": "1.3.86",
+ "version": "1.4.0",
"description": "Cube.js pre-aggregation storage layer.",
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
@@ -27,7 +27,7 @@
"author": "Cube Dev, Inc.",
"license": "Apache-2.0",
"devDependencies": {
- "@cubejs-backend/linter": "1.3.86",
+ "@cubejs-backend/linter": "1.4.0",
"@types/jest": "^27",
"@types/node": "^18",
"jest": "^27",
@@ -37,7 +37,7 @@
"access": "public"
},
"dependencies": {
- "@cubejs-backend/shared": "1.3.86",
+ "@cubejs-backend/shared": "1.4.0",
"@octokit/core": "^3.2.5",
"source-map-support": "^0.5.19"
},
diff --git a/yarn.lock b/yarn.lock
index d144395fab3b9..1612175f1072b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13353,10 +13353,10 @@ draft-js@^0.10.0, draft-js@~0.10.0:
immutable "~3.7.4"
object-assign "^4.1.0"
-duckdb@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/duckdb/-/duckdb-1.3.1.tgz#984427fba39e0d321a4dc592bbf9b06cdd39992f"
- integrity sha512-wSCxu6zSkHkGHtLrI5MmHYUOpbi08s2eIY/QCg2f1YsSyohjA3MRnUMdDb88oqgLa7/h+/wHuIe1RXRu4k04Sw==
+duckdb@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/duckdb/-/duckdb-1.4.1.tgz#c34cf2c0c1e8625624c928890a7fe67b38dc40ff"
+ integrity sha512-ynTVIsJjuUfF4GuTNpJn9xpVw8+gHz1wyHzQhfPJsVCemu3bf620HmJo5nRDTB0LMwfLW/3pTMmh+uze9kHAcw==
dependencies:
"@mapbox/node-pre-gyp" "^2.0.0"
node-addon-api "^7.0.0"
@@ -24192,7 +24192,16 @@ string-length@^5.0.1:
char-regex "^2.0.0"
strip-ansi "^7.0.1"
-"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -24283,7 +24292,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -24311,6 +24320,13 @@ strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
strip-ansi@^7.0.1, strip-ansi@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -26390,7 +26406,7 @@ workerpool@^9.2.0:
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.2.0.tgz#f74427cbb61234708332ed8ab9cbf56dcb1c4371"
integrity sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w==
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -26416,6 +26432,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"