Skip to content

Commit 5fe1435

Browse files
authored
Merge branch 'master' into feat/join-aliases
2 parents d1298d8 + c388350 commit 5fe1435

File tree

157 files changed

+2189
-914
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+2189
-914
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ rust/cubesql/profile.json
2424
.cubestore
2525
.env
2626
.vimspector.json
27+
.claude/settings.local.json

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,29 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [1.3.43](https://github.com/cube-js/cube/compare/v1.3.42...v1.3.43) (2025-07-24)
7+
8+
### Bug Fixes
9+
10+
- **server-core:** Fix getCompilersInstances to not return compiler promise ([#9814](https://github.com/cube-js/cube/issues/9814)) ([5622a73](https://github.com/cube-js/cube/commit/5622a732c6e6a25f9bda35a68e2faf61a3ae04e3))
11+
- **snowflake-driver:** Set date/timestamp format for exporting data to CSV export bucket ([#9810](https://github.com/cube-js/cube/issues/9810)) ([4c0fef7](https://github.com/cube-js/cube/commit/4c0fef7b068893322f05310b028059ea3dad8986))
12+
13+
## [1.3.42](https://github.com/cube-js/cube/compare/v1.3.41...v1.3.42) (2025-07-23)
14+
15+
### Bug Fixes
16+
17+
- **query-orchestrator:** Reduce number of refresh key queries ([#9809](https://github.com/cube-js/cube/issues/9809)) ([a6b68f8](https://github.com/cube-js/cube/commit/a6b68f84fac89d2fc710aa3ccd1ef10b741e1fa5))
18+
19+
### Features
20+
21+
- **tesseract:** Lambda rollup support ([#9806](https://github.com/cube-js/cube/issues/9806)) ([eb56169](https://github.com/cube-js/cube/commit/eb56169f5e88424b95b12dda8535cab383ecc541))
22+
23+
## [1.3.41](https://github.com/cube-js/cube/compare/v1.3.40...v1.3.41) (2025-07-22)
24+
25+
### Features
26+
27+
- **cubestore:** Upgrade rocksdb to 7.10.2 from 7.9.2 ([#9802](https://github.com/cube-js/cube/issues/9802)) ([585bb1e](https://github.com/cube-js/cube/commit/585bb1e2c4992b13e1919623a6fcf38ed00d96af))
28+
629
## [1.3.40](https://github.com/cube-js/cube/compare/v1.3.39...v1.3.40) (2025-07-20)
730

831
### Bug Fixes

CLAUDE.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Repository Overview
6+
7+
Cube is a semantic layer for building data applications. This is a monorepo containing the complete Cube ecosystem including:
8+
- Cube backend server and core components
9+
- Client libraries for JavaScript/React/Vue/Angular
10+
- Database drivers for various data sources
11+
- Documentation site
12+
- Rust components (CubeSQL, CubeStore)
13+
14+
## Development Commands
15+
16+
**Note: This project uses Yarn as the package manager.**
17+
18+
### Core Build Commands
19+
```bash
20+
# Build all packages
21+
yarn build
22+
23+
# Run TypeScript compilation across all packages
24+
yarn tsc
25+
26+
# Watch mode for TypeScript compilation
27+
yarn tsc:watch
28+
29+
# Clean build artifacts
30+
yarn clean
31+
32+
# Run linting across all packages
33+
yarn lint
34+
35+
# Fix linting issues
36+
yarn lint:fix
37+
38+
# Lint package.json files
39+
yarn lint:npm
40+
```
41+
42+
### Testing Commands
43+
```bash
44+
# Run tests (most packages have individual test commands)
45+
yarn test
46+
47+
# Test individual packages
48+
cd packages/cubejs-[package-name]
49+
yarn test
50+
```
51+
52+
### Documentation Development
53+
The documentation is in `/docs` directory:
54+
```bash
55+
cd docs
56+
yarn dev # Start development server
57+
yarn build # Build for production
58+
```
59+
60+
## Architecture Overview
61+
62+
### Monorepo Structure
63+
- **`/packages`**: All JavaScript/TypeScript packages managed by Lerna
64+
- Core packages: `cubejs-server-core`, `cubejs-schema-compiler`, `cubejs-query-orchestrator`
65+
- Client libraries: `cubejs-client-core`, `cubejs-client-react`, etc.
66+
- Database drivers: `cubejs-postgres-driver`, `cubejs-bigquery-driver`, etc.
67+
- API layer: `cubejs-api-gateway`
68+
- **`/rust`**: Rust components including CubeSQL (SQL interface) and CubeStore (distributed storage)
69+
- **`/docs`**: Next.js documentation site
70+
- **`/examples`**: Example implementations and recipes
71+
72+
### Key Components
73+
1. **Schema Compiler**: Compiles data models into executable queries
74+
2. **Query Orchestrator**: Manages query execution, caching, and pre-aggregations
75+
3. **API Gateway**: Provides REST, GraphQL, and SQL APIs
76+
4. **CubeSQL**: Postgres-compatible SQL interface (Rust)
77+
5. **CubeStore**: Distributed OLAP storage engine (Rust)
78+
79+
### Package Management
80+
- Uses Yarn workspaces with Lerna for package management
81+
- TypeScript compilation is coordinated across packages
82+
- Jest for unit testing with package-specific configurations
83+
84+
## Testing Approach
85+
86+
### Unit Tests
87+
- Most packages have Jest-based unit tests in `/test` directories
88+
- TypeScript packages use `jest.config.js` with TypeScript compilation
89+
- Snapshot testing for SQL compilation and query planning
90+
91+
### Integration Tests
92+
- Driver-specific integration tests in `/packages/cubejs-testing-drivers`
93+
- End-to-end tests in `/packages/cubejs-testing`
94+
- Docker-based testing environments for database drivers
95+
96+
### Test Commands
97+
```bash
98+
# Individual package testing
99+
cd packages/[package-name]
100+
yarn test
101+
102+
# Driver integration tests (requires Docker)
103+
cd packages/cubejs-testing-drivers
104+
yarn test
105+
```
106+
107+
## Development Workflow
108+
109+
1. **Making Changes**: Work in individual packages, changes are coordinated via Lerna
110+
2. **Building**: Use `yarn tsc` to compile TypeScript across all packages
111+
3. **Testing**: Run relevant tests for modified packages
112+
4. **Linting**: Ensure code passes `yarn lint` before committing
113+
114+
## Common File Patterns
115+
116+
- `*.test.ts/js`: Jest unit tests
117+
- `jest.config.js`: Jest configuration per package
118+
- `tsconfig.json`: TypeScript configuration (inherits from root)
119+
- `CHANGELOG.md`: Per-package changelogs maintained by Lerna
120+
- `src/`: Source code directory
121+
- `dist/`: Compiled output (not committed)
122+
123+
## Important Notes
124+
125+
- This is documentation for the old Cube docs site structure (the existing `/docs/CLAUDE.md` refers to the documentation site)
126+
- The main Cube application development happens in `/packages`
127+
- For data model changes, focus on `cubejs-schema-compiler` package
128+
- For query execution changes, focus on `cubejs-query-orchestrator` package
129+
- Database connectivity is handled by individual driver packages
130+
131+
## Key Dependencies
132+
133+
- **Lerna**: Monorepo management and publishing
134+
- **TypeScript**: Primary language for most packages
135+
- **Jest**: Testing framework
136+
- **Rollup**: Bundling for client libraries
137+
- **Docker**: Testing environments for database drivers

docs/pages/product/apis-integrations/rest-api.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ data applications, including but not limited to the following ones:
1111
Often, the REST API is used to enable [embedded analytics][cube-ea] and
1212
[real-time analytics][cube-rta] use cases.
1313

14-
See [REST API reference][ref-ref-rest-api] for the list of supported API endpoinsts.
14+
See [REST API reference][ref-ref-rest-api] for the list of supported API endpoints.
1515
Also, check [query format][ref-rest-query-format] for details about query syntax.
1616

1717
<InfoBox>

docs/pages/product/caching.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ cache instead of being processed on the database or in Cube Store. This is the
270270
fastest query retrieval method, but it requires that the exact same query was
271271
run very recently.
272272
- **No cache.** This cache type indicates that the query was processed in the upstream
273-
data source and was not accelrated using pre-aggregations. These queries could have
273+
data source and was not accelerated using pre-aggregations. These queries could have
274274
a significant performance boost if pre-aggregations and Cube Store were utilized.
275275

276276
In [Query History][ref-query-history] and throughout Cube Cloud, colored bolt

docs/pages/product/configuration/reference/environment-variables.mdx

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ has to the database.
123123
## `CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID`
124124

125125
How many pre-aggregations the refresh worker will build in parallel for each
126-
application id as determined by the [`context_to_app_id`](#context_to_app_id)
126+
application id as determined by the [`context_to_app_id`][ref-context-to-app-id]
127127
configuration option.
128128

129129
Note that this parameter doesn't override the overall refresh worker concurrency,
@@ -579,7 +579,7 @@ The mount path to use for a [Databricks DBFS mount][databricks-docs-dbfs].
579579
## `CUBEJS_DB_EXPORT_BUCKET_REDSHIFT_ARN`
580580

581581
An ARN of an AWS IAM role with permission to write to the configured bucket (see
582-
[`CUBEJS_DB_EXPORT_BUCKET`](#cubejs-db-export-bucket)).
582+
`CUBEJS_DB_EXPORT_BUCKET`).
583583

584584
<InfoBox>
585585

@@ -895,7 +895,7 @@ If `true`, enables [development mode](/product/configuration#development-mode).
895895
## `CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH`
896896

897897
If `true`, it enables dropping pre-aggregations that Refresh Worker doesn't
898-
touch within [`CUBEJS_TOUCH_PRE_AGG_TIMEOUT`](#cubejs-touch-pre-agg-timeout).
898+
touch within `CUBEJS_TOUCH_PRE_AGG_TIMEOUT`.
899899
Pre-aggregations are touched whenever they are rebuilt or a Refresh Worker
900900
checks its freshness. The first drop will be initiated when the Refresh Worker
901901
is able to check freshness for every `scheduledRefresh: true` pre-aggregation.
@@ -1000,7 +1000,7 @@ option](/product/configuration/reference/config#jwt).
10001000
## `CUBEJS_JWT_KEY`
10011001

10021002
The secret key used to sign and verify JWTs. Similar to
1003-
[`CUBEJS_API_SECRET`](#cubejs-api-secret).
1003+
`CUBEJS_API_SECRET`.
10041004

10051005
| Possible Values | Default in Development | Default in Production |
10061006
| --------------- | ---------------------- | --------------------- |
@@ -1054,15 +1054,16 @@ connections on.
10541054
If `true`, this instance of Cube will build pre-aggregations, even if it is an
10551055
API instance.
10561056

1057-
| Possible Values | Default in Development | Default in Production |
1058-
| --------------- | ---------------------- | --------------------------------------------------------------- |
1059-
| `true`, `false` | `true` | `false` <sup>[\*](#cubejs-pre-aggregations-builder-notes)</sup> |
1057+
| Possible Values | Default in Development | Default in Production |
1058+
| --------------- | ---------------------- | --------------------- |
1059+
| `true`, `false` | `true` | `false` |
10601060

1061-
### Notes
1061+
<InfoBox>
1062+
1063+
If Cube is configured to act as a refresh worker instance using `CUBEJS_REFRESH_WORKER`,
1064+
then `CUBEJS_PRE_AGGREGATIONS_BUILDER` will be `true`.
10621065

1063-
If Cube is configured to act as a refresh worker instance using
1064-
[`CUBEJS_REFRESH_WORKER`](#cubejs-refresh-worker), then
1065-
`CUBEJS_PRE_AGGREGATIONS_BUILDER` will be `true`.
1066+
</InfoBox>
10661067

10671068
## `CUBEJS_PRE_AGGREGATIONS_SCHEMA`
10681069

@@ -1354,7 +1355,7 @@ If the refresh worker’s throughput isn’t sufficient and the Cube Refresh Wor
13541355

13551356
The number of seconds without a touch before pre-aggregation is considered
13561357
orphaned and marked for removal. Please see
1357-
[`CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH`](#cubejs-drop-pre-agg-without-touch) to
1358+
`CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH` to
13581359
learn more.
13591360

13601361
| Possible Values | Default in Development | Default in Production |
@@ -1495,7 +1496,7 @@ The address/port pair for Cube Store's HTTP interface.
14951496
## `CUBESTORE_HTTP_PORT`
14961497

14971498
The port for Cube Store to listen to HTTP connections on. Ignored when
1498-
[`CUBESTORE_HTTP_BIND_ADDR`](#cubestore-http-bind-addr) is set.
1499+
`CUBESTORE_HTTP_BIND_ADDR` is set.
14991500

15001501
| Possible Values | Default in Development | Default in Production |
15011502
| ------------------- | ---------------------- | --------------------- |
@@ -1797,4 +1798,5 @@ The port for a Cube deployment to listen to API connections on.
17971798
[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine
17981799
[ref-multi-stage-calculations]: /product/data-modeling/concepts/multi-stage-calculations
17991800
[ref-folders]: /product/data-modeling/reference/view#folders
1800-
[ref-dataviz-tools]: /product/configuration/visualization-tools
1801+
[ref-dataviz-tools]: /product/configuration/visualization-tools
1802+
[ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "1.3.40",
2+
"version": "1.3.43",
33
"npmClient": "yarn",
44
"command": {
55
"bootstrap": {

packages/cubejs-api-gateway/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [1.3.43](https://github.com/cube-js/cube/compare/v1.3.42...v1.3.43) (2025-07-24)
7+
8+
**Note:** Version bump only for package @cubejs-backend/api-gateway
9+
10+
## [1.3.42](https://github.com/cube-js/cube/compare/v1.3.41...v1.3.42) (2025-07-23)
11+
12+
**Note:** Version bump only for package @cubejs-backend/api-gateway
13+
14+
## [1.3.41](https://github.com/cube-js/cube/compare/v1.3.40...v1.3.41) (2025-07-22)
15+
16+
**Note:** Version bump only for package @cubejs-backend/api-gateway
17+
618
## [1.3.40](https://github.com/cube-js/cube/compare/v1.3.39...v1.3.40) (2025-07-20)
719

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

packages/cubejs-api-gateway/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@cubejs-backend/api-gateway",
33
"description": "Cube.js API Gateway",
44
"author": "Cube Dev, Inc.",
5-
"version": "1.3.40",
5+
"version": "1.3.43",
66
"repository": {
77
"type": "git",
88
"url": "https://github.com/cube-js/cube.git",
@@ -27,8 +27,8 @@
2727
"dist/src/*"
2828
],
2929
"dependencies": {
30-
"@cubejs-backend/native": "1.3.40",
31-
"@cubejs-backend/shared": "1.3.40",
30+
"@cubejs-backend/native": "1.3.43",
31+
"@cubejs-backend/shared": "1.3.43",
3232
"@ungap/structured-clone": "^0.3.4",
3333
"assert-never": "^1.4.0",
3434
"body-parser": "^1.19.0",
@@ -51,7 +51,7 @@
5151
"uuid": "^8.3.2"
5252
},
5353
"devDependencies": {
54-
"@cubejs-backend/linter": "1.3.40",
54+
"@cubejs-backend/linter": "1.3.43",
5555
"@types/express": "^4.17.21",
5656
"@types/jest": "^29",
5757
"@types/jsonwebtoken": "^9.0.2",

packages/cubejs-api-gateway/src/SubscriptionServer.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ const methodParams: Record<string, string[]> = {
1212
meta: [],
1313
subscribe: ['query', 'queryType'],
1414
unsubscribe: [],
15-
'subscribe.queue.events': []
1615
};
1716

1817
const calcMessageLength = (message: unknown) => Buffer.byteLength(
@@ -149,8 +148,6 @@ export class SubscriptionServer {
149148
}
150149

151150
public async disconnect(connectionId: string) {
152-
const authContext = await this.subscriptionStore.getAuthContext(connectionId);
153-
await this.apiGateway.unSubscribeQueueEvents({ context: authContext, connectionId });
154151
await this.subscriptionStore.cleanupSubscriptions(connectionId);
155152
}
156153

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy