Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/drivers-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ on:
- 'packages/cubejs-athena-driver/**'
- 'packages/cubejs-bigquery-driver/**'
- 'packages/cubejs-clickhouse-driver/**'
- 'packages/cubejs-crate-driver/**'
- 'packages/cubejs-databricks-jdbc-driver/**'
- 'packages/cubejs-mssql-driver/**'
- 'packages/cubejs-mysql-driver/**'
Expand Down Expand Up @@ -48,6 +49,7 @@ on:
- 'packages/cubejs-athena-driver/**'
- 'packages/cubejs-bigquery-driver/**'
- 'packages/cubejs-clickhouse-driver/**'
- 'packages/cubejs-crate-driver/**'
- 'packages/cubejs-databricks-jdbc-driver/**'
- 'packages/cubejs-mssql-driver/**'
- 'packages/cubejs-mysql-driver/**'
Expand Down Expand Up @@ -260,6 +262,7 @@ jobs:
- clickhouse
- clickhouse-export-bucket-s3
- clickhouse-export-bucket-s3-prefix
- crate
- databricks-jdbc
- databricks-jdbc-export-bucket-s3
- databricks-jdbc-export-bucket-s3-prefix
Expand Down Expand Up @@ -290,6 +293,8 @@ jobs:
include:
- database: postgres
use_tesseract_sql_planner: false
- database: crate
use_tesseract_sql_planner: false
- database: snowflake
use_tesseract_sql_planner: false
- database: redshift
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## [1.7.3](https://github.com/cube-js/cube/compare/v1.7.2...v1.7.3) (2026-07-16)

### Bug Fixes

