From 80d1159fd0d255f8b3b8799275bc921fabeaad5a Mon Sep 17 00:00:00 2001 From: Pavel Tiunov Date: Thu, 30 Jul 2026 04:56:35 -0700 Subject: [PATCH 1/3] fix(tesseract): project the requested grain into rolling-window CTEs (#11400) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(tesseract): project the requested grain into rolling-window CTEs A `case` entrypoint dispatching between rolling-window measures on a `type: switch` calc-group dimension could not be queried with a granular time dimension: planning failed with "Alias not found for partition_by dimension ". The rolling-window CTE built its projection from the ROOT query dimensions, while the case parent adds the switch dimension to the grain of everything below it. The arithmetic layer above the rolling windows (e.g. `r3 - prev_r3`) then partitions by that switch dimension and looks it up in the CTE schema, where it was never projected. Building the CTE schema from the description's own state fixes it and also covers the `grain: include` widening of the same shape. - rolling-window CTEs project `description.state()` dimensions and time dimensions instead of the root query's - rust: fixture gains a `window_kind` switch dimension plus case entrypoints over the rolling / rolling-change measures, and a regression test building SQL for them with a month time dimension - schema-compiler: month-granularity specs on the shared calc-group Postgres suite — the sales rollup serves the query with deterministic monthly values; a new model variant keys the joined cube's rollup on the queried time dimension and both rollups are served, with the rollup result asserted equal to the raw-source result Two remaining matching limitations are pinned by the new specs: a rollup keyed on its own (join-equal) time dimension can't serve a query grouping by the other side's dimension, and losing one cube's rollup drops the whole query to the raw source; and expressing the range as an `inDateRange` filter on the time dimension instead of `timeDimensions[].dateRange` stops every rollup from matching (skipped FIXME spec). Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01CmA7TSPTdq9z83Am3e7s4u * test(cubejs-testing): Cube Store smoke coverage for month-granularity rolling queries Adds the month-granularity time-dimension queries to the shared calc-group birdbox suite and keys the share_metrics rollup on the time dimension the view exposes (`sales.date`), so the planner can match both rollups — the cube's own `share_metrics.date` is equal by the join condition but is not a member the matcher can resolve. The four existing no-time-dimension smoke tests still pass with that fixture change. The two new queries are skipped: the plan is planned and matched correctly (covered end to end against Postgres in the schema-compiler suite) but Cube Store cannot execute it — Internal: Optimizer rule 'optimize_projections' failed Schema error: No field named fk_aggregate.sales__r3_amount The rolling-window CTE groups by (date, product, calc group) while its consumer projects a strict subset of those group-by columns — dropping the filter-pinned calc-group column but keeping the aggregate — and Cube Store's projection optimizer prunes the aggregate out of the CTE schema. A plain rolling measure at month granularity over the same rollup (no `case` entrypoint, so no calc-group column in the CTE) is served by Cube Store without trouble, and the same SQL runs on Postgres, so this is specific to the calc-group projection shape. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01CmA7TSPTdq9z83Am3e7s4u * test(tesseract): use month-based rolling windows in the calc-group switch fixture The switch case entrypoints dispatched between a 7-day trailing window and the year-to-date one. A 7-day window can never be served from a rollup stored at month granularity, so it does not match the shape these specs stand in for. Adds a `rolling_sum_3m` (trailing 3 month) leaf and dispatches between whole-month windows — trailing 3 month vs year-to-date — with the switch values renamed R3 / YTD accordingly, mirroring the model in the schema-compiler and birdbox suites. The regression test still fails with "Alias not found for partition_by dimension orders.window_kind" when the rolling-window CTE projection fix is reverted. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01CmA7TSPTdq9z83Am3e7s4u * test(tesseract): cover switch/calc-group rolling windows over rollups end to end Every shape the calc-group switch model produces is now exercised twice: served from an external rollup in CubeStore, and straight from the source Postgres with pre-aggregations filtered out. The two results are compared cell by cell, with timestamp rendering normalised and numbers rounded (ratios are f64 in CubeStore against Postgres NUMERIC, so they differ in the last digit), which pins the rollup path as an optimization rather than a different answer. A separate always-running test asserts rollup matching for all of them, independently of whether an engine can execute the plan. New fixture integration_cubestore_switch_rolling.yaml mirrors the shapes of a production model: a `type: switch` dimension with trailing and to-date windows behind one `case` entrypoint, an entrypoint dispatching straight onto a `time_shift` measure, a difference and a ratio layer above the rolling windows, grain by an own dimension and by a joined cube's, and rollups that variously omit the calc group, store it, or carry an aggregating index. The seed carries data from the preceding year so a 12-month trailing window and year-to-date produce different sums — without it the two coincide and a test could not tell them apart. Two shapes stay ignored for CubeStore limitations unrelated to the calc-group grain, each with the reason on the test: a four-entrypoint query builds a plan too deep for CubeStore to decode (protobuf recursion limit), and a rollup with an aggregating index fails at table creation with a column-type mismatch. Also adds rolling_sum_7d_reduce_time and an executed test for it: an Aggregate parent that reduces by the time dimension makes the child rolling-window state narrower than the root query, and the rolling CTE must still project and group by the rolling time dimension so the time_series join does not fan out. * test(tesseract): address review of the switch/rolling coverage Five points from the review, all in the test layer: Stale docs. The note on `test_case_entrypoint` described the CubeStore `RollingOptimizerRule` widening in the present tense, but that test is not ignored and holds a real CubeStore snapshot — #11410 is an ancestor of this branch and fixes exactly that rewrite. Reworded to past tense, naming the fix and what the test now guards. The birdbox `FIXME` had the same problem: the Cube Store side is fixed, what still blocks those two specs is that birdbox pulls the published `cubejs/cubestore:latest` while the Cube server is built from the working tree, so only the planner fix is in the containers under test. Value coverage in the plain Postgres configuration. `run_both` computed the raw-source rows and threw them away unless CubeStore was also available, so a run without `integration-cubestore` asserted only rollup matching. It now snapshots `normalize()` of whichever engine ran; the snapshots become engine-independent tables instead of one engine's rendering, and the values are pinned in an ordinary `cargo test --features integration-postgres` run. Separator filter. `normalize()` dropped every line starting with `-`, which would silently discard a data row whose first cell is negative — both tables lose the same rows, so the comparison would still pass with reduced coverage. It now drops only lines made of the separator characters. Correlated seed columns. Each account sold exactly one category, so the by-account snapshot was the by-category one with a column renamed and the joined-grain test could not tell the two groupings apart. Each account now sells both categories, and the two results genuinely differ. Derived entrypoints on their `else` branch. Both fell back to the absolute `ytd_amount` under measures named `..._change` and `format: percent`, so no test covered an arithmetic layer over a to-date window — the shape closest to what broke originally. They now dispatch to a difference and to a new `ytd_growth`, with a test each. The seed gains early-2023 rows so the year-over-year shift has something to subtract and those tests assert numbers rather than NULLs. * test(tesseract): keep string cells intact when normalising results `normalize_cell` replaced `T` and `Z` unconditionally to turn CubeStore's `2024-05-01T00:00:00.000Z` into a space-separated timestamp, which also rewrote string cells: the `YTD` calc-group value was recorded as `Y D` in switch_rolling_grouped_switch.snap, so the committed artifact showed a value the model does not declare, and the rollup-versus-source comparison lost fidelity because both sides dropped the same characters. The substitution now matches the timestamp shape — trailing `Z` with a `T` inside — and leaves everything else alone. Also fixes the seed comment: rows giving each account both categories mean the invariant is one row per (account, category, month), not per (category, month). * test(tesseract): unignore the aggregating-index rollup case Building an aggregating index over a decimal measure used to panic before any query ran — the sum widened to `Decimal128(28, 5)` against a column declared `Decimal128(18, 5)`. Fixed in #11413, so the test runs: the rollup with an aggregating index returns exactly what the plain one does, which is the property worth pinning, and it is now the regression guard for that cast. The four-entrypoint query stays ignored; a plan that deep still exceeds Cube Store's protobuf decode recursion limit, which reproduces on a real model too. --------- Co-authored-by: Claude Co-authored-by: Aleksandr Romanenko --- ...pre-aggregations-shared-calc-group.test.ts | 244 ++++++++- .../schema/share_metrics.yml | 7 +- .../test/smoke-shared-calc-group.test.ts | 95 ++++ .../multi_stage/member_query_planner.rs | 10 +- .../integration_cubestore_switch_rolling.yaml | 278 ++++++++++ .../common/integration_multi_stage.yaml | 85 +++ ...ration_cubestore_switch_rolling_tables.sql | 52 ++ .../src/tests/integration/cubestore/mod.rs | 1 + ...ing__switch_rolling_aggregating_index.snap | 11 + ...lling__switch_rolling_case_entrypoint.snap | 11 + ...g__switch_rolling_case_entrypoint_r12.snap | 11 + ...lling__switch_rolling_date_range_only.snap | 7 + ...g__switch_rolling_derived_else_branch.snap | 11 + ...ng__switch_rolling_derived_entrypoint.snap | 11 + ...olling__switch_rolling_direct_measure.snap | 11 + ...h_rolling__switch_rolling_else_branch.snap | 11 + ...olling__switch_rolling_grouped_switch.snap | 17 + ...ng__switch_rolling_growth_else_branch.snap | 11 + ...ing__switch_rolling_growth_entrypoint.snap | 11 + ...ling__switch_rolling_joined_dimension.snap | 11 + ...lling__switch_rolling_prev_entrypoint.snap | 11 + ...rolling__switch_rolling_stored_switch.snap | 11 + .../integration/cubestore/switch_rolling.rs | 501 ++++++++++++++++++ ...__rolling_window_under_reduce_by_time.snap | 16 + .../multi_stage/with_rolling_window.rs | 79 +++ 25 files changed, 1499 insertions(+), 25 deletions(-) create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_cubestore_switch_rolling.yaml create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/seeds/integration_cubestore_switch_rolling_tables.sql create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_aggregating_index.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint_r12.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_date_range_only.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_else_branch.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_entrypoint.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_direct_measure.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_else_branch.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_grouped_switch.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_else_branch.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_entrypoint.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_joined_dimension.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_prev_entrypoint.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_stored_switch.snap create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs create mode 100644 rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/snapshots/cubesqlplanner__tests__integration__multi_stage__with_rolling_window__rolling_window_under_reduce_by_time.snap diff --git a/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-shared-calc-group.test.ts b/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-shared-calc-group.test.ts index a1dd04612b576..7a3696b50b204 100644 --- a/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-shared-calc-group.test.ts +++ b/packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations-shared-calc-group.test.ts @@ -196,7 +196,7 @@ ${includePreAggs ? ` `; } -function shareMetricsCube(switchRef: string, rollingWindowPreAggDim: string, extraJoins: string, extraDimensions: string, includePreAggs: boolean = true) { +function shareMetricsCube(switchRef: string, rollingWindowPreAggDim: string, extraJoins: string, extraDimensions: string, includePreAggs: boolean = true, preAggTimeDimension: string = 'date') { return ` - name: share_metrics sql: >${SHARE_METRICS_SQL} @@ -385,7 +385,7 @@ ${includePreAggs ? ` - sales.account - sales.product${rollingWindowPreAggDim ? ` - ${rollingWindowPreAggDim}` : ''} - time_dimension: date + time_dimension: ${preAggTimeDimension} granularity: month allow_non_strict_date_range_match: true ` : ''} @@ -434,6 +434,37 @@ views: - rolling_window `; +// Shared calc-group switch, and the share_metrics rollup is keyed on the +// time dimension the query actually asks for (`sales.date`, exposed as +// `date` in the view) instead of the cube's own `share_metrics.date`. +const sharedSwitchModelSharedDateRollups = ` +cubes: +${ROLLING_WINDOW_DIM_CUBE} +${salesCube('{rolling_window_dim.rolling_window}', 'rolling_window_dim.rolling_window', SHARED_JOIN, '')} +${shareMetricsCube('{rolling_window_dim.rolling_window}', 'rolling_window_dim.rolling_window', SHARED_JOIN, '', true, 'sales.date')} +views: + - name: performance_view + cubes: + - join_path: sales + includes: + - account + - product + - date + - total + - rolling_amount + - rolling_amount_change + + - join_path: share_metrics + includes: + - rolling_share_change + - name: date + alias: ms_date + + - join_path: rolling_window_dim + includes: + - rolling_window +`; + // Model where each fact cube declares its OWN switch dimension: the view // filter pins only the sales switch, the share_metrics one stays // unresolved and pre-aggregations can't match. @@ -568,6 +599,71 @@ const REPRO_QUERY = { cubestoreSupportMultistage: true, }; +const SALES_ROLLING_MEASURES = [ + 'performance_view.rolling_amount', + 'performance_view.rolling_amount_change', +]; + +// A month-granularity time dimension over a bounded date range: the shape a +// dashboard charting these rolling metrics per month actually sends. Both +// rollups are built at `granularity: month` on the same date, so the query +// must be served from them. +const MONTH_TIME_DIMENSION = [{ + dimension: 'performance_view.date', + granularity: 'month', + dateRange: ['2017-04-01', '2017-06-30'], +}]; + +const MONTH_QUERY = { + ...REPRO_QUERY, + timeDimensions: MONTH_TIME_DIMENSION, + order: [{ id: 'performance_view.product' }, { id: 'performance_view.date' }], +}; + +// Monthly R3 (trailing 3 month) values and their 3-month-prior change for +// account A1: P1 sells 10/20/30/40/50/60 from January to June, P2 sells 5 +// every month. +// R3(Apr) = Feb+Mar+Apr, R3(May) = Mar+Apr+May, R3(Jun) = Apr+May+Jun +// change(m) = R3(m) - R3(m - 3 month) +const EXPECTED_MONTHLY_SALES_ROWS = [ + { + performance_view__product: 'P1', + performance_view__date_month: '2017-04-01T00:00:00.000Z', + performance_view__rolling_amount: '90.0', + performance_view__rolling_amount_change: '80.0', + }, + { + performance_view__product: 'P1', + performance_view__date_month: '2017-05-01T00:00:00.000Z', + performance_view__rolling_amount: '120.0', + performance_view__rolling_amount_change: '90.0', + }, + { + performance_view__product: 'P1', + performance_view__date_month: '2017-06-01T00:00:00.000Z', + performance_view__rolling_amount: '150.0', + performance_view__rolling_amount_change: '90.0', + }, + { + performance_view__product: 'P2', + performance_view__date_month: '2017-04-01T00:00:00.000Z', + performance_view__rolling_amount: '15.0', + performance_view__rolling_amount_change: '10.0', + }, + { + performance_view__product: 'P2', + performance_view__date_month: '2017-05-01T00:00:00.000Z', + performance_view__rolling_amount: '15.0', + performance_view__rolling_amount_change: '5.0', + }, + { + performance_view__product: 'P2', + performance_view__date_month: '2017-06-01T00:00:00.000Z', + performance_view__rolling_amount: '15.0', + performance_view__rolling_amount_change: '0.0', + }, +]; + describe('PreAggregationsSharedCalcGroup', () => { jest.setTimeout(200000); @@ -593,42 +689,134 @@ describe('PreAggregationsSharedCalcGroup', () => { }); })); - // FIXME: with a date-range-only time dimension (no granularity) the - // rolling windows are anchored to the range end, but the query stops - // matching the rollups even though allow_non_strict_date_range_match - // is set and the range is month-aligned. Unskip once matching - // supports it. - it.skip('matches rollups with a date-range-only time dimension', () => compiler.compile().then(() => { + // Adding a month-granularity time dimension to the same query keeps the + // sales rollup: the rollup is built at `granularity: month` on the very + // dimension the query groups by. + it('matches its own rollup with a month time dimension for single-cube measures', () => compiler.compile().then(() => { const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { - ...REPRO_QUERY, - timeDimensions: [{ - dimension: 'performance_view.date', - dateRange: ['2017-01-01', '2017-06-30'], - }], + ...MONTH_QUERY, + measures: SALES_ROLLING_MEASURES, + }); + + const preAggregationsDescription: any = query.preAggregations?.preAggregationsDescription(); + const sqlAndParams = query.buildSqlAndParams(); + const tableNames = preAggregationsDescription.map((d: any) => d.tableName); + expect(tableNames).toEqual(['sales_perf_rolling']); + expect(sqlAndParams[0]).toContain('sales_perf_rolling'); + + return dbRunner.evaluateQueryWithPreAggregations(query).then(res => { + expect(res).toEqual(EXPECTED_MONTHLY_SALES_ROWS); }); + })); + + // Cross-cube with a time dimension is where matching breaks in this + // model: `share_metrics.perf_share` is keyed on `share_metrics.date`, + // while the view exposes (and the query asks for) `sales.date`. The two + // are equal by the join condition, but the matcher only knows stored + // members, so the share rollup can't serve the query — and because + // matching is all-or-nothing across the multi-cube query, the sales + // rollup is dropped as well and everything is recomputed from the raw + // source. Results stay correct; only the acceleration is lost. + // FIXME: unskip the sibling spec below (rollups keyed on the queried + // time dimension) as the reference behaviour and teach the matcher to + // resolve join-equal time dimensions. + it('loses both rollups for cross-cube measures when the joined rollup is keyed on its own time dimension', () => compiler.compile().then(() => { + const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, MONTH_QUERY); const preAggregationsDescription: any = query.preAggregations?.preAggregationsDescription(); + const sqlAndParams = query.buildSqlAndParams(); + expect(preAggregationsDescription.map((d: any) => d.tableName)).toEqual([]); + expect(sqlAndParams[0]).not.toContain('sales_perf_rolling'); + expect(sqlAndParams[0]).not.toContain('share_metrics_perf_share'); + })); + }); + + // Same shared calc-group model, but `share_metrics.perf_share` is keyed on + // the time dimension the query actually groups by (`sales.date`, exposed + // as `date` in the view) instead of the cube's own `share_metrics.date`. + describe('shared calc-group switch dimension with rollups keyed on the queried time dimension', () => { + const { compiler, joinGraph, cubeEvaluator } = prepareYamlCompiler(sharedSwitchModelSharedDateRollups); + const noPreAggs = prepareYamlCompiler(sharedSwitchModelNoPreAggs); + + it('matches both rollups for cross-cube rolling measures with a month time dimension', () => compiler.compile().then(() => { + const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, MONTH_QUERY); + + const preAggregationsDescription: any = query.preAggregations?.preAggregationsDescription(); + const sqlAndParams = query.buildSqlAndParams(); const tableNames = preAggregationsDescription.map((d: any) => d.tableName); expect(tableNames).toContain('sales_perf_rolling'); expect(tableNames).toContain('share_metrics_perf_share'); + expect(sqlAndParams[0]).toContain('sales_perf_rolling'); + expect(sqlAndParams[0]).toContain('share_metrics_perf_share'); + + return dbRunner.evaluateQueryWithPreAggregations(query).then(res => { + // The sales side is pinned to exact values; the share-of-total side + // is compared against the same query over the raw source below. + expect(res).toEqual(EXPECTED_MONTHLY_SALES_ROWS.map((row, i) => ({ + ...row, + performance_view__rolling_share_change: i < 3 ? '0.00000000000000000000' : null, + }))); + }); })); - // FIXME: querying the same measures with a granular time dimension fails - // inside the Tesseract physical plan builder with "Alias not found for - // partition_by dimension rolling_window_dim.rolling_window": the - // calc-group dimension is not projected into the multi-stage window - // input CTE. Unskip once the planner supports it. - it.skip('cross-cube rolling measures with a granular time dimension', () => compiler.compile().then(() => { + // The rollups must not change the answer: the same query over the same + // model without pre-aggregations returns exactly the same rows. + it('returns the same rows from the rollups as from the raw source', async () => { + await compiler.compile(); + await noPreAggs.compiler.compile(); + + const fromRollups = await dbRunner.evaluateQueryWithPreAggregations( + new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, MONTH_QUERY) + ); + const fromSource = await dbRunner.testQuery( + new PostgresQuery({ + joinGraph: noPreAggs.joinGraph, + cubeEvaluator: noPreAggs.cubeEvaluator, + compiler: noPreAggs.compiler, + }, MONTH_QUERY).buildSqlAndParams() + ); + + expect(fromRollups).toEqual(fromSource); + }); + + it('matches both rollups with a date-range-only time dimension', () => compiler.compile().then(() => { const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { ...REPRO_QUERY, timeDimensions: [{ dimension: 'performance_view.date', - granularity: 'month', - dateRange: ['2017-06-01', '2017-06-30'], + dateRange: ['2017-04-01', '2017-06-30'], }], }); - query.buildSqlAndParams(); + const preAggregationsDescription: any = query.preAggregations?.preAggregationsDescription(); + const sqlAndParams = query.buildSqlAndParams(); + const tableNames = preAggregationsDescription.map((d: any) => d.tableName); + expect(tableNames).toContain('sales_perf_rolling'); + expect(tableNames).toContain('share_metrics_perf_share'); + expect(sqlAndParams[0]).toContain('sales_perf_rolling'); + expect(sqlAndParams[0]).toContain('share_metrics_perf_share'); + })); + + // FIXME: expressing the same range as an `inDateRange` filter on the + // time dimension instead of `timeDimensions[].dateRange` stops every + // rollup from matching (even when `dateRange` is also present): the + // filter carries a plain dimension symbol, and the matcher looks it up + // only among the rollup's stored dimensions, never among its time + // dimensions. Unskip once time-dimension filters are matched against + // the rollup granularity. + it.skip('matches rollups when the range is given as an inDateRange filter', () => compiler.compile().then(() => { + const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { + ...MONTH_QUERY, + filters: [ + ...REPRO_QUERY.filters, + { member: 'performance_view.date', operator: 'inDateRange', values: ['2017-04-01', '2017-06-30'] }, + ], + }); + + const preAggregationsDescription: any = query.preAggregations?.preAggregationsDescription(); + const tableNames = preAggregationsDescription.map((d: any) => d.tableName); + expect(tableNames).toContain('sales_perf_rolling'); + expect(tableNames).toContain('share_metrics_perf_share'); })); }); @@ -689,6 +877,18 @@ describe('PreAggregationsSharedCalcGroup', () => { { joinGraph, cubeEvaluator, compiler }); }); + // Same measures with a month-granularity time dimension: one row per + // month, each carrying its own trailing-3-month window and the change + // against the window 3 months earlier. Pins the arithmetic the rollup + // specs above compare against. + it('computes deterministic monthly rolling values', async () => { + await dbRunner.runQueryTest({ + ...MONTH_QUERY, + measures: SALES_ROLLING_MEASURES, + }, EXPECTED_MONTHLY_SALES_ROWS, + { joinGraph, cubeEvaluator, compiler }); + }); + // The time_shift of the share-of-total measures is declared on // share_metrics.date, so the anchor date range must be set on that // dimension (exposed as ms_date) for the prior window to move. diff --git a/packages/cubejs-testing/birdbox-fixtures/shared-calc-group/schema/share_metrics.yml b/packages/cubejs-testing/birdbox-fixtures/shared-calc-group/schema/share_metrics.yml index 8d71a203cf578..07046840c6355 100644 --- a/packages/cubejs-testing/birdbox-fixtures/shared-calc-group/schema/share_metrics.yml +++ b/packages/cubejs-testing/birdbox-fixtures/shared-calc-group/schema/share_metrics.yml @@ -204,7 +204,12 @@ cubes: - product - sales.account - sales.product - time_dimension: date + # Keyed on the time dimension the view exposes (and dashboards group + # by), not on the cube's own `date`. The two are equal by the join + # condition, but pre-aggregation matching only knows stored members, + # so a rollup keyed on `share_metrics.date` cannot serve a query + # grouping by `sales.date`. + time_dimension: sales.date granularity: month allow_non_strict_date_range_match: true scheduled_refresh: false diff --git a/packages/cubejs-testing/test/smoke-shared-calc-group.test.ts b/packages/cubejs-testing/test/smoke-shared-calc-group.test.ts index 401f70cc0cc5e..bbbdcb29c8234 100644 --- a/packages/cubejs-testing/test/smoke-shared-calc-group.test.ts +++ b/packages/cubejs-testing/test/smoke-shared-calc-group.test.ts @@ -128,6 +128,101 @@ describe('shared calc group pre-aggregations in Cube Store', () => { expect(result.rawData().map((r: any) => r['performance_view.product'])).toEqual(['P1', 'P2']); }); + // A month-granularity time dimension over a bounded range — the shape a + // dashboard charting these rolling metrics per month sends. Both rollups + // are built at `granularity: month` on the same date and the planner picks + // them (verified in the schema-compiler Postgres suite), but Cube Store + // cannot execute the resulting plan: + // + // Internal: Optimizer rule 'optimize_projections' failed + // Schema error: No field named fk_aggregate.sales__r3_amount. Valid + // fields are fk_aggregate.performance_view__date_month, + // fk_aggregate.performance_view__product, + // fk_aggregate.rolling_window_dim__rolling_window. + // + // The rolling-window CTE groups by (date, product, calc group) and its + // consumer projects a strict subset of those group-by columns — it drops + // the filter-pinned calc-group column but keeps the aggregate — and the + // Cube Store projection optimizer then prunes the aggregate out of the + // CTE's schema. The same SQL runs correctly on Postgres, and a plain + // rolling measure (no `case` entrypoint, so no calc-group column in the + // CTE) at month granularity is served from the same rollup by Cube Store + // without trouble. + // + // Cube Store itself was fixed in #11410, and the Rust suite proves the shape + // runs: cubesqlplanner tests/integration/cubestore/switch_rolling.rs executes + // it against a live Cube Store and snapshots correct rows. What still blocks + // these two specs is the image split: birdbox pulls the published + // cubejs/cubestore:${BIRDBOX_CUBESTORE_VERSION:-latest}, while the Cube server + // is built from this working tree, so the planner fix is under test here but + // the Cube Store fix is not. + // + // FIXME: unskip once a Cube Store release containing #11410 is `latest`. + const MONTH_TIME_DIMENSION: Query['timeDimensions'] = [ + { + dimension: 'performance_view.date', + granularity: 'month', + dateRange: ['2017-04-01', '2017-06-30'], + }, + ]; + + const MONTH_ORDER: Query['order'] = { + 'performance_view.product': 'asc', + 'performance_view.date': 'asc', + }; + + // R3 (trailing 3 month) per month for account A1: P1 sells + // 10/20/30/40/50/60 from January to June, P2 sells 5 every month. + const EXPECTED_MONTHLY_AMOUNTS = [ + ['P1', '2017-04-01T00:00:00.000', 90], + ['P1', '2017-05-01T00:00:00.000', 120], + ['P1', '2017-06-01T00:00:00.000', 150], + ['P2', '2017-04-01T00:00:00.000', 15], + ['P2', '2017-05-01T00:00:00.000', 15], + ['P2', '2017-06-01T00:00:00.000', 15], + ]; + + function monthlyAmounts(result: any) { + return result.rawData().map((r: any) => [ + r['performance_view.product'], + r['performance_view.date.month'], + Number(r['performance_view.rolling_amount']), + ]); + } + + test.skip('single-cube rolling measures with a month time dimension are served from the rollup', async () => { + const query: Query = { + measures: [ + 'performance_view.rolling_amount', + 'performance_view.rolling_amount_change', + ], + dimensions: ['performance_view.product'], + timeDimensions: MONTH_TIME_DIMENSION, + filters: REPRO_FILTERS, + order: MONTH_ORDER, + }; + const result = await client.load(query); + expect(usedPreAggregations(result)).toEqual([SALES_ROLLUP]); + expect(monthlyAmounts(result)).toEqual(EXPECTED_MONTHLY_AMOUNTS); + }); + + test.skip('cross-cube rolling measures with a month time dimension are served from both rollups', async () => { + const query: Query = { + measures: [ + 'performance_view.rolling_amount', + 'performance_view.rolling_amount_change', + 'performance_view.rolling_share_change', + ], + dimensions: ['performance_view.product'], + timeDimensions: MONTH_TIME_DIMENSION, + filters: REPRO_FILTERS, + order: MONTH_ORDER, + }; + const result = await client.load(query); + expect(usedPreAggregations(result)).toEqual([SALES_ROLLUP, SHARE_ROLLUP]); + expect(monthlyAmounts(result)).toEqual(EXPECTED_MONTHLY_AMOUNTS); + }); + // Mirrors the production query shape: rolling amount + growth percentage // (an extra multi-stage layer over the same rolling leaves) + cross-cube // share change. Before the trivial-subquery collapse optimizer in the diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs index cbaee96b768b0..e16859a349567 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/planner/planners/multi_stage/member_query_planner.rs @@ -170,9 +170,15 @@ impl MultiStageMemberQueryPlanner { } }; + // The CTE must project the dimensions of the state this rolling + // window is requested at, not the root query dimensions: a parent + // inode can widen the grain (`grain.include`, a `case` switch + // dimension) and consumers resolve those dimensions — e.g. as + // `partition_by` of the enclosing window function — against this + // CTE's schema. let schema = LogicalSchema::default() - .set_dimensions(self.query_properties.dimensions().clone()) - .set_time_dimensions(self.query_properties.time_dimensions().clone()) + .set_dimensions(self.description.state().dimensions().clone()) + .set_time_dimensions(self.description.state().time_dimensions().clone()) .set_measures(vec![self.description.member().evaluation_node().clone()]) .into_rc(); diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_cubestore_switch_rolling.yaml b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_cubestore_switch_rolling.yaml new file mode 100644 index 0000000000000..7cd03656e4687 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_cubestore_switch_rolling.yaml @@ -0,0 +1,278 @@ +cubes: + - name: sales + sql: "SELECT * FROM cs_switch_sales" + joins: + - name: accounts + relationship: many_to_one + sql: "{sales}.account_id = {accounts.id}" + dimensions: + - name: id + type: number + sql: id + primary_key: true + - name: created_at + type: time + sql: created_at + - name: category + type: string + sql: category + + # Calc group: carries no stored data, so the rollup below does not list it. + - name: window_kind + type: switch + values: + - R3 + - R12 + - YTD + + measures: + - name: amount + type: sum + sql: amount + + - name: r3_amount + type: sum + sql: amount + rolling_window: + trailing: 3 month + + - name: r12_amount + type: sum + sql: amount + rolling_window: + trailing: 12 month + + - name: ytd_amount + type: sum + sql: amount + rolling_window: + type: to_date + granularity: year + + # Consumer-facing entrypoint: dispatches the switch to the matching + # rolling window. Nothing above it needs the switch dimension. + - name: rolling_amount + type: number + multi_stage: true + case: + switch: "{CUBE.window_kind}" + when: + - value: R3 + sql: "{CUBE.r3_amount}" + - value: R12 + sql: "{CUBE.r12_amount}" + else: + sql: "{CUBE.ytd_amount}" + + - name: prev_r3_amount + type: number + multi_stage: true + sql: "{CUBE.r3_amount}" + public: false + time_shift: + - interval: 3 month + type: prior + + - name: prev_r12_amount + type: number + multi_stage: true + sql: "{CUBE.r12_amount}" + public: false + time_shift: + - interval: 12 month + type: prior + + - name: prev_ytd_amount + type: number + multi_stage: true + sql: "{CUBE.ytd_amount}" + public: false + time_shift: + - interval: 1 year + type: prior + + # Entrypoint dispatching straight onto a time_shift measure, with no + # arithmetic layer in between. + - name: prev_rolling_amount + type: number + multi_stage: true + case: + switch: "{CUBE.window_kind}" + when: + - value: R3 + sql: "{CUBE.prev_r3_amount}" + - value: R12 + sql: "{CUBE.prev_r12_amount}" + else: + sql: "{CUBE.prev_ytd_amount}" + + - name: r3_amount_change + type: number + multi_stage: true + public: false + sql: "({CUBE.r3_amount} - {CUBE.prev_r3_amount})" + + - name: r12_amount_change + type: number + multi_stage: true + public: false + sql: "({CUBE.r12_amount} - {CUBE.prev_r12_amount})" + + # Ratio over two multi-stage layers, the shape a growth-percentage + # entrypoint has: a CASE guarding division by the shifted value. + - name: r3_growth + type: number + multi_stage: true + public: false + format: percent + sql: > + CASE WHEN {CUBE.prev_r3_amount} IS NULL OR {CUBE.prev_r3_amount} = 0 THEN NULL + ELSE ({CUBE.r3_amount} - {CUBE.prev_r3_amount}) * 1.0 / {CUBE.prev_r3_amount} END + + - name: r12_growth + type: number + multi_stage: true + public: false + format: percent + sql: > + CASE WHEN {CUBE.prev_r12_amount} IS NULL OR {CUBE.prev_r12_amount} = 0 THEN NULL + ELSE ({CUBE.r12_amount} - {CUBE.prev_r12_amount}) * 1.0 / {CUBE.prev_r12_amount} END + + - name: ytd_growth + type: number + multi_stage: true + public: false + format: percent + sql: > + CASE WHEN {CUBE.prev_ytd_amount} IS NULL OR {CUBE.prev_ytd_amount} = 0 THEN NULL + ELSE ({CUBE.ytd_amount} - {CUBE.prev_ytd_amount}) * 1.0 / {CUBE.prev_ytd_amount} END + + - name: rolling_amount_growth + type: number + format: percent + multi_stage: true + case: + switch: "{CUBE.window_kind}" + when: + - value: R3 + sql: "{CUBE.r3_growth}" + - value: R12 + sql: "{CUBE.r12_growth}" + else: + sql: "{CUBE.ytd_growth}" + + # Derived entrypoint: the arithmetic layer above the rolling windows + # partitions by the switch dimension, so every CTE below it must carry it. + - name: rolling_amount_change + type: number + multi_stage: true + case: + switch: "{CUBE.window_kind}" + when: + - value: R3 + sql: "{CUBE.r3_amount_change}" + - value: R12 + sql: "{CUBE.r12_amount_change}" + else: + sql: "({CUBE.ytd_amount} - {CUBE.prev_ytd_amount})" + + pre_aggregations: + # Stores the rolling measures unrolled to plain monthly sums — the shape + # the rolling-window leaf reads. The calc group is deliberately absent. + - name: rolling_by_category + type: rollup + external: true + measures: + - amount + - r3_amount + - r12_amount + - ytd_amount + dimensions: + - category + time_dimension: created_at + granularity: month + allow_non_strict_date_range_match: true + indexes: + - name: category_idx + columns: + - category + + # Stores the calc group as an ordinary dimension — the shape rollups had + # to use before calc groups stopped being required, and which must keep + # working. + - name: rolling_by_category_stored_switch + type: rollup + external: true + measures: + - amount + - r3_amount + - r12_amount + - ytd_amount + dimensions: + - category + - window_kind + time_dimension: created_at + granularity: month + allow_non_strict_date_range_match: true + indexes: + - name: category_switch_idx + columns: + - category + - window_kind + + # Aggregating index over the same grain. + - name: rolling_by_category_agg_idx + type: rollup + external: true + measures: + - amount + - r3_amount + - r12_amount + - ytd_amount + dimensions: + - category + time_dimension: created_at + granularity: month + allow_non_strict_date_range_match: true + indexes: + - name: category_regular_idx + columns: + - category + - name: category_agg_idx + type: aggregate + columns: + - category + + # Same at the grain of a dimension owned by a joined cube, mirroring a + # rollup keyed by an attribute of the joined entity. + - name: rolling_by_account + type: rollup + external: true + measures: + - amount + - r3_amount + - r12_amount + - ytd_amount + dimensions: + - accounts.name + time_dimension: created_at + granularity: month + allow_non_strict_date_range_match: true + indexes: + - name: account_idx + columns: + - accounts.name + + - name: accounts + sql: "SELECT * FROM cs_switch_accounts" + dimensions: + - name: id + type: number + sql: id + primary_key: true + - name: name + type: string + sql: name + measures: + - name: count + type: count diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_multi_stage.yaml b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_multi_stage.yaml index 18097133fac1c..e5d19170fea62 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_multi_stage.yaml +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/common/integration_multi_stage.yaml @@ -82,6 +82,15 @@ cubes: else: label: Other + # A calc-group (virtual enumeration) dimension used as the switch of + # `rolling_amount_switch`: it selects which rolling window the case + # measure dispatches to, and carries no stored data. + - name: window_kind + type: switch + values: + - R3 + - YTD + - name: customer_name type: string sql: "{customers.name}" @@ -455,6 +464,82 @@ cubes: trailing: 7 day offset: start + # Month-based rolling window: whole-month steps are what a rollup + # stored at `granularity: month` can serve, so the calc-group case + # entrypoints below dispatch between this and the year-to-date + # window rather than the 7-day one. + - name: rolling_sum_3m + type: sum + sql: amount + rolling_window: + trailing: 3 month + + # An Aggregate parent that reduces by the time dimension: the child + # rolling-window state ends up NARROWER than the root query (no time + # dimension), while the leaf still groups per date. + - name: rolling_sum_7d_reduce_time + type: sum + sql: "{CUBE.rolling_sum_7d}" + multi_stage: true + reduce_by: + - orders.created_at + + # Case entrypoint dispatching between two rolling windows on the + # `window_kind` calc group: the switch dimension is added to the + # grain of the rolling leaves, so every CTE feeding the case must + # project it. + - name: rolling_amount_switch + type: number + multi_stage: true + case: + switch: "{CUBE.window_kind}" + when: + - value: R3 + sql: "{CUBE.rolling_sum_3m}" + else: + sql: "{CUBE.total_amount_ytd}" + + # Change-over-prior-period on top of each rolling window: the + # arithmetic layer consumes two rolling-window CTEs and partitions + # by the grain it is requested at — which, under the case + # entrypoint below, includes the `window_kind` calc group. + - name: rolling_sum_3m_prev + type: number + multi_stage: true + sql: "{CUBE.rolling_sum_3m}" + time_shift: + - interval: 3 month + type: prior + + - name: rolling_sum_3m_change + type: number + multi_stage: true + sql: "({CUBE.rolling_sum_3m} - {CUBE.rolling_sum_3m_prev})" + + - name: total_amount_ytd_prev_year + type: number + multi_stage: true + sql: "{CUBE.total_amount_ytd}" + time_shift: + - interval: 1 year + type: prior + + - name: total_amount_ytd_change + type: number + multi_stage: true + sql: "({CUBE.total_amount_ytd} - {CUBE.total_amount_ytd_prev_year})" + + - name: rolling_change_switch + type: number + multi_stage: true + case: + switch: "{CUBE.window_kind}" + when: + - value: R3 + sql: "{CUBE.rolling_sum_3m_change}" + else: + sql: "{CUBE.total_amount_ytd_change}" + - name: total_amount_ytd type: sum sql: amount diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/seeds/integration_cubestore_switch_rolling_tables.sql b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/seeds/integration_cubestore_switch_rolling_tables.sql new file mode 100644 index 0000000000000..a30fbd0e34f80 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/test_fixtures/schemas/yaml_files/seeds/integration_cubestore_switch_rolling_tables.sql @@ -0,0 +1,52 @@ +DROP TABLE IF EXISTS cs_switch_sales CASCADE; +DROP TABLE IF EXISTS cs_switch_accounts CASCADE; + +CREATE TABLE cs_switch_accounts ( + id INTEGER PRIMARY KEY, + name TEXT NOT NULL +); + +CREATE TABLE cs_switch_sales ( + id INTEGER PRIMARY KEY, + account_id INTEGER NOT NULL REFERENCES cs_switch_accounts(id), + category TEXT NOT NULL, + created_at TIMESTAMP NOT NULL, + amount NUMERIC NOT NULL +); + +INSERT INTO cs_switch_accounts (id, name) VALUES + (1, 'acme'), + (2, 'globex'); + +-- One row per (account, category, month) with a distinct amount per month, so trailing +-- windows of different lengths produce distinct sums. The 2023 rows put data +-- outside the queried year, which is what separates a 12-month trailing window +-- from year-to-date: without them the two coincide on every query below. +INSERT INTO cs_switch_sales (id, account_id, category, created_at, amount) VALUES + -- Early 2023, so a year-over-year time shift has something to subtract and + -- the derived entrypoints are not all NULL on their to-date branch. Only the + -- May row falls inside a 12-month trailing window ending in 2024. + (19, 1, 'books', '2023-02-15 00:00:00', 20), + (20, 1, 'books', '2023-05-15 00:00:00', 30), + (21, 2, 'toys', '2023-02-15 00:00:00', 2), + (22, 2, 'toys', '2023-05-15 00:00:00', 3), + (13, 1, 'books', '2023-11-15 00:00:00', 7), + (14, 1, 'books', '2023-12-15 00:00:00', 50), + (15, 2, 'toys', '2023-11-15 00:00:00', 3), + (16, 2, 'toys', '2023-12-15 00:00:00', 5), + (1, 1, 'books', '2024-01-15 00:00:00', 100), + (2, 1, 'books', '2024-02-15 00:00:00', 200), + (3, 1, 'books', '2024-03-15 00:00:00', 300), + (4, 1, 'books', '2024-04-15 00:00:00', 400), + (5, 1, 'books', '2024-05-15 00:00:00', 500), + (6, 1, 'books', '2024-06-15 00:00:00', 600), + (7, 2, 'toys', '2024-01-15 00:00:00', 10), + (8, 2, 'toys', '2024-02-15 00:00:00', 20), + (9, 2, 'toys', '2024-03-15 00:00:00', 30), + (10, 2, 'toys', '2024-04-15 00:00:00', 40), + (11, 2, 'toys', '2024-05-15 00:00:00', 50), + (12, 2, 'toys', '2024-06-15 00:00:00', 60), + -- Each account sells both categories, so grouping by the joined cube's + -- dimension is distinguishable from grouping by the local one. + (17, 1, 'toys', '2024-05-15 00:00:00', 1), + (18, 2, 'books', '2024-05-15 00:00:00', 2); diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/mod.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/mod.rs index 1bca5f8cba779..a0311f3bd5211 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/mod.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/mod.rs @@ -1 +1,2 @@ mod basic; +mod switch_rolling; diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_aggregating_index.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_aggregating_index.snap new file mode 100644 index 0000000000000..79385b331d484 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_aggregating_index.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount +books|2024-04-01 00:00:00|900.0000000000 +books|2024-05-01 00:00:00|1202.0000000000 +books|2024-06-01 00:00:00|1502.0000000000 +toys|2024-04-01 00:00:00|90.0000000000 +toys|2024-05-01 00:00:00|121.0000000000 +toys|2024-06-01 00:00:00|151.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint.snap new file mode 100644 index 0000000000000..79385b331d484 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount +books|2024-04-01 00:00:00|900.0000000000 +books|2024-05-01 00:00:00|1202.0000000000 +books|2024-06-01 00:00:00|1502.0000000000 +toys|2024-04-01 00:00:00|90.0000000000 +toys|2024-05-01 00:00:00|121.0000000000 +toys|2024-06-01 00:00:00|151.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint_r12.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint_r12.snap new file mode 100644 index 0000000000000..2aa5ebc666147 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_case_entrypoint_r12.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount +books|2024-04-01 00:00:00|1087.0000000000 +books|2024-05-01 00:00:00|1559.0000000000 +books|2024-06-01 00:00:00|2159.0000000000 +toys|2024-04-01 00:00:00|111.0000000000 +toys|2024-05-01 00:00:00|159.0000000000 +toys|2024-06-01 00:00:00|219.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_date_range_only.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_date_range_only.snap new file mode 100644 index 0000000000000..65fc5aa6a0875 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_date_range_only.snap @@ -0,0 +1,7 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__rolling_amount +books|1502.0000000000 +toys|151.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_else_branch.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_else_branch.snap new file mode 100644 index 0000000000000..312698167714f --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_else_branch.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount_change +books|2024-04-01 00:00:00|980.0000000000 +books|2024-05-01 00:00:00|1452.0000000000 +books|2024-06-01 00:00:00|2052.0000000000 +toys|2024-04-01 00:00:00|98.0000000000 +toys|2024-05-01 00:00:00|146.0000000000 +toys|2024-06-01 00:00:00|206.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_entrypoint.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_entrypoint.snap new file mode 100644 index 0000000000000..1a30ed1ccbaa6 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_derived_entrypoint.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount_change +books|2024-04-01 00:00:00|743.0000000000 +books|2024-05-01 00:00:00|852.0000000000 +books|2024-06-01 00:00:00|902.0000000000 +toys|2024-04-01 00:00:00|72.0000000000 +toys|2024-05-01 00:00:00|86.0000000000 +toys|2024-06-01 00:00:00|91.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_direct_measure.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_direct_measure.snap new file mode 100644 index 0000000000000..eacbff893238a --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_direct_measure.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__r3_amount +books|2024-04-01 00:00:00|900.0000000000 +books|2024-05-01 00:00:00|1202.0000000000 +books|2024-06-01 00:00:00|1502.0000000000 +toys|2024-04-01 00:00:00|90.0000000000 +toys|2024-05-01 00:00:00|121.0000000000 +toys|2024-06-01 00:00:00|151.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_else_branch.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_else_branch.snap new file mode 100644 index 0000000000000..9f1b96b444a0f --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_else_branch.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount +books|2024-04-01 00:00:00|1000.0000000000 +books|2024-05-01 00:00:00|1502.0000000000 +books|2024-06-01 00:00:00|2102.0000000000 +toys|2024-04-01 00:00:00|100.0000000000 +toys|2024-05-01 00:00:00|151.0000000000 +toys|2024-06-01 00:00:00|211.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_grouped_switch.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_grouped_switch.snap new file mode 100644 index 0000000000000..3b75a231bb848 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_grouped_switch.snap @@ -0,0 +1,17 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__window_kind|sales__created_at_month|sales__rolling_amount +books|R12|2024-05-01 00:00:00|1559.0000000000 +books|R12|2024-06-01 00:00:00|2159.0000000000 +toys|R12|2024-05-01 00:00:00|159.0000000000 +toys|R12|2024-06-01 00:00:00|219.0000000000 +books|R3|2024-05-01 00:00:00|1202.0000000000 +books|R3|2024-06-01 00:00:00|1502.0000000000 +toys|R3|2024-05-01 00:00:00|121.0000000000 +toys|R3|2024-06-01 00:00:00|151.0000000000 +books|YTD|2024-05-01 00:00:00|1502.0000000000 +books|YTD|2024-06-01 00:00:00|2102.0000000000 +toys|YTD|2024-05-01 00:00:00|151.0000000000 +toys|YTD|2024-06-01 00:00:00|211.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_else_branch.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_else_branch.snap new file mode 100644 index 0000000000000..cb1790568949d --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_else_branch.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount_growth +books|2024-04-01 00:00:00|49.0000000000 +books|2024-05-01 00:00:00|29.0400000000 +books|2024-06-01 00:00:00|41.0400000000 +toys|2024-04-01 00:00:00|49.0000000000 +toys|2024-05-01 00:00:00|29.2000000000 +toys|2024-06-01 00:00:00|41.2000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_entrypoint.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_entrypoint.snap new file mode 100644 index 0000000000000..1c4c78aeb4cb7 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_growth_entrypoint.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount_growth +books|2024-04-01 00:00:00|4.7324840764 +books|2024-05-01 00:00:00|2.4342857143 +books|2024-06-01 00:00:00|1.5033333333 +toys|2024-04-01 00:00:00|4.0000000000 +toys|2024-05-01 00:00:00|2.4571428571 +toys|2024-06-01 00:00:00|1.5166666667 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_joined_dimension.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_joined_dimension.snap new file mode 100644 index 0000000000000..9d88a3ffa5299 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_joined_dimension.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +accounts__name|sales__created_at_month|sales__rolling_amount +acme|2024-04-01 00:00:00|900.0000000000 +acme|2024-05-01 00:00:00|1201.0000000000 +acme|2024-06-01 00:00:00|1501.0000000000 +globex|2024-04-01 00:00:00|90.0000000000 +globex|2024-05-01 00:00:00|122.0000000000 +globex|2024-06-01 00:00:00|152.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_prev_entrypoint.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_prev_entrypoint.snap new file mode 100644 index 0000000000000..e9201803479f4 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_prev_entrypoint.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__prev_rolling_amount +books|2024-04-01 00:00:00|157.0000000000 +books|2024-05-01 00:00:00|350.0000000000 +books|2024-06-01 00:00:00|600.0000000000 +toys|2024-04-01 00:00:00|18.0000000000 +toys|2024-05-01 00:00:00|35.0000000000 +toys|2024-06-01 00:00:00|60.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_stored_switch.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_stored_switch.snap new file mode 100644 index 0000000000000..79385b331d484 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/snapshots/cubesqlplanner__tests__integration__cubestore__switch_rolling__switch_rolling_stored_switch.snap @@ -0,0 +1,11 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs +expression: normalize(result) +--- +sales__category|sales__created_at_month|sales__rolling_amount +books|2024-04-01 00:00:00|900.0000000000 +books|2024-05-01 00:00:00|1202.0000000000 +books|2024-06-01 00:00:00|1502.0000000000 +toys|2024-04-01 00:00:00|90.0000000000 +toys|2024-05-01 00:00:00|121.0000000000 +toys|2024-06-01 00:00:00|151.0000000000 diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs new file mode 100644 index 0000000000000..1615e28ac9274 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/cubestore/switch_rolling.rs @@ -0,0 +1,501 @@ +//! Rolling-window measures reached through a `case` (switch) entrypoint, each +//! shape run twice: served from an external rollup in CubeStore, and straight +//! from the source Postgres with pre-aggregations switched off. The two results +//! must agree — the rollup path is an optimization, not a different answer. +//! +//! Requires `--features integration-cubestore` and a `cubestored` binary; +//! without them both paths return `None` and only matching is asserted. +//! +//! One shape is `#[ignore]`d for a CubeStore limitation unrelated to the +//! calc-group grain — see the note on it; run it with `--ignored` to reproduce. +//! Two defects these tests were originally written against are fixed: the +//! rolling-rewrite schema widening in #11410 and the aggregating-index decimal +//! cast in #11413. +//! Note that a debug-built `cubestored` overflows its stack on rolling-window +//! queries, so `CUBESTORED_BIN_PATH` must point at a release build. + +use crate::test_fixtures::cube_bridge::MockSchema; +use crate::test_fixtures::test_utils::TestContext; +use indoc::indoc; + +const YAML: &str = "common/integration_cubestore_switch_rolling.yaml"; +const SEED: &str = "integration_cubestore_switch_rolling_tables.sql"; + +fn rollup_ctx(pre_aggs: &[&str]) -> TestContext { + TestContext::new_with_external_cubestore( + MockSchema::from_yaml_file(YAML).only_pre_aggregations(pre_aggs), + ) + .unwrap() +} + +/// The same schema with every pre-aggregation filtered out, so the query runs +/// against the source tables. +fn raw_ctx() -> TestContext { + TestContext::new(MockSchema::from_yaml_file(YAML).only_pre_aggregations(&[])).unwrap() +} + +/// Query for `measures` with the switch pinned to `window`, at month grain. +fn query(measures: &[&str], window: &str, dimension: &str) -> String { + let measures = measures + .iter() + .map(|m| format!(" - sales.{m}")) + .collect::>() + .join("\n"); + format!( + indoc! {r#" + measures: + {} + dimensions: + - {} + filters: + - dimension: sales.window_kind + operator: equals + values: + - {} + time_dimensions: + - dimension: sales.created_at + granularity: month + dateRange: + - "2024-04-01" + - "2024-06-30" + order: + - id: {} + - id: sales.created_at + "#}, + measures, dimension, window, dimension + ) +} + +/// Same, with the switch left unpinned so it is grouped over instead. +fn query_grouped_switch(measure: &str) -> String { + format!( + indoc! {r#" + measures: + - sales.{} + dimensions: + - sales.category + - sales.window_kind + time_dimensions: + - dimension: sales.created_at + granularity: month + dateRange: + - "2024-05-01" + - "2024-06-30" + order: + - id: sales.window_kind + - id: sales.category + - id: sales.created_at + "#}, + measure + ) +} + +const DIRECT_MEASURE: &str = indoc! {r#" + measures: + - sales.r3_amount + dimensions: + - sales.category + time_dimensions: + - dimension: sales.created_at + granularity: month + dateRange: + - "2024-04-01" + - "2024-06-30" + order: + - id: sales.category + - id: sales.created_at +"#}; + +fn assert_served_by(ctx: &TestContext, query: &str, expected_rollup: &str) { + let (_sql, pre_aggrs) = ctx.build_sql_with_used_pre_aggregations(query).unwrap(); + assert!( + !pre_aggrs.is_empty() && pre_aggrs.iter().all(|u| u.name() == expected_rollup), + "expected every usage to be {expected_rollup}, got {:?}", + pre_aggrs + .iter() + .map(|u| u.name().clone()) + .collect::>() + ); +} + +/// Engine-independent form of a result table. CubeStore renders timestamps as +/// `...T00:00:00.000Z` where Postgres uses `... 00:00:00` — matched on that +/// shape, so a string cell like the `YTD` calc-group value is left alone — and +/// ratios are +/// computed in f64 against Postgres' NUMERIC, so the two differ in the last +/// digit (`2.4285714285714284` vs `...86`); numbers are therefore compared +/// rounded. Everything else must match cell for cell. +fn normalize(table: &str) -> String { + fn normalize_cell(cell: &str) -> String { + let cell = cell.trim(); + // Only rewrite cells shaped like CubeStore's `2024-05-01T00:00:00.000Z`, + // so string values carrying a `T` or `Z` — the `YTD` calc group here — + // survive untouched. + let cell = match cell.strip_suffix('Z') { + Some(timestamp) if timestamp.contains('T') => { + timestamp.replacen('T', " ", 1).replace(".000", "") + } + _ => cell.to_string(), + }; + match cell.parse::() { + Ok(value) => format!("{value:.10}"), + Err(_) => cell, + } + } + + table + .lines() + .filter(|line| { + // the `---+---` separator, not a data row whose first cell is negative + !line + .trim() + .chars() + .all(|c| matches!(c, '-' | '+' | ' ' | '|')) + }) + .map(|line| { + line.split('|') + .map(normalize_cell) + .collect::>() + .join("|") + }) + .collect::>() + .join("\n") +} + +/// Runs `query` through the rollup and through the raw source, asserts the two +/// agree, and snapshots the rollup-backed result. +async fn run_both(pre_aggs: &[&str], query: &str, expected_rollup: &str, snapshot: &str) { + let rollup = rollup_ctx(pre_aggs); + assert_served_by(&rollup, query, expected_rollup); + + let raw = raw_ctx(); + let (_sql, none_used) = raw.build_sql_with_used_pre_aggregations(query).unwrap(); + assert!( + none_used.is_empty(), + "the raw context must not use pre-aggregations, got {:?}", + none_used + .iter() + .map(|u| u.name().clone()) + .collect::>() + ); + + let from_rollup = rollup.try_execute_cubestore(query, SEED).await; + let from_source = raw.try_execute_pg(query, SEED).await; + + if let (Some(from_rollup), Some(from_source)) = (&from_rollup, &from_source) { + assert_eq!( + normalize(from_rollup), + normalize(from_source), + "rollup and raw-source results disagree\n--- rollup ---\n{from_rollup}\n--- source ---\n{from_source}" + ); + } + // Snapshot the engine-independent form of whichever engine ran, so values are + // pinned in a plain `integration-postgres` run too, not only when CubeStore + // is available. + if let Some(result) = from_rollup.as_deref().or(from_source.as_deref()) { + insta::assert_snapshot!(snapshot, normalize(result)); + } +} + +/// Matching and planning for every shape below, without executing — the part +/// that must hold regardless of whether CubeStore can run the plan. +#[test] +fn test_switch_shapes_are_served_by_rollup() { + let by_category = rollup_ctx(&["rolling_by_category"]); + assert_served_by(&by_category, DIRECT_MEASURE, "rolling_by_category"); + for (measure, window) in [ + ("rolling_amount", "R3"), + ("rolling_amount", "R12"), + ("rolling_amount", "YTD"), + ("prev_rolling_amount", "R3"), + ("rolling_amount_change", "R3"), + ("rolling_amount_growth", "R3"), + ("rolling_amount_change", "YTD"), + ("rolling_amount_growth", "YTD"), + ] { + assert_served_by( + &by_category, + &query(&[measure], window, "sales.category"), + "rolling_by_category", + ); + } + assert_served_by( + &by_category, + &query( + &[ + "rolling_amount", + "prev_rolling_amount", + "rolling_amount_change", + "rolling_amount_growth", + ], + "R3", + "sales.category", + ), + "rolling_by_category", + ); + assert_served_by( + &by_category, + &query_grouped_switch("rolling_amount"), + "rolling_by_category", + ); + + assert_served_by(&by_category, DATE_RANGE_ONLY, "rolling_by_category"); + + assert_served_by( + &rollup_ctx(&["rolling_by_category_stored_switch"]), + &query(&["rolling_amount"], "R3", "sales.category"), + "rolling_by_category_stored_switch", + ); + assert_served_by( + &rollup_ctx(&["rolling_by_category_agg_idx"]), + &query(&["rolling_amount"], "R3", "sales.category"), + "rolling_by_category_agg_idx", + ); + assert_served_by( + &rollup_ctx(&["rolling_by_account"]), + &query(&["rolling_amount"], "R3", "accounts.name"), + "rolling_by_account", + ); +} + +/// Control: the rolling measure queried directly, no switch involved. +#[tokio::test(flavor = "multi_thread")] +async fn test_rolling_measure() { + run_both( + &["rolling_by_category"], + DIRECT_MEASURE, + "rolling_by_category", + "switch_rolling_direct_measure", + ) + .await; +} + +/// The plain case entrypoint over a `trailing` window: nothing above the rolling +/// windows consumes the calc-group dimension, so the outer projection prunes it. +/// +/// This shape used to fail in CubeStore. `RollingOptimizerRule` replaced that +/// projection with a `RollingWindowAggregate` node emitting +/// `dimension + partition_by + rolling aggregates`, so the pruned GROUP BY column +/// reappeared, the replacement was wider than what it replaced, and ancestors +/// resolving columns by position hit `Optimizer rule 'optimize_projections' +/// failed / Schema error: No field named fk_aggregate.sales__r3_amount`. Fixed in +/// #11410; this test guards that rewrite together with the CTE-grain fix in this +/// PR. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount"], "R3", "sales.category"), + "rolling_by_category", + "switch_rolling_case_entrypoint", + ) + .await; +} + +/// Same, dispatching to the other window, so the switch value actually selects +/// a different rolling measure. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint_other_window() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount"], "R12", "sales.category"), + "rolling_by_category", + "switch_rolling_case_entrypoint_r12", + ) + .await; +} + +/// The grain dimension is owned by a joined cube. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint_joined_dimension() { + run_both( + &["rolling_by_account"], + &query(&["rolling_amount"], "R3", "accounts.name"), + "rolling_by_account", + "switch_rolling_joined_dimension", + ) + .await; +} + +/// A rollup that stores the calc group as an ordinary dimension: the value is +/// then read from the rollup column instead of being rendered as a literal. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint_rollup_stores_switch() { + run_both( + &["rolling_by_category_stored_switch"], + &query(&["rolling_amount"], "R3", "sales.category"), + "rolling_by_category_stored_switch", + "switch_rolling_stored_switch", + ) + .await; +} + +/// Same grain, but the rollup carries an aggregating index. Building that index +/// used to fail before any query ran — the decimal sum widened to +/// `Decimal128(28, 5)` against a column declared `Decimal128(18, 5)` and +/// CubeStore panicked with `column types must match schema types`. Fixed in +/// #11413; this test guards it. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint_aggregating_index() { + run_both( + &["rolling_by_category_agg_idx"], + &query(&["rolling_amount"], "R3", "sales.category"), + "rolling_by_category_agg_idx", + "switch_rolling_aggregating_index", + ) + .await; +} + +/// The switch is not pinned by a filter but grouped over, so the calc group is +/// a real cross-joined values column rather than a literal. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint_grouped_switch() { + run_both( + &["rolling_by_category"], + &query_grouped_switch("rolling_amount"), + "rolling_by_category", + "switch_rolling_grouped_switch", + ) + .await; +} + +/// An entrypoint dispatching straight onto a `time_shift` measure. +#[tokio::test(flavor = "multi_thread")] +async fn test_prev_case_entrypoint() { + run_both( + &["rolling_by_category"], + &query(&["prev_rolling_amount"], "R3", "sales.category"), + "rolling_by_category", + "switch_rolling_prev_entrypoint", + ) + .await; +} + +/// The derived entrypoint: the arithmetic layer above the rolling windows +/// partitions by the calc-group dimension, so the outer projection keeps it and +/// nothing is pruned. +#[tokio::test(flavor = "multi_thread")] +async fn test_derived_case_entrypoint() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount_change"], "R3", "sales.category"), + "rolling_by_category", + "switch_rolling_derived_entrypoint", + ) + .await; +} + +/// A ratio over two multi-stage layers, the growth-percentage shape. +#[tokio::test(flavor = "multi_thread")] +async fn test_growth_case_entrypoint() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount_growth"], "R3", "sales.category"), + "rolling_by_category", + "switch_rolling_growth_entrypoint", + ) + .await; +} + +/// Four switch entrypoints at once — the dashboard shape, and the deepest +/// FullKeyAggregate plan this model produces. CubeStore cannot decode a +/// serialized plan this deep: +/// +/// ```text +/// Error during planning: Error decoding expr as protobuf: failed to decode +/// Protobuf message: ... recursion limit reached +/// ``` +/// +/// Unrelated to the calc-group grain — the plan is valid and the raw half of +/// this test returns the expected rows. +#[ignore = "CubeStore cannot decode a serialized plan this deep (protobuf recursion limit)"] +#[tokio::test(flavor = "multi_thread")] +async fn test_four_entrypoints_in_one_query() { + run_both( + &["rolling_by_category"], + &query( + &[ + "rolling_amount", + "prev_rolling_amount", + "rolling_amount_change", + "rolling_amount_growth", + ], + "R3", + "sales.category", + ), + "rolling_by_category", + "switch_rolling_four_measures", + ) + .await; +} + +/// A derived entrypoint dispatching to its `else` branch: an arithmetic layer +/// over a to-date window, which is planned without the time-series LEFT JOIN the +/// trailing windows use, while still partitioning by the calc group. +#[tokio::test(flavor = "multi_thread")] +async fn test_derived_case_entrypoint_else_branch() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount_change"], "YTD", "sales.category"), + "rolling_by_category", + "switch_rolling_derived_else_branch", + ) + .await; +} + +/// Same for the ratio layer. +#[tokio::test(flavor = "multi_thread")] +async fn test_growth_case_entrypoint_else_branch() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount_growth"], "YTD", "sales.category"), + "rolling_by_category", + "switch_rolling_growth_else_branch", + ) + .await; +} + +/// The `else` branch resolves to a to-date window, which is planned without the +/// time-series LEFT JOIN the trailing windows use. +#[tokio::test(flavor = "multi_thread")] +async fn test_case_entrypoint_else_branch() { + run_both( + &["rolling_by_category"], + &query(&["rolling_amount"], "YTD", "sales.category"), + "rolling_by_category", + "switch_rolling_else_branch", + ) + .await; +} + +const DATE_RANGE_ONLY: &str = indoc! {r#" + measures: + - sales.rolling_amount + dimensions: + - sales.category + filters: + - dimension: sales.window_kind + operator: equals + values: + - R3 + time_dimensions: + - dimension: sales.created_at + dateRange: + - "2024-04-01" + - "2024-06-30" + order: + - id: sales.category +"#}; + +/// A date range with no granularity still matches the rollup thanks to +/// `allow_non_strict_date_range_match`. +#[tokio::test(flavor = "multi_thread")] +async fn test_date_range_without_granularity() { + run_both( + &["rolling_by_category"], + DATE_RANGE_ONLY, + "rolling_by_category", + "switch_rolling_date_range_only", + ) + .await; +} diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/snapshots/cubesqlplanner__tests__integration__multi_stage__with_rolling_window__rolling_window_under_reduce_by_time.snap b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/snapshots/cubesqlplanner__tests__integration__multi_stage__with_rolling_window__rolling_window_under_reduce_by_time.snap new file mode 100644 index 0000000000000..49a60829ff617 --- /dev/null +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/snapshots/cubesqlplanner__tests__integration__multi_stage__with_rolling_window__rolling_window_under_reduce_by_time.snap @@ -0,0 +1,16 @@ +--- +source: cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/with_rolling_window.rs +expression: result +--- +orders__category | orders__created_at_day | orders__rolling_sum_7d_reduce_time +-----------------+------------------------+----------------------------------- +electronics | 2024-01-06 00:00:00 | 500.00 +electronics | 2024-01-07 00:00:00 | 500.00 +electronics | 2024-01-08 00:00:00 | 500.00 +electronics | 2024-01-09 00:00:00 | 500.00 +electronics | 2024-01-10 00:00:00 | 500.00 +NULL | 2024-01-01 00:00:00 | NULL +NULL | 2024-01-02 00:00:00 | NULL +NULL | 2024-01-03 00:00:00 | NULL +NULL | 2024-01-04 00:00:00 | NULL +NULL | 2024-01-05 00:00:00 | NULL diff --git a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/with_rolling_window.rs b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/with_rolling_window.rs index 0eba8aa67e32a..6245fea1167d9 100644 --- a/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/with_rolling_window.rs +++ b/rust/cube/cubesqlplanner/cubesqlplanner/src/tests/integration/multi_stage/with_rolling_window.rs @@ -151,3 +151,82 @@ async fn test_rolling_and_calculated() { insta::assert_snapshot!(result); } } + +/// A `case` entrypoint dispatching between two month-based rolling windows +/// (trailing 3 month / year-to-date, the grain a monthly rollup can serve) +/// on a `type: switch` calc-group dimension, queried with a month time +/// dimension. The switch dimension is added to the grain of the rolling +/// leaves, so the rolling-window CTE must project it — building the CTE +/// from the root query dimensions instead of the requested state made +/// this fail with `Alias not found for partition_by dimension +/// orders.window_kind`. +#[tokio::test(flavor = "multi_thread")] +async fn test_rolling_window_switch_with_granular_time_dimension() { + let ctx = create_context(); + + let query = indoc! {r#" + measures: + - orders.rolling_amount_switch + - orders.rolling_change_switch + dimensions: + - orders.status + filters: + - member: orders.window_kind + operator: equals + values: + - R3 + time_dimensions: + - dimension: orders.created_at + granularity: month + dateRange: + - "2024-01-01" + - "2024-03-31" + order: + - id: orders.status + - id: orders.created_at + "#}; + + let sql = ctx.build_sql(query).unwrap(); + + // The pinned switch value renders as a literal, and the calc-group + // dimension is projected by the CTEs feeding the case measure. + assert!( + sql.contains("'R3'"), + "Expected the pinned calc-group value in the generated SQL:\n{}", + sql + ); + assert!( + sql.contains("orders__window_kind"), + "Expected the calc-group dimension to be projected:\n{}", + sql + ); +} + +/// An Aggregate parent reducing by the time dimension narrows the child +/// rolling-window state: the CTE must still project and group by the rolling +/// time dimension, otherwise the `time_series` LEFT JOIN fans out and the +/// rolling sum is multiplied. +#[tokio::test(flavor = "multi_thread")] +async fn test_rolling_window_under_reduce_by_time() { + let ctx = create_context(); + + let query = indoc! {r#" + measures: + - orders.rolling_sum_7d_reduce_time + dimensions: + - orders.category + time_dimensions: + - dimension: orders.created_at + granularity: day + dateRange: + - "2024-01-01" + - "2024-01-10" + order: + - id: orders.category + - id: orders.created_at + "#}; + + if let Some(result) = ctx.try_execute_pg(query, SEED).await { + insta::assert_snapshot!(result); + } +} From 236763ad3936ac2a0df3bdd0bfc784d6df78c690 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 30 Jul 2026 14:22:29 +0200 Subject: [PATCH 2/3] feat(cubesql): Separate env var for non-streaming query max row limit (#11418) --- .../configuration/environment-variables.mdx | 32 +++++++++++++++++-- .../reference/core-data-apis/queries.mdx | 4 ++- .../core-data-apis/sql-api/index.mdx | 5 +++ rust/cubesql/cubesql/src/config/mod.rs | 20 ++++++++++-- 4 files changed, 56 insertions(+), 5 deletions(-) diff --git a/docs-mintlify/reference/configuration/environment-variables.mdx b/docs-mintlify/reference/configuration/environment-variables.mdx index b308ac9401f16..7f31202fe54d4 100644 --- a/docs-mintlify/reference/configuration/environment-variables.mdx +++ b/docs-mintlify/reference/configuration/environment-variables.mdx @@ -1079,7 +1079,9 @@ specified in an API query. The maximum [row limit][ref-row-limit] in the result set. An explicit limit in a query cannot exceed this value, except for [SQL API][ref-sql-api] queries when -[streaming mode][ref-sql-api-streaming] is enabled. +[streaming mode][ref-sql-api-streaming] is enabled. SQL API queries that are not +streamed can be capped separately, at a lower value, with +[`CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT`](#cubesql_non_streaming_query_max_row_limit). | Possible Values | Default in Development | Default in Production | | ------------------------- | ---------------------- | --------------------- | @@ -1506,7 +1508,8 @@ If `true`, enables query pushdown in the [SQL API][ref-sql-api]. If `true`, enables the [streaming mode][ref-sql-api-streaming] in the [SQL API][ref-sql-api]. When enabled, SQL API queries with an explicit `LIMIT` clause can exceed the maximum row limit set by -[`CUBEJS_DB_QUERY_LIMIT`](#cubejs_db_query_limit). +[`CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT`](#cubesql_non_streaming_query_max_row_limit) +and are streamed instead. Queries without an explicit `LIMIT` still use [`CUBEJS_DB_QUERY_DEFAULT_LIMIT`](#cubejs_db_query_default_limit). | Possible Values | Default in Development | Default in Production | @@ -1528,6 +1531,31 @@ Set to `0` to disable splitting. | ------------------------------ | ---------------------- | --------------------- | | A non-negative integer number | `65536` | `65536` | +## `CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT` + +The maximum [row limit][ref-row-limit] for [SQL API][ref-sql-api] queries that are +not streamed. A larger `LIMIT` is reduced to this value, unless +[streaming mode][ref-sql-api-streaming] is enabled, in which case the query is +streamed instead. + +| Possible Values | Default in Development | Default in Production | +| ------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| A positive integer number | [`CUBEJS_DB_QUERY_LIMIT`](#cubejs_db_query_limit) (`50000`) | [`CUBEJS_DB_QUERY_LIMIT`](#cubejs_db_query_limit) (`50000`) | + +Set it below `CUBEJS_DB_QUERY_LIMIT` to let other APIs return large result sets +while keeping SQL API responses small enough to fit in a single batch, or streamed +if streaming mode is enabled. Buffering very large non-streamed responses can +exhaust memory and break the client connection. + + + +This value cannot exceed [`CUBEJS_DB_QUERY_LIMIT`](#cubejs_db_query_limit). If you +set it higher, Cube logs a warning at startup and falls back to +`CUBEJS_DB_QUERY_LIMIT`, because non-streamed queries above that limit are rejected +before they reach the data source. + + + ## `CUBESQL_SQL_NO_IMPLICIT_ORDER` If `true`, prevents adding implicit [default `ORDER BY` diff --git a/docs-mintlify/reference/core-data-apis/queries.mdx b/docs-mintlify/reference/core-data-apis/queries.mdx index ce19120c10541..a67a37f582515 100644 --- a/docs-mintlify/reference/core-data-apis/queries.mdx +++ b/docs-mintlify/reference/core-data-apis/queries.mdx @@ -44,7 +44,9 @@ environment variable to override it. You can also implement If you're using the [SQL API][ref-sql-api], you can enable [streaming mode][ref-sql-api-streaming] to bypass the maximum row limit for queries with an explicit `LIMIT` clause. Without an explicit `LIMIT`, -`CUBEJS_DB_QUERY_DEFAULT_LIMIT` still applies even in streaming mode. +`CUBEJS_DB_QUERY_DEFAULT_LIMIT` still applies even in streaming mode. SQL API +queries that are not streamed can also be capped separately with +[`CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT`](/reference/configuration/environment-variables#cubesql_non_streaming_query_max_row_limit). ### Time zone diff --git a/docs-mintlify/reference/core-data-apis/sql-api/index.mdx b/docs-mintlify/reference/core-data-apis/sql-api/index.mdx index 57637f3542c06..6804b38f89976 100644 --- a/docs-mintlify/reference/core-data-apis/sql-api/index.mdx +++ b/docs-mintlify/reference/core-data-apis/sql-api/index.mdx @@ -214,6 +214,11 @@ explicit `LIMIT`, increase `CUBEJS_DB_QUERY_DEFAULT_LIMIT` as needed. +Queries that are not streamed are capped by +[`CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT`](/reference/configuration/environment-variables#cubesql_non_streaming_query_max_row_limit), +which defaults to the value of `CUBEJS_DB_QUERY_LIMIT`. It also acts as the threshold +above which a query is streamed rather than loaded in a single batch. + ### Session limit Each concurrent connection to the SQL API consumes some resources and attempting diff --git a/rust/cubesql/cubesql/src/config/mod.rs b/rust/cubesql/cubesql/src/config/mod.rs index 062c1d608f7b3..c93c538cb7174 100644 --- a/rust/cubesql/cubesql/src/config/mod.rs +++ b/rust/cubesql/cubesql/src/config/mod.rs @@ -14,7 +14,7 @@ use crate::{ CubeError, }; use futures::future::join_all; -use log::error; +use log::{error, warn}; use std::{ env, @@ -153,6 +153,22 @@ impl ConfigObjImpl { .map(|v| v.parse::().unwrap()) .unwrap_or(120); let sql_push_down = env_parse("CUBESQL_SQL_PUSH_DOWN", true); + + let db_query_limit: i32 = env_parse("CUBEJS_DB_QUERY_LIMIT", 50000); + let non_streaming_query_max_row_limit = + match env_optparse("CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT") { + Some(limit) if limit > db_query_limit => { + warn!( + "CUBESQL_NON_STREAMING_QUERY_MAX_ROW_LIMIT ({}) exceeds \ + CUBEJS_DB_QUERY_LIMIT ({}), falling back to the latter", + limit, db_query_limit + ); + db_query_limit + } + Some(limit) => limit, + None => db_query_limit, + }; + Self { bind_address: env::var("CUBESQL_BIND_ADDR").ok().or_else(|| { env::var("CUBESQL_PORT") @@ -184,7 +200,7 @@ impl ConfigObjImpl { push_down_pull_up_split: env_optparse("CUBESQL_PUSH_DOWN_PULL_UP_SPLIT") .unwrap_or(sql_push_down), stream_mode: env_parse("CUBESQL_STREAM_MODE", false), - non_streaming_query_max_row_limit: env_parse("CUBEJS_DB_QUERY_LIMIT", 50000), + non_streaming_query_max_row_limit, cube_scan_max_batch_rows: env_parse("CUBESQL_CUBE_SCAN_MAX_BATCH_ROWS", 65536), max_sessions: env_parse("CUBEJS_MAX_SESSIONS", 1024), no_implicit_order: env_parse("CUBESQL_SQL_NO_IMPLICIT_ORDER", true), From 6ca51d83b521e7fdb265b5c7c26faff17a7758e6 Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Thu, 30 Jul 2026 14:25:22 +0200 Subject: [PATCH 3/3] v1.7.15 --- CHANGELOG.md | 13 +++++ lerna.json | 2 +- packages/cubejs-api-gateway/CHANGELOG.md | 4 ++ packages/cubejs-api-gateway/package.json | 10 ++-- packages/cubejs-athena-driver/CHANGELOG.md | 4 ++ packages/cubejs-athena-driver/package.json | 10 ++-- packages/cubejs-backend-cloud/CHANGELOG.md | 4 ++ packages/cubejs-backend-cloud/package.json | 6 +- packages/cubejs-backend-maven/CHANGELOG.md | 4 ++ packages/cubejs-backend-maven/package.json | 6 +- packages/cubejs-backend-native/CHANGELOG.md | 4 ++ packages/cubejs-backend-native/package.json | 8 +-- packages/cubejs-backend-shared/CHANGELOG.md | 4 ++ packages/cubejs-backend-shared/package.json | 4 +- packages/cubejs-base-driver/CHANGELOG.md | 4 ++ packages/cubejs-base-driver/package.json | 6 +- packages/cubejs-bigquery-driver/CHANGELOG.md | 4 ++ packages/cubejs-bigquery-driver/package.json | 8 +-- packages/cubejs-cli/CHANGELOG.md | 4 ++ packages/cubejs-cli/package.json | 12 ++-- .../cubejs-clickhouse-driver/CHANGELOG.md | 4 ++ .../cubejs-clickhouse-driver/package.json | 10 ++-- packages/cubejs-client-core/CHANGELOG.md | 4 ++ packages/cubejs-client-core/package.json | 4 +- packages/cubejs-client-dx/CHANGELOG.md | 4 ++ packages/cubejs-client-dx/package.json | 2 +- packages/cubejs-client-ngx/CHANGELOG.md | 4 ++ packages/cubejs-client-ngx/package.json | 2 +- packages/cubejs-client-react/CHANGELOG.md | 4 ++ packages/cubejs-client-react/package.json | 4 +- packages/cubejs-client-vue3/CHANGELOG.md | 4 ++ packages/cubejs-client-vue3/package.json | 4 +- .../cubejs-client-ws-transport/CHANGELOG.md | 4 ++ .../cubejs-client-ws-transport/package.json | 6 +- packages/cubejs-crate-driver/CHANGELOG.md | 4 ++ packages/cubejs-crate-driver/package.json | 10 ++-- packages/cubejs-cubestore-driver/CHANGELOG.md | 4 ++ packages/cubejs-cubestore-driver/package.json | 12 ++-- .../CHANGELOG.md | 4 ++ .../package.json | 12 ++-- .../cubejs-dbt-schema-extension/CHANGELOG.md | 4 ++ .../cubejs-dbt-schema-extension/package.json | 8 +-- packages/cubejs-docker/CHANGELOG.md | 4 ++ packages/cubejs-docker/package.json | 58 +++++++++---------- packages/cubejs-dremio-driver/CHANGELOG.md | 4 ++ packages/cubejs-dremio-driver/package.json | 12 ++-- packages/cubejs-druid-driver/CHANGELOG.md | 4 ++ packages/cubejs-druid-driver/package.json | 10 ++-- packages/cubejs-duckdb-driver/CHANGELOG.md | 4 ++ packages/cubejs-duckdb-driver/package.json | 12 ++-- packages/cubejs-firebolt-driver/CHANGELOG.md | 4 ++ packages/cubejs-firebolt-driver/package.json | 12 ++-- packages/cubejs-hive-driver/CHANGELOG.md | 4 ++ packages/cubejs-hive-driver/package.json | 8 +-- packages/cubejs-jdbc-driver/CHANGELOG.md | 4 ++ packages/cubejs-jdbc-driver/package.json | 8 +-- packages/cubejs-ksql-driver/CHANGELOG.md | 4 ++ packages/cubejs-ksql-driver/package.json | 10 ++-- packages/cubejs-linter/CHANGELOG.md | 4 ++ packages/cubejs-linter/package.json | 2 +- .../cubejs-materialize-driver/CHANGELOG.md | 4 ++ .../cubejs-materialize-driver/package.json | 12 ++-- packages/cubejs-mongobi-driver/CHANGELOG.md | 4 ++ packages/cubejs-mongobi-driver/package.json | 8 +-- packages/cubejs-mssql-driver/CHANGELOG.md | 4 ++ packages/cubejs-mssql-driver/package.json | 6 +- .../CHANGELOG.md | 4 ++ .../package.json | 8 +-- packages/cubejs-mysql-driver/CHANGELOG.md | 4 ++ packages/cubejs-mysql-driver/package.json | 10 ++-- packages/cubejs-oracle-driver/CHANGELOG.md | 4 ++ packages/cubejs-oracle-driver/package.json | 6 +- packages/cubejs-pinot-driver/CHANGELOG.md | 4 ++ packages/cubejs-pinot-driver/package.json | 10 ++-- packages/cubejs-playground/CHANGELOG.md | 4 ++ packages/cubejs-playground/package.json | 6 +- packages/cubejs-postgres-driver/CHANGELOG.md | 4 ++ packages/cubejs-postgres-driver/package.json | 10 ++-- packages/cubejs-prestodb-driver/CHANGELOG.md | 4 ++ packages/cubejs-prestodb-driver/package.json | 8 +-- .../cubejs-query-orchestrator/CHANGELOG.md | 4 ++ .../cubejs-query-orchestrator/package.json | 10 ++-- packages/cubejs-questdb-driver/CHANGELOG.md | 4 ++ packages/cubejs-questdb-driver/package.json | 12 ++-- packages/cubejs-redshift-driver/CHANGELOG.md | 4 ++ packages/cubejs-redshift-driver/package.json | 10 ++-- packages/cubejs-schema-compiler/CHANGELOG.md | 6 ++ packages/cubejs-schema-compiler/package.json | 12 ++-- packages/cubejs-server-core/CHANGELOG.md | 4 ++ packages/cubejs-server-core/package.json | 24 ++++---- packages/cubejs-server/CHANGELOG.md | 4 ++ packages/cubejs-server/package.json | 14 ++--- packages/cubejs-snowflake-driver/CHANGELOG.md | 4 ++ packages/cubejs-snowflake-driver/package.json | 8 +-- packages/cubejs-sqlite-driver/CHANGELOG.md | 4 ++ packages/cubejs-sqlite-driver/package.json | 8 +-- packages/cubejs-templates/CHANGELOG.md | 4 ++ packages/cubejs-templates/package.json | 6 +- packages/cubejs-testing-drivers/CHANGELOG.md | 4 ++ packages/cubejs-testing-drivers/package.json | 44 +++++++------- packages/cubejs-testing-shared/CHANGELOG.md | 4 ++ packages/cubejs-testing-shared/package.json | 10 ++-- packages/cubejs-testing/CHANGELOG.md | 6 ++ packages/cubejs-testing/package.json | 22 +++---- packages/cubejs-trino-driver/CHANGELOG.md | 4 ++ packages/cubejs-trino-driver/package.json | 12 ++-- packages/cubejs-vertica-driver/CHANGELOG.md | 4 ++ packages/cubejs-vertica-driver/package.json | 14 ++--- rust/cubesql/CHANGELOG.md | 7 +++ rust/cubesql/package.json | 2 +- rust/cubestore/CHANGELOG.md | 7 +++ rust/cubestore/Cargo.lock | 2 +- rust/cubestore/cubestore/Cargo.toml | 2 +- rust/cubestore/package.json | 6 +- 114 files changed, 533 insertions(+), 290 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f12b5335728e..648029896567d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +### Bug Fixes + +- **cubestore:** cast aggregating index aggregation results back to the declared column types ([#11413](https://github.com/cube-js/cube/issues/11413)) ([26c4801](https://github.com/cube-js/cube/commit/26c4801629ef4851e3474e5d0a4ed4cf76c3d4d0)) +- **cubestore:** keep the projection schema when rewriting a rolling window ([#11410](https://github.com/cube-js/cube/issues/11410)) ([1bf2dd8](https://github.com/cube-js/cube/commit/1bf2dd848e9147afa94c19235bd0026899740609)) +- **tesseract:** project the requested grain into rolling-window CTEs ([#11400](https://github.com/cube-js/cube/issues/11400)) ([80d1159](https://github.com/cube-js/cube/commit/80d1159fd0d255f8b3b8799275bc921fabeaad5a)), closes [#11410](https://github.com/cube-js/cube/issues/11410) [#11413](https://github.com/cube-js/cube/issues/11413) + +### Features + +- **cubesql:** Separate env var for non-streaming query max row limit ([#11418](https://github.com/cube-js/cube/issues/11418)) ([236763a](https://github.com/cube-js/cube/commit/236763ad3936ac2a0df3bdd0bfc784d6df78c690)) +- **cubesql:** Split oversized CubeScan record batches ([#11384](https://github.com/cube-js/cube/issues/11384)) ([51db9c7](https://github.com/cube-js/cube/commit/51db9c7d4cc1cf4d50f7e48d4ec269982f01dff9)) + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 8076e9c789c06..c3fa453dab734 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.7.14", + "version": "1.7.15", "npmClient": "yarn", "command": { "bootstrap": { diff --git a/packages/cubejs-api-gateway/CHANGELOG.md b/packages/cubejs-api-gateway/CHANGELOG.md index 1158b3c352813..88a1a3b4c7402 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/api-gateway + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) ### Features diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json index 387945ae7e49a..d2ca9d2115045 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 API Gateway", "author": "Cube Dev, Inc.", - "version": "1.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/native": "1.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/native": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@ungap/structured-clone": "^0.3.4", "assert-never": "^1.4.0", "body-parser": "^1.19.0", @@ -53,7 +53,7 @@ "zod": "^4.1.13" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@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 799b22d336894..e504122604abf 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/athena-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 b30c83c154eb3..7c66dacf6456d 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -31,12 +31,12 @@ "dependencies": { "@aws-sdk/client-athena": "^3.22.0", "@aws-sdk/credential-providers": "^3.22.0", - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14" + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "@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 bf6d0c42487fd..3128bfd0e528e 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/cloud + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 4698e5228cb22..0d1d95e43d445 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.7.14", + "version": "1.7.15", "description": "Cube Cloud package", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/core": "^7.24.5", "@babel/preset-env": "^7.24.5", - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/fs-extra": "^9.0.8", "@types/jest": "^29", "jest": "^29", @@ -38,7 +38,7 @@ }, "dependencies": { "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/shared": "1.7.15", "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 bdc34f1799d70..f40f3b1029c82 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/maven + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 65322459a951b..0f176bf4f5b34 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.7.14", + "version": "1.7.15", "license": "Apache-2.0", "repository": { "type": "git", @@ -31,12 +31,12 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/shared": "1.7.15", "source-map-support": "^0.5.19", "xmlbuilder2": "^2.4.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-backend-native/CHANGELOG.md b/packages/cubejs-backend-native/CHANGELOG.md index 6ff6e2e886404..93ad59ce97672 100644 --- a/packages/cubejs-backend-native/CHANGELOG.md +++ b/packages/cubejs-backend-native/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/native + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) ### Bug Fixes diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index 4146772cbafc1..21677950a6076 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.7.14", + "version": "1.7.15", "author": "Cube Dev, Inc.", "description": "Native module for Cube.js (binding to Rust codebase)", "main": "dist/js/index.js", @@ -39,7 +39,7 @@ "dist/js" ], "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "cargo-cp-artifact": "^0.1.9", @@ -50,8 +50,8 @@ "uuid": "^8.3.2" }, "dependencies": { - "@cubejs-backend/cubesql": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/cubesql": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@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 831a5e264efa7..08f9482c6dbba 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/shared + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 c7cd8f0943507..e5b1e5c8f04b0 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.7.14", + "version": "1.7.15", "description": "Shared code for Cube.js backend packages", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -27,7 +27,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/bytes": "^3.1.5", "@types/cli-progress": "^3.9.1", "@types/decompress": "^4.2.7", diff --git a/packages/cubejs-base-driver/CHANGELOG.md b/packages/cubejs-base-driver/CHANGELOG.md index 5c304dd829008..fc002c4863dad 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/base-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 ac48880a7b9a4..e6ff1f172645c 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.7.14", + "version": "1.7.15", "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.7.14", + "@cubejs-backend/shared": "1.7.15", "@google-cloud/storage": "^7.13.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-bigquery-driver/CHANGELOG.md b/packages/cubejs-bigquery-driver/CHANGELOG.md index 2e8e579a1b72d..0c11246c0ed96 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/bigquery-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 2f1028207074b..a8a43a325350f 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,15 +29,15 @@ "main": "index.js", "types": "dist/src/index.d.ts", "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/shared": "1.7.15", "@google-cloud/bigquery": "^7.7.0", "@google-cloud/storage": "^7.13.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/testing-shared": "1.7.15", "@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 4e8a49f4ddf1c..a09981d5b7595 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package cubejs-cli + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) **Note:** Version bump only for package cubejs-cli diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json index a8517c3352cd6..c4f579f07e02c 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -30,10 +30,10 @@ "LICENSE" ], "dependencies": { - "@cubejs-backend/cloud": "1.7.14", + "@cubejs-backend/cloud": "1.7.15", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "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.7.14", - "@cubejs-backend/server": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/server": "1.7.15", "@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 ee3f97321a305..9c5092bcc9838 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/clickhouse-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 d322530cd9f42..3aca3369a1678 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,16 +29,16 @@ }, "dependencies": { "@clickhouse/client": "^1.12.0", - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "moment": "^2.24.0", "sqlstring": "^2.3.1", "uuid": "^8.3.2" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "@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 6877d3d1bea29..b13eb1890f037 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/core + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) ### Features diff --git a/packages/cubejs-client-core/package.json b/packages/cubejs-client-core/package.json index 62a31b9188387..4afc38b69d70a 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.7.14", + "version": "1.7.15", "engines": {}, "type": "module", "repository": { @@ -58,7 +58,7 @@ ], "license": "MIT", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/d3-format": "^3", "@types/d3-time-format": "^4", "@types/moment-range": "^4.0.0", diff --git a/packages/cubejs-client-dx/CHANGELOG.md b/packages/cubejs-client-dx/CHANGELOG.md index b12d8b7232ec7..f4655604e076d 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/dx + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 dc395fca1f020..f2b819ba4fc8e 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.7.14", + "version": "1.7.15", "engines": {}, "repository": { "type": "git", diff --git a/packages/cubejs-client-ngx/CHANGELOG.md b/packages/cubejs-client-ngx/CHANGELOG.md index 37c8141466889..f80ae9cdde5ff 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/ngx + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 f3ec8e4162c5c..6666efae85772 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.7.14", + "version": "1.7.15", "author": "Cube Dev, Inc.", "engines": {}, "repository": { diff --git a/packages/cubejs-client-react/CHANGELOG.md b/packages/cubejs-client-react/CHANGELOG.md index 6daaac9879fb1..4692663619cd8 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/react + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) ### Features diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json index 42a3c0edfa197..e8cb8720d33d5 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.7.14", + "version": "1.7.15", "author": "Cube Dev, Inc.", "license": "MIT", "engines": {}, @@ -26,7 +26,7 @@ ], "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.7.14", + "@cubejs-client/core": "1.7.15", "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 66b1823602401..2bb17f280ecb6 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/vue3 + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 be4e7a147708c..cc939c146872d 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.7.14", + "version": "1.7.15", "engines": {}, "repository": { "type": "git", @@ -27,7 +27,7 @@ "src" ], "dependencies": { - "@cubejs-client/core": "1.7.14", + "@cubejs-client/core": "1.7.15", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-client-ws-transport/CHANGELOG.md b/packages/cubejs-client-ws-transport/CHANGELOG.md index 098179341a9bb..c6675b40f0bea 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/ws-transport + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 80a518099c73f..ea1f79ce8bd71 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.7.14", + "version": "1.7.15", "engines": {}, "repository": { "type": "git", @@ -20,7 +20,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.7.14", + "@cubejs-client/core": "1.7.15", "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.7.14", + "@cubejs-backend/linter": "1.7.15", "@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 f38c5deab0b78..c9e81dfbbc18c 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/crate-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 0afc5da8f151d..100a8681c5841 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,13 +29,13 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/postgres-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14" + "@cubejs-backend/postgres-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "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 f849096867777..f7c508f11058d 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/cubestore-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 dbace01404a3c..60597ddaded31 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/cubestore": "1.7.14", - "@cubejs-backend/native": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/cubestore": "1.7.15", + "@cubejs-backend/native": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "csv-write-stream": "^2.0.0", "flatbuffers": "25.9.23", "fs-extra": "^9.1.0", @@ -40,7 +40,7 @@ "ws": "^7.4.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/csv-write-stream": "^2.0.0", "@types/jest": "^29", "@types/node": "^22", diff --git a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md index 6c26a93670258..f95b186dfefed 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 f517837370650..daff4d8092426 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.7.14", + "version": "1.7.15", "license": "Apache-2.0", "repository": { "type": "git", @@ -30,17 +30,17 @@ "bin" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/jdbc-driver": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/jdbc-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "node-fetch": "^2.6.1", "ramda": "^0.27.2", "source-map-support": "^0.5.19", "uuid": "^8.3.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "@types/ramda": "^0.27.34", diff --git a/packages/cubejs-dbt-schema-extension/CHANGELOG.md b/packages/cubejs-dbt-schema-extension/CHANGELOG.md index 16ea4fc609646..cbc5a4750ec19 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 f7313521b342c..d48018027c860 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.7.14", + "version": "1.7.15", "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.7.14", + "@cubejs-backend/schema-compiler": "1.7.15", "fs-extra": "^9.1.0", "inflection": "^1.12.0", "node-fetch": "^2.6.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing": "1.7.15", "@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 4602f0d89dc23..926d5640d67f7 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/docker + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 753e85c169143..f8487dc42e935 100644 --- a/packages/cubejs-docker/package.json +++ b/packages/cubejs-docker/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/docker", - "version": "1.7.14", + "version": "1.7.15", "description": "Cube.js In Docker (virtual package)", "author": "Cube Dev, Inc.", "license": "Apache-2.0", @@ -9,34 +9,34 @@ "node": ">=20.0.0" }, "dependencies": { - "@cubejs-backend/athena-driver": "1.7.14", - "@cubejs-backend/bigquery-driver": "1.7.14", - "@cubejs-backend/clickhouse-driver": "1.7.14", - "@cubejs-backend/crate-driver": "1.7.14", - "@cubejs-backend/databricks-jdbc-driver": "1.7.14", - "@cubejs-backend/dbt-schema-extension": "1.7.14", - "@cubejs-backend/dremio-driver": "1.7.14", - "@cubejs-backend/druid-driver": "1.7.14", - "@cubejs-backend/duckdb-driver": "1.7.14", - "@cubejs-backend/firebolt-driver": "1.7.14", - "@cubejs-backend/hive-driver": "1.7.14", - "@cubejs-backend/ksql-driver": "1.7.14", - "@cubejs-backend/materialize-driver": "1.7.14", - "@cubejs-backend/mongobi-driver": "1.7.14", - "@cubejs-backend/mssql-driver": "1.7.14", - "@cubejs-backend/mysql-driver": "1.7.14", - "@cubejs-backend/oracle-driver": "1.7.14", - "@cubejs-backend/pinot-driver": "1.7.14", - "@cubejs-backend/postgres-driver": "1.7.14", - "@cubejs-backend/prestodb-driver": "1.7.14", - "@cubejs-backend/questdb-driver": "1.7.14", - "@cubejs-backend/redshift-driver": "1.7.14", - "@cubejs-backend/server": "1.7.14", - "@cubejs-backend/snowflake-driver": "1.7.14", - "@cubejs-backend/sqlite-driver": "1.7.14", - "@cubejs-backend/trino-driver": "1.7.14", - "@cubejs-backend/vertica-driver": "1.7.14", - "cubejs-cli": "1.7.14", + "@cubejs-backend/athena-driver": "1.7.15", + "@cubejs-backend/bigquery-driver": "1.7.15", + "@cubejs-backend/clickhouse-driver": "1.7.15", + "@cubejs-backend/crate-driver": "1.7.15", + "@cubejs-backend/databricks-jdbc-driver": "1.7.15", + "@cubejs-backend/dbt-schema-extension": "1.7.15", + "@cubejs-backend/dremio-driver": "1.7.15", + "@cubejs-backend/druid-driver": "1.7.15", + "@cubejs-backend/duckdb-driver": "1.7.15", + "@cubejs-backend/firebolt-driver": "1.7.15", + "@cubejs-backend/hive-driver": "1.7.15", + "@cubejs-backend/ksql-driver": "1.7.15", + "@cubejs-backend/materialize-driver": "1.7.15", + "@cubejs-backend/mongobi-driver": "1.7.15", + "@cubejs-backend/mssql-driver": "1.7.15", + "@cubejs-backend/mysql-driver": "1.7.15", + "@cubejs-backend/oracle-driver": "1.7.15", + "@cubejs-backend/pinot-driver": "1.7.15", + "@cubejs-backend/postgres-driver": "1.7.15", + "@cubejs-backend/prestodb-driver": "1.7.15", + "@cubejs-backend/questdb-driver": "1.7.15", + "@cubejs-backend/redshift-driver": "1.7.15", + "@cubejs-backend/server": "1.7.15", + "@cubejs-backend/snowflake-driver": "1.7.15", + "@cubejs-backend/sqlite-driver": "1.7.15", + "@cubejs-backend/trino-driver": "1.7.15", + "@cubejs-backend/vertica-driver": "1.7.15", + "cubejs-cli": "1.7.15", "typescript": "~5.2.2" }, "resolutions": { diff --git a/packages/cubejs-dremio-driver/CHANGELOG.md b/packages/cubejs-dremio-driver/CHANGELOG.md index cf4d2196993a1..a87f8ee7a31cf 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/dremio-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 dd7ba3093456d..5d3d9cf4522fe 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -23,14 +23,14 @@ "lint:fix": "eslint driver/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "axios": "^1.8.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "jest": "^29" }, "license": "Apache-2.0", diff --git a/packages/cubejs-druid-driver/CHANGELOG.md b/packages/cubejs-druid-driver/CHANGELOG.md index 6906ffeb37a48..52961b56d0cfd 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/druid-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 e3f1602c47d30..c3faa761d2a1a 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.7.14", + "version": "1.7.15", "license": "Apache-2.0", "repository": { "type": "git", @@ -28,13 +28,13 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "axios": "^1.8.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-duckdb-driver/CHANGELOG.md b/packages/cubejs-duckdb-driver/CHANGELOG.md index 68c6cc8cb3c8f..44b4a259a37c8 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/duckdb-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 79381d64d1d85..08e27afc8a841 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "duckdb": "^1.4.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "jest": "^29", diff --git a/packages/cubejs-firebolt-driver/CHANGELOG.md b/packages/cubejs-firebolt-driver/CHANGELOG.md index f730ff59c745f..09aec9fd2c7be 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/firebolt-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 607f93edf97a4..85cc3069d45c5 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "firebolt-sdk": "1.10.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-hive-driver/CHANGELOG.md b/packages/cubejs-hive-driver/CHANGELOG.md index 7703a81bba06f..14e99ec8fd156 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/hive-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 a0da4e105b12c..99e9412973a36 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "jshs2": "^0.4.4", "sasl-plain": "^0.1.0", "saslmechanisms": "^0.1.1", @@ -27,7 +27,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14" + "@cubejs-backend/linter": "1.7.15" }, "publishConfig": { "access": "public" diff --git a/packages/cubejs-jdbc-driver/CHANGELOG.md b/packages/cubejs-jdbc-driver/CHANGELOG.md index 16f67ca3a7756..c5b6aeaa3e2a9 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/jdbc-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 4871ce468fe92..d86a52bfb3292 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -26,9 +26,9 @@ "index.js" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", "@cubejs-backend/node-java-maven": "^0.1.3", - "@cubejs-backend/shared": "1.7.14" + "@cubejs-backend/shared": "1.7.15" }, "optionalDependencies": { "@cubejs-backend/jdbc": "^0.9.0", @@ -42,7 +42,7 @@ "testEnvironment": "node" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/node": "^22", "typescript": "~5.2.2" } diff --git a/packages/cubejs-ksql-driver/CHANGELOG.md b/packages/cubejs-ksql-driver/CHANGELOG.md index 740e31fb63b13..05fec0ce23b22 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/ksql-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 54335b489925d..ee07a24df34aa 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -26,9 +26,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "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.7.14", + "@cubejs-backend/linter": "1.7.15", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-linter/CHANGELOG.md b/packages/cubejs-linter/CHANGELOG.md index cd3896a6b0ce4..0128e9bbf3ef2 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/linter + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 88535373470bd..012631905c7d7 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.7.14", + "version": "1.7.15", "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 8905d389e0329..969dfaaaa7320 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/materialize-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 311cfce9dea28..b35cd1b822570 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/postgres-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/postgres-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "semver": "^7.6.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing": "1.7.15", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-mongobi-driver/CHANGELOG.md b/packages/cubejs-mongobi-driver/CHANGELOG.md index 67dc98e6d2551..68b9604d21347 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/mongobi-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 bd8b94fafcea9..28daf7c234082 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@types/node": "^22", "moment": "^2.29.1", "mysql2": "^3.11.5" @@ -38,7 +38,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "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 3e82c5e01d5c7..1d13786d58a9e 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/mssql-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 52fc89cabaeb4..e1c61e455834a 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "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 d8bc0422cc018..737690f0d6e72 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 11da176b1a4e9..9616737fa57e7 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@types/mysql": "^2.15.15", "aws-sdk": "^2.787.0", "data-api-client": "^1.1.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@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 7f059a870b0ec..cfc562b938e28 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/mysql-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 597a6080b3162..2a6ba16c6703e 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,13 +27,13 @@ "lint:fix": "eslint --fix src/* test/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "mysql2": "^3.16.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "@types/jest": "^29", "jest": "^29", "stream-to-array": "^2.3.0", diff --git a/packages/cubejs-oracle-driver/CHANGELOG.md b/packages/cubejs-oracle-driver/CHANGELOG.md index e07fb3586c5c3..23e025e9feab0 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/oracle-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 52631c236e6bb..f544b7090ef02 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -13,8 +13,8 @@ }, "main": "driver/OracleDriver.js", "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-pinot-driver/CHANGELOG.md b/packages/cubejs-pinot-driver/CHANGELOG.md index 8cf110308b259..142e6057ee3c8 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/pinot-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 6d733d2fe917a..3016fc1217210 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,9 +28,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "node-fetch": "^2.6.1", "ramda": "^0.27.2" }, @@ -39,7 +39,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "jest": "^29", "should": "^13.2.3", diff --git a/packages/cubejs-playground/CHANGELOG.md b/packages/cubejs-playground/CHANGELOG.md index bd5cee127a95f..98f2093c8b84d 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-client/playground + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 ac3e9a10cd3a0..a139130411f09 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.7.14", + "version": "1.7.15", "engines": {}, "repository": { "type": "git", @@ -68,8 +68,8 @@ "@ant-design/compatible": "^1.0.1", "@ant-design/icons": "^5.3.5", "@cube-dev/ui-kit": "0.52.3", - "@cubejs-client/core": "1.7.14", - "@cubejs-client/react": "1.7.14", + "@cubejs-client/core": "1.7.15", + "@cubejs-client/react": "1.7.15", "@types/flexsearch": "^0.7.3", "@types/node": "^22", "@types/react": "^18.3.4", diff --git a/packages/cubejs-postgres-driver/CHANGELOG.md b/packages/cubejs-postgres-driver/CHANGELOG.md index 99ed37a735654..cc4b832b57817 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/postgres-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 9b5c21fcbe492..c3bf11e4e42bf 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@types/pg": "^8.16.0", "@types/pg-query-stream": "^1.0.3", "pg": "^8.18.0", @@ -36,8 +36,8 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "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 2b118f6e481df..612db72958dd7 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/prestodb-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 eee5a3364092f..ee2c66fdf7925 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,8 +28,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "presto-client": "1.2.0", "ramda": "^0.27.0" }, @@ -38,7 +38,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@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 31cc41eee4d51..7322d8f6a64b6 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/query-orchestrator + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 5a1d9c9116d7f..4134770c23a49 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,15 +29,15 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/cubestore-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/cubestore-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "csv-write-stream": "^2.0.0", "lru-cache": "^11.1.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^22", "@types/ramda": "^0.27.32", diff --git a/packages/cubejs-questdb-driver/CHANGELOG.md b/packages/cubejs-questdb-driver/CHANGELOG.md index b33994a5a9e29..2211cab277b81 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/questdb-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 2d37fbc92698b..3b9104d6942f4 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@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.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "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 688cdd97ffe75..a30fb8a951322 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/redshift-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 1754e6ff43052..d7b36039b4ded 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,13 +27,13 @@ "dependencies": { "@aws-sdk/client-redshift": "^3.22.0", "@aws-sdk/credential-providers": "^3.22.0", - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/postgres-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14" + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/postgres-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-schema-compiler/CHANGELOG.md b/packages/cubejs-schema-compiler/CHANGELOG.md index 6de273d5a7e45..571b61817a78f 100644 --- a/packages/cubejs-schema-compiler/CHANGELOG.md +++ b/packages/cubejs-schema-compiler/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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +### Bug Fixes + +- **tesseract:** project the requested grain into rolling-window CTEs ([#11400](https://github.com/cube-js/cube/issues/11400)) ([80d1159](https://github.com/cube-js/cube/commit/80d1159fd0d255f8b3b8799275bc921fabeaad5a)), closes [#11410](https://github.com/cube-js/cube/issues/11410) [#11413](https://github.com/cube-js/cube/issues/11413) + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) ### Bug Fixes diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json index 3ebf7068080d4..93973d2d78715 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.7.14", + "version": "1.7.15", "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.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/native": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "antlr4": "^4.13.2", "camelcase": "^6.2.0", "cron-parser": "^4.9.0", @@ -60,9 +60,9 @@ }, "devDependencies": { "@clickhouse/client": "^1.12.0", - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/mssql-driver": "1.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/mssql-driver": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", "@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 27d74dc13a97c..1046c61b749f5 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/server-core + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 f205a78e137c5..2294b24fab67b 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,16 +29,16 @@ "unit": "jest --runInBand --forceExit --coverage dist/test" }, "dependencies": { - "@cubejs-backend/api-gateway": "1.7.14", - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/cloud": "1.7.14", - "@cubejs-backend/cubestore-driver": "1.7.14", + "@cubejs-backend/api-gateway": "1.7.15", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/cloud": "1.7.15", + "@cubejs-backend/cubestore-driver": "1.7.15", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", - "@cubejs-backend/templates": "1.7.14", + "@cubejs-backend/native": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", + "@cubejs-backend/templates": "1.7.15", "codesandbox-import-utils": "^2.1.12", "cross-spawn": "^7.0.1", "fs-extra": "^8.1.0", @@ -62,8 +62,8 @@ "ws": "^7.5.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-client/playground": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-client/playground": "1.7.15", "@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 6944a03299019..c5f4d260cd870 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/server + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 2b3fe753db749..4c20043e42496 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.7.14", + "version": "1.7.15", "types": "index.d.ts", "repository": { "type": "git", @@ -40,11 +40,11 @@ "jest:shapshot": "jest --updateSnapshot test" }, "dependencies": { - "@cubejs-backend/cubestore-driver": "1.7.14", + "@cubejs-backend/cubestore-driver": "1.7.15", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.7.14", - "@cubejs-backend/server-core": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/native": "1.7.15", + "@cubejs-backend/server-core": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@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.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", "@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 8ec2db22d0cf1..f96522c3f7a17 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/snowflake-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 2b68b2da61251..6ffe30a3eadfb 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,8 +28,8 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.726.0", - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "snowflake-sdk": "^2.4.0" }, "license": "Apache-2.0", @@ -40,7 +40,7 @@ "extends": "../cubejs-linter" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "typescript": "~5.2.2", "vitest": "^4" } diff --git a/packages/cubejs-sqlite-driver/CHANGELOG.md b/packages/cubejs-sqlite-driver/CHANGELOG.md index 90fab56afc338..f542a3aa28533 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/sqlite-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 d398a2096534f..d6b208955d4b3 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -18,13 +18,13 @@ "unit": "jest" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "sqlite3": "^5.1.7" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "jest": "^29" }, "publishConfig": { diff --git a/packages/cubejs-templates/CHANGELOG.md b/packages/cubejs-templates/CHANGELOG.md index a2c8337a92c96..84ae5f34bd6c8 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/templates + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 8d9ff9b65b570..5aa27939e6eb5 100644 --- a/packages/cubejs-templates/package.json +++ b/packages/cubejs-templates/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/templates", - "version": "1.7.14", + "version": "1.7.15", "description": "Cube.js Templates helpers", "author": "Cube Dev, Inc.", "repository": { @@ -31,7 +31,7 @@ "extends": "../cubejs-linter" }, "dependencies": { - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/shared": "1.7.15", "cross-spawn": "^7.0.3", "decompress": "^4.2.1", "decompress-targz": "^4.1.1", @@ -41,7 +41,7 @@ "source-map-support": "^0.5.19" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-testing-drivers/CHANGELOG.md b/packages/cubejs-testing-drivers/CHANGELOG.md index 9e0f953f4d6a3..dcb9287a7d879 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/testing-drivers + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 bcb0bbb1ac6b3..56863af139828 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.7.14", + "version": "1.7.15", "description": "Cube.js drivers test suite", "author": "Cube Dev, Inc.", "repository": { @@ -86,28 +86,28 @@ "dist/src" ], "dependencies": { - "@cubejs-backend/athena-driver": "1.7.14", - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/bigquery-driver": "1.7.14", - "@cubejs-backend/clickhouse-driver": "1.7.14", - "@cubejs-backend/crate-driver": "1.7.14", - "@cubejs-backend/cubestore-driver": "1.7.14", - "@cubejs-backend/databricks-jdbc-driver": "1.7.14", + "@cubejs-backend/athena-driver": "1.7.15", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/bigquery-driver": "1.7.15", + "@cubejs-backend/clickhouse-driver": "1.7.15", + "@cubejs-backend/crate-driver": "1.7.15", + "@cubejs-backend/cubestore-driver": "1.7.15", + "@cubejs-backend/databricks-jdbc-driver": "1.7.15", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/mssql-driver": "1.7.14", - "@cubejs-backend/mysql-driver": "1.7.14", - "@cubejs-backend/oracle-driver": "1.7.14", - "@cubejs-backend/pinot-driver": "1.7.14", - "@cubejs-backend/postgres-driver": "1.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", - "@cubejs-backend/questdb-driver": "1.7.14", - "@cubejs-backend/server-core": "1.7.14", - "@cubejs-backend/shared": "1.7.14", - "@cubejs-backend/snowflake-driver": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", - "@cubejs-client/core": "1.7.14", - "@cubejs-client/ws-transport": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/mssql-driver": "1.7.15", + "@cubejs-backend/mysql-driver": "1.7.15", + "@cubejs-backend/oracle-driver": "1.7.15", + "@cubejs-backend/pinot-driver": "1.7.15", + "@cubejs-backend/postgres-driver": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", + "@cubejs-backend/questdb-driver": "1.7.15", + "@cubejs-backend/server-core": "1.7.15", + "@cubejs-backend/shared": "1.7.15", + "@cubejs-backend/snowflake-driver": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", + "@cubejs-client/core": "1.7.15", + "@cubejs-client/ws-transport": "1.7.15", "@jest/globals": "^29", "@types/jest": "^29", "@types/node": "^22", diff --git a/packages/cubejs-testing-shared/CHANGELOG.md b/packages/cubejs-testing-shared/CHANGELOG.md index 92f468274381b..28ff2e23aa28a 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/testing-shared + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 2242e7395261e..8462c1084923d 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.7.14", + "version": "1.7.15", "description": "Cube.js Testing Helpers", "author": "Cube Dev, Inc.", "repository": { @@ -26,16 +26,16 @@ ], "dependencies": { "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/query-orchestrator": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/query-orchestrator": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "@testcontainers/kafka": "~10.28.0", "dedent": "^0.7.0", "node-fetch": "^2.6.7", "testcontainers": "^10.28.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@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 8d31b8889545b..221c2a06355da 100644 --- a/packages/cubejs-testing/CHANGELOG.md +++ b/packages/cubejs-testing/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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +### Bug Fixes + +- **tesseract:** project the requested grain into rolling-window CTEs ([#11400](https://github.com/cube-js/cube/issues/11400)) ([80d1159](https://github.com/cube-js/cube/commit/80d1159fd0d255f8b3b8799275bc921fabeaad5a)), closes [#11410](https://github.com/cube-js/cube/issues/11410) [#11413](https://github.com/cube-js/cube/issues/11413) + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 cf1d492505b79..f85c823318dc0 100644 --- a/packages/cubejs-testing/package.json +++ b/packages/cubejs-testing/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing", - "version": "1.7.14", + "version": "1.7.15", "description": "Cube.js e2e tests", "author": "Cube Dev, Inc.", "repository": { @@ -91,15 +91,15 @@ "birdbox-fixtures" ], "dependencies": { - "@cubejs-backend/cubestore-driver": "1.7.14", + "@cubejs-backend/cubestore-driver": "1.7.15", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/ksql-driver": "1.7.14", - "@cubejs-backend/postgres-driver": "1.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", - "@cubejs-client/ws-transport": "1.7.14", + "@cubejs-backend/ksql-driver": "1.7.15", + "@cubejs-backend/postgres-driver": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", + "@cubejs-client/ws-transport": "1.7.15", "dedent": "^0.7.0", "fs-extra": "^8.1.0", "http-proxy": "^1.18.1", @@ -110,8 +110,8 @@ }, "devDependencies": { "@4tw/cypress-drag-drop": "^1.6.0", - "@cubejs-backend/linter": "1.7.14", - "@cubejs-client/core": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-client/core": "1.7.15", "@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 01f125406b66e..3f7517d6bf442 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/trino-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 f139ce019ba62..c963239f80192 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,10 +28,10 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/prestodb-driver": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/prestodb-driver": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "node-fetch": "^2.6.1", "presto-client": "^1.2.0" }, @@ -40,7 +40,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@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 439657e4a1f29..3ad57d16f047e 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.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +**Note:** Version bump only for package @cubejs-backend/vertica-driver + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-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 c8bef1dbfdb2b..5fe8f3fbc34d2 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.7.14", + "version": "1.7.15", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -19,16 +19,16 @@ "lint:fix": "eslint --fix **/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.14", - "@cubejs-backend/query-orchestrator": "1.7.14", - "@cubejs-backend/schema-compiler": "1.7.14", - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/base-driver": "1.7.15", + "@cubejs-backend/query-orchestrator": "1.7.15", + "@cubejs-backend/schema-compiler": "1.7.15", + "@cubejs-backend/shared": "1.7.15", "vertica-nodejs": "^1.0.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", - "@cubejs-backend/testing-shared": "1.7.14", + "@cubejs-backend/linter": "1.7.15", + "@cubejs-backend/testing-shared": "1.7.15", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0" diff --git a/rust/cubesql/CHANGELOG.md b/rust/cubesql/CHANGELOG.md index ed4bc21f40550..59fbe40409ad7 100644 --- a/rust/cubesql/CHANGELOG.md +++ b/rust/cubesql/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +### Features + +- **cubesql:** Separate env var for non-streaming query max row limit ([#11418](https://github.com/cube-js/cube/issues/11418)) ([236763a](https://github.com/cube-js/cube/commit/236763ad3936ac2a0df3bdd0bfc784d6df78c690)) +- **cubesql:** Split oversized CubeScan record batches ([#11384](https://github.com/cube-js/cube/issues/11384)) ([51db9c7](https://github.com/cube-js/cube/commit/51db9c7d4cc1cf4d50f7e48d4ec269982f01dff9)) + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) **Note:** Version bump only for package @cubejs-backend/cubesql diff --git a/rust/cubesql/package.json b/rust/cubesql/package.json index a08cbea5bd38b..20e21c3a673bc 100644 --- a/rust/cubesql/package.json +++ b/rust/cubesql/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubesql", - "version": "1.7.14", + "version": "1.7.15", "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 fb0e0fbd6cb68..ab6114bfc3143 100644 --- a/rust/cubestore/CHANGELOG.md +++ b/rust/cubestore/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.15](https://github.com/cube-js/cube/compare/v1.7.14...v1.7.15) (2026-07-30) + +### Bug Fixes + +- **cubestore:** cast aggregating index aggregation results back to the declared column types ([#11413](https://github.com/cube-js/cube/issues/11413)) ([26c4801](https://github.com/cube-js/cube/commit/26c4801629ef4851e3474e5d0a4ed4cf76c3d4d0)) +- **cubestore:** keep the projection schema when rewriting a rolling window ([#11410](https://github.com/cube-js/cube/issues/11410)) ([1bf2dd8](https://github.com/cube-js/cube/commit/1bf2dd848e9147afa94c19235bd0026899740609)) + ## [1.7.14](https://github.com/cube-js/cube/compare/v1.7.13...v1.7.14) (2026-07-29) **Note:** Version bump only for package @cubejs-backend/cubestore diff --git a/rust/cubestore/Cargo.lock b/rust/cubestore/Cargo.lock index 3eff8f667ef27..c57ab404c0fc2 100644 --- a/rust/cubestore/Cargo.lock +++ b/rust/cubestore/Cargo.lock @@ -1558,7 +1558,7 @@ dependencies = [ [[package]] name = "cubestore" -version = "1.7.14" +version = "1.7.15" dependencies = [ "actix-rt", "anyhow", diff --git a/rust/cubestore/cubestore/Cargo.toml b/rust/cubestore/cubestore/Cargo.toml index 53edd93dda4cd..a1558934e4d7a 100644 --- a/rust/cubestore/cubestore/Cargo.toml +++ b/rust/cubestore/cubestore/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cubestore" -version = "1.7.14" +version = "1.7.15" authors = ["Cube Dev, Inc."] edition = "2021" license = "Apache-2.0" diff --git a/rust/cubestore/package.json b/rust/cubestore/package.json index d52c79f415683..1ba8b9ba2776a 100644 --- a/rust/cubestore/package.json +++ b/rust/cubestore/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubestore", - "version": "1.7.14", + "version": "1.7.15", "description": "Cube.js pre-aggregation storage layer.", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -33,7 +33,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.14", + "@cubejs-backend/linter": "1.7.15", "@types/jest": "^29", "@types/node": "^18", "jest": "^29", @@ -43,7 +43,7 @@ "access": "public" }, "dependencies": { - "@cubejs-backend/shared": "1.7.14", + "@cubejs-backend/shared": "1.7.15", "@octokit/core": "^3.2.5", "source-map-support": "^0.5.19" },