diff --git a/CHANGELOG.md b/CHANGELOG.md index 619d1934feb6b..6e11e837d82dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +### Bug Fixes + +- Validate query timezone against IANA zones ([#11575](https://github.com/cube-js/cube/issues/11575)) ([d1ba22a](https://github.com/cube-js/cube/commit/d1ba22a31cdfdeb07b50cb3fc0763be6c2c57c4a)) + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) ### Performance Improvements diff --git a/docs-mintlify/docs.json b/docs-mintlify/docs.json index b366273051c7b..2002bbbc437b5 100644 --- a/docs-mintlify/docs.json +++ b/docs-mintlify/docs.json @@ -222,7 +222,8 @@ "docs/integrations/semantic-layer-sync/tableau" ] }, - "docs/integrations/mcp-server" + "docs/integrations/mcp-server", + "docs/integrations/agent-skills" ] } ] diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx index a29a4ce8b1866..1783f2f1b7c42 100644 --- a/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx @@ -18,3 +18,81 @@ Cube includes a library of built-in chart types covering the most common visuali - [HTML](/docs/explore-analyze/charts/chart-types/html) For configuration options that apply across chart types — axes, color, series settings, tooltips — see [Configure charts](/docs/explore-analyze/charts/configuration). + +## Recommended chart type + +When your query returns a result, Cube outlines the one chart type that best fits it and labels it +**Recommended**. It is a suggestion: every other available type stays selectable, and the outline +yields as soon as you pick a type in that picker. + +Cube never applies a chart type for you. The recommendation is always only outlined, wherever the +picker appears, and choosing a type is always your action. + +### What Cube looks at + +The recommendation reads the shape of your query and its result: how many measures, dimensions and +time dimensions you selected, how many distinct values each dimension has, and how long the +category labels are. It is computed in your browser and is not saved — the suggestion lasts for the +current session only. + +Where a threshold is involved, it comes from +[Draco](https://idl.cs.washington.edu/papers/draco/) (Moritz et al., *Formalizing Visualization +Design Knowledge as Constraints*, IEEE VIS 2018), which encodes established visualization research +as rules: a category axis becomes crowded past 12 values, a color or stacking channel saturates +past 10 series, and no axis reads past 30 values. + +One number is Cube's own rather than Draco's: a mean label length past **16 characters** counts as +long. + +No threshold is applied to the number of rows. A few rules read the row count directly — a KPI +needs exactly one row, a heatmap needs its grid at least half filled — but none of them treats "too +many rows" as a reason to recommend a different chart, because the row count follows the +granularity you chose rather than the shape of your query. + +### The conditions + +Cube first checks whether the query disqualifies every chart, and recommends the +[table](/docs/explore-analyze/charts/chart-types/table) if it does: + +| Recommendation | When | +| -- | -- | +| **Table** | The query has no measure, two time dimensions, three or more dimensions, or a category past 30 values | + +A query meeting any of these has no chart encoding that reads well, so the table is the honest +answer. [Maps](/docs/explore-analyze/charts/chart-types/map) are the exception and are still +recommended over the table — a map has no category axis to crowd, so a large number of plotted +places is normal rather than unreadable. + +Otherwise Cube checks these in order and takes the first that matches: + +| Recommendation | When | +| -- | -- | +| **Map** | The query contains latitude and longitude | +| **KPI** | One measure, no dimensions, and a single row | +| **Line** | A measure over a time dimension, optionally split by one category of up to 10 values | +| **Scatter** | Two or more measures with no time dimension, across one category or several rows — the shape for correlating them | +| **Bar (stacked)** | One measure split by two categories, the first up to 12 values and the second up to 10 | +| **Heatmap** | One measure split by two categories, both past those bounds — the first past 12 values and the second past 10 — whose combinations fill at least half the grid | +| **Bar** | One measure across up to 12 categories whose labels average 16 characters or fewer | +| **Bar (horizontal)** | The same, where the labels are longer or the categories run past 12 | + +The two [bar](/docs/explore-analyze/charts/chart-types/bar) rows are variants of the same chart +type, not separate ones. + +Pie, area, boxplot and HTML are never recommended — pick them yourself. Pie's shape, one measure +across a few categories, is the one Bar already answers, and a bar chart compares those values more +accurately. All four stay available in the picker like any other chart type. + +### When nothing is recommended + +Cube suppresses the recommendation rather than guessing. You will see no outline when: + +- no rule matches the query cleanly; +- a measure over time is split into 11 to 30 series — too many for a color channel, too few to give + up on; +- a value it needs is still unknown, such as the number of distinct values in a dimension; +- the result came back empty, so there is nothing to draw; +- the result was truncated by a row limit, so the counts it would read are incomplete; +- you have picked a type by hand in the picker you are looking at. The outline returns the next + time you open it — including on the type you applied, since Cube marks the best fit whether or + not it is already on screen. diff --git a/docs-mintlify/docs/explore-analyze/charts/index.mdx b/docs-mintlify/docs/explore-analyze/charts/index.mdx index 5bb8603fad291..54619133ffb08 100644 --- a/docs-mintlify/docs/explore-analyze/charts/index.mdx +++ b/docs-mintlify/docs/explore-analyze/charts/index.mdx @@ -13,15 +13,15 @@ Cube has built-in support for bar, line, area, pie, scatter, heatmap, KPI, map, Chart type icons at the top of the chart panel let you quickly switch between common layouts — grouped vs. stacked bars, line vs. area, table vs. chart view — without opening the full configuration panel. -Cube automatically picks a chart type when you run a new query. Any manual configuration you apply is preserved when you change query fields. +When you run a query on a new tab, Cube shows the chart type picker rather than picking for you. It outlines the type that best fits your query and labels it **Recommended** — see [Recommended chart type](/docs/explore-analyze/charts/chart-types#recommended-chart-type) — but choosing one is always your action. Any manual configuration you apply is preserved when you change query fields. ### Resetting chart settings -To discard your configuration and let Cube re-select a chart type based on the current query, open the tab options menu and choose **Reset chart**. +Sections of the configuration panel — fields, series, pivot, column widths — each carry their own **Reset** control, which clears that section back to its defaults. Resetting does not change the chart type you picked. ## Generate charts with AI -Describe the visualization you want in plain language — for example, _"show this as a stacked bar grouped by status"_ — and the AI agent will build and configure it. You can also let the agent auto-suggest the best chart for your query results. +Describe the visualization you want in plain language — for example, _"show this as a stacked bar grouped by status"_ — and the AI agent will build and configure it. You can also let the agent auto-suggest the best chart for your query results. This is a separate mechanism from the **Recommended** outline in the chart type picker: the agent writes a Vega-Lite spec and applies it, while the recommendation only marks a built-in type for you to pick. Charts generated by the AI are written as [Vega-Lite v5](https://vega.github.io/vega-lite/) specs and can be further edited in the [custom visualization](/docs/explore-analyze/charts/custom) spec editor. diff --git a/docs-mintlify/docs/explore-analyze/skills.mdx b/docs-mintlify/docs/explore-analyze/skills.mdx index f0648bde4e3fa..370ea3935c33c 100644 --- a/docs-mintlify/docs/explore-analyze/skills.mdx +++ b/docs-mintlify/docs/explore-analyze/skills.mdx @@ -14,6 +14,11 @@ Skills are authored by your data team as part of the semantic model. This page c to find and run them. To create skills, see [Skills](/admin/ai/skills) in the agent configuration docs. +This page covers **Agent Skills in Cube**. These are not +[Cube agent skills](/docs/integrations/agent-skills), which run in a coding agent and +operate Cube through the CLI, or the [Cube connector](/docs/integrations/mcp-server), +which connects Claude and other MCP clients directly to Cube. + The slash menu in Analytics Chat listing available agent skills, each with a title and description diff --git a/docs-mintlify/docs/integrations/agent-skills.mdx b/docs-mintlify/docs/integrations/agent-skills.mdx new file mode 100644 index 0000000000000..493d74143cc1e --- /dev/null +++ b/docs-mintlify/docs/integrations/agent-skills.mdx @@ -0,0 +1,119 @@ +--- +title: Cube agent skills +description: Install official Cube skills in your coding agent to operate Cube through the CLI. +--- + +[Cube agent skills](https://github.com/cube-js/cube-agent-skills) are instruction +packages that teach coding agents how to use the [Cube CLI](/reference/cli). They can +explore and change the semantic model, manage saved content and access, run queries, +configure embedded analytics, and operate deployments. + +> Cube agent skills run in your coding agent and operate Cube through the CLI. They are not Agent Skills in Cube, which your data team authors in the semantic model and runs from Analytics Chat. + +They are also separate from the [Cube connector](/docs/integrations/mcp-server), which +connects Claude directly to Cube for natural-language analytics. + +## Choose the right Cube integration + +| Thing | What it is | Where it runs | +| --- | --- | --- | +| [**Cube connector**](/docs/integrations/mcp-server) | Ask Cube questions in natural language | Claude — desktop, web, Code | +| **Cube agent skills** | Operate Cube — model, content, access, deployments | Your coding agent, over the `cube` CLI | +| [**Agent Skills in Cube**](/docs/explore-analyze/skills) | Saved workflows your data team authors in the semantic model | Analytics Chat, via the `/` menu | + +You can install the Cube connector and Cube agent skills together. The connector gives +Claude a direct path to governed analytics; the skills give your coding agent repeatable +operational workflows over the CLI. + +## Prerequisites + +Install the Cube CLI. On Linux or macOS, run: + +```bash +curl -fsSL https://raw.githubusercontent.com/cube-js/cube/master/install-cli.sh | sh +``` + +For Windows installation and other options, see [Cube CLI installation](/reference/cli#installation). + +Then authenticate with a browser: + +```bash +cube login --url https://TENANT.cubecloud.dev +``` + +For a headless environment, set `CUBE_API_URL` and `CUBE_API_KEY` instead. See +[Cube CLI authentication](/reference/cli#authentication) for both methods. + +Every skill checks that the CLI is installed, verifies authentication, and lists the +available Cube contexts before it acts, so you can confirm the target tenant. + +## Install + +### Claude Code + +Run these commands inside Claude Code: + +```text +/plugin marketplace add cube-js/cube-agent-skills +/plugin install cube@cube +``` + +### Codex, GitHub Copilot, Gemini CLI, and other compatible agents + +Install the skills from [skills.sh](https://skills.sh): + +```bash +npx skills add cube-js/cube-agent-skills +``` + +The source is public under Apache 2.0 at +[`cube-js/cube-agent-skills`](https://github.com/cube-js/cube-agent-skills). + +## Available skills + +| Skill | What it does | +| --- | --- | +| `cube-explore-model` | Searches and inspects cubes, views, measures, dimensions, joins, and model files. | +| `cube-build-model` | Authors cubes and views on a dev-mode branch, validates them, and prepares them to deploy. | +| `cube-explore-content` | Browses workbooks, dashboards, reports, folders, and scheduled notifications. | +| `cube-build-content` | Creates and updates workbooks, reports, dashboards, folders, and scheduled notifications. | +| `cube-run-query` | Runs semantic-layer queries and interprets the results. | +| `cube-configure-agent` | Inspects and tunes the in-product Cube agent, including rules, certified queries, and Agent Skills in Cube. | +| `cube-admin` | Manages users, groups, attributes, access policies, tenant settings, SCIM, and OIDC. | +| `cube-embed` | Configures embed sessions, tokens, embeddable dashboards, and embed tenants. | +| `cube-deploy` | Manages deployments, environments, environment variables, builds, and logs. | + +## Use the skills + +Skills activate automatically when a request matches their description. You can also name +a skill explicitly: + +```text +Use cube-build-model to add a churn measure. +``` + +The skills distinguish between inspection and state-changing work. Exploration skills are +read-only. Skills that write first inspect the current state, confirm the Cube context, and +use the platform's normal safety boundaries, such as dev-mode branches for data model edits. + +### Connector or `cube-run-query`? + +Use the [Cube connector](/docs/integrations/mcp-server) when you want Claude to answer a +natural-language data question directly in a conversation. Use `cube-run-query` when the +query is part of a broader coding-agent task—for example, validating a measure you just +changed, checking exact query output before saving a report, or combining query results +with repository work. + +Both paths apply the authenticated user's Cube permissions and security context. They are +complementary, so a Claude Code setup can use both. + +## Troubleshooting + +- **The agent says the Cube CLI is missing:** Install it from the + [Cube CLI reference](/reference/cli#installation), then start a new agent session. +- **Authentication fails:** Run `cube whoami`. If needed, sign in again with + `cube login --url https://TENANT.cubecloud.dev`. +- **The request targets the wrong tenant:** Run `cube context list` and tell the agent + which context to use. +- **A skill does not activate automatically:** Name it in the request, for example, + `Use cube-explore-model to find the revenue measure.` diff --git a/docs-mintlify/docs/integrations/mcp-server.mdx b/docs-mintlify/docs/integrations/mcp-server.mdx index 71c05e89811a4..e69485ee866b4 100644 --- a/docs-mintlify/docs/integrations/mcp-server.mdx +++ b/docs-mintlify/docs/integrations/mcp-server.mdx @@ -5,6 +5,12 @@ description: Connect MCP-aware assistants to Cube through a hosted HTTPS endpoin Cube MCP (Model Context Protocol) lets MCP-compatible AI clients connect to Cube over HTTPS using OAuth. +This page covers the **Cube connector**, which gives an AI assistant direct access to Cube +through MCP. It is not [Cube agent skills](/docs/integrations/agent-skills), which run in a +coding agent and operate Cube through the CLI, or +[Agent Skills in Cube](/docs/explore-analyze/skills), which are saved workflows your data +team authors for Analytics Chat. + The MCP server is available on [Premium and Enterprise plans](https://cube.dev/pricing).
Users need the [Viewer][ref-roles] role or higher to interact with the MCP server. Which tools a @@ -85,54 +91,27 @@ authenticated user is allowed to see. ## Connect to Claude -### Claude Code +Cube is available in the +[Claude Connectors Directory](https://claude.ai/customize/connectors). Connect it once +and use it in Claude on the web, desktop, or Claude Code—there is no endpoint to paste or +local server to configure. -```bash -claude mcp add --transport http cube-mcp-server https://cubecloud.dev/mcp -``` +1. In Claude on the web or desktop, open **Customize → Connectors**. +2. Click **+**, choose **Browse connectors**, and search for **Cube**. +3. Select Cube and click **Connect**. +4. Complete the Cube OAuth flow and choose your tenant. -#### Authentication and usage flow: +On a Team or Enterprise plan, an owner may need to enable Cube first under +**Admin Settings → Connectors**. -1. Run the command copied from **Admin → MCP Server → AI Clients → Claude Code**. -2. Then run Claude and use `/mcp` to list available servers. -3. Select `cube-mcp-server` and choose `Authenticate`. -4. A browser window opens for authentication. -5. Log into Cube and choose your tenant. -6. Return to Claude Code and start asking questions. +To use Cube in a chat, open the tools menu and enable the Cube connector, then ask a data +question. In Claude Code, run `/mcp` to confirm the connector is available and authenticate +if prompted. -### Claude (Team/Enterprise) - -1. Open Settings in Claude (web or desktop). -2. Scroll to **Integrations** and click **Add more**. -3. Use: - - **Integration name:** Cube MCP - - **Integration URL:** `https://cubecloud.dev/mcp` -4. Complete the OAuth flow to grant access. -5. Enable tools in any new chats. - -#### Use Cube in Claude chat - -1. Start a new chat in Claude. -2. Open the tools menu and enable **Cube MCP** (use the tools search if you have many tools). -3. Ask a data question. Toggle the tool off to disable it for that chat. - -### Claude (Desktop app) - -```json -{ - "mcpServers": { - "cube-mcp-server": { - "command": "npx", - "args": ["-y", "mcp-remote", "--transport", "http", "https://cubecloud.dev/mcp"] - } - } -} -``` - ## Connect to Cursor Add the MCP endpoint under Tools & MCP Settings, then complete the OAuth flow. diff --git a/docs-mintlify/reference/configuration/environment-variables.mdx b/docs-mintlify/reference/configuration/environment-variables.mdx index e60521f6f965e..7e7d17012181f 100644 --- a/docs-mintlify/reference/configuration/environment-variables.mdx +++ b/docs-mintlify/reference/configuration/environment-variables.mdx @@ -1106,6 +1106,13 @@ The default [time zone][ref-time-zone] for queries. You can set the time zone name in the [TZ Database Name][link-tzdb] format, e.g., `America/Los_Angeles`. + + +An invalid value fails at server startup. Only TZ Database names are accepted — fixed +UTC offsets such as `+05:00` are rejected. + + + This is the fallback. When [user time zones](/admin/time-zones) are enabled for the account, a resolved account, personal, dashboard, or embed zone is sent with the query and takes precedence over this value. @@ -1408,6 +1415,13 @@ for][ref-config-sched-refresh-timer]. | --------------------------------------------------------- | ---------------------- | --------------------- | | [A valid timezone from the tz database][wiki-tz-database] | N/A | N/A | + + +An invalid value fails at server startup. Only TZ Database names are accepted — fixed +UTC offsets such as `+05:00` are rejected. + + + It can be also set using the [`scheduled_refresh_time_zones` configuration option](/reference/configuration/config#scheduled_refresh_time_zones). diff --git a/lerna.json b/lerna.json index 20dedeb257652..26fd90b31fd2e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.7.23", + "version": "1.7.24", "npmClient": "yarn", "command": { "bootstrap": { diff --git a/packages/cubejs-api-gateway/CHANGELOG.md b/packages/cubejs-api-gateway/CHANGELOG.md index 15a7ab652875f..2379ddd3d6dd0 100644 --- a/packages/cubejs-api-gateway/CHANGELOG.md +++ b/packages/cubejs-api-gateway/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +### Bug Fixes + +- Validate query timezone against IANA zones ([#11575](https://github.com/cube-js/cube/issues/11575)) ([d1ba22a](https://github.com/cube-js/cube/commit/d1ba22a31cdfdeb07b50cb3fc0763be6c2c57c4a)) + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/api-gateway diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json index aed2702f2524d..8c35cadb6df51 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.23", + "version": "1.7.24", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/native": "1.7.23", - "@cubejs-backend/query-orchestrator": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/native": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@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.23", + "@cubejs-backend/linter": "1.7.24", "@types/express": "^4.17.21", "@types/jest": "^29", "@types/jsonwebtoken": "^9.0.2", diff --git a/packages/cubejs-api-gateway/src/gateway.ts b/packages/cubejs-api-gateway/src/gateway.ts index e595cc3e61c1b..1b5389d9e5c86 100644 --- a/packages/cubejs-api-gateway/src/gateway.ts +++ b/packages/cubejs-api-gateway/src/gateway.ts @@ -87,6 +87,7 @@ import { SubscriptionServer, WebSocketSendMessageFn } from './ws/subscription-se import { LocalSubscriptionStore } from './ws/local-subscription-store'; import { getPivotQuery, + cubeSqlRequestSchema, getQueryGranularity, normalizeQuery, normalizeQueryCancelPreAggregations, @@ -492,7 +493,12 @@ class ApiGateway { try { await this.assertApiScope('data', req.context?.securityContext); - await this.sqlServer.execSql(req.body.query, res, req.context?.securityContext, req.body.cache, req.body.timezone, req.body.throwContinueWait, req.context?.requestId); + const { error, value: body } = cubeSqlRequestSchema.validate(req.body); + if (error) { + throw new UserError(`Invalid query format: ${error.message || error.toString()}`); + } + + await this.sqlServer.execSql(body.query, res, req.context?.securityContext, body.cache, body.timezone, body.throwContinueWait, req.context?.requestId); } catch (e: any) { // Quickfix for https://github.com/cube-js/cube/issues/10450, // Right now, it's too complicated to fix the issue correctly, because @@ -997,7 +1003,7 @@ class ApiGateway { throw new UserError('No job description provided'); } - const { error } = preAggsJobsRequestSchema.validate(query); + const { error, value } = preAggsJobsRequestSchema.validate(query); if (error) { throw new UserError(`Invalid Job query format: ${error.message || error.toString()}`); } @@ -1006,7 +1012,7 @@ class ApiGateway { case 'post': result = await this.preAggregationsJobsPOST( context, - query.selector + value.selector ); if (result.length === 0) { throw new UserError( diff --git a/packages/cubejs-api-gateway/src/query.js b/packages/cubejs-api-gateway/src/query.js index c40ff69653f7c..bd2c4deef3124 100644 --- a/packages/cubejs-api-gateway/src/query.js +++ b/packages/cubejs-api-gateway/src/query.js @@ -1,7 +1,7 @@ import R from 'ramda'; -import moment from 'moment'; +import moment from 'moment-timezone'; import Joi from 'joi'; -import { getEnv } from '@cubejs-backend/shared'; +import { canonicalTimezone, getEnv } from '@cubejs-backend/shared'; import { UserError } from './user-error'; import { dateParser } from './date-parser'; @@ -56,6 +56,18 @@ const evaluatedPatchMeasureExpression = parsedPatchMeasureExpression.keys({ }); const id = Joi.string().regex(/^[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+$/); + +const cacheModeSchema = Joi.valid('stale-if-slow', 'stale-while-revalidate', 'must-revalidate', 'no-cache'); + +const timezoneSchema = Joi.string().custom((value, helpers) => { + const name = canonicalTimezone(value); + if (!name) { + return helpers.message({ custom: '{{#label}} must be a valid IANA time zone, got "{{#tz}}"' }, { tz: value }); + } + + return name; +}, 'timezone'); + // It might be member name, td+granularity or member expression const idOrMemberExpressionName = Joi.string().regex(/^[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+$|^[a-zA-Z0-9_]+$|^[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+$/); const dimensionWithTime = Joi.string().regex(/^[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)?$/); @@ -183,12 +195,12 @@ const querySchema = Joi.object().keys({ Joi.array().items(Joi.array().min(2).ordered(idOrMemberExpressionName, Joi.valid('asc', 'desc'))) ), segments: Joi.array().items(Joi.alternatives(id, memberExpression, parsedMemberExpression)), - timezone: Joi.string(), + timezone: timezoneSchema, limit: Joi.number().integer().strict().min(0), offset: Joi.number().integer().strict().min(0), total: Joi.boolean(), - cacheMode: Joi.valid('stale-if-slow', 'stale-while-revalidate', 'must-revalidate', 'no-cache'), - cache: Joi.valid('stale-if-slow', 'stale-while-revalidate', 'must-revalidate', 'no-cache'), + cacheMode: cacheModeSchema, + cache: cacheModeSchema, ungrouped: Joi.boolean(), responseFormat: Joi.valid('default', 'compact', 'columnar'), subqueryJoins: Joi.array().items(subqueryJoin), @@ -199,6 +211,13 @@ const querySchema = Joi.object().keys({ })), }); +export const cubeSqlRequestSchema = Joi.object().keys({ + query: Joi.string().required(), + timezone: timezoneSchema, + cache: cacheModeSchema, + throwContinueWait: Joi.boolean(), +}); + const normalizeQueryOrder = order => { let result = []; const normalizeOrderItem = (k, direction) => ([k, direction]); @@ -220,7 +239,7 @@ export const preAggsJobsRequestSchema = Joi.object({ securityContext: Joi.required(), }) ).min(1).required(), - timezones: Joi.array().items(Joi.string()).min(1).required(), + timezones: Joi.array().items(timezoneSchema).min(1).required(), dataSources: Joi.array().items(Joi.string()), cubes: Joi.array().items(Joi.string()), preAggregations: Joi.array().items(Joi.string()), @@ -416,7 +435,7 @@ function normalizeQueryCacheMode(query, cacheMode) { const normalizeQuery = (query, persistent, cacheMode) => { query = normalizeQueryCacheMode(query, cacheMode); query.timezone = query.timezone || getEnv('defaultTimezone'); - const { error } = querySchema.validate(query); + const { error, value } = querySchema.validate(query); if (error) { throw new UserError(`Invalid query format: ${error.message || error.toString()}`); } @@ -434,7 +453,7 @@ const normalizeQuery = (query, persistent, cacheMode) => { dimension: d.split('.').slice(0, 2).join('.'), granularity: d.split('.')[2] })); - const timezone = query.timezone || 'UTC'; + const timezone = value.timezone || 'UTC'; const def = getEnv('dbQueryDefaultLimit') <= getEnv('dbQueryLimit') ? getEnv('dbQueryDefaultLimit') @@ -497,8 +516,8 @@ const remapToQueryAdapterFormat = (query) => (query ? { const queryPreAggregationsSchema = Joi.object().keys({ expand: Joi.array().items(Joi.string()), metadata: Joi.object(), - timezone: Joi.string(), - timezones: Joi.array().items(Joi.string()), + timezone: timezoneSchema, + timezones: Joi.array().items(timezoneSchema), preAggregations: Joi.array().items(Joi.object().keys({ id: Joi.string().required(), cacheOnly: Joi.boolean(), @@ -509,14 +528,14 @@ const queryPreAggregationsSchema = Joi.object().keys({ }); const normalizeQueryPreAggregations = (query, defaultValues) => { - const { error } = queryPreAggregationsSchema.validate(query); + const { error, value } = queryPreAggregationsSchema.validate(query); if (error) { throw new UserError(`Invalid query format: ${error.message || error.toString()}`); } return { metadata: query.metadata, - timezones: query.timezones || (query.timezone && [query.timezone]) || defaultValues?.timezones || ['UTC'], + timezones: value.timezones || (value.timezone && [value.timezone]) || defaultValues?.timezones || ['UTC'], preAggregations: query.preAggregations, expand: query.expand }; @@ -524,7 +543,7 @@ const normalizeQueryPreAggregations = (query, defaultValues) => { const queryPreAggregationPreviewSchema = Joi.object().keys({ preAggregationId: Joi.string().required(), - timezone: Joi.string().required(), + timezone: timezoneSchema.required(), versionEntry: Joi.object().required().keys({ content_version: Joi.string(), last_updated_at: Joi.number(), @@ -536,12 +555,12 @@ const queryPreAggregationPreviewSchema = Joi.object().keys({ }); const normalizeQueryPreAggregationPreview = (query) => { - const { error } = queryPreAggregationPreviewSchema.validate(query); + const { error, value } = queryPreAggregationPreviewSchema.validate(query); if (error) { throw new UserError(`Invalid query format: ${error.message || error.toString()}`); } - return query; + return { ...query, timezone: value.timezone }; }; const queryCancelPreAggregationPreviewSchema = Joi.object().keys({ diff --git a/packages/cubejs-api-gateway/test/normalize-query.test.ts b/packages/cubejs-api-gateway/test/normalize-query.test.ts index 32f92cf763323..75229aaa49d62 100644 --- a/packages/cubejs-api-gateway/test/normalize-query.test.ts +++ b/packages/cubejs-api-gateway/test/normalize-query.test.ts @@ -1,5 +1,10 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import { normalizeQuery } from '../src/query'; +import { + cubeSqlRequestSchema, + normalizeQuery, + normalizeQueryPreAggregations, + normalizeQueryPreAggregationPreview, +} from '../src/query'; const baseQuery = { measures: ['Foo.count'], @@ -19,3 +24,140 @@ describe('responseFormat validation', () => { expect(() => normalizeQuery({ ...baseQuery, responseFormat: 'arrow' }, false)).toThrow(/Invalid query format/); }); }); + +describe('timezone validation', () => { + test.each(['UTC', 'America/New_York', 'Europe/Berlin', 'Asia/Tokyo'])( + 'accepts valid IANA timezone %s', + (tz) => { + const result = normalizeQuery({ ...baseQuery, timezone: tz }, false); + expect(result.timezone).toBe(tz); + } + ); + + test.each([ + ['america/new_york', 'America/New_York'], + ['AMERICA/NEW_YORK', 'America/New_York'], + ['utc', 'UTC'], + ['uTc', 'UTC'], + ])('accepts timezone case-insensitively and normalizes it: %s -> %s', (tz, expected) => { + const result = normalizeQuery({ ...baseQuery, timezone: tz }, false); + expect(result.timezone).toBe(expected); + }); + + test.each([ + 'Not/AZone', + '+05:00', + 'foo/bar', + ])('rejects invalid timezone %j', (tz) => { + expect(() => normalizeQuery({ ...baseQuery, timezone: tz }, false)).toThrow(/Invalid query format/); + }); + + describe('default timezone fallback', () => { + afterEach(() => { + delete process.env.CUBEJS_DEFAULT_TIMEZONE; + }); + + test('falls back to UTC when CUBEJS_DEFAULT_TIMEZONE is unset', () => { + delete process.env.CUBEJS_DEFAULT_TIMEZONE; + + const { timezone, ...queryWithoutTimezone } = baseQuery; + const result = normalizeQuery(queryWithoutTimezone, false); + expect(result.timezone).toBe('UTC'); + }); + + test('uses the canonicalized CUBEJS_DEFAULT_TIMEZONE when set', () => { + process.env.CUBEJS_DEFAULT_TIMEZONE = 'america/new_york'; + + const { timezone, ...queryWithoutTimezone } = baseQuery; + const result = normalizeQuery(queryWithoutTimezone, false); + expect(result.timezone).toBe('America/New_York'); + }); + }); +}); + +describe('normalizeQueryPreAggregations timezone handling', () => { + test('normalizes timezone to canonical IANA name', () => { + const result = normalizeQueryPreAggregations({ timezone: 'america/new_york' }, undefined); + expect(result.timezones).toEqual(['America/New_York']); + }); + + test('normalizes timezones array to canonical IANA names', () => { + const result = normalizeQueryPreAggregations({ timezones: ['utc', 'europe/berlin'] }, undefined); + expect(result.timezones).toEqual(['UTC', 'Europe/Berlin']); + }); + + test('rejects invalid timezone', () => { + expect(() => normalizeQueryPreAggregations({ timezones: ['Not/AZone'] }, undefined)).toThrow(/Invalid query format/); + }); +}); + +describe('normalizeQueryPreAggregationPreview timezone handling', () => { + const previewQuery = { + preAggregationId: 'cube.preAgg', + versionEntry: { content_version: 'a', structure_version: 'b' }, + }; + + test('normalizes timezone to canonical IANA name', () => { + const result = normalizeQueryPreAggregationPreview({ ...previewQuery, timezone: 'america/new_york' }); + expect(result.timezone).toBe('America/New_York'); + }); + + test('rejects invalid timezone', () => { + expect(() => normalizeQueryPreAggregationPreview({ ...previewQuery, timezone: 'Not/AZone' })).toThrow(/Invalid query format/); + }); +}); + +describe('cubeSqlRequestSchema', () => { + const baseBody = { query: 'SELECT 1' }; + + test('accepts a body with only the query', () => { + const { error, value } = cubeSqlRequestSchema.validate(baseBody); + expect(error).toBeUndefined(); + expect(value).toEqual(baseBody); + }); + + test('accepts every supported field', () => { + const { error, value } = cubeSqlRequestSchema.validate({ + ...baseBody, + timezone: 'America/Los_Angeles', + cache: 'stale-while-revalidate', + throwContinueWait: true, + }); + expect(error).toBeUndefined(); + expect(value.cache).toBe('stale-while-revalidate'); + expect(value.throwContinueWait).toBe(true); + }); + + test('requires the query', () => { + expect(cubeSqlRequestSchema.validate({}).error?.message).toMatch(/"query" is required/); + }); + + test('rejects an unknown field', () => { + expect(cubeSqlRequestSchema.validate({ ...baseBody, nope: 1 }).error).toBeDefined(); + }); + + test('rejects an unknown cache mode', () => { + expect(cubeSqlRequestSchema.validate({ ...baseBody, cache: 'sometimes' }).error).toBeDefined(); + }); + + test.each([ + ['america/new_york', 'America/New_York'], + ['uTc', 'UTC'], + ])('normalizes timezone %j -> %j', (tz, expected) => { + const { error, value } = cubeSqlRequestSchema.validate({ ...baseBody, timezone: tz }); + expect(error).toBeUndefined(); + expect(value.timezone).toBe(expected); + }); + + test.each([ + 'Not/AZone', + 'foo/bar', + ])('rejects invalid timezone %j', (tz) => { + expect(cubeSqlRequestSchema.validate({ ...baseBody, timezone: tz }).error?.message) + .toMatch(/valid IANA time zone/); + }); + + test.each([null, '', 123, true])('rejects timezone %j', (tz) => { + expect(cubeSqlRequestSchema.validate({ ...baseBody, timezone: tz }).error).toBeDefined(); + }); +}); diff --git a/packages/cubejs-athena-driver/CHANGELOG.md b/packages/cubejs-athena-driver/CHANGELOG.md index a9f28297a8189..94391d89cf777 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/athena-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 a6666fcda3ad3..4c6890e712d8c 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23" + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "@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 c516ac56df461..80ed686cade75 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/cloud + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 8349c831b9e9e..94a6feefc1b28 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.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "@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.23", + "@cubejs-backend/shared": "1.7.24", "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 9f701cb769df7..02610d11ad12d 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/maven + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 6da2b96e73e5c..2e400c81b9382 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.23", + "version": "1.7.24", "license": "Apache-2.0", "repository": { "type": "git", @@ -31,12 +31,12 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/shared": "1.7.24", "source-map-support": "^0.5.19", "xmlbuilder2": "^2.4.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 05b6b85f361be..6d2c0d622f7a2 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/native + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/native diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index 4257c2b02aef6..63a38723d2034 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.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "@types/jest": "^29", "@types/node": "^22", "cargo-cp-artifact": "^0.1.9", @@ -50,8 +50,8 @@ "uuid": "^11.1.1" }, "dependencies": { - "@cubejs-backend/cubesql": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/cubesql": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@cubejs-infra/post-installer": "^0.1.2" }, "resources": { diff --git a/packages/cubejs-backend-shared/CHANGELOG.md b/packages/cubejs-backend-shared/CHANGELOG.md index e0e04eddf79a0..c52824da94934 100644 --- a/packages/cubejs-backend-shared/CHANGELOG.md +++ b/packages/cubejs-backend-shared/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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +### Bug Fixes + +- Validate query timezone against IANA zones ([#11575](https://github.com/cube-js/cube/issues/11575)) ([d1ba22a](https://github.com/cube-js/cube/commit/d1ba22a31cdfdeb07b50cb3fc0763be6c2c57c4a)) + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 4fe4a81bdceb8..1f8ce1bd70bca 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.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "@types/bytes": "^3.1.5", "@types/cli-progress": "^3.9.1", "@types/jest": "^29", diff --git a/packages/cubejs-backend-shared/src/env.ts b/packages/cubejs-backend-shared/src/env.ts index ad63f10ba1cac..99750e51c973e 100644 --- a/packages/cubejs-backend-shared/src/env.ts +++ b/packages/cubejs-backend-shared/src/env.ts @@ -2,6 +2,7 @@ import { get } from 'env-var'; import { displayCLIWarning, displayCLIWarningOnce } from './cli'; import { isNativeSupported } from './platform'; +import { canonicalTimezone } from './timezone'; export class InvalidConfiguration extends Error { public constructor(key: string, value: any, description: string) { @@ -269,13 +270,25 @@ const variables: Record any> = { scheduledRefreshQueriesPerAppId: () => get('CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID').asIntPositive(), refreshWorkerConcurrency: () => get('CUBEJS_REFRESH_WORKER_CONCURRENCY') .asIntPositive(), - // eslint-disable-next-line consistent-return scheduledRefreshTimezones: () => { - const timezones = get('CUBEJS_SCHEDULED_REFRESH_TIMEZONES').asString(); + const timezones = get('CUBEJS_SCHEDULED_REFRESH_TIMEZONES') + .default('') + .asArray() + .map(timezone => timezone.trim()) + .filter(Boolean); + + return timezones.map(raw => { + const timezone = canonicalTimezone(raw); + if (!timezone) { + throw new InvalidConfiguration( + 'CUBEJS_SCHEDULED_REFRESH_TIMEZONES', + raw, + 'Must be a comma-separated list of valid IANA time zone names, e.g. UTC,America/Los_Angeles.' + ); + } - if (timezones) { - return timezones.split(',').map(t => t.trim()); - } + return timezone; + }); }, preAggregationsBuilder: () => get('CUBEJS_PRE_AGGREGATIONS_BUILDER').asBool(), gracefulShutdown: () => get('CUBEJS_GRACEFUL_SHUTDOWN') @@ -338,9 +351,20 @@ const variables: Record any> = { nestedFoldersDelimiter: () => get('CUBEJS_NESTED_FOLDERS_DELIMITER') .default('') .asString(), - defaultTimezone: () => get('CUBEJS_DEFAULT_TIMEZONE') - .default('UTC') - .asString(), + defaultTimezone: () => { + const value = (get('CUBEJS_DEFAULT_TIMEZONE').asString() || '').trim() || 'UTC'; + + const timezone = canonicalTimezone(value); + if (!timezone) { + throw new InvalidConfiguration( + 'CUBEJS_DEFAULT_TIMEZONE', + value, + 'Must be a valid IANA time zone name, e.g. UTC or America/Los_Angeles.' + ); + } + + return timezone; + }, preciseDecimalInCubestore: () => get('CUBEJS_DB_PRECISE_DECIMAL_IN_CUBESTORE') .default('false') .asBoolStrict(), diff --git a/packages/cubejs-backend-shared/src/index.ts b/packages/cubejs-backend-shared/src/index.ts index 9c4672d1fb668..6b5219c9880eb 100644 --- a/packages/cubejs-backend-shared/src/index.ts +++ b/packages/cubejs-backend-shared/src/index.ts @@ -21,6 +21,7 @@ export * from './http-utils'; export * from './cli'; export * from './proxy'; export * from './time'; +export * from './timezone'; export * from './process'; export * from './platform'; export * from './FileRepository'; diff --git a/packages/cubejs-backend-shared/src/timezone.ts b/packages/cubejs-backend-shared/src/timezone.ts new file mode 100644 index 0000000000000..76d250e141489 --- /dev/null +++ b/packages/cubejs-backend-shared/src/timezone.ts @@ -0,0 +1,25 @@ +import moment from 'moment-timezone'; + +/** + * Resolves `value` to a canonical tz-database zone name, matched case-insensitively, + * or `null` when it is unset or not a known zone. + * + * @throws {TypeError} when `value` is an empty string, or is neither a string nor unset. + */ +export function canonicalTimezone(value?: string | null): string | null { + if (value === undefined || value === null) { + return null; + } + + if (typeof value !== 'string') { + throw new TypeError(`Timezone must be a string, got ${typeof value}`); + } + + if (value === '') { + throw new TypeError('Timezone must not be empty'); + } + + const zone = moment.tz.zone(value); + + return zone ? zone.name : null; +} diff --git a/packages/cubejs-backend-shared/test/env.test.ts b/packages/cubejs-backend-shared/test/env.test.ts index 0bf0e80b7b4ff..65893dda63b8c 100644 --- a/packages/cubejs-backend-shared/test/env.test.ts +++ b/packages/cubejs-backend-shared/test/env.test.ts @@ -178,3 +178,91 @@ describe('getEnv(apiSecret / apiSecrets)', () => { expect(getEnv('apiSecrets')).toEqual(['only']); }); }); + +describe('getEnv(defaultTimezone / scheduledRefreshTimezones)', () => { + afterEach(() => { + delete process.env.CUBEJS_DEFAULT_TIMEZONE; + delete process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES; + }); + + // env-var's .default() does not fire for a present but blank value, and it does not trim. + test('defaultTimezone - unset / blank / padded resolve to UTC', () => { + delete process.env.CUBEJS_DEFAULT_TIMEZONE; + expect(getEnv('defaultTimezone')).toBe('UTC'); + + process.env.CUBEJS_DEFAULT_TIMEZONE = ''; + expect(getEnv('defaultTimezone')).toBe('UTC'); + + process.env.CUBEJS_DEFAULT_TIMEZONE = ' '; + expect(getEnv('defaultTimezone')).toBe('UTC'); + + process.env.CUBEJS_DEFAULT_TIMEZONE = ' UTC '; + expect(getEnv('defaultTimezone')).toBe('UTC'); + }); + + test('defaultTimezone - normalizes to the canonical IANA name', () => { + process.env.CUBEJS_DEFAULT_TIMEZONE = 'America/Los_Angeles'; + expect(getEnv('defaultTimezone')).toBe('America/Los_Angeles'); + + process.env.CUBEJS_DEFAULT_TIMEZONE = 'america/los_angeles'; + expect(getEnv('defaultTimezone')).toBe('America/Los_Angeles'); + + process.env.CUBEJS_DEFAULT_TIMEZONE = 'utc'; + expect(getEnv('defaultTimezone')).toBe('UTC'); + }); + + test('defaultTimezone(exception)', () => { + process.env.CUBEJS_DEFAULT_TIMEZONE = 'Europ/Berlin'; + expect(() => getEnv('defaultTimezone')).toThrowError( + 'Value "Europ/Berlin" is not valid for CUBEJS_DEFAULT_TIMEZONE. Must be a valid IANA time zone name, e.g. UTC or America/Los_Angeles.' + ); + + process.env.CUBEJS_DEFAULT_TIMEZONE = '+05:00'; + expect(() => getEnv('defaultTimezone')).toThrowError( + 'Value "+05:00" is not valid for CUBEJS_DEFAULT_TIMEZONE. Must be a valid IANA time zone name, e.g. UTC or America/Los_Angeles.' + ); + }); + + test('scheduledRefreshTimezones - unset resolves to an empty list', () => { + delete process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES; + expect(getEnv('scheduledRefreshTimezones')).toEqual([]); + }); + + test('scheduledRefreshTimezones - trims and normalizes each entry', () => { + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = 'utc, europe/berlin'; + expect(getEnv('scheduledRefreshTimezones')).toEqual(['UTC', 'Europe/Berlin']); + + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = 'America/New_York'; + expect(getEnv('scheduledRefreshTimezones')).toEqual(['America/New_York']); + }); + + // Trailing/repeated separators are common in .env files and compose YAML. + test('scheduledRefreshTimezones - ignores empty entries', () => { + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = 'UTC,'; + expect(getEnv('scheduledRefreshTimezones')).toEqual(['UTC']); + + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = 'UTC,,America/Los_Angeles'; + expect(getEnv('scheduledRefreshTimezones')).toEqual(['UTC', 'America/Los_Angeles']); + + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = ' UTC , '; + expect(getEnv('scheduledRefreshTimezones')).toEqual(['UTC']); + }); + + test('scheduledRefreshTimezones - blank resolves to an empty list', () => { + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = ''; + expect(getEnv('scheduledRefreshTimezones')).toEqual([]); + + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = ' '; + expect(getEnv('scheduledRefreshTimezones')).toEqual([]); + + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = ','; + expect(getEnv('scheduledRefreshTimezones')).toEqual([]); + }); + + test('scheduledRefreshTimezones(exception)', () => { + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = 'UTC,Nope/Zone'; + expect(() => getEnv('scheduledRefreshTimezones')).toThrowError( + 'Value "Nope/Zone" is not valid for CUBEJS_SCHEDULED_REFRESH_TIMEZONES. Must be a comma-separated list of valid IANA time zone names, e.g. UTC,America/Los_Angeles.' + ); + }); +}); diff --git a/packages/cubejs-backend-shared/test/timezone.test.ts b/packages/cubejs-backend-shared/test/timezone.test.ts new file mode 100644 index 0000000000000..0b817c7513c10 --- /dev/null +++ b/packages/cubejs-backend-shared/test/timezone.test.ts @@ -0,0 +1,65 @@ +import { canonicalTimezone } from '../src/timezone'; + +describe('canonicalTimezone', () => { + test.each([ + ['UTC', 'UTC'], + ['utc', 'UTC'], + ['uTc', 'UTC'], + ['America/New_York', 'America/New_York'], + ['america/new_york', 'America/New_York'], + ['AMERICA/NEW_YORK', 'America/New_York'], + ['Etc/GMT+5', 'Etc/GMT+5'], + ['GMT', 'GMT'], + ['EST', 'EST'], + ])('resolves %j to the canonical name %j', (value, expected) => { + expect(canonicalTimezone(value)).toBe(expected); + }); + + // Pinned deliberately: resolving links to their target would change query cache keys and + // pre-agg partition names for deployments already using them. + test.each([ + ['US/Pacific', 'US/Pacific'], + ['Asia/Calcutta', 'Asia/Calcutta'], + ['Europe/Kiev', 'Europe/Kiev'], + ])('keeps link name %j as-is', (value, expected) => { + expect(canonicalTimezone(value)).toBe(expected); + }); + + test.each([ + 'Not/AZone', + 'Europ/Berlin', + 'foo/bar', + '+05:00', + '+05', + '05', + // No trimming: API payloads must be exact. + ' UTC', + 'UTC ', + ' UTC ', + ])('returns null for invalid value %j', (value) => { + expect(canonicalTimezone(value)).toBeNull(); + }); + + test.each([ + undefined, + null, + ])('returns null for unset value %j', (value) => { + expect(canonicalTimezone(value)).toBeNull(); + }); + + test('throws for an empty string', () => { + expect(() => canonicalTimezone('')).toThrow(TypeError); + }); + + // The casts are the point: real callers are plain JS, so the signature is not enforced. + test.each([ + 123, + 0, + {}, + [], + true, + false, + ])('throws for non-string %j', (value) => { + expect(() => canonicalTimezone(value as any)).toThrow(TypeError); + }); +}); diff --git a/packages/cubejs-base-driver/CHANGELOG.md b/packages/cubejs-base-driver/CHANGELOG.md index 1df3fdb0a7e81..4eaf322b1b00c 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/base-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 faeb42e4821b4..89c8a2cf65d88 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.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/shared": "1.7.24", "@google-cloud/storage": "^7.13.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 71f8b5fe812f5..0623b9bcba3e3 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/bigquery-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 f8c2c291634f1..b4302fe96a224 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.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/base-driver": "1.7.24", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/shared": "1.7.24", "@google-cloud/bigquery": "^7.7.0", "@google-cloud/storage": "^7.13.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/testing-shared": "1.7.24", "@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 079adcdd6cd1b..a700f1dfb6825 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package cubejs-cli + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package cubejs-cli diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json index a6216674455dc..817dc791f5063 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.23", + "version": "1.7.24", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -30,10 +30,10 @@ "LICENSE" ], "dependencies": { - "@cubejs-backend/cloud": "1.7.23", + "@cubejs-backend/cloud": "1.7.24", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "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.23", - "@cubejs-backend/server": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/server": "1.7.24", "@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 7981ad75bc784..906874cf0b7a6 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/clickhouse-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 66c2a9a88de1b..c5340fcb4e5bd 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "moment": "^2.24.0", "sqlstring": "^2.3.1", "uuid": "^11.1.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "@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 1870a88609353..0edd436f82b64 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/core + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-client/core diff --git a/packages/cubejs-client-core/package.json b/packages/cubejs-client-core/package.json index 1de8698bdfce6..8dc3c0b93f17c 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.23", + "version": "1.7.24", "engines": {}, "type": "module", "repository": { @@ -58,7 +58,7 @@ ], "license": "MIT", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 e833c0c20058d..3ab90dcf1dcb8 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/dx + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 ff45d8526c853..220dcc851dfb8 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.23", + "version": "1.7.24", "engines": {}, "repository": { "type": "git", diff --git a/packages/cubejs-client-ngx/CHANGELOG.md b/packages/cubejs-client-ngx/CHANGELOG.md index aad90388e358d..5c7e8ffa76e52 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/ngx + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 510d517fa3d8c..230f050ccb0b7 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.23", + "version": "1.7.24", "author": "Cube Dev, Inc.", "engines": {}, "repository": { diff --git a/packages/cubejs-client-react/CHANGELOG.md b/packages/cubejs-client-react/CHANGELOG.md index cb516b2d59566..7091cbf2a4f16 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/react + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-client/react diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json index 806403857abfa..8d311afcd728c 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.23", + "version": "1.7.24", "author": "Cube Dev, Inc.", "license": "MIT", "engines": {}, @@ -26,7 +26,7 @@ ], "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.7.23", + "@cubejs-client/core": "1.7.24", "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 940053eae7622..f1738ed1206ea 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/vue3 + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 e11726cbb3101..58c779e4c562c 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.23", + "version": "1.7.24", "engines": {}, "repository": { "type": "git", @@ -27,7 +27,7 @@ "src" ], "dependencies": { - "@cubejs-client/core": "1.7.23", + "@cubejs-client/core": "1.7.24", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-client-ws-transport/CHANGELOG.md b/packages/cubejs-client-ws-transport/CHANGELOG.md index 9e0d78ff63beb..4725b9b6b91b4 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/ws-transport + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 ef9040184c5cb..420df0188a657 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.23", + "version": "1.7.24", "engines": {}, "repository": { "type": "git", @@ -20,7 +20,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.7.23", + "@cubejs-client/core": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "@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 7f5d6c3d45aed..4350bc7b30a03 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/crate-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 1f6c6a4110f98..bcf3bb83a7381 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23" + "@cubejs-backend/postgres-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "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 5e3f3a5677ba8..6104adc6f8539 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/cubestore-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 4659155607860..3a161b14a18df 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/cubestore": "1.7.23", - "@cubejs-backend/native": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/cubestore": "1.7.24", + "@cubejs-backend/native": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "@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 a654162bfab19..cc09670398bd3 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 c99488457de71..153c654025409 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.23", + "version": "1.7.24", "license": "Apache-2.0", "repository": { "type": "git", @@ -30,17 +30,17 @@ "bin" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/jdbc-driver": "1.7.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/jdbc-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "node-fetch": "^2.6.1", "ramda": "^0.27.2", "source-map-support": "^0.5.19", "uuid": "^11.1.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 d993c5bb0fd68..3290a75859299 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 5674ac49ac7a6..81cf1f142b5b4 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.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/schema-compiler": "1.7.24", "fs-extra": "^9.1.0", "inflection": "^1.12.0", "node-fetch": "^2.6.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing": "1.7.24", "@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 cf4f33cd793f8..9c2bd1fb571f0 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/docker + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/docker diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json index 35c302400ad13..76506fa2d59b8 100644 --- a/packages/cubejs-docker/package.json +++ b/packages/cubejs-docker/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/docker", - "version": "1.7.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/bigquery-driver": "1.7.23", - "@cubejs-backend/clickhouse-driver": "1.7.23", - "@cubejs-backend/crate-driver": "1.7.23", - "@cubejs-backend/databricks-jdbc-driver": "1.7.23", - "@cubejs-backend/dbt-schema-extension": "1.7.23", - "@cubejs-backend/dremio-driver": "1.7.23", - "@cubejs-backend/druid-driver": "1.7.23", - "@cubejs-backend/duckdb-driver": "1.7.23", - "@cubejs-backend/firebolt-driver": "1.7.23", - "@cubejs-backend/hive-driver": "1.7.23", - "@cubejs-backend/ksql-driver": "1.7.23", - "@cubejs-backend/materialize-driver": "1.7.23", - "@cubejs-backend/mongobi-driver": "1.7.23", - "@cubejs-backend/mssql-driver": "1.7.23", - "@cubejs-backend/mysql-driver": "1.7.23", - "@cubejs-backend/oracle-driver": "1.7.23", - "@cubejs-backend/pinot-driver": "1.7.23", - "@cubejs-backend/postgres-driver": "1.7.23", - "@cubejs-backend/prestodb-driver": "1.7.23", - "@cubejs-backend/questdb-driver": "1.7.23", - "@cubejs-backend/redshift-driver": "1.7.23", - "@cubejs-backend/server": "1.7.23", - "@cubejs-backend/snowflake-driver": "1.7.23", - "@cubejs-backend/sqlite-driver": "1.7.23", - "@cubejs-backend/trino-driver": "1.7.23", - "@cubejs-backend/vertica-driver": "1.7.23", - "cubejs-cli": "1.7.23", + "@cubejs-backend/athena-driver": "1.7.24", + "@cubejs-backend/bigquery-driver": "1.7.24", + "@cubejs-backend/clickhouse-driver": "1.7.24", + "@cubejs-backend/crate-driver": "1.7.24", + "@cubejs-backend/databricks-jdbc-driver": "1.7.24", + "@cubejs-backend/dbt-schema-extension": "1.7.24", + "@cubejs-backend/dremio-driver": "1.7.24", + "@cubejs-backend/druid-driver": "1.7.24", + "@cubejs-backend/duckdb-driver": "1.7.24", + "@cubejs-backend/firebolt-driver": "1.7.24", + "@cubejs-backend/hive-driver": "1.7.24", + "@cubejs-backend/ksql-driver": "1.7.24", + "@cubejs-backend/materialize-driver": "1.7.24", + "@cubejs-backend/mongobi-driver": "1.7.24", + "@cubejs-backend/mssql-driver": "1.7.24", + "@cubejs-backend/mysql-driver": "1.7.24", + "@cubejs-backend/oracle-driver": "1.7.24", + "@cubejs-backend/pinot-driver": "1.7.24", + "@cubejs-backend/postgres-driver": "1.7.24", + "@cubejs-backend/prestodb-driver": "1.7.24", + "@cubejs-backend/questdb-driver": "1.7.24", + "@cubejs-backend/redshift-driver": "1.7.24", + "@cubejs-backend/server": "1.7.24", + "@cubejs-backend/snowflake-driver": "1.7.24", + "@cubejs-backend/sqlite-driver": "1.7.24", + "@cubejs-backend/trino-driver": "1.7.24", + "@cubejs-backend/vertica-driver": "1.7.24", + "cubejs-cli": "1.7.24", "typescript": "~5.2.2" }, "resolutions": { diff --git a/packages/cubejs-dremio-driver/CHANGELOG.md b/packages/cubejs-dremio-driver/CHANGELOG.md index d23fdbe2985ad..35c10e4a887d0 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/dremio-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 7f0330335ea95..c95be6ba90ce2 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "axios": "^1.8.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "jest": "^29" }, "license": "Apache-2.0", diff --git a/packages/cubejs-druid-driver/CHANGELOG.md b/packages/cubejs-druid-driver/CHANGELOG.md index 94e7d7d2dd444..3f0267dd71712 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/druid-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 14dddf3f7f4bd..91b9b5751902c 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.23", + "version": "1.7.24", "license": "Apache-2.0", "repository": { "type": "git", @@ -28,13 +28,13 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "axios": "^1.8.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 0fce685dd3860..e789cc5a3df8c 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/duckdb-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 b9e7188ec6667..31195c8a7bcec 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "duckdb": "^1.4.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "@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 c32bb32025224..1dc433e3bd68e 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/firebolt-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 878edea8a7332..b20a745c561e4 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "firebolt-sdk": "1.10.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-hive-driver/CHANGELOG.md b/packages/cubejs-hive-driver/CHANGELOG.md index 414e9ab55fb2e..dd8910338677b 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/hive-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 31cda77ae8355..b8d45847a8007 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "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.23" + "@cubejs-backend/linter": "1.7.24" }, "publishConfig": { "access": "public" diff --git a/packages/cubejs-jdbc-driver/CHANGELOG.md b/packages/cubejs-jdbc-driver/CHANGELOG.md index d11435709f069..75a7b81ec1839 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/jdbc-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 447b33bba133c..504d30f435dec 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.23", + "version": "1.7.24", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -26,9 +26,9 @@ "index.js" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", "@cubejs-backend/node-java-maven": "^0.1.3", - "@cubejs-backend/shared": "1.7.23" + "@cubejs-backend/shared": "1.7.24" }, "optionalDependencies": { "@cubejs-backend/jdbc": "^0.9.0", @@ -42,7 +42,7 @@ "testEnvironment": "node" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@types/node": "^22", "typescript": "~5.2.2" } diff --git a/packages/cubejs-ksql-driver/CHANGELOG.md b/packages/cubejs-ksql-driver/CHANGELOG.md index d04494bb05446..dcde5d94af76a 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/ksql-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 46ea527ea8241..74ff137299d30 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-linter/CHANGELOG.md b/packages/cubejs-linter/CHANGELOG.md index 588e8b177ddd8..852a5043e649f 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/linter + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/linter diff --git a/packages/cubejs-linter/package.json b/packages/cubejs-linter/package.json index e5c320eb58a61..0350cceba50ea 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.23", + "version": "1.7.24", "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 45187f05a0b00..f03f8344bfd9d 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/materialize-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 4d01d80efaea1..62da36bedaeb9 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/postgres-driver": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/postgres-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "semver": "^7.6.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing": "1.7.24", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-mongobi-driver/CHANGELOG.md b/packages/cubejs-mongobi-driver/CHANGELOG.md index bca49ca728c45..c3395ab27c9ba 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/mongobi-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 69a8060745717..a157a3678dcb3 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@types/node": "^22", "moment": "^2.29.1", "mysql2": "^3.11.5" @@ -38,7 +38,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "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 fcf8927780269..c917cf88369d8 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/mssql-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 a919d21b3b853..47865653991bb 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "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 0317d765a9928..eff43e5794f1f 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 acc2a577854f8..5e092d3f31388 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@types/mysql": "^2.15.15", "aws-sdk": "^2.787.0", "data-api-client": "^1.1.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 83dc62d912597..cd68d1846f0cd 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/mysql-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 29f1a6fe1fc01..cd8e559995d13 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "mysql2": "^3.16.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "@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 48f889fbef5cc..9b068c6b0ddd7 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/oracle-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 25afe8683f94d..1a826f5b543dd 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-pinot-driver/CHANGELOG.md b/packages/cubejs-pinot-driver/CHANGELOG.md index 25124cb4a4f86..a927c123c0bf3 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/pinot-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 241948e1a1ac1..19d39f6f17ea4 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "node-fetch": "^2.6.1", "ramda": "^0.27.2" }, @@ -39,7 +39,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@types/jest": "^29", "jest": "^29", "should": "^13.2.3", diff --git a/packages/cubejs-playground/CHANGELOG.md b/packages/cubejs-playground/CHANGELOG.md index 73d49ada288d0..59c19a217feb5 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-client/playground + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-client/playground diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json index 8a2d35393e066..f9068563d0cd1 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.23", + "version": "1.7.24", "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.23", - "@cubejs-client/react": "1.7.23", + "@cubejs-client/core": "1.7.24", + "@cubejs-client/react": "1.7.24", "@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 bb79f55a914fe..c214d4b4b7db5 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/postgres-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) ### Performance Improvements diff --git a/packages/cubejs-postgres-driver/package.json b/packages/cubejs-postgres-driver/package.json index 62c7cd9cf731c..1c463f6ff58fe 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@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.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "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 da68d32ef7ad6..79dbc118c043c 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/prestodb-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 ff2d0f2c6313c..7a1a48ba4116f 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "presto-client": "1.2.0", "ramda": "^0.27.0" }, @@ -38,7 +38,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 c04921997c565..ed11211cf1dc1 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/query-orchestrator + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 aca2cb65e408a..0dbd33eec1942 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.23", + "version": "1.7.24", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,15 +29,15 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/cubestore-driver": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/cubestore-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "csv-write-stream": "^2.0.0", "lru-cache": "^11.1.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 4ef00bed36b1b..d4cd9a9e81b7c 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/questdb-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 e02d373fb9841..8ef51add01498 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@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.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "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 4ab888785fe03..9abd558b4ce64 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/redshift-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 ab27301320f03..eaaa2d4ac453c 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/postgres-driver": "1.7.23", - "@cubejs-backend/shared": "1.7.23" + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/postgres-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-schema-compiler/CHANGELOG.md b/packages/cubejs-schema-compiler/CHANGELOG.md index b2f96ee9d4f0b..1f25fde1550a6 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +### Bug Fixes + +- Validate query timezone against IANA zones ([#11575](https://github.com/cube-js/cube/issues/11575)) ([d1ba22a](https://github.com/cube-js/cube/commit/d1ba22a31cdfdeb07b50cb3fc0763be6c2c57c4a)) + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/schema-compiler diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json index 570b24eb6f437..4f603607df8db 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/native": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "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.23", - "@cubejs-backend/mssql-driver": "1.7.23", - "@cubejs-backend/query-orchestrator": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/mssql-driver": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", "@types/babel__code-frame": "^7.0.6", "@types/babel__generator": "^7.6.8", "@types/babel__traverse": "^7.20.5", diff --git a/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js b/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js index 162fb2290b202..b74e4b5279b60 100644 --- a/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js +++ b/packages/cubejs-schema-compiler/src/adapter/BaseQuery.js @@ -18,6 +18,7 @@ import { FROM_PARTITION_RANGE, MAX_SOURCE_ROW_LIMIT, QueryAlias, + canonicalTimezone, getEnv, localTimestampToUtc, timeSeries as timeSeriesBase, @@ -297,6 +298,18 @@ export class BaseQuery { this.from = this.options.from; this.multiStageQuery = this.options.multiStageQuery; this.timezone = this.options.timezone; + + // Backstop for every dialect convertTz() sink: callers that bypass the API gateway + // (queryRewrite, refresh scheduler, SQL API sessions) reach the dialects through here. + if (this.timezone) { + const timezone = canonicalTimezone(this.timezone); + if (!timezone) { + throw new UserError(`Incorrect timezone ${this.timezone}`); + } + + this.timezone = timezone; + } + this.rowLimit = this.options.rowLimit; this.offset = this.options.offset; /** @type {import('./PreAggregations').PreAggregations} */ @@ -939,7 +952,7 @@ export class BaseQuery { dimensions: this.options.dimensions, segments: this.options.segments, timeDimensions: this.options.timeDimensions, - timezone: this.options.timezone, + timezone: this.timezone, joinGraph: this.joinGraph, cubeEvaluator: this.cubeEvaluator, securityContext: this.contextSymbols.securityContext, @@ -997,7 +1010,7 @@ export class BaseQuery { dimensions: this.options.dimensions, segments: this.options.segments, timeDimensions: this.options.timeDimensions, - timezone: this.options.timezone, + timezone: this.timezone, joinGraph: this.joinGraph, cubeEvaluator: this.cubeEvaluator, order, diff --git a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts index f575e562453a9..cbc7352d841c0 100644 --- a/packages/cubejs-schema-compiler/test/unit/base-query.test.ts +++ b/packages/cubejs-schema-compiler/test/unit/base-query.test.ts @@ -95,6 +95,7 @@ describe('SQL Generation', () => { 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); + it('Simple query - time dimension', async () => { await compilers.compiler.compile(); @@ -122,6 +123,66 @@ describe('SQL Generation', () => { expect(queryAndParams[0]).toContain('GROUP BY 1, 2'); expect(queryAndParams[0]).toContain('ORDER BY 2'); }); + + const buildTimezoneQuery = (timezone: string) => new PostgresQuery(compilers, { + measures: ['cards.count'], + timeDimensions: [ + { + dimension: 'cards.createdAt', + granularity: 'day', + dateRange: ['2021-01-01', '2021-01-02'] + } + ], + timezone, + filters: [], + }); + + it.each([ + 'Not/AZone', + '+05:00', + '+05', + '05', + 'foo/bar', + ])('rejects invalid timezone %j', async (timezone) => { + await compilers.compiler.compile(); + expect(() => buildTimezoneQuery(timezone)).toThrow(UserError); + }); + + it.each([ + 'America/New_York', + 'america/new_york', + 'AMERICA/NEW_YORK', + 'utc', + 'uTc', + ])('accepts valid timezone regardless of case: %s', async (timezone) => { + await compilers.compiler.compile(); + expect(() => buildTimezoneQuery(timezone)).not.toThrow(); + }); + + it('renders a canonical timezone into SQL', async () => { + await compilers.compiler.compile(); + const [sql] = buildTimezoneQuery('America/New_York').buildSqlAndParams(); + expect(sql).toContain("AT TIME ZONE 'America/New_York'"); + }); + + // Counterpart: query_tools.rs `format!("Incorrect timezone {}", timezone)`. + it('reports the invalid zone with the same message as the native planner', async () => { + await compilers.compiler.compile(); + expect(() => buildTimezoneQuery('Not/AZone')).toThrow('Incorrect timezone Not/AZone'); + }); + + // The native planner parses the zone case-sensitively, so the name reaching the + // dialects has to be the canonical one whichever planner runs. + it.each([ + ['utc', 'UTC'], + ['america/new_york', 'America/New_York'], + ])('canonicalizes timezone %j to %j', async (timezone, expected) => { + await compilers.compiler.compile(); + const query = buildTimezoneQuery(timezone); + expect(query.timezone).toBe(expected); + expect(query.buildSqlAndParams()[0]).toContain(`AT TIME ZONE '${expected}'`); + }); + it('Simple query - complex measure', async () => { await compilers.compiler.compile(); @@ -137,6 +198,7 @@ describe('SQL Generation', () => { 'FROM card_tbl AS "cards"'; expect(queryAndParams[0]).toEqual(expected); }); + it('Simple query - complex dimension', async () => { await compilers.compiler.compile(); @@ -157,6 +219,7 @@ describe('SQL Generation', () => { 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); + it('Simple query - CUBE dimension', async () => { await compilers.compiler.compile(); @@ -177,6 +240,7 @@ describe('SQL Generation', () => { 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); + it('Simple query - CUBE id', async () => { await compilers.compiler.compile(); @@ -197,6 +261,7 @@ describe('SQL Generation', () => { 'ORDER BY 2 DESC'; expect(queryAndParams[0]).toEqual(expected); }); + it('Simple query - simple filter', async () => { await compilers.compiler.compile(); @@ -241,6 +306,7 @@ describe('SQL Generation', () => { const expectedParams = ['type_value', 'not_type_value', 'type_value']; expect(queryAndParams[1]).toEqual(expectedParams); }); + it('Simple query - null and many equals filter', async () => { await compilers.compiler.compile(); diff --git a/packages/cubejs-server-core/CHANGELOG.md b/packages/cubejs-server-core/CHANGELOG.md index 49bf23c024757..f0c49783cf028 100644 --- a/packages/cubejs-server-core/CHANGELOG.md +++ b/packages/cubejs-server-core/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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +### Bug Fixes + +- Validate query timezone against IANA zones ([#11575](https://github.com/cube-js/cube/issues/11575)) ([d1ba22a](https://github.com/cube-js/cube/commit/d1ba22a31cdfdeb07b50cb3fc0763be6c2c57c4a)) + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 b92ccf0db82e2..22b7e7387d888 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/cloud": "1.7.23", - "@cubejs-backend/cubestore-driver": "1.7.23", + "@cubejs-backend/api-gateway": "1.7.24", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/cloud": "1.7.24", + "@cubejs-backend/cubestore-driver": "1.7.24", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.7.23", - "@cubejs-backend/query-orchestrator": "1.7.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", - "@cubejs-backend/templates": "1.7.23", + "@cubejs-backend/native": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", + "@cubejs-backend/templates": "1.7.24", "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.23", - "@cubejs-client/playground": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-client/playground": "1.7.24", "@types/cross-spawn": "^6.0.2", "@types/express": "^4.17.21", "@types/fs-extra": "^9.0.8", diff --git a/packages/cubejs-server-core/src/core/OptsHandler.ts b/packages/cubejs-server-core/src/core/OptsHandler.ts index 8021bb08bf7b7..328f5130055f1 100644 --- a/packages/cubejs-server-core/src/core/OptsHandler.ts +++ b/packages/cubejs-server-core/src/core/OptsHandler.ts @@ -30,38 +30,25 @@ import { } from './types'; import { lookupDriverClass, isDriver } from './DriverResolvers'; import type { CubejsServerCore } from './server'; -import optionsValidate from './optionsValidate'; +import { validateOptions } from './optionsValidate'; const { version } = require('../../../package.json'); -/** - * Driver service class. - */ export class OptsHandler { - /** - * Class constructor. - */ public constructor( private core: CubejsServerCore, private createOptions: CreateOptions, private systemOptions?: SystemOptions, ) { - this.assertOptions(createOptions); - const options = cloneDeep(this.createOptions); + const options = this.sanitizeOptions(cloneDeep(this.createOptions)); const driverFactory = this.getDriverFactory(options); options.driverFactory = driverFactory; options.dbType = this.getDbType(driverFactory); this.initializedOptions = this.initializeCoreOptions(options); } - /** - * Decorated driverFactory flag. - */ private decoratedFactory = false; - /** - * Returns true if the user provided a custom driverFactory. - */ public isCustomDriverFactory(): boolean { return !this.decoratedFactory; } @@ -71,15 +58,9 @@ export class OptsHandler { */ private driverFactoryType: undefined | 'BaseDriver' | 'DriverConfig'; - /** - * Initialized options. - */ private initializedOptions: ServerCoreInitializedOptions; - /** - * Assert create options. - */ - private assertOptions(opts: CreateOptions) { + private sanitizeOptions(opts: T): T { if ((opts as any).dbType) { throw new Error( 'CreateOptions.dbType was removed in v1.7.0. ' + @@ -89,7 +70,10 @@ export class OptsHandler { ); } - optionsValidate(opts); + const validated = validateOptions(opts); + + // Probed for its throw: the only consumer is per-request code (normalizeQuery) + getEnv('defaultTimezone'); if ( !this.isDevMode() && @@ -100,6 +84,8 @@ export class OptsHandler { 'Either CUBEJS_DB_TYPE or CreateOptions.driverFactory must be specified' ); } + + return validated; } /** diff --git a/packages/cubejs-server-core/src/core/optionsValidate.ts b/packages/cubejs-server-core/src/core/optionsValidate.ts index 0ba331d9f9476..8b398d1ee5361 100644 --- a/packages/cubejs-server-core/src/core/optionsValidate.ts +++ b/packages/cubejs-server-core/src/core/optionsValidate.ts @@ -1,6 +1,16 @@ import Joi from 'joi'; +import { canonicalTimezone } from '@cubejs-backend/shared'; import DriverDependencies from './DriverDependencies'; +const timezoneSchema = Joi.string().custom((value, helpers) => { + const name = canonicalTimezone(value); + if (!name) { + return helpers.message({ custom: '{{#label}} must be a valid IANA time zone name, got "{{#tz}}"' }, { tz: value }); + } + + return name; +}, 'timezone'); + const schemaQueueOptions = Joi.object().strict(true).keys({ concurrency: Joi.number().min(1).integer(), continueWaitTimeout: Joi.number().min(0).max(90).integer(), @@ -96,7 +106,7 @@ const schemaOptions = Joi.object().keys({ Joi.number().min(0).integer() ), scheduledRefreshTimeZones: Joi.alternatives().try( - Joi.array().items(Joi.string()), + Joi.array().items(timezoneSchema), Joi.func() ), scheduledRefreshContexts: Joi.func(), @@ -150,9 +160,11 @@ const schemaOptions = Joi.object().keys({ fastReload: Joi.boolean(), }); -export default (options: any) => { - const { error } = schemaOptions.validate(options, { abortEarly: false }); +export function validateOptions(options: T): T { + const { error, value } = schemaOptions.validate(options, { abortEarly: false }); if (error) { throw new Error(`Invalid cube-server-core options: ${error.message || error.toString()}`); } -}; + + return value; +} diff --git a/packages/cubejs-server-core/test/unit/OptsHandler.test.ts b/packages/cubejs-server-core/test/unit/OptsHandler.test.ts index db97854bbe5a5..f3fdb456e937b 100644 --- a/packages/cubejs-server-core/test/unit/OptsHandler.test.ts +++ b/packages/cubejs-server-core/test/unit/OptsHandler.test.ts @@ -1203,3 +1203,52 @@ describe('OptsHandler class', () => { expect(permissions).toEqual(['graphql', 'meta', 'data', 'jobs']); }); }); + +describe('OptsHandler timezone env validation', () => { + beforeEach(() => { + process.env.CUBEJS_DB_TYPE = 'postgres'; + }); + + afterEach(() => { + delete process.env.CUBEJS_DEFAULT_TIMEZONE; + delete process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES; + }); + + test('must throw at construction if CUBEJS_DEFAULT_TIMEZONE is not a valid zone', () => { + process.env.CUBEJS_DEFAULT_TIMEZONE = 'Europ/Berlin'; + + expect(() => new CubejsServerCoreExposed(conf)) + .toThrow(/CUBEJS_DEFAULT_TIMEZONE/); + }); + + test('must construct when CUBEJS_DEFAULT_TIMEZONE is unset or valid in any case', () => { + delete process.env.CUBEJS_DEFAULT_TIMEZONE; + expect(() => new CubejsServerCoreExposed(conf)).not.toThrow(); + + process.env.CUBEJS_DEFAULT_TIMEZONE = 'america/new_york'; + expect(() => new CubejsServerCoreExposed(conf)).not.toThrow(); + }); + + test('must throw at construction if CUBEJS_SCHEDULED_REFRESH_TIMEZONES has an invalid entry', () => { + process.env.CUBEJS_SCHEDULED_REFRESH_TIMEZONES = 'UTC,Nope/Zone'; + + expect(() => new CubejsServerCoreExposed(conf)) + .toThrow(/CUBEJS_SCHEDULED_REFRESH_TIMEZONES/); + }); + + test('must throw at construction if CreateOptions.scheduledRefreshTimeZones has an invalid entry', () => { + expect(() => new CubejsServerCoreExposed({ + ...conf, + scheduledRefreshTimeZones: ['UTC', 'Nope/Zone'], + })).toThrow(/valid IANA time zone name/); + }); + + test('must canonicalize CreateOptions.scheduledRefreshTimeZones', () => { + const core = new CubejsServerCoreExposed({ + ...conf, + scheduledRefreshTimeZones: ['utc', 'america/new_york'], + }); + + expect(core.options.scheduledRefreshTimeZones).toEqual(['UTC', 'America/New_York']); + }); +}); diff --git a/packages/cubejs-server-core/test/unit/optionsValidate.test.ts b/packages/cubejs-server-core/test/unit/optionsValidate.test.ts new file mode 100644 index 0000000000000..fd657744fcc82 --- /dev/null +++ b/packages/cubejs-server-core/test/unit/optionsValidate.test.ts @@ -0,0 +1,47 @@ +import { validateOptions } from '../../src/core/optionsValidate'; + +describe('validateOptions scheduledRefreshTimeZones', () => { + test('accepts valid IANA timezones', () => { + expect(() => validateOptions({ scheduledRefreshTimeZones: ['UTC', 'America/New_York'] })).not.toThrow(); + }); + + test('accepts a function', () => { + expect(() => validateOptions({ scheduledRefreshTimeZones: async () => ['UTC'] })).not.toThrow(); + }); + + test('accepts timezones case-insensitively', () => { + expect(() => validateOptions({ scheduledRefreshTimeZones: ['utc', 'america/new_york'] })).not.toThrow(); + }); + + test('returns canonical timezone names', () => { + expect(validateOptions({ scheduledRefreshTimeZones: ['utc', 'america/new_york'] })) + .toEqual({ scheduledRefreshTimeZones: ['UTC', 'America/New_York'] }); + }); + + test('rejects an invalid timezone with a descriptive message', () => { + expect(() => validateOptions({ scheduledRefreshTimeZones: ['Not/AZone'] })) + .toThrow(/valid IANA time zone name/); + }); + + test('names the offending value in the error message', () => { + expect(() => validateOptions({ scheduledRefreshTimeZones: ['UTC', 'Europ/Berlin'] })) + .toThrow(/Europ\/Berlin/); + }); +}); + +describe('validateOptions sanitized result', () => { + test('preserves function options by reference', () => { + const driverFactory = () => ({ type: 'postgres' }); + const validated = validateOptions({ driverFactory }); + + expect(validated.driverFactory).toBe(driverFactory); + }); + + test('does not mutate the input', () => { + const options = { scheduledRefreshTimeZones: ['utc'] }; + const validated = validateOptions(options); + + expect(options.scheduledRefreshTimeZones).toEqual(['utc']); + expect(validated).not.toBe(options); + }); +}); diff --git a/packages/cubejs-server/CHANGELOG.md b/packages/cubejs-server/CHANGELOG.md index a12e0550f8336..f811fc3ba4e12 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/server + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/server diff --git a/packages/cubejs-server/package.json b/packages/cubejs-server/package.json index 00de3bc34c755..2d9243dadff50 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.23", + "version": "1.7.24", "types": "index.d.ts", "repository": { "type": "git", @@ -40,11 +40,11 @@ "jest:shapshot": "jest --updateSnapshot test" }, "dependencies": { - "@cubejs-backend/cubestore-driver": "1.7.23", + "@cubejs-backend/cubestore-driver": "1.7.24", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.7.23", - "@cubejs-backend/server-core": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/native": "1.7.24", + "@cubejs-backend/server-core": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@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.23", - "@cubejs-backend/query-orchestrator": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", "@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 f016c87795e99..88b6f39c35ad1 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/snowflake-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 4cc318d3bd8a9..dfd637ebe7d44 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.23", + "version": "1.7.24", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,8 +29,8 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.726.0", - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "snowflake-sdk": "^2.4.0" }, "license": "Apache-2.0", @@ -41,7 +41,7 @@ "extends": "../cubejs-linter" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "typescript": "~5.2.2", "vitest": "^4" } diff --git a/packages/cubejs-sqlite-driver/CHANGELOG.md b/packages/cubejs-sqlite-driver/CHANGELOG.md index f96dfad586869..24ab1719cfd82 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/sqlite-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 2caba2147711e..05ad10c9fffd5 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.23", + "version": "1.7.24", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -18,13 +18,13 @@ "unit": "jest" }, "dependencies": { - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "sqlite3": "^5.1.7" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "jest": "^29" }, "publishConfig": { diff --git a/packages/cubejs-templates/CHANGELOG.md b/packages/cubejs-templates/CHANGELOG.md index 534fcc11eec4d..10de40ce15788 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/templates + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/templates diff --git a/packages/cubejs-templates/package.json b/packages/cubejs-templates/package.json index 49b4dcf4caa67..389d002095c21 100644 --- a/packages/cubejs-templates/package.json +++ b/packages/cubejs-templates/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/templates", - "version": "1.7.23", + "version": "1.7.24", "description": "Cube.js Templates helpers", "author": "Cube Dev, Inc.", "repository": { @@ -31,7 +31,7 @@ "extends": "../cubejs-linter" }, "dependencies": { - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/shared": "1.7.24", "cross-spawn": "^7.0.3", "fs-extra": "^9.1.0", "node-fetch": "^2.6.1", @@ -40,7 +40,7 @@ "tar": "^7.5.22" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-testing-drivers/CHANGELOG.md b/packages/cubejs-testing-drivers/CHANGELOG.md index 3c9c4acf2047f..ef835cf207476 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/testing-drivers + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 2fe14422c8f07..73a6fa15d78e8 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.23", + "version": "1.7.24", "description": "Cube.js drivers test suite", "author": "Cube Dev, Inc.", "repository": { @@ -87,29 +87,29 @@ "dist/src" ], "dependencies": { - "@cubejs-backend/athena-driver": "1.7.23", - "@cubejs-backend/base-driver": "1.7.23", - "@cubejs-backend/bigquery-driver": "1.7.23", - "@cubejs-backend/clickhouse-driver": "1.7.23", - "@cubejs-backend/crate-driver": "1.7.23", - "@cubejs-backend/cubestore-driver": "1.7.23", - "@cubejs-backend/databricks-jdbc-driver": "1.7.23", + "@cubejs-backend/athena-driver": "1.7.24", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/bigquery-driver": "1.7.24", + "@cubejs-backend/clickhouse-driver": "1.7.24", + "@cubejs-backend/crate-driver": "1.7.24", + "@cubejs-backend/cubestore-driver": "1.7.24", + "@cubejs-backend/databricks-jdbc-driver": "1.7.24", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/mssql-driver": "1.7.23", - "@cubejs-backend/mysql-driver": "1.7.23", - "@cubejs-backend/oracle-driver": "1.7.23", - "@cubejs-backend/pinot-driver": "1.7.23", - "@cubejs-backend/postgres-driver": "1.7.23", - "@cubejs-backend/query-orchestrator": "1.7.23", - "@cubejs-backend/questdb-driver": "1.7.23", - "@cubejs-backend/server-core": "1.7.23", - "@cubejs-backend/shared": "1.7.23", - "@cubejs-backend/snowflake-driver": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", - "@cubejs-backend/trino-driver": "1.7.23", - "@cubejs-client/core": "1.7.23", - "@cubejs-client/ws-transport": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/mssql-driver": "1.7.24", + "@cubejs-backend/mysql-driver": "1.7.24", + "@cubejs-backend/oracle-driver": "1.7.24", + "@cubejs-backend/pinot-driver": "1.7.24", + "@cubejs-backend/postgres-driver": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", + "@cubejs-backend/questdb-driver": "1.7.24", + "@cubejs-backend/server-core": "1.7.24", + "@cubejs-backend/shared": "1.7.24", + "@cubejs-backend/snowflake-driver": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", + "@cubejs-backend/trino-driver": "1.7.24", + "@cubejs-client/core": "1.7.24", + "@cubejs-client/ws-transport": "1.7.24", "@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 553373a76c70d..205d72a8e7940 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/testing-shared + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 1b785a7d3611b..81a6ac59c32d2 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/query-orchestrator": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "@testcontainers/kafka": "~10.28.0", "dedent": "^0.7.0", "node-fetch": "^2.6.7", "testcontainers": "^10.28.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 a46903221cd52..e2d0dfef7945c 100644 --- a/packages/cubejs-testing/CHANGELOG.md +++ b/packages/cubejs-testing/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/testing + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/testing diff --git a/packages/cubejs-testing/package.json b/packages/cubejs-testing/package.json index 84b0ebdfe3719..b1359b80e57ae 100644 --- a/packages/cubejs-testing/package.json +++ b/packages/cubejs-testing/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing", - "version": "1.7.23", + "version": "1.7.24", "description": "Cube.js e2e tests", "author": "Cube Dev, Inc.", "repository": { @@ -91,15 +91,15 @@ "birdbox-fixtures" ], "dependencies": { - "@cubejs-backend/cubestore-driver": "1.7.23", + "@cubejs-backend/cubestore-driver": "1.7.24", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/ksql-driver": "1.7.23", - "@cubejs-backend/postgres-driver": "1.7.23", - "@cubejs-backend/query-orchestrator": "1.7.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", - "@cubejs-client/ws-transport": "1.7.23", + "@cubejs-backend/ksql-driver": "1.7.24", + "@cubejs-backend/postgres-driver": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", + "@cubejs-client/ws-transport": "1.7.24", "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.23", - "@cubejs-client/core": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-client/core": "1.7.24", "@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 5066734108538..69604cebada66 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/trino-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 1e9da9665ca81..70baaf14e3a89 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/prestodb-driver": "1.7.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/prestodb-driver": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "node-fetch": "^2.6.1", "presto-client": "^1.2.0" }, @@ -40,7 +40,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.7.23", + "@cubejs-backend/linter": "1.7.24", "@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 8f0651cb7fa21..09f5e4053f4f9 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.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/vertica-driver + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **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 549f842190a0a..b1ec02da8332c 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.23", + "version": "1.7.24", "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.23", - "@cubejs-backend/query-orchestrator": "1.7.23", - "@cubejs-backend/schema-compiler": "1.7.23", - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/base-driver": "1.7.24", + "@cubejs-backend/query-orchestrator": "1.7.24", + "@cubejs-backend/schema-compiler": "1.7.24", + "@cubejs-backend/shared": "1.7.24", "vertica-nodejs": "^1.0.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.7.23", - "@cubejs-backend/testing-shared": "1.7.23", + "@cubejs-backend/linter": "1.7.24", + "@cubejs-backend/testing-shared": "1.7.24", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0" diff --git a/rust/cubesql/CHANGELOG.md b/rust/cubesql/CHANGELOG.md index 1e6ac52dd35ea..857d50696dfe3 100644 --- a/rust/cubesql/CHANGELOG.md +++ b/rust/cubesql/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/cubesql + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/cubesql diff --git a/rust/cubesql/package.json b/rust/cubesql/package.json index c54da70dc0a92..058f6dd429dee 100644 --- a/rust/cubesql/package.json +++ b/rust/cubesql/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubesql", - "version": "1.7.23", + "version": "1.7.24", "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 96839ed2a2c59..d8ca7e1d29cae 100644 --- a/rust/cubestore/CHANGELOG.md +++ b/rust/cubestore/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.7.24](https://github.com/cube-js/cube/compare/v1.7.23...v1.7.24) (2026-08-19) + +**Note:** Version bump only for package @cubejs-backend/cubestore + ## [1.7.23](https://github.com/cube-js/cube/compare/v1.7.22...v1.7.23) (2026-08-18) **Note:** Version bump only for package @cubejs-backend/cubestore diff --git a/rust/cubestore/Cargo.lock b/rust/cubestore/Cargo.lock index 5b18faca1eb54..5199ed93f18b8 100644 --- a/rust/cubestore/Cargo.lock +++ b/rust/cubestore/Cargo.lock @@ -1445,7 +1445,7 @@ dependencies = [ [[package]] name = "cubestore" -version = "1.7.23" +version = "1.7.24" dependencies = [ "actix-rt", "anyhow", diff --git a/rust/cubestore/cubestore/Cargo.toml b/rust/cubestore/cubestore/Cargo.toml index ef37ca5779e20..7d9f181e8a3ec 100644 --- a/rust/cubestore/cubestore/Cargo.toml +++ b/rust/cubestore/cubestore/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cubestore" -version = "1.7.23" +version = "1.7.24" authors = ["Cube Dev, Inc."] edition = "2021" license = "Apache-2.0" diff --git a/rust/cubestore/package.json b/rust/cubestore/package.json index e12b008a44e35..9bd075823f037 100644 --- a/rust/cubestore/package.json +++ b/rust/cubestore/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubestore", - "version": "1.7.23", + "version": "1.7.24", "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.23", + "@cubejs-backend/linter": "1.7.24", "@types/jest": "^29", "@types/node": "^18", "jest": "^29", @@ -43,7 +43,7 @@ "access": "public" }, "dependencies": { - "@cubejs-backend/shared": "1.7.23", + "@cubejs-backend/shared": "1.7.24", "@octokit/core": "^3.2.5", "source-map-support": "^0.5.19" },