- **base-driver:** Handle NULL values in readOnly type detection (fix [#11094](https://github.com/cube-js/cube/issues/11094)) ([#11245](https://github.com/cube-js/cube/issues/11245)) ([f06bfb9](https://github.com/cube-js/cube/commit/f06bfb9875c285c63ac99b73a988c7ce1c61ca13))
- **cubesql:** Normalize date-only string literals in timestamp comparisons ([#11251](https://github.com/cube-js/cube/issues/11251)) ([ec12ff0](https://github.com/cube-js/cube/commit/ec12ff00ffca0084eb8658fad97f42680aa0c0d7))
- **cubesql:** Reference window expressions by generated alias in `ORDER BY` ([#11250](https://github.com/cube-js/cube/issues/11250)) ([8068893](https://github.com/cube-js/cube/commit/8068893a2d83d62038436884d67ba700a7d515b7))
- **cubesql:** Reject `ORDER BY` over ungrouped columns with a clear error ([#11249](https://github.com/cube-js/cube/issues/11249)) ([ff5eac9](https://github.com/cube-js/cube/commit/ff5eac95c5dcf7a7fb14d978ae2fd597ffd6bf5e))
- **cubesql:** Support `HAVING` on a measure combined with `ORDER BY` on the same measure ([#11254](https://github.com/cube-js/cube/issues/11254)) ([23b199e](https://github.com/cube-js/cube/commit/23b199e03be75596e150eec551fef68aaedc8251))
- **duckdb-driver:** Invalid SQL for custom granularities ([#11272](https://github.com/cube-js/cube/issues/11272)) ([7850aab](https://github.com/cube-js/cube/commit/7850aab6b291e486c5d1a9597da40d2ae021a755))

### Features

- **questdb-driver:** Initial support for Tesseract, add integration tests ([#11259](https://github.com/cube-js/cube/issues/11259)) ([e6cd6e1](https://github.com/cube-js/cube/commit/e6cd6e12a05b256509fc94639e6bc3b2c7a1bb65))

## [1.7.2](https://github.com/cube-js/cube/compare/v1.7.1...v1.7.2) (2026-07-13)

### Bug Fixes
Expand Down
6 changes: 5 additions & 1 deletion docs-mintlify/admin/users-and-permissions/custom-roles.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -119,17 +119,20 @@ Either grant **Full access** (a shortcut that enables every current and future d
| Data Model | Edit data model | Edit the data model on any branch, including the main/deploy branch. Allows committing and merging to main, force-syncing main, and starting dev mode against main. |
| Data Model | Edit data model on dev branches | Edit the data model only on non-default branches. Blocks any write that targets the main/deploy branch (including merging to main). |
| Monitoring | Access query history | View deployment query history, performance, and traces. |
| Data Export | Download data | Download query results as CSV from workbooks, Analytics Chat, and published dashboards. Granted by default to the built-in Viewer, Explorer, and Developer roles. See [Data download controls][ref-data-download-controls]. |

When **Full access** is checked, the granular checkboxes appear checked and disabled — granting Full access today also covers any deployment-scoped permissions added in the future.

{/* TODO: Upload screenshot of a deployment policy card with "Full access" checked, granular checkboxes shown checked + disabled */}

<Tip>

**Access deployment** (`DeploymentRead`) is special. It's the only deployment action that does **not** auto-bump the Base Role to Developer, because Viewers also need it just to open a deployment.
**Access deployment** (`DeploymentRead`) and **Download data** (`DownloadData`) are special. They are the only deployment actions that do **not** auto-bump the Base Role to Developer, because Viewers also need them just to open a deployment and download data from it.

</Tip>

[ref-data-download-controls]: /admin/users-and-permissions/roles-and-permissions#restricting-data-downloads

## Walkthroughs

### Create a Viewer with read access to all deployments
Expand Down Expand Up @@ -252,3 +255,4 @@ This section lists every action a custom role can grant. The internal action nam
| `SchemaUpdate` | Edit data model |
| `SchemaUpdateDevBranches` | Edit data model on dev branches |
| `APMRead` | Access query history |
| `DownloadData` | Download data |
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ Admin roles are billed at the developer rate.

</Info>

## Restricting data downloads

By default, all roles can download query results as CSV from workbooks, Analytics Chat, and published dashboards. Two controls restrict this:

- **Account-wide** — the **Allow data downloads** switch on the **Admin → Settings** page. Turning it off hides export controls everywhere, for all users — including admins and embeds.
- **Per user** — the **Download data** action in [custom roles][ref-custom-roles]. Built-in roles grant it by default; to remove download access for a group of users, assign them a custom role without it. Admins and anonymous embed viewers bypass it.

The account-wide switch always wins; the permission applies only while downloads are allowed account-wide. Both govern the download button, not data access — query results are still rendered on screen.

[ref-custom-roles]: /admin/users-and-permissions/custom-roles

## Agent Permissions

Agents are connected to Semantic Model Deployments and inherit the permission level of the user they are operating under.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ views:
operator: between
values: ["7 days ago", "today"]
- member: status
operator: equals
operator: is
values: ["completed"]
```

Expand Down
6 changes: 6 additions & 0 deletions docs-mintlify/docs/integrations/dbt.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ sidebarTitle: dbt
description: Pull dbt models into Cube and convert them into cubes automatically — manually, from your CI/CD pipeline, or on every push to your dbt repository.
---

<Note>

Available on [Premium and above plans](https://cube.dev/pricing).

</Note>

If your team already models data in [dbt](https://www.getdbt.com/), you can import
those models into Cube as cubes instead of redefining them by hand. **dbt pull**
connects to your dbt project's Git repository, parses the project, converts each dbt
Expand Down
51 changes: 37 additions & 14 deletions docs-mintlify/reference/data-modeling/view.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,8 @@ filters are pre-populated as regular, fully editable filters — data consumers
can change their values, switch operators, or remove them entirely.

Each entry has a `member` (a dimension or measure exposed by the view), an
`operator`, and a list of `values`.
`operator`, and a list of `values` — or a single `value`, which is natural for
single-value operators. Null-check operators take no value.

<Info>

Expand All @@ -314,11 +315,16 @@ views:

meta:
default_ui_filters:
# "is yesterday" → equality at day grain, shows yesterday's data
- member: created_at
operator: is
value: yesterday
# Rolling window → use "between" with two bounds
- member: updated_at
operator: between
values: ["7 days ago", "today"]
- member: status
operator: equals
operator: is
values: ["completed", "shipped"]
```

Expand All @@ -333,14 +339,21 @@ view(`orders_view`, {

meta: {
default_ui_filters: [
// "is yesterday" → equality at day grain, shows yesterday's data
{
member: `created_at`,
operator: `is`,
value: `yesterday`
},
// Rolling window → use "between" with two bounds
{
member: `updated_at`,
operator: `between`,
values: [`7 days ago`, `today`]
},
{
member: `status`,
operator: `equals`,
operator: `is`,
values: [`completed`, `shipped`]
}
]
Expand All @@ -352,10 +365,20 @@ view(`orders_view`, {

##### Operators

Operators use the same names data consumers see in the workbook filter bar:
`equals`, `not_equals`, `between`, `greater_than`, `greater_than_or_equal`,
`less_than`, `less_than_or_equal`, `contains`, `not_contains`, `starts_with`,
`not_starts_with`, `ends_with`, `not_ends_with`, `is_null`, `is_not_null`.
Operators use the same labels data consumers see in the workbook filter bar —
what you see in the filter bar is what you type: `is`, `is not`, `after date`,
`after or on date`, `before date`, `before or on date`, `between`, `contains`,
`not contains`, `starts with`, `not starts with`, `ends with`, `not ends with`,
`is null`, `is not null`.

Operators are case-insensitive and whitespace-tolerant. Internal type names and
REST API aliases (e.g. `equals`, `gte`, `inDateRange`) are also accepted.

On a date or time member, `is` with a relative value is an **equality** at that
value's grain, not a range — `is yesterday` matches yesterday only (e.g.
`DATE_TRUNC('day', created_at) = CURRENT_DATE - INTERVAL '1 day'`), and
`is this month` matches the current month. For a rolling window, use `between`
with two bounds.

##### Relative date values

Expand All @@ -366,11 +389,11 @@ Each bound is one of:
`N days|weeks|months|quarters|years ago` (e.g. `7 days ago`),
`N ... from now` (e.g. `2 weeks from now`), or
`this week|month|quarter|year`. `now` is accepted as an alias for `today`.
- **A fixed ISO date**: `"2026-01-15"`.
- **A fixed ISO date**: `"2026-01-15"`, meaning that whole day.
- **A number**, for numeric members.

Relative values also work with the open-ended comparison operators — for
example, `greater_than` with `values: ["7 days ago"]`.
Relative values also work with `is` and the open-ended comparison operators —
for example, `after date` with `value: 7 days ago`.

Relative bounds resolve when a query runs, not when the filter is seeded:
`["7 days ago", "today"]` produces SQL based on the current date (e.g.
Expand All @@ -379,10 +402,10 @@ rolls forward day over day. Both bounds are inclusive — `["7 days ago",
"today"]` covers 8 calendar days for daily data. In the workbook, the seeded
filter opens the date editor on the **Relative** tab showing its bounds.

Values are case- and whitespace-insensitive. Bounds are validated: an
unrecognized value, or a `between` filter with a single value, drops that
filter entry with a browser-console warning — the remaining entries still
apply, and view selection never breaks.
Values are case- and whitespace-insensitive. Entries are validated: an
unrecognized operator or value, or a `between` filter without exactly two
bounds, drops that filter entry with a browser-console warning — the remaining
entries still apply, and view selection never breaks.

Unlike [`default_filters`](#default_filters), which are enforced on every query
against the view, `default_ui_filters` only provide a starting point for the
Expand Down
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "1.7.2",
"version": "1.7.3",
"npmClient": "yarn",
"command": {
"bootstrap": {
Expand Down
4 changes: 4 additions & 0 deletions packages/cubejs-api-gateway/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.3](https://github.com/cube-js/cube/compare/v1.7.2...v1.7.3) (2026-07-16)

**Note:** Version bump only for package @cubejs-backend/api-gateway

## [1.7.2](https://github.com/cube-js/cube/compare/v1.7.1...v1.7.2) (2026-07-13)

**Note:** Version bump only for package @cubejs-backend/api-gateway
Expand Down
10 changes: 5 additions & 5 deletions packages/cubejs-api-gateway/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@cubejs-backend/api-gateway",
"description": "Cube API Gateway",
"author": "Cube Dev, Inc.",
"version": "1.7.2",
"version": "1.7.3",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
Expand All @@ -27,9 +27,9 @@
"dist/src/*"
],
"dependencies": {
"@cubejs-backend/native": "1.7.2",
"@cubejs-backend/query-orchestrator": "1.7.2",
"@cubejs-backend/shared": "1.7.2",
"@cubejs-backend/native": "1.7.3",
"@cubejs-backend/query-orchestrator": "1.7.3",
"@cubejs-backend/shared": "1.7.3",
"@ungap/structured-clone": "^0.3.4",
"assert-never": "^1.4.0",
"body-parser": "^1.19.0",
Expand All @@ -53,7 +53,7 @@
"zod": "^4.1.13"
},
"devDependencies": {
"@cubejs-backend/linter": "1.7.2",
"@cubejs-backend/linter": "1.7.3",
"@types/express": "^4.17.21",
"@types/jest": "^29",
"@types/jsonwebtoken": "^9.0.2",
Expand Down
4 changes: 4 additions & 0 deletions packages/cubejs-athena-driver/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.3](https://github.com/cube-js/cube/compare/v1.7.2...v1.7.3) (2026-07-16)

**Note:** Version bump only for package @cubejs-backend/athena-driver

## [1.7.2](https://github.com/cube-js/cube/compare/v1.7.1...v1.7.2) (2026-07-13)

**Note:** Version bump only for package @cubejs-backend/athena-driver
Expand Down
10 changes: 5 additions & 5 deletions packages/cubejs-athena-driver/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@cubejs-backend/athena-driver",
"description": "Cube.js Athena database driver",
"author": "Cube Dev, Inc.",
"version": "1.7.2",
"version": "1.7.3",
"repository": {
"type": "git",
"url": "https://github.com/cube-js/cube.git",
Expand Down Expand Up @@ -30,13 +30,13 @@
"dependencies": {
"@aws-sdk/client-athena": "^3.22.0",
"@aws-sdk/credential-providers": "^3.22.0",
"@cubejs-backend/base-driver": "1.7.2",
"@cubejs-backend/shared": "1.7.2",
"@cubejs-backend/base-driver": "1.7.3",
"@cubejs-backend/shared": "1.7.3",
"sqlstring": "^2.3.1"
},
"devDependencies": {
"@cubejs-backend/linter": "1.7.2",
"@cubejs-backend/testing-shared": "1.7.2",
"@cubejs-backend/linter": "1.7.3",
"@cubejs-backend/testing-shared": "1.7.3",
"@types/ramda": "^0.27.40",
"typescript": "~5.2.2"
},
Expand Down
4 changes: 4 additions & 0 deletions packages/cubejs-backend-cloud/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.3](https://github.com/cube-js/cube/compare/v1.7.2...v1.7.3) (2026-07-16)

**Note:** Version bump only for package @cubejs-backend/cloud

## [1.7.2](https://github.com/cube-js/cube/compare/v1.7.1...v1.7.2) (2026-07-13)

**Note:** Version bump only for package @cubejs-backend/cloud
Expand Down
6 changes: 3 additions & 3 deletions packages/cubejs-backend-cloud/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cubejs-backend/cloud",
"version": "1.7.2",
"version": "1.7.3",
"description": "Cube Cloud package",
"main": "dist/src/index.js",
"typings": "dist/src/index.d.ts",
Expand Down Expand Up @@ -30,15 +30,15 @@
"devDependencies": {
"@babel/core": "^7.24.5",
"@babel/preset-env": "^7.24.5",
"@cubejs-backend/linter": "1.7.2",
"@cubejs-backend/linter": "1.7.3",
"@types/fs-extra": "^9.0.8",
"@types/jest": "^29",
"jest": "^29",
"typescript": "~5.2.2"
},
"dependencies": {
"@cubejs-backend/dotenv": "^9.0.2",
"@cubejs-backend/shared": "1.7.2",
"@cubejs-backend/shared": "1.7.3",
"chokidar": "^3.5.1",
"env-var": "^6.3.0",
"form-data": "^4.0.0",
Expand Down
4 changes: 4 additions & 0 deletions packages/cubejs-backend-maven/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.3](https://github.com/cube-js/cube/compare/v1.7.2...v1.7.3) (2026-07-16)

**Note:** Version bump only for package @cubejs-backend/maven

## [1.7.2](https://github.com/cube-js/cube/compare/v1.7.1...v1.7.2) (2026-07-13)

**Note:** Version bump only for package @cubejs-backend/maven
Expand Down
6 changes: 3 additions & 3 deletions packages/cubejs-backend-maven/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@cubejs-backend/maven",
"description": "Cube.js Maven Wrapper for java dependencies downloading",
"author": "Cube Dev, Inc.",
"version": "1.7.2",
"version": "1.7.3",
"license": "Apache-2.0",
"repository": {
"type": "git",
Expand Down Expand Up @@ -31,12 +31,12 @@
"dist/src/*"
],
"dependencies": {
"@cubejs-backend/shared": "1.7.2",
"@cubejs-backend/shared": "1.7.3",
"source-map-support": "^0.5.19",
"xmlbuilder2": "^2.4.0"
},
"devDependencies": {
"@cubejs-backend/linter": "1.7.2",
"@cubejs-backend/linter": "1.7.3",
"@types/jest": "^29",
"@types/node": "^22",
"jest": "^29",
Expand Down
Loading
Loading