From 212088b1db1a109f4a1533bd4ba683aafbbafb68 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Wed, 29 Oct 2025 14:42:50 +0100 Subject: [PATCH 1/9] docs: Calendar cubes (#9791) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(cubestore): Upgrade rocksdb to 7.10.2 from 7.9.2 (#9802) * v1.3.41 * docs: Fix links * chore(deps): bump form-data from 4.0.1 to 4.0.4 (#9803) Bumps [form-data](https://github.com/form-data/form-data) from 4.0.1 to 4.0.4. - [Release notes](https://github.com/form-data/form-data/releases) - [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md) - [Commits](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.4) --- updated-dependencies: - dependency-name: form-data dependency-version: 4.0.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(tesseract): Lambda rollup support (#9806) * fix(query-orchestrator): Reduce number of refresh key queries (#9809) Cube generates a burst load of queries for refresh keys. We don't use a queue for cube store queries, but we use an in-memory cache inside QueryQueue. A cache miss leads to a problem where we start executing queries without debouncing. Cube executes refresh keys in parallel, which DDoSes Cube Store. It's a quick fix to fix this behavior. * v1.3.42 * fix(snowflake-driver): Set date/timestamp format for exporting data to CSV export bucket (#9810) * fix tsc build * fix(snowflake-driver): Set date/timestamp format for exporting data to CSV export bucket * fix(server-core): Fix getCompilersInstances to not return compiler promise (#9814) * refactor: Remove deprecated queue events bus functionality (#9815) The queue event bus was deprecated and is no longer needed. * v1.3.43 * refactor(query-orchestrator): Migrate LocalQueueDriver to TypeScript (#9816) * fix(query-orchestrator): QueryQueue - update heartbeat by queue id (#9817) Cube Store allows updating the heartbeat by path or queue id. Using queue id provides better performance and fixes possible concurrency issues, such as slippage * fix(base-driver): Support empty credentials for gcs (#9820) * feat(partners): rename link (#9822) * refactor(query-orchestrator): Migrate QueryQueue to TypeScript (#6086) * v1.3.44 * fix(api-gateway): Fix member sql extraction in meta?extended (#9826) * fix(prestodb/trino-driver): Specify correct timeouts for query execution (#9827) By default, it's specified as 60 seconds in presto-client. It uses a timer and cancels queries after it. * feat(query-ochestrator): Reduce number of cache set for used flag (#9828) Right now, we use both flags: used and touch. We already had LRU cache for a long time with the touch flag to reduce the number of updates in the Cache Store, but we didn't do it for the used. This leads to a situation where, for a schema with 100 pre-aggs, we will do 200 cache sets per 1 minute because the default refresh interval is set to 30 seconds. * feat(cubesql): Improve DataGrip compatibility (#9825) List of changes: - Parse explicit `DISTINCT` option with set operators (e.g. `UNION DISTINCT`) - `array_agg` function can now be prefixed with `pg_catalog.` - New introspection tables are supported: - `pg_auth_members` - `pg_available_extension_versions` - `pg_cast` - `pg_event_trigger` - `pg_foreign_data_wrapper` - `pg_foreign_server` - `pg_foreign_table` - `pg_language` - `pg_locks` - `pg_operator` - `pg_rewrite` - `pg_tablespace` - `pg_timezone_abbrevs` - `pg_timezone_names` - `pg_user_mapping` - New introspection functions are supported: - `pg_is_in_recovery` - `pg_postmaster_start_time` - `pg_tablespace_location` - `txid_current` - System field `xmin` added to the following introspection tables: - `pg_am` - `pg_attribute` - `pg_class` - `pg_constraint` - `pg_description` - `pg_extension` - `pg_index` - `pg_namespace` - `pg_proc` - `pg_type` - `pg_namespace`'s `nspacl` field now has correct type (`List(Utf8)`) - `AGE` function now accepts values of type `xid` - `"char"` casts are being replaced with `text` casts - `xid` casts are being replaced with `unsigned int` casts - New `PgType`s added: - `[ARRAY]PGAM` - `[ARRAY]PGCAST` - `[ARRAY]PGEVENTTRIGGER` - `[ARRAY]PGEXTENSION` - `[ARRAY]PGFOREIGNDATAWRAPPER` - `[ARRAY]PGFOREIGNSERVER` - `[ARRAY]PGLANGUAGE` - `CTID` system field is replaced with `NULL` in data queries Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * feat(clickhouse-driver): Upgrade @clickhouse/client from 1.7.0 to 1.12.0 (#9829) * v1.3.45 * feat: add datasource schema read methods (#9818) * docs: Use camelCase for the selector.dataSources parameter (#9832) — thank you @sjauld! * chore: update datasource schema read methods (#9831) * dev * fix * upd * chore(cubestore): Metrics for worker pool errors (#9835) * docs: Fix `runas` command and add NTLM auth configuration to `check_sql_auth` * chore(ci): Extract maximize build space as action (#9840) * feat(cubesql): Add support for `current_catalog` function for postgresql protocol (#9839) * fix(clickhouse-driver): Parse Error: Header overflow due to X-ClickHouse-Progress (#9842) To fix the issue with the headers overflowing: Error: Parse Error: Header overflow at TLSSocket.socketOnData (node:_http_client:551:22) at TLSSocket.emit (node:events:519:28) at addChunk (node:internal/streams/readable:559:12) at readableAddChunkPushByteMode (node:internal/streams/readable:510:3) More details in the original repository of the client library: https://github.com/ClickHouse/clickhouse-js/issues/448 * v1.3.46 * chore(cross): Install python 3.13.5 (#9841) * docs: fix in the AWS private link doc (#9844) * feat(cubesql): Support `BETWEEN` SQL push down (#9834) * feat(cubesql): Allow to bind float64 (support in pg-srv) (#9846) Implements float64 (FLOAT8) parameter binding in the PostgreSQL wire protocol server (pg-srv). This allows SQL clients to bind floating-point parameters in prepared statements using both text and binary formats. Changes: - Add f64 decoding support in pg-srv for both text and binary wire formats - Handle FLOAT8 type in Bind message processing - Add comprehensive tests for float64 binding in both formats - Rename test_prepare to test_prepare_autodetect for clarity This enhancement improves SQL client compatibility by supporting floating-point parameters. In prepared statements, which are commonly used by BI tools and database drivers. * chore: expose alias member property for measures (#9849) * dev * dev * dev * dev * dev * upd * dev * dev * fmt * fix * upd * fmt * refactor(cubesql): Extract TimestampValue to pg-srv crate (#9848) - Moved TimestampValue from cubesql dataframe to pg-srv where it belongs - Extracted ProtocolError to its own file for cleaner organization - Created values/ folder to group IntervalValue and TimestampValue together --------- Co-authored-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * feat(cubesql): Support timestamp parameter binding, fix #9784 (#9847) * v1.3.47 * docs: Join paths and join hints in the data model * fix(cubesql): Support concatenating non-strings in SQL push down for Athena/Presto (#9853) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * docs: Update style-guide.mdx * perf(cubestore): Reduce allocations in info schema tables (#9855) - Replace intermediate Vec allocations with direct iterator consumption - Use from_iter/from_iter_values instead of collect() followed by from() - Remove unnecessary .as_str() conversions where &String is sufficient - Simplify Option handling with .as_deref() instead of .as_ref().map() This optimization eliminates ~78 unnecessary heap allocations across all info schema table implementations, improving performance especially with large datasets. * feat(cubestore): Upgrade rust to nightly-2025-08-01 (#9858) * fix(cubesql): Improve Trino SQL push down compatibility (#9861) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * fix(cubesql): Allow repeated aliases (auto-realias) (#9863) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * feat(cubesql): Support date type for parameter binding (#9864) * fix: access_policy is not applied for JS models (#9865) * v1.3.48 * feat(docker): Security upgrade Node.js from 22.16.0 to 22.18.0 (#9854) The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-UPSTREAM-NODE-10847885 - https://snyk.io/vuln/SNYK-DEBIAN12-GNUTLS28-10690985 - https://snyk.io/vuln/SNYK-DEBIAN12-GNUTLS28-10690987 - https://snyk.io/vuln/SNYK-DEBIAN12-GNUTLS28-10690990 - https://snyk.io/vuln/SNYK-DEBIAN12-GNUTLS28-10690993 --------- Co-authored-by: snyk-bot * chore(cubestore): Implement execution for now() & unix_timestamp() (#9868) * fix(cubesql): Improve SQL push down for Athena/Presto (#9873) * v1.3.49 * docs: Fix index example on yaml (#9874) Correctly targets the date column * feat(tesseract): Support time series queries in Databricks (#9871) * feat(tesseract): Support time series queries in Databricks * run databricks drivers-tests with tesseract * fix templates.statements.generated_time_series_select * fix templates.statements.generated_time_series_with_cte_range_source * enable supportGeneratedSeriesForCustomTd * add snapshot: querying BigECommerce: rolling window by 2 day without date range * add snapshot: querying BigECommerce: rolling window by 2 month without date range * update snapshot: querying BigECommerce: rolling window YTD without date range * add snapshot: querying BigECommerce with Retail Calendar * add snapshot: querying custom granularities ECommerce: count by two_mo_by_feb + no dimension + rollingCountByLeading without date range * add snapshot: SQL API: Extended nested Rollup over asterisk * feat(cubestore): Support EXPLAIN for meta queries (#9876) * fix(client-core): Remove default value in table pivot (#9869) * Remove defaulting to empty string in tablePivot * Added a regression test * chore(schema-compiler): Make cube joins to be an array instead of hashmap (#9800) * more types in CubeSymbols * change joins schema in Validator * specify type for accessPolicy * make prepareJoins() aware of arrays * make joins in CubeSymbols / CubeEvaluator as array instead of hashmap * update JoinGraph to treat joins as array instead of hashmap * fix CubePropContextTranspiler to convert joins hashmap into array * add @types/js-yaml * make YamlCompiler aware of joins as array * fix/update snapshots for schema tests * fix transform yaml joins * add schema tests for joins as array/object * lint:fix * update snapshots * add a fallback workaround for joins as object in js models * v1.3.50 * Relative paths for assets, playground requests and fonts (#9850) Co-authored-by: Daniel Costa Co-authored-by: Andrey Yamanov * chore(cubetore): Allow to disable inplace constant evaluation (#9878) * perf: Debounce information schema queries to Cube Store (1.8x) (#9879) Introduces the @AsyncDebounce decorator to debounce promises for the getTablesQuery and getPrefixTablesQuery methods. This prevents redundant concurrent executions of the same operations, improving performance by avoiding duplicate database metadata queries. For the performance benchmark, I've used 1 cube with 1 pre-agg that has 10 partitions, partitioned by time dimension with year granularity. Previously, Cube would run 10 queries for the information schema while loading pre-aggregation. ### (average across runs) • Throughput almost doubled – from ~112 req/s (max 144) to ~206 req/s (max 229). • Average latency halved – from ~0.98 s to ~0.54 s. • p95 latency dropped from ~2.19 s to ~0.91 s. • Fast responses (<1 s) surged from ~57% to ~95%, with some runs hitting 100%. • Success rate improved from ~86% to ~98%, reaching 100% in the best runs. • Max latency fell from peaks of ~4.06 s to just ~2.05 s. * v1.3.51 * feat(cubesql): Support cursors in stream mode (#9877) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * fix(api-gateway): Handle array format for joins in /meta?extended endpoint (#9881) * fix(api-gateway): Handle array format for joins in /meta?extended endpoint After PR #9800, joins are stored as arrays instead of objects in the schema compiler. The transformJoins function in the API gateway was still using Object.entries() which, when applied to arrays, returns numeric indices as keys instead of actual join names. This fix: - Checks if joins is an array and preserves the name property - Maintains backward compatibility with object format - Adds test coverage for both array and object formats Fixes the issue where join names appear as "0", "1", "2" instead of their actual names in the /meta?extended endpoint response. * Extract the duplicate transformation logic into a local transformJoin function * feat(snowflake-driver): Upgrade Snowflake Node.js driver to 2.2.0 (#9880) * feat(snowflake-driver): Upgrade Snowflake Node.js driver to 2.2.0 * Add lock file * rerun yarn from root * dedup @azure/identity * dedup/upgrade @smithy/* pkgs --------- Co-authored-by: Konstantin Burkalev * fix yarn lock (#9883) * v1.3.52 * feat(athena-driver): export env variables for IAM assume role auth (#9882) * feat(client-core): introduce cubesql method (#9884) * feat(client-core): introduce cubesql method * error propagation * cleanup * wip * streaming method * cleanup * v1.3.53 * feat(snowflake-driver): Add queryTag connection parameter (#9889) * feat(schema-compiler): Reduce memory usage after compilation is done (#9890) * feat(schema-compiler): Reduce memory usage after compilation is done * fix yarn.lock * v1.3.54 * chore(cubestore): Track op name for out of queue operations (#9887) * docs: Nested folders support in Power BI and Excel * chore(cubestore): Add metastore benchmarks for get_tables_with_path performance testing (#9894) - Add comprehensive benchmarks for small (100), medium (1K), and large (25K) table datasets - Test both cached and non-cached execution paths - Include cold vs warm cache comparison benchmarks * chore(cubestore): Add simple allocator tracking stats for benchmarks (#9898) * perf(cubestore): Reduce memory allocations with pinned slices (#9901) The pinnable slice optimization (get_pinned() instead of get()) eliminates unnecessary data copying when reading from RocksDB, providing substantial memory savings, especially for read-heavy operations. ## Memory stats queue_get (queues: 5, size: 128 KB, per_queue: 10000/128) | Metric | Before | After | Change | Change % | |-------------------|----------------------|----------------------|-----------------------|----------| | Total allocated | 84,383,988,026 bytes | 65,841,827,472 bytes | −18,542,160,554 bytes | −21.97% | | Peak allocated | 105,403,976 bytes | 105,143,200 bytes | −260,776 bytes | −0.25% | | Allocations | 924,523,001 | 924,192,417 | −330,584 | −0.036% | | Reallocations | 3,307,477 | 3,303,015 | −4,462 | −0.135% | queue_add (queues: 1, size: 512 KB/512) | Metric | Before | After | Change | Change % | |-------------------|----------------------|----------------------|--------------------|----------| | Total allocated | 99,058,945,725 bytes | 98,877,885,492 bytes | −181,060,233 bytes | −0.183% | | Peak allocated | 105,926,929 bytes | 105,713,460 bytes | −213,469 bytes | −0.202% | | Allocations | 1,370,479,237 | 1,370,357,307 | −121,930 | −0.0089% | | Reallocations | 3,102,373 | 3,099,589 | −2,784 | −0.090% | Summary | Operation | Total Memory Saved | Improvement | |-----------|--------------------|-----------------| | queue_get | 18.5 GB | 22% reduction | | queue_add | 181 MB | 0.18% reduction | ## CPU stats | Benchmark | Parameters | Before (Min) | After (Min) | % Change | |----------------------------------------------|------------|--------------|-------------|----------| | get_tables_with_path_include_non_ready_true | 100 | 17.734 ms | 17.341 ms | -2.22% ✅ | | get_tables_with_path_include_non_ready_true | 1000 | 84.730 ms | 81.181 ms | -4.19% ✅ | | get_tables_with_path_include_non_ready_true | 25000 | 407.80 ms | 399.59 ms | -2.01% ✅ | | get_tables_with_path_include_non_ready_false | 100 | 557.35 µs | 562.17 µs | +0.86% ❌ | | get_tables_with_path_include_non_ready_false | 1000 | 277.44 µs | 287.70 µs | +3.70% ❌ | | get_tables_with_path_include_non_ready_false | 25000 | 55.345 µs | 56.001 µs | +1.19% ❌ | | get_tables_with_path_cold_cache | - | 69.834 ms | 69.266 ms | -0.81% ✅ | | get_tables_with_path_warm_cache | - | 5.450 µs | 5.621 µs | +3.14% ❌ | CacheStore Queue Benchmarks (Min of Runs) | Benchmark | Parameters | Before (Min) | After (Min) | % Change | |----------------------|-----------------------------|--------------|-------------|-----------| | queue_add | 64 kb/512 | 512.13 ms | 512.74 ms | +0.12% ❌ | | queue_add | 256 kb/512 | 268.82 ms | 269.62 ms | +0.30% ❌ | | queue_add | 512 kb/512 | 286.93 ms | 293.60 ms | +2.32% ❌ | | queue_list (Pending) | 5 queues, 128 kb | 894.36 µs | 888.31 µs | -0.68% ✅ | | queue_list (Active) | 5 queues, 128 kb | 979.40 µs | 907.67 µs | -7.33% ✅ | | queue_get | 5 queues, 128 kb, 10000/128 | 13.246 ms | 11.025 ms | -16.77% ✅ | Combined Results Summary | Category | Benchmark Type | Min Before | Min After | % Change | |------------------------|------------------------------------|------------|-----------|-----------| | Read-Heavy Operations | | | | | | Metastore | get_tables (non_ready_true) 100 | 17.734 ms | 17.341 ms | -2.22% ✅ | | Metastore | get_tables (non_ready_true) 1000 | 84.730 ms | 81.181 ms | -4.19% ✅ | | Metastore | get_tables (non_ready_true) 25000 | 407.80 ms | 399.59 ms | -2.01% ✅ | | Metastore | cold_cache | 69.834 ms | 69.266 ms | -0.81% ✅ | | Queue | queue_get | 13.246 ms | 11.025 ms | -16.77% ✅ | | Queue | queue_list (Active) | 979.40 µs | 907.67 µs | -7.33% ✅ | | Queue | queue_list (Pending) | 894.36 µs | 888.31 µs | -0.68% ✅ | | Write/Mixed Operations | | | | | | Metastore | get_tables (non_ready_false) 100 | 557.35 µs | 562.17 µs | +0.86% ❌ | | Metastore | get_tables (non_ready_false) 1000 | 277.44 µs | 287.70 µs | +3.70% ❌ | | Metastore | get_tables (non_ready_false) 25000 | 55.345 µs | 56.001 µs | +1.19% ❌ | | Metastore | warm_cache | 5.450 µs | 5.621 µs | +3.14% ❌ | | Queue | queue_add 64kb | 512.13 ms | 512.74 ms | +0.12% ❌ | | Queue | queue_add 256kb | 268.82 ms | 269.62 ms | +0.30% ❌ | | Queue | queue_add 512kb | 286.93 ms | 293.60 ms | +2.32% ❌ | * docs: fix cubeCloud example for contextToRoles * fix(schema-compiler): Fix joins getter in cube symbols (#9904) * v1.3.55 * doc: list ec2:CreateVolume permission in our BYOC doc (#9902) * chore(cubestore): Rockstore - use named threads per RWLoop/Store (#9906) * docs: Fix python cubeCloud example reference * chore(ci): Cube store - validate all subcrates + benches (#9907) * feat(cubesql): Avoid `COUNT(*)` pushdown to joined cubes (#9905) * fix(cubejs-playground): meta update propagation (#9895) * fix(cubejs-playground): meta update propagation * chore(cubejs-playground): add serve command * chore(ci): Disable Vertica tests until vertica docker image will be available (#9910) @see https://github.com/vertica/vertica-containers/issues/64 * fix(tesseract): Param casting in Presto (#9908) * fix param casting in presto * move test case * perf(schema-compiler): Reduce JS compilation memory usage 3x-5x times. (#9897) * perf(schema-compiler): Reduce JS compilation memory usage 3x-5x times. * more types * move context to compile() and remove unneded params floating around * a bit simplify wrappedCode * remove unused import * introduce AsyncLocalStorage for context store * fix link * correct resource freeing between stages * fix for async modules * add IIFETranspiler * more types * fix * fix ImportExportTranspiler to generate expression statements instead of raw calls * fix transpilers order * fix tests * v1.3.56 * chore(schema-compiler): Switch to original antlr4 package (#9886) * switch to original antlr4 package * update/fix pythonParser & SqlParser * special case for unquoted dates in values * feat(schema-compiler): groups support (#9903) * feat: introduce groups support * wip * wip * updated snapshots * v1.3.57 * fix(schema-compiler): Use join tree for pre-agg matching (#9597) * prepare test for non-match because of join tree difference * remove unused * fix some types * fix duplicates in join hint collection * Don't even try to match pre-agg if there are customSubQueryJoins * Don't try to match pre-aggs if there are MemberExpressions * add joinTree evaluation for pre-agg * more types and ts fixes * implement join tree comparison * fix tests * fix for 'rollupJoin' pre-aggs * remove comments * fix tests * fix aliasMember set for segments * fix expressionPath() * fix test * add resolveFullMemberPathFn() in BaseQuery * make real full join name path member comparison for pre-agg matching * fix tests * fix tests * add comments * Add more tests * fix tesseract skip tests * mark some tests as skipped for tesseract * sync tests * remove obsolete types * remove comment * fix tests * fix tests * skip tests for tesseract * useful comment * v1.3.58 * fix(redshift-driver): Use proper query for table column types that respects fetchColumnsByOrdinalPosition (#9915) * chore(cubesql): Disable parquet compression (not used, speedup build) (#9918) Compiling brotli, zstd, etc., compression libraries takes a lot of time. Since we don't use parquet files in SQL API, let's disable them for now to speed up release builds. It saves ~10 seconds on my M3 Max machine in release builds; it should save ~1 minute on a 4-CPU machine used on CI. More importantly, it reduces the size of the cache. * feat(cubesql): Report rewrite start/success events (#9917) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * fix(cubesql): Merge subqueries with SQL push down (#9916) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * fix(schema-compiler): Fix incorrect backAlias members collection for FILTER_PARAMS members (#9919) * fix(schema-compiler): Fix incorrect backAlias members collection for FILTER_PARAMS members * add tests * more tests * v1.3.59 * docs: Upgrade to Node.js v22 * chore(deps): bump mermaid from 10.9.3 to 10.9.4 in /docs (#9914) Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 10.9.3 to 10.9.4. - [Release notes](https://github.com/mermaid-js/mermaid/releases) - [Commits](https://github.com/mermaid-js/mermaid/compare/v10.9.3...v10.9.4) --- updated-dependencies: - dependency-name: mermaid dependency-version: 10.9.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(cubesql): Fix columns referencing outer context in subqueries (#9924) * v1.3.60 * feat(tesseract): Full key aggregate and logical plan refactoring (#9807) * fix(api-gateway): Remove stack information from error responses when not in dev mode to prevent leaking internals in prod (#9862) * feat(schema-compiler): Support shorthand for userAttributes properties in models (#9921) * more types (SymbolResolver) * add userAttributes to CONTEXT_SYMBOLS * add tests for CubePropContextTranspiler with userAttributes * Rewrite shorthand for userAttributes to full path during transpilation * remove unneded * reduce scope to ACL only * v1.3.61 * docs: Note on pre-aggregations schema name * docs: Prefer literal over folded strings in YAML * fix(tesseract): Dimnesions with granularity in group_by + drivers support (#9928) * v1.3.62 * chore(deps): bump next from 14.2.30 to 14.2.32 in /docs (#9934) Bumps [next](https://github.com/vercel/next.js) from 14.2.30 to 14.2.32. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v14.2.30...v14.2.32) --- updated-dependencies: - dependency-name: next dependency-version: 14.2.32 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * docs: Add export bucket configuration for Trino and Presto (#9932) * fix(cubejs-playground): rollup designer accordion (#9937) * feat(cubesql): Add "planningId" param to SQL API planning events (#9939) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * v1.3.63 * feat(cubesql): Automatically cast literal strings in binary expressions (#9938) * fix(cubesql): Fix SQL pushdown `TRUNC` template for Presto (#9944) * v1.3.64 * fix(client-core): CubeSqlSchemaColumn type * fix(cubesql): Correctly calculate eclass cost for recursive nodes (#9947) * v1.3.65 * fix(schema-compiler): Fix sql parser for "?" (#9945) * Fix sql parser for ? * Fix lint * Fix select alias * pr review comments * feat: Add "queryRewriteId" param to Query Rewrite events (#9949) * v1.3.66 * fix(schema-compiler): Fix multifact joined queries in Tesseract (#9954) * fix(cubesql): Pass window expressions in SQL push down (#9953) * v1.3.67 * docs: Upgrade recommendations * docs: Explanation of the Cube Cloud Region (#9952) * fix(schema-compiler): Fix incorrect pre-aggregation matching for 'rollupJoin' and 'rollupLambda' pre-aggs (#9957) * fix test for rollup join * fix(schema-compiler): Fix incorrect pre-aggregation matching for 'rollupJoin' and 'rollupLambda' pre-aggs * fix tests * re-enable tests * add more checks in tests * chore(ci): Pass more cube env vars to drivers test (#9965) * feat(cubesql): Print value of the date/time that couldn't be parsed (#9961) * perf(schema-compiler): Improve yaml compilation speed (#9926) * add convertedToJs flag * pass toCompile to compileCubeFiles() * refactored compileYamlFile() to not call compileJsFile directly * moved yaml transpilation to transpile phase * removed dataSchemaCompiler from YamlCompiler's deps * renaming * simplified code * add PerfTracker * inject perTracker measures in dataschemacompiler * update CubePropContextTranspiler to support string keys * replace original content with js on first phase * update arrow func expression instead of blind copying + correct path collection * fix grammar * more types * Preload Jinja templates to the engine * remove perf logging * simplified compileFile * avoid mutating original repository files * linter fix * filter out files we don't transpile/compile * move PerfTracker to backend-shared * Refactor doCompile() to avoid content mutation * refactor: split first and later compile/transpile stages * improve transpilationNative * perf(schema-compiler): YAML transpilation in worker threads (#9929) * extracted yaml and jinja transpilation in separate functions * implement yaml transpilation in worker threads * fix to allow use threads and native in parallel * just code polish * small fix * remove speed test as it is flacky * introduce compiledYamlCache * perf(schema-compiler): Support native YAML transpilation (#9948) * Prepare transpileYaml in native + schema compiler * fix test fix/sync error message * fix test * perf(schema-compiler): Introduce compiledJinjaCache (#9950) * reuse yaml transpilation flow for jinja files * remove perf logging * introduce compiledJinjaCache * add a comment * perf(schema-compiler): implement yaml native bulk transpilation (#9955) * fix(schema-compiler): Pass filename alongside with errors to error reporter during transpilation (#9964) * fix(schema-compiler): Fix memberToDataSource processing for views without cubes (#9974) * v1.3.68 * feat(tesseract): Switch dimensions and case measures (#9951) * v1.3.69 * fix(client-core): Fix time series generation (#9978) * fix(playground): Include lower and upper bound of date range in time dimension filter in Playground (#9979) * chore(tesseract): Native utils refactoring (#9685) * fix(schema-compiler): Fix view transpilation for worker_threads and native flows (#9980) * v1.3.70 * feat(cubesql): add `pg_catalog.pg_collation` table (#9968) * chore(tesseract): Native utils functions and errors handling (#9981) * feat(cubesql): `SET ROLE` changes authentication context (#9982) * chore(deps): bump axios from 1.8.4 to 1.12.0 (#9969) Bumps [axios](https://github.com/axios/axios) from 1.8.4 to 1.12.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.8.4...v1.12.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.12.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(native): Be happy, don't panic when unable to schedule task to PyRuntime (#9983) * feat(native): Improve safety for Python into CLRepr conversion (#9984) * v1.3.71 * feat: Upgrade rust 1.84.1 -> 1.90.0 (stable) (#9987) * fix(native): Catch panic while calling python fn in PyRuntime (#9988) * v1.3.72 * fix(cubesql): Fix push Limit-Sort down Projection recursion (#9986) * fix(cubesql): Add missing aggregate expressions for `ORDER BY` clause (#9990) * feat(cubesql): Support `SAVEPOINT`, `ROLLBACK TO`, `RELEASE` (#9992) * chore(native): Benchmark python functionality (#9994) * feat(cubesql): Match Tableau year-month extract filter pair as `inDateRange` (#9991) * feat: Expose format field for measures/dimensions in meta (#9998) * fix(cubestore): Disable quoting in csv parser for Athena (#9997) * v1.3.73 * chore(cube): Fix presto integration test (#10001) * chore(cubesql): Bump cube-js/arrow-datafusion (#10002) * v1.3.74 * chore(deps): bump DuckDB from 1.3.1 to 1.4.0 (#10000) * chore(deps): bump DuckDB from 1.3.1 to 1.4.0 --------- Co-authored-by: Hannes Oswald * fix: packages/cubejs-docker/latest-debian-jdk.Dockerfile to reduce vulnerabilities (#10003) The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-DEBIAN12-PERL-5489190 - https://snyk.io/vuln/SNYK-DEBIAN12-ZLIB-6008963 - https://snyk.io/vuln/SNYK-DEBIAN12-PAM-10378969 - https://snyk.io/vuln/SNYK-DEBIAN12-PAM-10378969 - https://snyk.io/vuln/SNYK-DEBIAN12-PAM-10378969 Co-authored-by: snyk-bot * fix: Merge measure/dimension's spec for formats (#10007) Let's merge these types for now, because Cube still allows us to define all formats for all kinds of attributes. * feat(docker): Security upgrade Node.js from 22.18.0 to 22.20.0 (#10008) * v1.3.75 * revert(duckdb-driver): Revert version bump from 1.3.1 to 1.4.0 This reverts commit f9b6f0da20934786ab68f72e8805d21a156c7388. * v1.3.76 * refactor(cubesql): Continue to remove MySQL related stuff (#10021) * refactor(cubesql): Finally drop MySQL :skull: (#10022) * fix(cubesql): Match reverse Tableau year-month extract filter (#10009) * fix(schema-compiler): Do not collect disabled external pre-aggregations (#10014) * fix(schema-compiler): Do not collect disabled external pre-aggregations Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * code polish * add a comment --------- Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Co-authored-by: Konstantin Burkalev * v1.3.77 * chore(ci): use Wait.forListeningPorts() in drivers tests (#10023) * fix(snowflake-driver): Add support for IAM roles with IRSA for S3 export buckets (#10024) * make keyId and secretKey optional for s3 * fix handling * lint * update docs * update update-all-snapshots-local * add driver test to gh workflow * address comments * revert docs changes * update validation logic * update comments * fix storage integaration name * Configure AWS credentials via IRSA * add permissions * code format * uppercase storage integration * Pass AWS envs to docker * add tests snapshot --------- Co-authored-by: Matthew Orford * fix(base-driver): Throw an error when the list of csv files from the bucket is empty (#9996) * fix(base-driver): Throw an error when the list of csv files from the bucket is empty * Update snowflake driver, do not try downloading CSV files if there were no rows exported. + removed copy/paste * feat(schema-compiler): Pretty print compile errors grouped by files (#10025) * Refactor ErrorReporter to pretty print errors * add tests * fix filename passed to errorReporter * update snapshots * v1.3.78 * docs(mdx): Write about formatting (#10016) * chore(ci): Fix code coverage uploading to codecov (#10033) * docs: Update AWS BYOC IAM role (#10035) * docs: Elaborate on scheduled_refresh: false * docs: Elaborate on CUBEJS_TOUCH_PRE_AGG_TIMEOUT * chore(ci): Switch few packages unit tests to ts-jest (#10037) * chore(ci): Switch backend-shared unit tests to ts-jest * chore(ci): Switch query-orchestrator unit tests to ts-jest * chore(ci): Switch base-driver unit tests to ts-jest * fix(client-vue3): Cleanup polluted package-lock file * fix(cubesql): Normalize timestamp/date expressions (#10040) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * feat(firebolt-driver): Pass CUBEJS_DB_QUERY_TIMEOUT to Firebolt driver (#10043) * fix(sqlite-driver): Use pragma_table_info to fetch table columns (#10031) * Add test for tablesSchema * Use pragma_table_info to fetch table columns * Rename test to unit * Update package.json I think It's enough to just call a `jest` as it will find out all the tests in expected place --------- Co-authored-by: Konstantin Burkalev * chore(ci): Automatic PR labeler (#10044) * docs: Update banner in TOC (#10051) * chore: Fix script name and command in contribution guide (#10047) — thanks @hank-sq! Updated script name and command in CONTRIBUTING.md. * docs: Remove localhost from ref in cast-numerics.mdx (#9946) — thanks @63r6o! the links on this doc page were broken, they were pointing to localhost:3000 * feat(docs): Integrate Purple Banner component into documentation site (#10053) Added the @cube-dev/purple-banner dependency and implemented it in the _app.tsx file to enhance the user interface with a promotional banner. The banner visibility is controlled via state and CSS transitions for a smooth appearance. * chore(cubesql): Pass span_id to logical plan creation function (#10056) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * docs: Edits and fixes * Update README.md * feat(cubesql): PlanNormalize - reduce stack allocations (#10055) | Stage | Description | Stack Size | Reduction | binary_expr | |-------|-------------|------------|-----------|-------------| | 1 | Original `Result` | 11,429 bytes | baseline | - | | 2 | `Result>` | 8,206 bytes | -28.2% | - | | 3 | `grouping_set_normalize` opt | 7,990 bytes | -30.1% | 5,054 bytes | | **4** | **binary_expr optimize** | **7,990 bytes** | **-30.1%** | **3,918 bytes** | * v1.3.79 * chore(cubesql): Make `create_logical_plan` async (#10059) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * feat(schema-compiler): Use views join maps and hints for query joins construction (#10039) * add tests * enable view join tests for tesseract * fix test * temp comment out tests * correct additional hints predecessors comparator OMG! Is it really working?! everything works besides loop detection correct additional hints: everything works besides loop detection * trying to adopt loop test fix actually incorrect tests * linter fix * small fix in error handling * add test case for join maps test * implement join maps * update snapshot * refactor tests * add more tests * return back loop for join resolution * fix typo * join map in tesseract * enable view join tests for tesseract * cargo fmt * uncomment test * remove println! * remove unneeded rootOfJoin * refactor tests * fix linter warning * refactor allJoinHints() * refactor: extract inlined isJoinTreesEqual() * remove unused * add support for transitive joins in tesseract * uncomment transitive joins tests for tesseract * cargo fmt * v1.3.80 * feat(tesseract): Full outer join support (#10057) * v1.3.81 * fix(cube): Meta type for switch dimension (#10060) * chore(ci): Allow labeler to correctly run on PRs from forks (#10062) * feat(cubesql): PlanNormalize - reduce stack allocations (split by path) (#10067) * feat(cubesql): Filter push down for date_part(?upper) AND date_part(?lower) (#10070) Allowing filters to be pushed down with `DATE_PART('year', ?column) = ?year AND DATE_PART('quarter', ?column) = ?quarter` by pushing it as inDateRange. Now, such queries will be accelerated with pre-aggregations. I am re-using code that we have for tablea, but without usage of `Trunc` as wrapper. I've added ability to merge date range with `quarter`. * feat(cubesql): Push down Tableau year-month-day IN number filter to CubeScan (#10068) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * fix(schema-compiler): Oracle use `TO_TIMESTAMP_TZ` for `ISO 8601 with Z` for date and timestamp (#9970) * fix(schema-compiler): use TO_TIMESTAMP_TZ for ISO 8601 with Z; keep index-friendly casts; add Oracle unit test * fix lint * fix * fix(schema-compiler): Update Oracle test to expect both date range parameters * fix * cr comments fixes --------- Co-authored-by: Konstantin Burkalev * feat(cubesql): Filter push down for date_part(?upper) AND date_part('week') (#10071) Allow to merge the week granularity date_part filter into the inDateRange. After that, it's possible to push down a complex filter: WHERE DATE_PART('year', "order_date") = 2019 AND DATE_PART('quarter', "order_date") = 2 AND DATE_PART('month', "order_date") = 4 AND DATE_PART('week', "order_date") = 15 We are using such filters in the MDX API * v1.3.82 * fix(tesseract): Fix member name case conversion (#10064) * fix(tesseract): Fix member name case conversion Prepend "_" even to the first UPPERCASE letter in the name * add tests * fix tests * cargo fmt * fix(client-react): isLoading is set to false early (#10075) * feat(cubesql): Push down `CAST(... AS DATE)` to CubeScan filters (#10081) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * chore(ci): Increase jest timeout for redshift tests to be able to pass (#10063) * chore(ci): Increase jest timeout for redshift tests to be able to pass * set CUBEJS_DB_MAX_POOL for Redshift Tests * add delays between pre-aggs build * decrease CUBEJS_DB_MAX_POOL * decrease CUBEJS_DB_MAX_POOL * add delay between create tables queries * more delays for redshift * more timeout adjustments * increase timeouts * comment put heavy tests * skip tests for tesseract * docs(mdx): Date hierarchies (#10082) * feat(schema-compiler): Support time series queries in MySQL dialect in Tesseract (#10078) * fix formatInterval() as MySQL doesn't support milliseconds * more types * add ilike templates for tesseract * add time_series_* templates * update snapshots * add mysql + tesseract tests in CI * skip some tests for tesseract * cast as TIMESTAMP * skip some tests for tesseract * fix templates * skip some tests for tesseract * fix templates * update snapshots * fix skip tests * feat(api-gateway): Introduce cache mode option for `/cubesql` API (#9972) * add cache option to the query * Pass CacheMode from /cubesql to backend * imject CacheMode into more places * update normalizeQuery with cache mode * pass cache mode within graphql * pass new cache mode in sqlApiLoad in API GW * fix types imports * update preAggs to use cache option instead of renewQuery * code polish * comments with types * fix query type * set default cacheMode = 'stale-if-slow' in normalize() * more types and polish * backbone code for 'stale-if-slow' & 'stale-while-revalidate' * make query cache aware of queryBody.cache === 'must-revalidate' * First attempt to implement 'no-cache' scenario * add cache to open api spec and regenerate rust client * pass cache mode to cubeScan * cargo clippy/fmt * Implement background refresh * add cache mode descriptions * remove query cache mode from normalize query * pass cacheMode to getSqlResponseInternal * remove obsolete * add cacheMode as input param in orchestratorApi * open api spec fix * fix cubesql after introducing cacheMode * rename cache → cacheMode * clean up obsolete * pass cache_mode from SqlApiLoadPayload * fix important * move 'no-cache' variant into queryCache.cachedQueryResult() * remove cacheMode from client query body types (it's incorrect) * switch RefreshScheduler to use cacheMode instead of renewQuery * remove obsolete continueWait flag * fix refresh scheduler * add fallback to renewQuery in api gw * fix tests * Docs * Deprecation * refactor api gw: move copy/paste into this.normalizeCacheMode() * fix tests snapshots * return cacheMode into query object * fix tests * some cleanup (removed renewQuery) * update cacheMod in graphql * return back cache as public prop in query * fix * lint fix # Conflicts: # packages/cubejs-api-gateway/package.json * fix subscribe() * remove cache from subscribe * fix CacheMode serialization * refactor: move normalizeQueryCacheMode to normalize --------- Co-authored-by: Igor Lukanin * v1.3.83 * feat(schema-compiler): Support joins for proxied time dimensions in pre-aggregations (#10020) * feat(schema-compiler): Support joins for proxied time dimensions in pre-aggregations * add tests * chore(ci): Fix timezones in cacheKeyQueries tests (#10087) * fix(schema-compiler): add support for time filters and rolling windows and fix subquery aliasing in Oracle dialect (#10066) * fix(schema-compiler): remove hardcoded AS keyword in subquery aliases for Oracle compatibility Oracle database does not support the AS keyword for table/subquery aliasing, while other databases like PostgreSQL and MySQL do. The existing BaseQuery implementation hardcoded 'as' in subquery alias generation, causing Oracle queries to fail. This change: - Replaces hardcoded 'as' with asSyntaxJoin property in BaseQuery - Oracle returns empty string for asSyntaxJoin (no AS keyword) - PostgreSQL/MySQL return 'AS' (maintains existing behavior) - Adds comprehensive Oracle query test suite validating AS syntax removal - Adds PostgreSQL regression test ensuring AS keyword is still present This fixes queries with rolling windows and multiple subqueries on Oracle, which previously generated invalid SQL like: SELECT ... FROM (...) as q_0 INNER JOIN (...) as q_1 ON ... Now Oracle correctly generates: SELECT ... FROM (...) q_0 INNER JOIN (...) q_1 ON ... * fix(oracle): add support for time filters and rolling windows - Fix AS keyword in subquery aliases (Oracle doesn't support it) - Handle time dimensions without granularity to prevent TypeError - Implement Oracle-specific interval arithmetic using ADD_MONTHS and NUMTODSINTERVAL - Add comprehensive test suite for Oracle query generation These changes enable Oracle users to execute queries with: - Time dimension filters without granularity specification - Rolling windows and time-based calculations - Multiple subqueries with proper aliasing All changes maintain backward compatibility with other database adapters. * add tests for subtractInterval and addInterval in oracle * fix(oracle): exclude time dimensions without granularity from GROUP BY Oracle's custom groupByClause() was incorrectly including time dimensions without granularity in the GROUP BY clause, causing SQL errors when time dimensions were used solely for filtering (no grouping). Changes: - Update OracleQuery.groupByClause() to check selectColumns() before including dimensions in GROUP BY - Time dimensions without granularity return null from selectColumns(), so they are now properly excluded - Add comprehensive tests for both PostgreSQL and Oracle covering: * Time dimensions without granularity (filtering only) * Time dimensions with granularity (grouping and filtering) - Remove unnecessary guard in BaseQuery.dimensionTimeGroupedColumn() as it's no longer needed with the Oracle-specific fix The fix aligns Oracle's behavior with PostgreSQL, which already handles this correctly through its base implementation. * fix(cube-orchestrator): Deterministic column sequence in output (#10086) * fix: Deterministic column sequence in output * fix: tests fixed * fix: Removed unused import * chore(ci): trigger workflow rerun --------- Co-authored-by: usman.yasin * fix(cubesql): Coerce strings with any type in binary expressions (#10088) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> * feat(client-core): add CacheMode type (#10091) * feat(client-core): add CacheMode type * feat(client-core): add synchronization comment for CacheMode type * v1.3.84 * fix(schema-compiler): Add missing numeric types to scaffolding schema, thanks @XUJiahua (#10079) * fix(schema-compiler): Fix incorrect cache that affects query joins (#10084) + tests * fix(schema-compiler): Fix pre-agg matching for 'rollupJoin' / 'rollupLambda' pre-aggregations (#10017) * expose joinGraph from transformQueryToCanUseForm() * get rid of ramda in favor of simple js * preparing dimensionsMatch() * fix(schema-compiler): Fix pre-agg matching for 'rollupJoin' / 'rollupLambda' pre-aggregations * add tests # Conflicts: # packages/cubejs-schema-compiler/test/integration/postgres/pre-aggregations.test.ts * add test for 3-cube rollupJoin pre-agg * use rollupsReferences for 'rollupJoin' / 'rollupLambda' pre-agg matching * fix old tests with new required fields * more tests * implement pre-agg matching using pre-agg join subgraphs * fix incorrect cache for pre-aggs * fix canUsePreAggregationNotAdditive * skip test for tesseract * export type * more types * build fullNames for rollupJoin/Lambda in the evaluatedPreAggregationObj() * add memberShortNameFromPath() to Evaluator * fix type * get rid of references.fullName* in favor of fullpath-members * some refactoring to avoid copy/paste * add 'rollupJoin pre-aggregation matching with transitive joins' test * fix buildRollupJoin * fix resolveJoinMembers() * implement sortMembersByJoinTree() * fix joint hints collection for transitive joins * remove obsolete * revert back obsolete * fix joint hints collection for transitive joins * fix joint hints collection for transitive joins * update joinTreeForHints() with skipQueryJoinMap flag * fix buildRollupJoin() * fix datamodel for rollupJoin tests * simplify buildRollupJoin() and evaluatedPreAggregationObj() * fix tests * remove obsolete * add test for pre-agg with not-full paths * more types * improve error message in preAggObjForJoin() * fix(schema-compiler): Fix inherited drill members for views (#9966) * Add drillMembers and drillMembersGrouped to inhereted properties by views * feat: Implement drill member inheritance for view cubes and enhance error reporting # Conflicts: # packages/cubejs-schema-compiler/src/compiler/ErrorReporter.ts * PR comments * Move filtering logic to generateIncludeMembers * more types in CubeSymbols * Simplified drillMembers filtering for views * fix/correct test comments * update snapshot * fix drill members inheritance (cases of non-owned members) * fix tests --------- Co-authored-by: Paco Valdez * v1.3.85 * feat(tesseract): Bucketing (#10095) * v1.3.86 * chore(cube): Remove debug output in integration tests (#10100) * chore(ci): Fix codecov collection in push CI WF (#10099) * docs: Calendar cubes --------- Signed-off-by: dependabot[bot] Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Co-authored-by: Dmitry Patsura Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: waralexrom <108349432+waralexrom@users.noreply.github.com> Co-authored-by: Konstantin Burkalev Co-authored-by: Dmitriy Rusov Co-authored-by: Alena Batitskaia Co-authored-by: Maxim Co-authored-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Co-authored-by: Mike Nitsenko Co-authored-by: Stuart Auld Co-authored-by: mgaudin-open <112853573+mgaudin-open@users.noreply.github.com> Co-authored-by: Pavel Tiunov Co-authored-by: snyk-bot Co-authored-by: Julio Avila Co-authored-by: Émile Filteau-Tessier Co-authored-by: Daniel Costa <113521963+dacosta444@users.noreply.github.com> Co-authored-by: Daniel Costa Co-authored-by: Andrey Yamanov Co-authored-by: Alex Vasilev Co-authored-by: Alex Vasilev Co-authored-by: Francisco Valdez de la Fuente Co-authored-by: jocelynz-stripe Co-authored-by: Derek Co-authored-by: Giangblackk Co-authored-by: Hannes <65758037+hannosgit@users.noreply.github.com> Co-authored-by: Hannes Oswald Co-authored-by: Matthew Orford Co-authored-by: Guille <54317276+guilledll@users.noreply.github.com> Co-authored-by: Alexander Chiu Co-authored-by: Ludvig Fischerström Co-authored-by: Hank Ditton <157509033+hank-sq@users.noreply.github.com> Co-authored-by: Gergo <102681223+63r6o@users.noreply.github.com> Co-authored-by: Artyom Keydunov Co-authored-by: Tom Tankilevitch <59158507+Tankilevitch@users.noreply.github.com> Co-authored-by: Usman Yasin Co-authored-by: usman.yasin Co-authored-by: johancube Co-authored-by: XUJiahua --- .../caching/recipes/non-additivity.mdx | 6 +- docs/pages/product/data-modeling/concepts.mdx | 9 +- .../product/data-modeling/concepts/_meta.js | 3 +- .../concepts/calculated-members.mdx | 145 ++++ .../data-modeling/concepts/calendar-cubes.mdx | 459 ++++++++++++ .../concepts/multi-stage-calculations.mdx | 191 ++--- .../recipes/period-over-period.mdx | 99 ++- .../product/data-modeling/reference/cube.mdx | 17 +- .../data-modeling/reference/dimensions.mdx | 337 +++++++-- .../data-modeling/reference/measures.mdx | 688 ++++++++++++++---- .../reference/types-and-formats.mdx | 8 +- 11 files changed, 1614 insertions(+), 348 deletions(-) create mode 100644 docs/pages/product/data-modeling/concepts/calendar-cubes.mdx diff --git a/docs/pages/product/caching/recipes/non-additivity.mdx b/docs/pages/product/caching/recipes/non-additivity.mdx index bd959dc3aea77..e7cf33d942c05 100644 --- a/docs/pages/product/caching/recipes/non-additivity.mdx +++ b/docs/pages/product/caching/recipes/non-additivity.mdx @@ -165,8 +165,7 @@ cube(`users`, { ### Decomposing into a formula with additive measures -Non-additive `avg` measures can be rewritten as -[calculated measures](/product/data-modeling/reference/measures#calculated-measures) +Non-additive `avg` measures can be rewritten as [calculated measures][ref-calculated-measures] that reference additive measures only. Then, this additive measures can be used in pre-aggregations. Please note, however, that you shouldn't include `avg_age` measure in your pre-aggregation as it renders it non-additive. @@ -245,4 +244,5 @@ or run it with the `docker-compose up` command. You'll see the result, including queried data, in the console. -[ref-percentile-recipe]: /product/data-modeling/recipes/percentiles \ No newline at end of file +[ref-percentile-recipe]: /product/data-modeling/recipes/percentiles +[ref-calculated-measures]: /product/data-modeling/concepts/calculated-members#calculated-measures \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts.mdx b/docs/pages/product/data-modeling/concepts.mdx index d175a3d0562a4..588406a7ce6e6 100644 --- a/docs/pages/product/data-modeling/concepts.mdx +++ b/docs/pages/product/data-modeling/concepts.mdx @@ -42,7 +42,7 @@ metrics-first approaches. _Cubes_ represent datasets in Cube and are conceptually similar to [views in SQL][wiki-view-sql]. Cubes are usually declared in separate files with one cube per file. Typically, a cube points to a single table in -your database using the [`sql_table` property][ref-schema-ref-sql-table]: +your [data source][ref-data-sources] using the [`sql_table` property][ref-schema-ref-sql-table]: @@ -104,6 +104,9 @@ Cubes and their members can be further referenced by [views](#views). Note that cubes support [extension][ref-extending-cubes], [polymorphism][ref-polymorphic-cubes], and [data blending][ref-data-blending]. +Custom calendars, such as retail calendars, can be implemented using [calendar +cubes][ref-calendar-cubes]. + Cubes can be defined statically and you can also build [dynamic data models][ref-dynamic-data-models]. @@ -850,4 +853,6 @@ See the reference documentaton for the full list of pre-aggregation [ref-custom-calendar-recipe]: /product/data-modeling/recipes/custom-calendar [ref-cube-with-dbt]: /product/data-modeling/recipes/dbt [ref-apis-support]: /product/apis-integrations#data-modeling -[ref-viz-tools]: /product/configuration/visualization-tools \ No newline at end of file +[ref-viz-tools]: /product/configuration/visualization-tools +[ref-data-sources]: /product/configuration/data-sources +[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/_meta.js b/docs/pages/product/data-modeling/concepts/_meta.js index 5c26138e38f43..0c799f03ac780 100644 --- a/docs/pages/product/data-modeling/concepts/_meta.js +++ b/docs/pages/product/data-modeling/concepts/_meta.js @@ -2,7 +2,8 @@ module.exports = { "calculated-members": "Calculated members", "multi-stage-calculations": "Multi-stage calculations", "working-with-joins": "Joins between cubes", + "calendar-cubes": "Calendar cubes", "code-reusability-extending-cubes": "Extension", "polymorphic-cubes": "Polymorphic cubes", "data-blending": "Data blending" -} \ No newline at end of file +} diff --git a/docs/pages/product/data-modeling/concepts/calculated-members.mdx b/docs/pages/product/data-modeling/concepts/calculated-members.mdx index e5faefb5b8c4e..053efa0a957c6 100644 --- a/docs/pages/product/data-modeling/concepts/calculated-members.mdx +++ b/docs/pages/product/data-modeling/concepts/calculated-members.mdx @@ -17,6 +17,8 @@ into formulas that involve simpler measures. Also, calculated measures [can help][ref-decomposition-recipe] to use [non-additive][ref-non-additive] measures with pre-aggregations. +### Members of the same cube + In the following example, the `completed_ratio` measure is calculated as a division of `completed_count` by total `count`. Note that the result is also multiplied by `1.0` since [integer division in SQL][link-postgres-division] would otherwise produce an @@ -90,6 +92,149 @@ FROM ( ) AS "orders" ``` +### Members of other cubes + +If you have `first_cube` that is [joined][ref-joins] to `second_cube`, you can define a +calculated measure that references measures from both `first_cube` and `second_cube`. +When you query for this calculated measure, Cube will transparently generate SQL with +necessary joins. + +In the following example, the `orders.purchases_to_users_ratio` measure references the +`purchases` measure from the `orders` cube and the `count` measure from the `users` cube: + + + +```javascript +cube(`orders`, { + sql: ` + SELECT 1 AS id, 11 AS user_id, 'processing' AS status UNION ALL + SELECT 2 AS id, 11 AS user_id, 'completed' AS status UNION ALL + SELECT 3 AS id, 11 AS user_id, 'completed' AS status + `, + + dimensions: { + id: { + sql: `id`, + type: `number`, + primary_key: true + } + }, + + measures: { + purchases: { + type: `count`, + filters: [{ + sql: `${CUBE}.status = 'completed'` + }] + } + } +}) + +cube(`users`, { + sql: ` + SELECT 11 AS id, 'Alice' AS name UNION ALL + SELECT 12 AS id, 'Bob' AS name UNION ALL + SELECT 13 AS id, 'Eve' AS name + `, + + joins: { + orders: { + sql: `${CUBE}.id = ${orders}.user_id`, + relationship: `one_to_many` + } + }, + + dimensions: { + id: { + sql: `id`, + type: `number`, + primary_key: true + } + }, + + measures: { + count: { + type: `count` + }, + + purchases_to_users_ratio: { + sql: `100.0 * ${orders.purchases} / ${CUBE.count}`, + type: `number`, + format: `percent` + } + } +}) +``` + +```yaml +cubes: + - name: orders + sql: > + SELECT 1 AS id, 11 AS user_id, 'processing' AS status UNION ALL + SELECT 2 AS id, 11 AS user_id, 'completed' AS status UNION ALL + SELECT 3 AS id, 11 AS user_id, 'completed' AS status + + dimensions: + - name: id + sql: id + type: number + primary_key: true + + measures: + - name: purchases + type: count + filters: + - sql: "{CUBE}.status = 'completed'" + + - name: users + sql: > + SELECT 11 AS id, 'Alice' AS name UNION ALL + SELECT 12 AS id, 'Bob' AS name UNION ALL + SELECT 13 AS id, 'Eve' AS name + + joins: + - name: orders + sql: "{CUBE}.id = {orders}.user_id" + relationship: one_to_many + + dimensions: + - name: id + sql: id + type: number + primary_key: true + + measures: + - name: count + type: count + + - name: purchases_to_users_ratio + sql: "1.0 * {orders.purchases} / {CUBE.count}" + type: number +``` + + + +If you query for `users.purchases_to_users_ratio`, Cube will generate the following SQL: + +```sql +SELECT + 1.0 * COUNT( + CASE + WHEN ("orders".status = 'completed') THEN "orders".id + END + ) / COUNT(DISTINCT "users".id) "users__purchases_to_users_ratio" +FROM ( + SELECT 11 AS id, 'Alice' AS name UNION ALL + SELECT 12 AS id, 'Bob' AS name UNION ALL + SELECT 13 AS id, 'Eve' AS name +) AS "users" +LEFT JOIN ( + SELECT 1 AS id, 11 AS user_id, 'processing' AS status UNION ALL + SELECT 2 AS id, 11 AS user_id, 'completed' AS status UNION ALL + SELECT 3 AS id, 11 AS user_id, 'completed' AS status +) AS "orders" ON "users".id = "orders".user_id +``` + ## Proxy dimensions **Proxy dimensions reference dimensions from the same cube or other cubes.** diff --git a/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx b/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx new file mode 100644 index 0000000000000..fe18dc10f6e24 --- /dev/null +++ b/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx @@ -0,0 +1,459 @@ +# Calendar cubes + +_Calendar cubes_ are used to implement custom calendars, such as retail calendars. +If your data model contains a calendar table, it can be modeled as a calendar cube. + +Calendar cubes can be used to [override](#overriding-time-shifts) the default time +shift behavior of time-shift measures as well as [override](#overriding-granularities) +the default granularities of time dimensions. + +## Configuration + +Calendar cubes are [cubes][ref-cubes] where the [`calendar` parameter][ref-cubes-calendar] +is set to `true`. This indicates that the cube is a calendar cube and allow the use of +custom time shifts and granularities. + + + +```yaml +cubes: + - name: fiscal_calendar + calendar: true + sql: > + SELECT + date_key, + calendar_date, + start_of_week, start_of_month, start_of_year, + week_ago, month_ago, year_ago + FROM calendar_table + + dimensions: + - name: date_key + sql: date + type: time + primary_key: true + + - name: date + sql: date + type: time + + time_shift: + - type: prior + interval: 1 week + sql: "{CUBE}.week_ago" + + - type: prior + interval: 1 month + sql: "{CUBE}.month_ago" + + - type: prior + interval: 1 year + sql: "{CUBE}.year_ago" + + granularities: + - name: week + sql: "{CUBE}.start_of_week" + + - name: month + sql: "{CUBE}.start_of_month" + + - name: year + sql: "{CUBE}.start_of_year" +``` + +```javascript +cube('fiscal_calendar', { + calendar: true, + sql: ` + SELECT + date_key, + calendar_date, + start_of_week, start_of_month, start_of_year, + week_ago, month_ago, year_ago + FROM calendar_table + `, + + dimensions: { + date_key: { + sql: 'date_key', + type: 'time', + primary_key: true + }, + + date: { + sql: 'calendar_date', + type: 'time', + + time_shift: [ + { type: 'prior', interval: '1 week', sql: '{CUBE}.week_ago' }, + { type: 'prior', interval: '1 month', sql: '{CUBE}.month_ago' }, + { type: 'prior', interval: '1 year', sql: '{CUBE}.year_ago' } + ], + + granularities: [ + { name: 'week', sql: '{CUBE}.start_of_week' }, + { name: 'month', sql: '{CUBE}.start_of_month' }, + { name: 'year', sql: '{CUBE}.start_of_year' } + ] + } + } +}) +``` + + + +Calendar cubes are only useful when they are joined with other cubes in the data model. + + + +```yaml +cubes: + - name: sales + sql_table: sales_facts + + joins: + - name: fiscal_calendar + sql: "{CUBE}.date = {fiscal_calendar.date_key}" + relationship: many_to_one + + # ... +``` + +```javascript +cube(`sales`, { + sql_table: `sales_facts`, + + joins: { + fiscal_calendar: { + sql: `${CUBE}.date = ${fiscal_calendar.date_key}`, + relationship: `many_to_one` + } + }, + + // ... +}) +``` + + + +## Overriding time shifts + +Calendar cubes can be used to override the default time shift behavior of [time-shift +measures][ref-time-shift]. It can help implement custom time shifts or reuse common time +shifts across multiple cubes. + +By default, a time shift like `prior` + `1 month` will add `INTERVAL '1 month'` to the +time dimension value in the generated SQL. However, with custom calendars, a more nuanced +approach is often needed, such as mapping each date to another pre-calculated date from +the calendar table. + +In the following example, the `custom_calendar` cube defines a custom time shift for +`prior` + `1 month` that uses the `month_ago` column from the calendar table. It also +defines a custom time shift `my_favorite_time_shift` of type `prior` + the `42 days` +interval. + + + +```yaml +cubes: + - name: custom_calendar + calendar: true + sql: > + SELECT '2025-01-01' AS date, '2024-12-15' AS month_ago UNION ALL + SELECT '2025-02-01' AS date, '2025-01-15' AS month_ago UNION ALL + SELECT '2025-03-01' AS date, '2025-02-15' AS month_ago UNION ALL + SELECT '2025-04-01' AS date, '2025-03-15' AS month_ago UNION ALL + SELECT '2025-05-01' AS date, '2025-04-15' AS month_ago UNION ALL + SELECT '2025-06-01' AS date, '2025-05-15' AS month_ago + + dimensions: + - name: date_key + sql: "{CUBE}.date::TIMESTAMP" + type: time + primary_key: true + + - name: date + sql: "{CUBE}.date::TIMESTAMP" + type: time + + time_shift: + - type: prior + interval: 1 month + sql: "{CUBE}.month_ago::TIMESTAMP" + + - type: prior + interval: 42 days + name: my_favorite_time_shift + + - name: sales + sql: > + SELECT 1 AS id, 101 AS amount, '2025-01-01'::TIMESTAMP AS date UNION ALL + SELECT 2 AS id, 202 AS amount, '2025-02-01'::TIMESTAMP AS date UNION ALL + SELECT 3 AS id, 303 AS amount, '2025-03-01'::TIMESTAMP AS date UNION ALL + SELECT 4 AS id, 404 AS amount, '2025-04-01'::TIMESTAMP AS date UNION ALL + SELECT 5 AS id, 505 AS amount, '2025-05-01'::TIMESTAMP AS date UNION ALL + SELECT 6 AS id, 606 AS amount, '2025-06-01'::TIMESTAMP AS date + + joins: + - name: custom_calendar + sql: "{CUBE}.date = {custom_calendar.date_key}" + relationship: many_to_one + + dimensions: + - name: id + sql: id + type: number + primary_key: true + + measures: + - name: total_sales + sql: amount + type: sum + + - name: total_sales_prior_month + sql: "{total_sales}" + type: number + time_shift: + - type: prior + interval: 1 month + + - name: total_sales_few_days_ago + sql: "{total_sales}" + type: number + time_shift: + - name: my_favorite_time_shift +``` + +```javascript +cube(`custom_calendar`, { + calendar: true, + sql: ` + SELECT '2025-01-01' AS date, '2024-12-15' AS month_ago UNION ALL + SELECT '2025-02-01' AS date, '2025-01-15' AS month_ago UNION ALL + SELECT '2025-03-01' AS date, '2025-02-15' AS month_ago UNION ALL + SELECT '2025-04-01' AS date, '2025-03-15' AS month_ago UNION ALL + SELECT '2025-05-01' AS date, '2025-04-15' AS month_ago UNION ALL + SELECT '2025-06-01' AS date, '2025-05-15' AS month_ago + `, + + dimensions: { + date_key: { + sql: `${CUBE}.date::TIMESTAMP`, + type: `time`, + primary_key: true + }, + + date: { + sql: `${CUBE}.date::TIMESTAMP`, + type: `time`, + + time_shift: [ + { type: `prior`, interval: `1 month`, sql: `${CUBE}.month_ago::TIMESTAMP` }, + { type: `prior`, interval: `42 days`, name: `my_favorite_time_shift` } + ] + } + } +}) + +cube(`sales`, { + sql: ` + SELECT 1 AS id, 101 AS amount, '2025-01-01'::TIMESTAMP AS date UNION ALL + SELECT 2 AS id, 202 AS amount, '2025-02-01'::TIMESTAMP AS date UNION ALL + SELECT 3 AS id, 303 AS amount, '2025-03-01'::TIMESTAMP AS date UNION ALL + SELECT 4 AS id, 404 AS amount, '2025-04-01'::TIMESTAMP AS date UNION ALL + SELECT 5 AS id, 505 AS amount, '2025-05-01'::TIMESTAMP AS date UNION ALL + SELECT 6 AS id, 606 AS amount, '2025-06-01'::TIMESTAMP AS date + `, + + joins: { + custom_calendar: { + sql: `${CUBE}.date = ${custom_calendar.date_key}`, + relationship: `many_to_one` + } + }, + + dimensions: { + id: { + sql: `id`, + type: `number`, + primary_key: true + } + }, + + measures: { + total_sales: { + sql: `amount`, + type: `sum` + }, + + total_sales_prior_month: { + sql: `{total_sales}`, + type: `number`, + time_shift: [ + { type: `prior`, interval: `1 month` } + ] + }, + + total_sales_few_days_ago: { + sql: `{total_sales}`, + type: `number`, + time_shift: [ + { name: `my_favorite_time_shift` } + ] + } + } +}) +``` + + + +Whe `sales.total_sales_prior_month` and `sales.total_sales_few_days_ago` measures are +queried together with the `calendar.date` time dimension, the generate SQL will use the +custom time shifts defined in the `custom_calendar` cube: one with the `month_ago` +column and another with `INTERVAL '42 days'`. + +## Overriding granularities + +Calendar cubes can be used to override the default [granularities][ref-granularities] of +[time dimensions][ref-time-dimension]. + +By default, SQL functions like `DATE_TRUNC` are used to calculate default granularities, +such as `day`, `month`, or `year`. However, custom calendars often have different +definitions for these periods, e.g., a retail calendar might use 4-5-4 week patterns. + +Calendar cubes allow you to define custom SQL expressions for each granularity. +In the following example, the `fiscal_calendar` cube overrides the default `month` +granularity to the to a pre-calculated `mid_month` column: + + + +```yaml +cubes: + - name: custom_calendar + calendar: true + sql: > + SELECT '2025-01-02' AS date, '2025-01-15' AS mid_month UNION ALL + SELECT '2025-02-04' AS date, '2025-02-15' AS mid_month UNION ALL + SELECT '2025-03-09' AS date, '2025-03-15' AS mid_month UNION ALL + SELECT '2025-04-17' AS date, '2025-04-15' AS mid_month UNION ALL + SELECT '2025-05-21' AS date, '2025-05-15' AS mid_month UNION ALL + SELECT '2025-06-30' AS date, '2025-06-15' AS mid_month + + dimensions: + - name: date_key + sql: date + type: time + primary_key: true + + - name: date + sql: date + type: time + primary_key: true + + granularities: + - name: month + sql: "{CUBE}.mid_month::TIMESTAMP" + + - name: sales + sql: > + SELECT 1 AS id, 101 AS amount, '2025-01-02'::TIMESTAMP AS date UNION ALL + SELECT 2 AS id, 202 AS amount, '2025-02-04'::TIMESTAMP AS date UNION ALL + SELECT 3 AS id, 303 AS amount, '2025-03-09'::TIMESTAMP AS date UNION ALL + SELECT 4 AS id, 404 AS amount, '2025-04-17'::TIMESTAMP AS date UNION ALL + SELECT 5 AS id, 505 AS amount, '2025-05-21'::TIMESTAMP AS date UNION ALL + SELECT 6 AS id, 606 AS amount, '2025-06-30'::TIMESTAMP AS date + + joins: + - name: custom_calendar + sql: "{CUBE}.date = {custom_calendar.date}" + relationship: many_to_one + + dimensions: + - name: id + sql: id + type: number + primary_key: true + + measures: + - name: revenue + sql: amount + type: sum +``` + +```javascript +cube(`custom_calendar`, { + calendar: true, + sql: ` + SELECT '2025-01-02' AS date, '2025-01-15' AS mid_month UNION ALL + SELECT '2025-02-04' AS date, '2025-02-15' AS mid_month UNION ALL + SELECT '2025-03-09' AS date, '2025-03-15' AS mid_month UNION ALL + SELECT '2025-04-17' AS date, '2025-04-15' AS mid_month UNION ALL + SELECT '2025-05-21' AS date, '2025-05-15' AS mid_month UNION ALL + SELECT '2025-06-30' AS date, '2025-06-15' AS mid_month + `, + + dimensions: { + date_key: { + sql: `date`, + type: `time`, + primary_key: true + }, + + date: { + sql: `date`, + type: `time`, + primary_key: true, + + granularities: [ + { name: `month`, sql: `${CUBE}.mid_month::TIMESTAMP` } + ] + } + } +}) + +cube(`sales`, { + sql: ` + SELECT 1 AS id, 101 AS amount, '2025-01-02'::TIMESTAMP AS date UNION ALL + SELECT 2 AS id, 202 AS amount, '2025-02-04'::TIMESTAMP AS date UNION ALL + SELECT 3 AS id, 303 AS amount, '2025-03-09'::TIMESTAMP AS date UNION ALL + SELECT 4 AS id, 404 AS amount, '2025-04-17'::TIMESTAMP AS date UNION ALL + SELECT 5 AS id, 505 AS amount, '2025-05-21'::TIMESTAMP AS date UNION ALL + SELECT 6 AS id, 606 AS amount, '2025-06-30'::TIMESTAMP AS date + `, + + joins: { + custom_calendar: { + sql: `${CUBE}.date = ${custom_calendar.date}`, + relationship: `many_to_one` + } + }, + + dimensions: { + id: { + sql: `id`, + type: `number`, + primary_key: true + } + }, + + measures: { + revenue: { + sql: `amount`, + type: `sum` + } + } +}) +``` + + + +When querying `sales.revenue` by `custom_calendar.date` with monthly granularity, the +`mid_month` column will be used instead of the standard `DATE_TRUNC('month', date)` +expression in the generated SQL. + + +[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift +[ref-time-dimension]: /product/data-modeling/concepts#time-dimensions +[ref-granularities]: /product/data-modeling/reference/dimensions#granularities +[ref-cubes]: /product/data-modeling/reference/cube +[ref-cubes-calendar]: /product/data-modeling/reference/cube#calendar \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx b/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx index e0e179e046ebc..d2b227764d9ab 100644 --- a/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx +++ b/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx @@ -26,8 +26,8 @@ Please track [this issue](https://github.com/cube-js/cube/issues/8487). Common uses of multi-stage calculations: - [Rolling window](#rolling-window) calculations. +- [Time-shift](#time-shift) calculations, e.g., year-over-year sales growth. - [Period-to-date](#period-to-date) calculations, e.g., year-to-date (YTD) analysis. -- [Prior date](#prior-date) calculations, e.g., year-over-year sales growth. - [Fixed dimension](#fixed-dimension) calculations, e.g., comparing individual items to a broader dataset or calculating percent of total. - [Ranking](#ranking) calculations. @@ -98,45 +98,48 @@ Query and result: -## Period-to-date +## Time shift -Period-to-date calculations can be used to analyze data over different time periods: +A _time-shift measure_ calculates the value of another measure at a different point in +time. This is achieved by _shifting_ the time dimension from the query in the necessary +direction during the calculation. Time-shifts are configured using the [`time_shift` +parameter][ref-ref-time-shift] of a measure. -- Year-to-date (YTD) analysis. -- Quarter-to-date (QTD) analysis. -- Month-to-date (MTD) analysis. +Typically, this is used to compare the current value of a measure with its prior value, +such as the same time last year. For example, if you have the `revenue` measure, you can +calculate its value for the same time last year: ```yaml -- name: revenue_ytd - sql: revenue - type: sum - rolling_window: - type: to_date - granularity: year - -- name: revenue_qtd - sql: revenue - type: sum - rolling_window: - type: to_date - granularity: quarter - -- name: revenue_mtd - sql: revenue - type: sum - rolling_window: - type: to_date - granularity: month +- name: revenue_prior_year + multi_stage: true + sql: "{revenue}" + type: number + time_shift: + - interval: 1 year + type: prior ``` +You can use time-shift measures with [calendar cubes][ref-calendar-cubes] to customize +how time-shifting works, e.g., to shift the time dimension to the prior date in a retail +calendar. + ### Example Data model: ```yaml cubes: - - name: period_to_date + - name: prior_date sql: | + SELECT '2023-04-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-05-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-06-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-07-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-08-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-09-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-10-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-11-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL + SELECT '2023-12-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL SELECT '2024-01-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL SELECT '2024-02-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL SELECT '2024-03-01'::TIMESTAMP AS time, 1000 AS revenue UNION ALL @@ -162,55 +165,71 @@ cubes: type: time measures: - - name: revenue_ytd - sql: revenue - type: sum - rolling_window: - type: to_date - granularity: year - - - name: revenue_qtd + - name: revenue sql: revenue type: sum - rolling_window: - type: to_date - granularity: quarter - - - name: revenue_mtd + + - name: revenue_ytd sql: revenue type: sum rolling_window: type: to_date - granularity: month + granularity: year + + - name: revenue_prior_year + multi_stage: true + sql: "{revenue}" + type: number + time_shift: + - time_dimension: time + interval: 1 year + type: prior + + - name: revenue_prior_year_ytd + multi_stage: true + sql: "{revenue_ytd}" + type: number + time_shift: + - time_dimension: time + interval: 1 year + type: prior ``` -Query and result: +Queries and results: - + -## Prior date + + +## Period-to-date -Prior date calculations can be used to find the difference between two aggregated -measures, like year-over-year sales growth. +Period-to-date calculations can be used to analyze data over different time periods: + +- Year-to-date (YTD) analysis. +- Quarter-to-date (QTD) analysis. +- Month-to-date (MTD) analysis. ```yaml -- name: revenue_prior_year - multi_stage: true - sql: "{revenue}" - type: number - time_shift: - - time_dimension: calendar.CalendarDate - interval: 1 year - type: prior - -- name: revenue_prior_year_ytd - multi_stage: true - sql: "{revenue_ytd}" - type: number - time_shift: - - time_dimension: calendar.CalendarDate - interval: 1 year - type: prior +- name: revenue_ytd + sql: revenue + type: sum + rolling_window: + type: to_date + granularity: year + +- name: revenue_qtd + sql: revenue + type: sum + rolling_window: + type: to_date + granularity: quarter + +- name: revenue_mtd + sql: revenue + type: sum + rolling_window: + type: to_date + granularity: month ``` ### Example @@ -255,41 +274,31 @@ cubes: type: time measures: - - name: revenue - sql: revenue - type: sum - - name: revenue_ytd sql: revenue type: sum rolling_window: type: to_date granularity: year - - - name: revenue_prior_year - multi_stage: true - sql: "{revenue}" - type: number - time_shift: - - time_dimension: time - interval: 1 year - type: prior - - - name: revenue_prior_year_ytd - multi_stage: true - sql: "{revenue_ytd}" - type: number - time_shift: - - time_dimension: time - interval: 1 year - type: prior + + - name: revenue_qtd + sql: revenue + type: sum + rolling_window: + type: to_date + granularity: quarter + + - name: revenue_mtd + sql: revenue + type: sum + rolling_window: + type: to_date + granularity: month ``` -Queries and results: - - +Query and result: - + ## Fixed dimension @@ -459,4 +468,6 @@ Query and result: [ref-measures]: /product/data-modeling/concepts#measures [ref-dimensions]: /product/data-modeling/concepts#dimensions [ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window -[link-cte]: https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL#Common_table_expression \ No newline at end of file +[link-cte]: https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL#Common_table_expression +[ref-ref-time-shift]: /product/data-modeling/reference/measures#time_shift +[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes diff --git a/docs/pages/product/data-modeling/recipes/period-over-period.mdx b/docs/pages/product/data-modeling/recipes/period-over-period.mdx index fb807b71e0fa2..aceb93f6fcef6 100644 --- a/docs/pages/product/data-modeling/recipes/period-over-period.mdx +++ b/docs/pages/product/data-modeling/recipes/period-over-period.mdx @@ -10,26 +10,26 @@ revenue, etc. In Cube, calculating a period-over-period metric involves the following steps: -- Define a couple of [`rolling_window` measures][ref-rolling-window] with -different windows, i.e., one for _this period_ and the other for the -_previous period_. +- Define a [multi-stage measure][ref-multi-stage] for the _current period_. +- Define a [time-shift measure][link-time-shift] that references the current +period measure and shifts it to the _previous period_. - Define a [calculated measure][ref-calculated-measure] that references -these `rolling_window` measures and uses them in a calculation, e.g., -divides or subtracts them. +these measures and uses them in a calculation, e.g., divides or subtracts them. -Tesseract, the [next-generation data modeling engine][link-tesseract], -provides a more efficient way to calculate [period-over-period changes][link-period-over-period]. -Tesseract is currently in preview. Use the `CUBEJS_TESSERACT_SQL_PLANNER` -environment variable to enable it. +Multi-stage calculations are powered by Tesseract, the [next-generation data modeling +engine][link-tesseract]. Tesseract is currently in preview. Use the +`CUBEJS_TESSERACT_SQL_PLANNER` environment variable to enable it. The following data model allows to calculate a month-over-month change of -some value. `current_month_sum` and `previous_month_sum` measures define -two rolling windows and the `month_over_month_ratio` measure divides -their values: +some value. `current_month_sum` is the base measure, `previous_month_sum` +is a time-shift measure that shifts the current month data to the previous +month, and the `month_over_month_ratio` measure divides their values: + + ```yaml cubes: @@ -53,22 +53,68 @@ cubes: - name: current_month_sum sql: value type: sum - rolling_window: - trailing: 1 month - offset: end - name: previous_month_sum - sql: value - type: sum - rolling_window: - trailing: 1 month - offset: start + multi_stage: true + sql: "{current_month_sum}" + type: number + time_shift: + - interval: 1 month + type: prior - name: month_over_month_ratio - sql: "{current_month_sum} / {previous_month_sum}" + multi_stage: true + sql: "{current_month_sum} / NULLIF({previous_month_sum}, 0)" type: number ``` +```javascript +cube(`month_over_month`, { + sql: ` + SELECT 1 AS value, '2024-01-01'::TIMESTAMP AS date UNION ALL + SELECT 2 AS value, '2024-01-01'::TIMESTAMP AS date UNION ALL + SELECT 3 AS value, '2024-02-01'::TIMESTAMP AS date UNION ALL + SELECT 4 AS value, '2024-02-01'::TIMESTAMP AS date UNION ALL + SELECT 5 AS value, '2024-03-01'::TIMESTAMP AS date UNION ALL + SELECT 6 AS value, '2024-03-01'::TIMESTAMP AS date UNION ALL + SELECT 7 AS value, '2024-04-01'::TIMESTAMP AS date UNION ALL + SELECT 8 AS value, '2024-04-01'::TIMESTAMP AS date + `, + + dimensions: { + date: { + sql: `date`, + type: `time` + } + }, + + measures: { + current_month_sum: { + sql: `value`, + type: `sum` + }, + + previous_month_sum: { + multi_stage: true, + sql: `${current_month_sum}`, + type: `number`, + time_shift: [{ + interval: `1 month`, + type: `prior` + }] + }, + + month_over_month_ratio: { + multi_stage: true, + sql: `${current_month_sum} / NULLIF(${previous_month_sum}, 0)`, + type: `number` + } + } +}) +``` + + + ## Result Often, when calculating period-over-period changes, you would also use a @@ -81,23 +127,24 @@ that matches the period, i.e., `month` for month-over-month calculations: { "dimension": "month_over_month.date", "granularity": "month", - "dateRange": "this year" + "dateRange": ["2024-01-01", "2025-01-01"] } ], "measures": [ "month_over_month.current_month_sum", "month_over_month.previous_month_sum", - "month_over_month.change" + "month_over_month.month_over_month_ratio" ] } ``` Here's the result: - + + -[ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window +[ref-multi-stage]: /product/data-modeling/concepts/multi-stage-calculations [ref-calculated-measure]: /product/data-modeling/overview#4-using-calculated-measures [ref-time-dimension-granularity]: /product/apis-integrations/rest-api/query-format#time-dimensions-format [link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine -[link-period-over-period]: /product/data-modeling/concepts/multi-stage-calculations#prior-date \ No newline at end of file +[link-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift diff --git a/docs/pages/product/data-modeling/reference/cube.mdx b/docs/pages/product/data-modeling/reference/cube.mdx index e85105401c4c2..c43ae050bf0ef 100644 --- a/docs/pages/product/data-modeling/reference/cube.mdx +++ b/docs/pages/product/data-modeling/reference/cube.mdx @@ -593,6 +593,16 @@ cubes: +### `calendar` + +The `calendar` parameter is used to mark [calendar cubes][ref-calendar-cubes]. +It's set to `false` by default. + +When set to `true`, Cube will treat this cube as a calendar cube and allow to +[override time-shifts][ref-calendar-cubes-time-shifts] and [granularities][ref-calendar-cubes-granularities] +on its [time dimensions][ref-time-dimensions]. This can be useful for [time-shift +calculations][ref-time-shift] with a custom calendar. + ### `pre_aggregations` The `pre_aggregations` parameter is used to configure [pre-aggregations][ref-ref-pre-aggs]. @@ -636,4 +646,9 @@ The `access_policy` parameter is used to configure [data access policies][ref-re [ref-ref-pre-aggs]: /product/data-modeling/reference/pre-aggregations [ref-ref-dap]: /product/data-modeling/reference/data-access-policies [ref-syntax-cube-sql]: /product/data-modeling/syntax#cubesql-function -[ref-extension]: /product/data-modeling/concepts/code-reusability-extending-cubes \ No newline at end of file +[ref-extension]: /product/data-modeling/concepts/code-reusability-extending-cubes +[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes +[ref-calendar-cubes-time-shifts]: /product/data-modeling/concepts/calendar-cubes#time-shifts +[ref-calendar-cubes-granularities]: /product/data-modeling/concepts/calendar-cubes#granularities +[ref-time-dimensions]: /product/data-modeling/concepts#time-dimensions +[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift \ No newline at end of file diff --git a/docs/pages/product/data-modeling/reference/dimensions.mdx b/docs/pages/product/data-modeling/reference/dimensions.mdx index d8bcc24d68f00..e4d088b76dfe3 100644 --- a/docs/pages/product/data-modeling/reference/dimensions.mdx +++ b/docs/pages/product/data-modeling/reference/dimensions.mdx @@ -148,6 +148,42 @@ cube(`products`, { }) ``` +### `title` + +You can use the `title` parameter to change a dimension's displayed name. By +default, Cube will humanize your dimension key to create a display name. In +order to override default behavior, please use the `title` property: + + + +```javascript +cube(`products`, { + // ... + + dimensions: { + meta_value: { + title: `Size`, + sql: `meta_value`, + type: `string` + } + } +}) +``` + +```yaml +cubes: + - name: products + # ... + + dimensions: + - name: meta_value + title: Size + sql: meta_value + type: string +``` + + + ### `description` This parameter provides a human-readable description of a dimension. @@ -184,6 +220,42 @@ cubes: +### `public` + +The `public` parameter is used to manage the visibility of a dimension. Valid +values for `public` are `true` and `false`. When set to `false`, this dimension +**cannot** be queried through the API. Defaults to `true`. + + + +```javascript +cube(`products`, { + // ... + + dimensions: { + comment: { + sql: `comment`, + type: `string`, + public: false + } + } +}) +``` + +```yaml +cubes: + - name: products + # ... + + dimensions: + - name: comment + sql: comment + type: string + public: false +``` + + + ### `format` `format` is an optional parameter. It is used to format the output of dimensions @@ -419,42 +491,6 @@ cubes: -### `public` - -The `public` parameter is used to manage the visibility of a dimension. Valid -values for `public` are `true` and `false`. When set to `false`, this dimension -**cannot** be queried through the API. Defaults to `true`. - - - -```javascript -cube(`products`, { - // ... - - dimensions: { - comment: { - sql: `comment`, - type: `string`, - public: false - } - } -}) -``` - -```yaml -cubes: - - name: products - # ... - - dimensions: - - name: comment - sql: comment - type: string - public: false -``` - - - ### `sql` `sql` is a required parameter. It can take any valid SQL expression depending on @@ -525,42 +561,6 @@ cubes: -### `title` - -You can use the `title` parameter to change a dimension's displayed name. By -default, Cube will humanize your dimension key to create a display name. In -order to override default behavior, please use the `title` property: - - - -```javascript -cube(`products`, { - // ... - - dimensions: { - meta_value: { - title: `Size`, - sql: `meta_value`, - type: `string` - } - } -}) -``` - -```yaml -cubes: - - name: products - # ... - - dimensions: - - name: meta_value - title: Size - sql: meta_value - type: string -``` - - - ### `type` `type` is a required parameter. There are various types that can be assigned to @@ -700,6 +700,193 @@ cube(`orders`, { +#### Calendar cubes + +When the `granularities` parameter is used in time dimensions within [calendar +cubes][ref-calendar-cubes], you can still use it to define custom granularities. + +Additionally, you can override the _default granularities_. This can be useful for +modeling custom calendars, such as fiscal calendars. + + + +```yaml +cubes: + - name: fiscal_calendar + calendar: true + sql: > + SELECT + date_key, + calendar_date, + start_of_month, + start_of_quarter, + start_of_year + FROM calendar_table + + dimensions: + - name: date_key + sql: date_key + type: time + primary_key: true + + - name: date + sql: calendar_date + type: time + granularities: + - name: month + sql: "{CUBE}.start_of_month" + + - name: quarter + sql: "{CUBE}.start_of_quarter" + + - name: year + sql: "{CUBE}.start_of_year" + +``` + +```javascript +cube(`fiscal_calendar`, { + calendar: true, + sql: ` + SELECT + date_key, + calendar_date, + start_of_month, + start_of_quarter, + start_of_year + FROM calendar_table + `, + + dimensions: { + date_key: { + sql: `date_key`, + type: `time`, + primary_key: true + }, + + date: { + sql: `calendar_date`, + type: `time`, + granularities: { + month: { + sql: `${CUBE}.start_of_month` + }, + quarter: { + sql: `${CUBE}.start_of_quarter` + }, + year: { + sql: `${CUBE}.start_of_year` + } + } + } + } +}) +``` + + + +### `time_shift` + +The `time_shift` parameter allows overriding the time shift behavior for time dimensions +within [calendar cubes][ref-calendar-cubes]. Such time shifts can be referenced in +[time-shift measures][ref-time-shift] of other cubes, enabling the use of custom calendars. + +The `time_shift` parameter can only be set on _time dimensions_ within _calendar cubes_, +i.e., cubes where the [`calendar` parameter][ref-cube-calendar] is set to `true`. + +The `time_shift` parameter accepts an array of time shift definitions. Each definition +can include `time_dimension`, `type`, `interval`, and `name` parameters, similarly to the +[`time_shift` parameter][ref-measure-time-shift] of time-shift measures. Additionally, +you can use the `sql` parameter to define a custom time mapping using a SQL expression. + + + +```yaml +cubes: + - name: fiscal_calendar + calendar: true + sql: > + SELECT + date_key, + calendar_date, + fiscal_date_prior_year, + fiscal_date_next_quarter + FROM calendar_table + + dimensions: + - name: date_key + sql: date_key + type: time + primary_key: true + + - name: date + sql: calendar_date + type: time + time_shift: + - name: prior_calendar_year + type: prior + interval: 1 year + + - name: next_calendar_quarter + type: next + interval: 1 quarter + + - name: prior_fiscal_year + sql: "{CUBE}.fiscal_date_prior_year" + + - name: next_fiscal_quarter + sql: "{CUBE}.fiscal_date_next_quarter" +``` + +```javascript +cube(`fiscal_calendar`, { + calendar: true, + sql: ` + SELECT + date_key, + calendar_date, + fiscal_date_prior_year, + fiscal_date_next_quarter + FROM calendar_table + `, + + dimensions: { + date_key: { + sql: `date_key`, + type: `time`, + primary_key: true + }, + + date: { + sql: `calendar_date`, + type: `time`, + time_shift: [ + { + name: `prior_calendar_year`, + type: `prior`, + interval: `1 year` + }, + { + name: `next_calendar_quarter`, + type: `next`, + interval: `1 quarter` + }, + { + name: `prior_fiscal_year`, + sql: `${CUBE}.fiscal_date_prior_year` + }, + { + name: `next_fiscal_quarter`, + sql: `${CUBE}.fiscal_date_next_quarter` + } + ] + } + } +}); +``` + + + [ref-ref-cubes]: /product/data-modeling/reference/cube [ref-schema-ref-joins]: /product/data-modeling/reference/joins @@ -716,4 +903,8 @@ cube(`orders`, { [link-date-time-string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format [ref-custom-granularity-recipe]: /product/data-modeling/recipes/custom-granularity [ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies -[ref-data-sources]: /product/configuration/data-sources \ No newline at end of file +[ref-data-sources]: /product/configuration/data-sources +[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes +[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift +[ref-cube-calendar]: /product/data-modeling/reference/cube#calendar +[ref-measure-time-shift]: /product/data-modeling/reference/measures#time_shift diff --git a/docs/pages/product/data-modeling/reference/measures.mdx b/docs/pages/product/data-modeling/reference/measures.mdx index fea84705e73d9..7de4a76b86a21 100644 --- a/docs/pages/product/data-modeling/reference/measures.mdx +++ b/docs/pages/product/data-modeling/reference/measures.mdx @@ -50,6 +50,42 @@ cubes: +### `title` + +You can use the `title` parameter to change a measure’s displayed name. By +default, Cube will humanize your measure key to create a display name. In order +to override default behavior, please use the `title` parameter. + + + +```javascript +cube(`orders`, { + // ... + + measures: { + orders_count: { + title: `Number of Orders Placed`, + sql: `id`, + type: `count` + } + } +}) +``` + +```yaml +cubes: + - name: orders + # ... + + measures: + - name: orders_count + title: Number of Orders Placed + sql: id + type: count +``` + + + ### `description` This parameter provides a human-readable description of a measure. @@ -86,14 +122,45 @@ cubes: -### `drill_members` +### `public` -Using the `drill_members` parameter, you can define a set of [drill -down][ref-drilldowns] fields for the measure. `drill_members` is defined as an -array of dimensions. Cube automatically injects dimensions’ names and other -cubes’ names with dimensions in the context, so you can reference these -variables in the `drill_members` array. [Learn more about how to define and use -drill downs][ref-drilldowns]. +The `public` parameter is used to manage the visibility of a measure. Valid +values for `public` are `true` and `false`. When set to `false`, this measure +**cannot** be queried through the API. Defaults to `true`. + + + +```javascript +cube(`orders`, { + // ... + + measures: { + orders_count: { + sql: `id`, + type: `count`, + public: false + } + } +}) +``` + +```yaml +cubes: + - name: orders + # ... + + measures: + - name: orders_count + sql: id + type: count + public: false +``` + + + +### `meta` + +Custom metadata. Can be used to pass any information to the frontend. @@ -105,7 +172,9 @@ cube(`orders`, { revenue: { type: `sum`, sql: `price`, - drill_members: [id, price, status, products.name, products.id] + meta: { + any: "value" + } } } }) @@ -120,20 +189,18 @@ cubes: - name: revenue type: sum sql: price - drill_members: - - id - - price - - status - - products.name - - products.id + meta: + any: value ``` -### `filters` +### `sql` -If you want to add some conditions for a metric's calculation, you should use -the `filters` parameter. The syntax looks like the following: +`sql` is a required parameter. It can take any valid SQL expression depending on +the `type` of the measure. Please refer to the [Measure Types +Guide][ref-schema-ref-types-formats-measures-types] for detailed information on +the corresponding `sql` parameter. @@ -142,10 +209,9 @@ cube(`orders`, { // ... measures: { - orders_completed_count: { - sql: `id`, - type: `count`, - filters: [{ sql: `${CUBE}.status = 'completed'` }] + users_count: { + sql: `COUNT(*)`, + type: `number` } } }) @@ -157,21 +223,25 @@ cubes: # ... measures: - - name: orders_completed_count - sql: id - type: count - filters: - - sql: "{CUBE}.status = 'completed'" + - name: users_count + sql: "COUNT(*)" + type: number ``` -### `format` +Depending on the measure [type](#type), the `sql` parameter would either: +* Be skipped (in case of the `count` type). +* Contain an aggregate function, e.g., `STRING_AGG(string_dimension, ',')` +(in case of `string`, `time`, `boolean`, and `number` types). +* Contain a non-aggregated expression that Cube would wrap into an aggregate +function according to the measure type (in case of the `avg`, `count_distinct`, +`count_distinct_approx`, `min`, `max`, and `sum` types). -`format` is an optional parameter. It is used to format the output of measures -in different ways, for example, as currency for `revenue`. Please refer to the -[Measure Formats][ref-schema-ref-types-formats-measures-formats] for the full -list of supported formats. +### `filters` + +If you want to add some conditions for a metric's calculation, you should use +the `filters` parameter. The syntax looks like the following: @@ -180,10 +250,10 @@ cube(`orders`, { // ... measures: { - total: { - sql: `amount`, - type: `sum`, - format: `currency` + orders_completed_count: { + sql: `id`, + type: `count`, + filters: [{ sql: `${CUBE}.status = 'completed'` }] } } }) @@ -195,17 +265,21 @@ cubes: # ... measures: - - name: total - sql: amount - type: sum - format: currency + - name: orders_completed_count + sql: id + type: count + filters: + - sql: "{CUBE}.status = 'completed'" ``` -### `meta` +### `type` -Custom metadata. Can be used to pass any information to the frontend. +`type` is a required parameter. There are various types that can be assigned to +a measure. Please refer to the [Measure +Types][ref-schema-ref-types-formats-measures-types] for the full list of measure +types. @@ -214,12 +288,9 @@ cube(`orders`, { // ... measures: { - revenue: { - type: `sum`, - sql: `price`, - meta: { - any: "value" - } + orders_count: { + sql: `id`, + type: `count` } } }) @@ -231,11 +302,9 @@ cubes: # ... measures: - - name: revenue - type: sum - sql: price - meta: - any: value + - name: orders_count + sql: id + type: count ``` @@ -348,127 +417,442 @@ cubes: -### `public` +### `multi_stage` -The `public` parameter is used to manage the visibility of a measure. Valid -values for `public` are `true` and `false`. When set to `false`, this measure -**cannot** be queried through the API. Defaults to `true`. +The `multi_stage` parameter is used to define measures that are used with [multi-stage +calculations][ref-multi-stage], e.g., [time-shift measures][ref-time-shift]. +```yaml +cubes: + - name: time_shift + sql: > + SELECT '2024-01-01'::TIMESTAMP AS time, 100 AS revenue UNION ALL + SELECT '2024-02-01'::TIMESTAMP AS time, 200 AS revenue UNION ALL + SELECT '2024-03-01'::TIMESTAMP AS time, 300 AS revenue UNION ALL + + SELECT '2025-01-01'::TIMESTAMP AS time, 400 AS revenue UNION ALL + SELECT '2025-02-01'::TIMESTAMP AS time, 500 AS revenue UNION ALL + SELECT '2025-03-01'::TIMESTAMP AS time, 600 AS revenue + + dimensions: + - name: time + sql: time + type: time + + measures: + - name: revenue + sql: revenue + type: sum + + - name: revenue_prior_year + multi_stage: true + sql: "{revenue}" + type: number + time_shift: + - time_dimension: time + interval: 1 year + type: prior +``` + ```javascript -cube(`orders`, { - // ... +cube(`time_shift`, { + sql: ` + SELECT '2024-01-01'::TIMESTAMP AS time, 100 AS revenue UNION ALL + SELECT '2024-02-01'::TIMESTAMP AS time, 200 AS revenue UNION ALL + SELECT '2024-03-01'::TIMESTAMP AS time, 300 AS revenue UNION ALL + + SELECT '2025-01-01'::TIMESTAMP AS time, 400 AS revenue UNION ALL + SELECT '2025-02-01'::TIMESTAMP AS time, 500 AS revenue UNION ALL + SELECT '2025-03-01'::TIMESTAMP AS time, 600 AS revenue + `, + + dimensions: { + time: { + sql: `time`, + type: `time` + } + }, measures: { - orders_count: { - sql: `id`, - type: `count`, - public: false + revenue: { + sql: `revenue`, + type: `sum` + }, + + revenue_prior_year: { + multi_stage: true, + sql: `${revenue}`, + type: `number`, + time_shift: [ + { + time_dimension: `time`, + interval: `1 year`, + type: `prior` + } + ] } } }) ``` -```yaml -cubes: - - name: orders - # ... + - measures: - - name: orders_count - sql: id - type: count - public: false -``` +### `time_shift` - +The `time_shift` parameter is used to configure a [time shift][ref-time-shift] for a +measure. It accepts an array of time shift configurations that consist of `time_dimension`, +`type`, `interval`, and `name` parameters. -### `sql` +#### `type` and `interval` -`sql` is a required parameter. It can take any valid SQL expression depending on -the `type` of the measure. Please refer to the [Measure Types -Guide][ref-schema-ref-types-formats-measures-types] for detailed information on -the corresponding `sql` parameter. +These parameters define the time shift direction and size. The `type` can be either +`prior` (shifting time backwards) or `next` (shifting time forwards). +The `interval` parameter defines the size of the time shift and has the following format: +`quantity unit`, e.g., `1 year` or `7 days`. -```javascript -cube(`orders`, { - // ... +```yaml + measures: + - name: revenue + sql: revenue + type: sum + + - name: revenue_7d_ago + multi_stage: true + sql: "{revenue}" + type: number + time_shift: + - interval: 7 days + type: prior + + - name: revenue_1y_ago + multi_stage: true + sql: "{revenue}" + type: number + time_shift: + - interval: 1 year + type: prior +``` +```javascript measures: { - users_count: { - sql: `COUNT(*)`, - type: `number` + revenue: { + sql: `revenue`, + type: `sum` + }, + + revenue_7d_ago: { + multi_stage: true, + sql: `${revenue}`, + type: `number`, + time_shift: [ + { + interval: `7 days`, + type: `prior` + } + ] + }, + + revenue_1y_ago: { + multi_stage: true, + sql: `${revenue}`, + type: `number`, + time_shift: [ + { + interval: `1 year`, + type: `prior` + } + ] } } -}) ``` -```yaml -cubes: - - name: orders - # ... + + +#### `time_dimension` + +The `time_dimension` parameter is used to specify the time dimension for the time shift. +If it's omitted, Cube will apply the time shift to all time dimensions in the query. +In this case, only single time shift configuration is allowed in `time_shift`. + +If `time_dimension` is specified, the time shift will only happen if the query contains +this very time dimension. This is useful if you'd like to apply different time shifts to +different time dimensions or if you want to apply a time shift only when a specific time +dimension is present in the query. + + +```yaml measures: - - name: users_count - sql: "COUNT(*)" + - name: revenue + sql: revenue + type: sum + + - name: lagging_revenue + multi_stage: true + sql: "{revenue}" type: number + time_shift: + - time_dimension: purchase_date + interval: 3 months + type: prior + + - time_dimension: shipping_date + interval: 2 months + type: prior + + - time_dimension: delivery_date + interval: 1 month + type: prior ``` - +```javascript + measures: { + revenue: { + sql: `revenue`, + type: `sum` + }, -Depending on the measure [type](#type), the `sql` parameter would either: -* Be skipped (in case of the `count` type). -* Contain an aggregate function, e.g., `STRING_AGG(string_dimension, ',')` -(in case of `string`, `time`, `boolean`, and `number` types). -* Contain a non-aggregated expression that Cube would wrap into an aggregate -function according to the measure type (in case of the `avg`, `count_distinct`, -`count_distinct_approx`, `min`, `max`, and `sum` types). + lagging_revenue: { + multi_stage: true, + sql: `${revenue}`, + type: `number`, + time_shift: [ + { + time_dimension: `purchase_date`, + interval: `3 months`, + type: `prior` + }, + { + time_dimension: `shipping_date`, + interval: `2 months`, + type: `prior` + }, + { + time_dimension: `delivery_date`, + interval: `1 month`, + type: `prior` + } + ] + } + } +``` -### `title` + -You can use the `title` parameter to change a measure’s displayed name. By -default, Cube will humanize your measure key to create a display name. In order -to override default behavior, please use the `title` parameter. +#### `name` + +The `name` parameter is used to reference a _named time shift_ that is defined on a time +dimension from a [calendar cube][ref-calendar-cubes]. Named time shifts are used in cases +when different measures use the same time shift configuration (e.g., `prior` + `1 year`) +but have to be shifted differently depending on the custom calendar. +```yaml +cubes: + - name: sales_calendar + calendar: true + sql: > + SELECT '2025-06-02Z' AS date, '2024-06-01Z' AS mapped_date, '2024-06-03Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-03Z' AS date, '2024-06-02Z' AS mapped_date, '2024-06-04Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-04Z' AS date, '2024-06-03Z' AS mapped_date, '2024-06-05Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-05Z' AS date, '2024-06-04Z' AS mapped_date, '2024-06-06Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-06Z' AS date, '2024-06-05Z' AS mapped_date, '2024-06-07Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-07Z' AS date, '2024-06-06Z' AS mapped_date, '2024-06-08Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-08Z' AS date, '2024-06-07Z' AS mapped_date, '2024-06-09Z' AS mapped_date_alt + + dimensions: + - name: date_key + sql: "{CUBE}.date::TIMESTAMP" + type: time + primary_key: true + + - name: date + sql: "{CUBE}.date::TIMESTAMP" + type: time + time_shift: + - name: 1_year_prior + sql: "{CUBE}.mapped_date::TIMESTAMP" + + - name: 1_year_prior_alternative + sql: "{CUBE}.mapped_date_alt::TIMESTAMP" + + - name: sales + sql: > + SELECT 101 AS id, '2024-06-01Z' AS date, 101 AS amount UNION ALL + SELECT 102 AS id, '2024-06-02Z' AS date, 102 AS amount UNION ALL + SELECT 103 AS id, '2024-06-03Z' AS date, 103 AS amount UNION ALL + SELECT 104 AS id, '2024-06-04Z' AS date, 104 AS amount UNION ALL + SELECT 105 AS id, '2024-06-05Z' AS date, 105 AS amount UNION ALL + SELECT 106 AS id, '2024-06-06Z' AS date, 106 AS amount UNION ALL + SELECT 107 AS id, '2024-06-07Z' AS date, 107 AS amount UNION ALL + SELECT 108 AS id, '2024-06-08Z' AS date, 108 AS amount UNION ALL + SELECT 109 AS id, '2024-06-09Z' AS date, 109 AS amount UNION ALL + + SELECT 202 AS id, '2025-06-02Z' AS date, 202 AS amount UNION ALL + SELECT 203 AS id, '2025-06-03Z' AS date, 203 AS amount UNION ALL + SELECT 204 AS id, '2025-06-04Z' AS date, 204 AS amount UNION ALL + SELECT 205 AS id, '2025-06-05Z' AS date, 205 AS amount UNION ALL + SELECT 206 AS id, '2025-06-06Z' AS date, 206 AS amount UNION ALL + SELECT 207 AS id, '2025-06-07Z' AS date, 207 AS amount UNION ALL + SELECT 208 AS id, '2025-06-08Z' AS date, 208 AS amount + + joins: + - name: sales_calendar + sql: "{sales.date} = {sales_calendar.date_key}" + relationship: many_to_one + + dimensions: + - name: id + sql: id + type: number + primary_key: true + + - name: date + sql: "{CUBE}.date::TIMESTAMP" + type: time + public: false + + measures: + - name: total_amount + sql: amount + type: sum + + - name: total_amount_1y_prior + multi_stage: true + sql: "{total_amount}" + type: number + time_shift: + - name: 1_year_prior + + - name: total_amount_1y_prior_alternative + multi_stage: true + sql: "{total_amount}" + type: number + time_shift: + - name: 1_year_prior_alternative +``` + ```javascript -cube(`orders`, { - // ... +cube(`sales_calendar`, { + sql: ` + SELECT '2025-06-02Z' AS date, '2024-06-01Z' AS mapped_date, '2024-06-03Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-03Z' AS date, '2024-06-02Z' AS mapped_date, '2024-06-04Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-04Z' AS date, '2024-06-03Z' AS mapped_date, '2024-06-05Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-05Z' AS date, '2024-06-04Z' AS mapped_date, '2024-06-06Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-06Z' AS date, '2024-06-05Z' AS mapped_date, '2024-06-07Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-07Z' AS date, '2024-06-06Z' AS mapped_date, '2024-06-08Z' AS mapped_date_alt UNION ALL + SELECT '2025-06-08Z' AS date, '2024-06-07Z' AS mapped_date, '2024-06-09Z' AS mapped_date_alt + `, + + dimensions: { + date_key: { + sql: `${CUBE}.date::TIMESTAMP`, + type: `time`, + primary_key: true + }, - measures: { - orders_count: { - title: `Number of Orders Placed`, - sql: `id`, - type: `count` + date: { + sql: `${CUBE}.date::TIMESTAMP`, + type: `time`, + time_shift: [ + { + name: `1_year_prior`, + sql: `${CUBE}.mapped_date::TIMESTAMP` + }, + { + name: `1_year_prior_alternative`, + sql: `${CUBE}.mapped_date_alt::TIMESTAMP` + } + ] } } }) -``` -```yaml -cubes: - - name: orders - # ... +cube(`sales`, { + sql: ` + SELECT 101 AS id, '2024-06-01Z' AS date, 101 AS amount UNION ALL + SELECT 102 AS id, '2024-06-02Z' AS date, 102 AS amount UNION ALL + SELECT 103 AS id, '2024-06-03Z' AS date, 103 AS amount UNION ALL + SELECT 104 AS id, '2024-06-04Z' AS date, 104 AS amount UNION ALL + SELECT 105 AS id, '2024-06-05Z' AS date, 105 AS amount UNION ALL + SELECT 106 AS id, '2024-06-06Z' AS date, 106 AS amount UNION ALL + SELECT 107 AS id, '2024-06-07Z' AS date, 107 AS amount UNION ALL + SELECT 108 AS id, '2024-06-08Z' AS date, 108 AS amount UNION ALL + SELECT 109 AS id, '2024-06-09Z' AS date, 109 AS amount UNION ALL + + SELECT 202 AS id, '2025-06-02Z' AS date, 202 AS amount UNION ALL + SELECT 203 AS id, '2025-06-03Z' AS date, 203 AS amount UNION ALL + SELECT 204 As id, '2025-06-04Z' As date, 204 As amount UNION ALL + SELECT 205 As id, '2025-06-05Z' As date, 205 As amount UNION ALL + SELECT 206 As id, '2025-06-06Z' As date, 206 As amount UNION ALL + SELECT 207 As id, '2025-06-07Z' As date, 207 As amount UNION ALL + SELECT 208 As id, '2025-06-08Z' As date, 208 As amount + `, + + joins: { + sales_calendar: { + sql: `${sales}.date = ${sales_calendar}.date_key`, + relationship: `many_to_one` + } + }, - measures: - - name: orders_count - title: Number of Orders Placed - sql: id - type: count + dimensions: { + id: { + sql: `id`, + type: `number`, + primary_key: true + }, + + date: { + sql: `${CUBE}.date::TIMESTAMP`, + type: `time`, + public: false + } + }, + + measures: { + total_amount: { + sql: `amount`, + type: `sum` + }, + + total_amount_1y_prior: { + multi_stage: true, + sql: `${total_amount}`, + type: `number`, + time_shift: [{ + name: `1_year_prior` + }] + }, + + total_amount_1y_prior_alternative: { + multi_stage: true, + sql: `${total_amount}`, + type: `number`, + time_shift: [{ + name: `1_year_prior_alternative` + }] + } + } +) ``` -### `type` +Named time shifts also allow to reuse the same time shift configuration across multiple +measures and cubes where they are defined. -`type` is a required parameter. There are various types that can be assigned to -a measure. Please refer to the [Measure -Types][ref-schema-ref-types-formats-measures-types] for the full list of measure -types. +### `format` + +`format` is an optional parameter. It is used to format the output of measures +in different ways, for example, as currency for `revenue`. Please refer to the +[Measure Formats][ref-schema-ref-types-formats-measures-formats] for the full +list of supported formats. @@ -477,9 +861,10 @@ cube(`orders`, { // ... measures: { - orders_count: { - sql: `id`, - type: `count` + total: { + sql: `amount`, + type: `sum`, + format: `currency` } } }) @@ -491,18 +876,22 @@ cubes: # ... measures: - - name: orders_count - sql: id - type: count + - name: total + sql: amount + type: sum + format: currency ``` -## Calculated measures +### `drill_members` -In the case where you need to specify a formula for measure calculating with -other measures, you can compose a formula in `sql`. For example, to calculate -the conversion of buyers of all users. +Using the `drill_members` parameter, you can define a set of [drill +down][ref-drilldowns] fields for the measure. `drill_members` is defined as an +array of dimensions. Cube automatically injects dimensions’ names and other +cubes’ names with dimensions in the context, so you can reference these +variables in the `drill_members` array. [Learn more about how to define and use +drill downs][ref-drilldowns]. @@ -511,10 +900,10 @@ cube(`orders`, { // ... measures: { - purchases_to_created_account_ratio: { - sql: `${purchases} / ${users.count} * 100.0`, - type: `number`, - format: `percent` + revenue: { + type: `sum`, + sql: `price`, + drill_members: [id, price, status, products.name, products.id] } } }) @@ -526,17 +915,19 @@ cubes: # ... measures: - - name: purchases_to_created_account_ratio - sql: "{purchases} / {users.count} * 100.0" - type: number - format: percent + - name: revenue + type: sum + sql: price + drill_members: + - id + - price + - status + - products.name + - products.id ``` -You can create calculated measures from several joined cubes. In this case, a -join will be created automatically. - [ref-ref-cubes]: /product/data-modeling/reference/cube [ref-schema-ref-types-formats-measures-types]: @@ -548,4 +939,7 @@ join will be created automatically. [ref-playground]: /product/workspace/playground [ref-apis]: /product/apis-integrations [ref-rolling-window]: /product/data-modeling/concepts/multi-stage-calculations#rolling-window -[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine \ No newline at end of file +[link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine +[ref-multi-stage]: /product/data-modeling/concepts/multi-stage-calculations +[ref-time-shift]: /product/data-modeling/concepts/multi-stage-calculations#time-shift +[ref-calendar-cubes]: /product/data-modeling/concepts/calendar-cubes diff --git a/docs/pages/product/data-modeling/reference/types-and-formats.mdx b/docs/pages/product/data-modeling/reference/types-and-formats.mdx index 89b67d765b582..095490a054e41 100644 --- a/docs/pages/product/data-modeling/reference/types-and-formats.mdx +++ b/docs/pages/product/data-modeling/reference/types-and-formats.mdx @@ -133,9 +133,8 @@ cubes: ### `number` -The `number` type is usually used, when performing arithmetic operations on -arithmetic operations on measures. [Learn more about Calculated -Measures][ref-schema-ref-calc-measures]. +The `number` type is usually used, when performing arithmetic operations on measures, +e.g., in [calculated measures][ref-calculated-measures]. The `sql` parameter is required and must include any valid SQL expression with an aggregate function that returns a value of the numeric type. @@ -1002,6 +1001,5 @@ cubes: [ref-string-time-dims]: /product/data-modeling/recipes/string-time-dimensions [ref-schema-ref-preaggs-rollup]: /product/data-modeling/reference/pre-aggregations#rollup -[ref-schema-ref-calc-measures]: - /product/data-modeling/reference/measures#calculated-measures +[ref-calculated-measures]: /product/data-modeling/concepts/calculated-members#calculated-measures [ref-drilldowns]: /product/apis-integrations/recipes/drilldowns From cf96d677e8be66404d22f5b81da214fd267c2b57 Mon Sep 17 00:00:00 2001 From: Artyom Keydunov Date: Wed, 29 Oct 2025 07:40:14 -0700 Subject: [PATCH 2/9] Update README.md --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 5c28ba01cdbbc..978f4e3d4bffb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,4 @@ ![]() -

- Agentic Analytics Summit -

Cube — Semantic Layer for Data Applications

From aa1d0268ad5494b3d1cbc7502743fa29e768bd26 Mon Sep 17 00:00:00 2001 From: Konstantin Burkalev Date: Wed, 29 Oct 2025 17:01:19 +0200 Subject: [PATCH 3/9] chore(ci): Constrain Redshift drivers tests to run 1 test suite at time (#10102) --- .github/workflows/drivers-tests.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/drivers-tests.yml b/.github/workflows/drivers-tests.yml index f9703134b349f..ad5c5e6f42702 100644 --- a/.github/workflows/drivers-tests.yml +++ b/.github/workflows/drivers-tests.yml @@ -241,6 +241,13 @@ jobs: # secrets as job-level environment variables, then referencing the environment variables # to conditionally run steps in the job. DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY: ${{ secrets.DRIVERS_TESTS_ATHENA_CUBEJS_AWS_KEY }} + + # redshift Test Serverless Instance is so tiny that it can't serve a few test suites at once, + # so we constrain it to 1 test suite at time. + concurrency: + group: ${{ contains(matrix.database, 'redshift') && 'redshift-global' || format('drivers-tests-{0}-{1}', matrix.database, github.run_id) }} + cancel-in-progress: false + strategy: matrix: database: From f486bdec493cbdf6d78bb1a354f7ea88a16a7d09 Mon Sep 17 00:00:00 2001 From: Konstantin Burkalev Date: Wed, 29 Oct 2025 17:13:49 +0200 Subject: [PATCH 4/9] chore!(backend-shared): Remove deprecated npm proxy settings (#9715) # Conflicts: # packages/cubejs-backend-shared/package.json --- packages/cubejs-backend-shared/package.json | 1 - packages/cubejs-backend-shared/src/proxy.ts | 44 +-------------------- 2 files changed, 2 insertions(+), 43 deletions(-) diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json index 274c4c313abeb..f235abcbb7490 100644 --- a/packages/cubejs-backend-shared/package.json +++ b/packages/cubejs-backend-shared/package.json @@ -43,7 +43,6 @@ "decompress": "^4.2.1", "env-var": "^6.3.0", "fs-extra": "^9.1.0", - "https-proxy-agent": "^7.0.6", "lru-cache": "^11.1.0", "moment-range": "^4.0.2", "moment-timezone": "^0.5.47", diff --git a/packages/cubejs-backend-shared/src/proxy.ts b/packages/cubejs-backend-shared/src/proxy.ts index 55ecf84e8cb3d..dfbf4a8b2f3e8 100644 --- a/packages/cubejs-backend-shared/src/proxy.ts +++ b/packages/cubejs-backend-shared/src/proxy.ts @@ -1,48 +1,8 @@ -import { exec } from 'child_process'; import { ProxyAgent } from 'proxy-agent'; -import { HttpsProxyAgent } from 'https-proxy-agent'; - -let npmProxy: string; -let npmProxyInitialized = false; - -function getCommandOutput(command: string) { - return new Promise((resolve, reject) => { - exec(command, (error, stdout) => { - if (error) { - reject(error.message); - return; - } - - resolve(stdout); - }); - }); -} - -/** - * @deprecated - * use ProxyAgent instead - */ -export async function getProxySettings(): Promise { - const [proxy] = ( - await Promise.all([getCommandOutput('npm config -g get https-proxy'), getCommandOutput('npm config -g get proxy')]) - ) - .map((s) => s.trim()) - .filter((s) => !['null', 'undefined', ''].includes(s)); - - npmProxyInitialized = true; - - return proxy; -} export async function getHttpAgentForProxySettings() { - if (!npmProxyInitialized) { - npmProxy = await getProxySettings(); + if (!process.env.HTTP_PROXY && !process.env.HTTPS_PROXY) { + return undefined; } - - if (npmProxy) { - console.warn('Npm proxy settings are deprecated. Please use HTTP_PROXY, HTTPS_PROXY environment variables instead.'); - return new HttpsProxyAgent(npmProxy); - } - return new ProxyAgent(); } From 9e3a9fe2d292964a14811fbeba9123ec28e0ea86 Mon Sep 17 00:00:00 2001 From: Konstantin Burkalev Date: Wed, 29 Oct 2025 17:14:51 +0200 Subject: [PATCH 5/9] chore!(duckdb-driver): Upgrade duckdb to the latest (1.4.1) (#10098) # Conflicts: # packages/cubejs-duckdb-driver/package.json --- packages/cubejs-duckdb-driver/package.json | 2 +- yarn.lock | 39 ++++++++++++++++++---- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/packages/cubejs-duckdb-driver/package.json b/packages/cubejs-duckdb-driver/package.json index f335a7b110575..e3c109dd7819d 100644 --- a/packages/cubejs-duckdb-driver/package.json +++ b/packages/cubejs-duckdb-driver/package.json @@ -30,7 +30,7 @@ "@cubejs-backend/base-driver": "1.3.86", "@cubejs-backend/schema-compiler": "1.3.86", "@cubejs-backend/shared": "1.3.86", - "duckdb": "^1.3.1" + "duckdb": "^1.4.1" }, "license": "Apache-2.0", "devDependencies": { diff --git a/yarn.lock b/yarn.lock index d144395fab3b9..1612175f1072b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13353,10 +13353,10 @@ draft-js@^0.10.0, draft-js@~0.10.0: immutable "~3.7.4" object-assign "^4.1.0" -duckdb@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/duckdb/-/duckdb-1.3.1.tgz#984427fba39e0d321a4dc592bbf9b06cdd39992f" - integrity sha512-wSCxu6zSkHkGHtLrI5MmHYUOpbi08s2eIY/QCg2f1YsSyohjA3MRnUMdDb88oqgLa7/h+/wHuIe1RXRu4k04Sw== +duckdb@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/duckdb/-/duckdb-1.4.1.tgz#c34cf2c0c1e8625624c928890a7fe67b38dc40ff" + integrity sha512-ynTVIsJjuUfF4GuTNpJn9xpVw8+gHz1wyHzQhfPJsVCemu3bf620HmJo5nRDTB0LMwfLW/3pTMmh+uze9kHAcw== dependencies: "@mapbox/node-pre-gyp" "^2.0.0" node-addon-api "^7.0.0" @@ -24192,7 +24192,16 @@ string-length@^5.0.1: char-regex "^2.0.0" strip-ansi "^7.0.1" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -24283,7 +24292,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -24311,6 +24320,13 @@ strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -26390,7 +26406,7 @@ workerpool@^9.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.2.0.tgz#f74427cbb61234708332ed8ab9cbf56dcb1c4371" integrity sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -26416,6 +26432,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From d9b31e036add0dea830510cc4fac12a5895512da Mon Sep 17 00:00:00 2001 From: Konstantin Burkalev Date: Wed, 29 Oct 2025 17:16:01 +0200 Subject: [PATCH 6/9] chore!(backend-shared): make CUBEJS_TRANSPILATION_WORKER_THREADS=true by default (#10097) * make CUBEJS_TRANSPILATION_WORKER_THREADS=true by default * cleanup push CI wf --- .github/workflows/push.yml | 9 +++------ .../configuration/reference/environment-variables.mdx | 2 +- packages/cubejs-backend-shared/src/env.ts | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 0cd822e65f8dc..c64a6de399c92 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -86,11 +86,8 @@ jobs: node-version: [22.x] # Don't forget to update build-native-release python-version: [3.11] - transpile-worker-threads: [false, true] fail-fast: false - env: - CUBEJS_TRANSPILATION_WORKER_THREADS: ${{ matrix.transpile-worker-threads }} steps: - id: get-tag-out run: echo "$OUT" @@ -144,16 +141,16 @@ jobs: - name: Lerna test run: yarn lerna run --concurrency 1 --stream --no-prefix unit - name: Fix lcov paths - if: (matrix.node-version == '22.x' && matrix.transpile-worker-threads == true) + if: (matrix.node-version == '22.x') run: | ./.github/actions/codecov-fix.sh - name: Combine all fixed LCOV files - if: (matrix.node-version == '22.x' && matrix.transpile-worker-threads == true) + if: (matrix.node-version == '22.x') run: | echo "" > ./combined-unit.lcov find ./packages -type f -name lcov.fixed.info -exec cat {} + >> ./combined-unit.lcov || true - name: Upload coverage artifact - if: (matrix.node-version == '22.x' && matrix.transpile-worker-threads == true) + if: (matrix.node-version == '22.x') uses: actions/upload-artifact@v4 with: name: coverage-unit diff --git a/docs/pages/product/configuration/reference/environment-variables.mdx b/docs/pages/product/configuration/reference/environment-variables.mdx index be8295c305d9d..d0c5198adb777 100644 --- a/docs/pages/product/configuration/reference/environment-variables.mdx +++ b/docs/pages/product/configuration/reference/environment-variables.mdx @@ -1405,7 +1405,7 @@ code in worker threads. | Possible Values | Default in Development | Default in Production | | --------------- | ---------------------- | --------------------- | -| `true`, `false` | `false` | `false` | +| `true`, `false` | `true` | `true` | diff --git a/packages/cubejs-backend-shared/src/env.ts b/packages/cubejs-backend-shared/src/env.ts index 8491e3d7b5b81..ae5952f726af9 100644 --- a/packages/cubejs-backend-shared/src/env.ts +++ b/packages/cubejs-backend-shared/src/env.ts @@ -229,7 +229,7 @@ const variables: Record any> = { .default('true') .asBoolStrict(), transpilationWorkerThreads: () => get('CUBEJS_TRANSPILATION_WORKER_THREADS') - .default('false') + .default('true') .asBoolStrict(), allowNonStrictDateRangeMatching: () => get('CUBEJS_PRE_AGGREGATIONS_ALLOW_NON_STRICT_DATE_RANGE_MATCH') .default('true') From c0d7d30fd67e931d36ced819b3e817a9d356fdc5 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Wed, 29 Oct 2025 18:21:15 +0100 Subject: [PATCH 7/9] docs: Various additions + new LTS announcement --- .../rest-api/query-format.mdx | 28 ++++++++++--- .../data-sources/databricks-jdbc.mdx | 5 ++- .../configuration/data-sources/duckdb.mdx | 4 +- .../configuration/data-sources/presto.mdx | 1 + .../configuration/data-sources/trino.mdx | 1 + .../reference/environment-variables.mdx | 41 +++++++++++++++++++ .../data-modeling/concepts/calendar-cubes.mdx | 8 ++++ docs/pages/product/distribution.mdx | 3 +- docs/yarn.lock | 12 ++++++ 9 files changed, 94 insertions(+), 9 deletions(-) diff --git a/docs/pages/product/apis-integrations/rest-api/query-format.mdx b/docs/pages/product/apis-integrations/rest-api/query-format.mdx index 17683e70f1d0e..32405961d0d7c 100644 --- a/docs/pages/product/apis-integrations/rest-api/query-format.mdx +++ b/docs/pages/product/apis-integrations/rest-api/query-format.mdx @@ -34,13 +34,31 @@ The default value is `false`. - `offset`: The number of initial rows to be skipped for your query. The default value is `0`. - `order`: An object, where the keys are measures or dimensions to order by and - their corresponding values are either `asc` or `desc`. The order of the fields - to order on is based on the order of the keys in the object. If not provided, - [default ordering][ref-default-order] is applied. If an empty object (`[]`) is - provided, no ordering is applied. + their corresponding values are either `asc` or `desc`. For [time dimensions][ref-default-granularities], + a granularity can be optionally provided, e.g., `orders.created_at.month`. + The order of the fields to order on is based on the order of the keys in the object. + If not provided, the [default ordering][ref-default-order] is applied. + If an empty object (`[]`) is provided, no ordering is applied. - `timezone`: A [time zone][ref-time-zone] for your query. You can set the desired time zone in the [TZ Database Name](https://en.wikipedia.org/wiki/Tz_database) format, e.g., `America/Los_Angeles`. +- `renewQuery`: If `renewQuery` is set to `true`, Cube will renew all + [`refreshKey`][ref-schema-ref-preaggs-refreshkey] for queries and query + results in the foreground. However, if the + [`refreshKey`][ref-schema-ref-preaggs-refreshkey] (or + [`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every]) doesn't + indicate that there's a need for an update this setting has no effect. The + default value is `false`. + + + +Cube provides only eventual consistency guarantee. Using a small +[`refreshKey.every`][ref-schema-ref-preaggs-refreshkey-every] value together +with `renewQuery` to achieve immediate consistency can lead to endless +refresh loops and overall system instability. + + + - `ungrouped`: If set to `true`, Cube will run an [ungrouped query][ref-ungrouped-query]. - `joinHints`: Query-time [join hints][ref-join-hints], provided as an array of @@ -673,4 +691,4 @@ refer to its documentation for more examples. [ref-default-granularities]: /product/data-modeling/concepts#time-dimensions [ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities [wiki-iso-8601]: https://en.wikipedia.org/wiki/ISO_8601 -[ref-join-hints]: /product/data-modeling/concepts/working-with-joins#join-hints \ No newline at end of file +[ref-join-hints]: /product/data-modeling/concepts/working-with-joins#join-hints diff --git a/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx b/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx index 9155604ee1dca..0b3468e015301 100644 --- a/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx +++ b/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx @@ -52,7 +52,9 @@ docker run -it -p 4000:4000 --env-file=.env cube-jdk | `CUBEJS_DB_NAME` | The name of the database to connect to | A valid database name | ✅ | | `CUBEJS_DB_DATABRICKS_URL` | The URL for a JDBC connection | A valid JDBC URL | ✅ | | `CUBEJS_DB_DATABRICKS_ACCEPT_POLICY` | Whether or not to accept the license terms for the Databricks JDBC driver | `true`, `false` | ✅ | -| `CUBEJS_DB_DATABRICKS_TOKEN` | The [personal access token][databricks-docs-pat] used to authenticate the Databricks connection | A valid token | ✅ | +| `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_ID` | The OAuth client ID for [service principal][ref-databricks-m2m-oauth] authentication | A valid client ID | ❌ | +| `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_SECRET` | The OAuth client secret for [service principal][ref-databricks-m2m-oauth] authentication | A valid client secret | ❌ | +| `CUBEJS_DB_DATABRICKS_TOKEN` | The [personal access token][databricks-docs-pat] used to authenticate the Databricks connection | A valid token | ❌ | | `CUBEJS_DB_DATABRICKS_CATALOG` | The name of the [Databricks catalog][databricks-catalog] to connect to | A valid catalog name | ❌ | | `CUBEJS_DB_EXPORT_BUCKET_MOUNT_DIR` | The path for the [Databricks DBFS mount][databricks-docs-dbfs] (Not needed if using Unity Catalog connection) | A valid mount path | ❌ | | `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ | @@ -201,3 +203,4 @@ bucket][self-preaggs-export-bucket] **must be** configured. [databricks-docs-approx-agg-fns]: https://docs.databricks.com/en/sql/language-manual/functions/approx_count_distinct.html [self-preaggs-simple]: #simple [self-preaggs-export-bucket]: #export-bucket +[ref-databricks-m2m-oauth]: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/duckdb.mdx b/docs/pages/product/configuration/data-sources/duckdb.mdx index 1f9fe9d73645b..ca24e226c560b 100644 --- a/docs/pages/product/configuration/data-sources/duckdb.mdx +++ b/docs/pages/product/configuration/data-sources/duckdb.mdx @@ -72,8 +72,8 @@ deployment][ref-demo-deployment] in Cube Cloud. | `CUBEJS_DB_DUCKDB_S3_USE_SSL` | Use SSL for connection | A boolean | ❌ | | `CUBEJS_DB_DUCKDB_S3_URL_STYLE` | To choose the S3 URL style(vhost or path) | `vhost` or `path` | ❌ | | `CUBEJS_DB_DUCKDB_S3_SESSION_TOKEN` | The token for the S3 session | A valid Session Token | ❌ | -| `CUBEJS_DB_DUCKDB_EXTENSIONS` | A comma-separated list of DuckDB extensions to install and load | A comma-separated list of DuckDB extensions | ❌ | -| `CUBEJS_DB_DUCKDB_COMMUNITY_EXTENSIONS` | A comma-separated list of DuckDB community extensions to install and load | A comma-separated list of DuckDB community extensions | ❌ | +| `CUBEJS_DB_DUCKDB_EXTENSIONS` | A comma-separated list of DuckDB extensions to install and load | A comma-separated list of DuckDB extensions | ❌ | +| `CUBEJS_DB_DUCKDB_COMMUNITY_EXTENSIONS` | A comma-separated list of DuckDB community extensions to install and load | A comma-separated list of DuckDB community extensions | ❌ | | `CUBEJS_DB_DUCKDB_S3_USE_CREDENTIAL_CHAIN` | A flag to use credentials chain for secrets for S3 connections | `true`, `false`. Defaults to `false` | ❌ | | `CUBEJS_CONCURRENCY` | The number of [concurrent queries][ref-data-source-concurrency] to the data source | A valid number | ❌ | diff --git a/docs/pages/product/configuration/data-sources/presto.mdx b/docs/pages/product/configuration/data-sources/presto.mdx index 722be8aa68607..fae2ccffe37fd 100644 --- a/docs/pages/product/configuration/data-sources/presto.mdx +++ b/docs/pages/product/configuration/data-sources/presto.mdx @@ -30,6 +30,7 @@ CUBEJS_DB_SCHEMA=my_presto_schema | `CUBEJS_DB_USER` | The username used to connect to the database | A valid database username | ✅ | | `CUBEJS_DB_PASS` | The password used to connect to the database | A valid database password | ✅ | | `CUBEJS_DB_PRESTO_CATALOG` | The catalog within Presto to connect to | A valid catalog name within a Presto database | ✅ | +| `CUBEJS_DB_PRESTO_AUTH_TOKEN` | The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header. | A valid authentication token | ❌ | | `CUBEJS_DB_SCHEMA` | The schema within the database to connect to | A valid schema name within a Presto database | ✅ | | `CUBEJS_DB_SSL` | If `true`, enables SSL encryption for database connections from Cube | `true`, `false` | ❌ | | `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ | diff --git a/docs/pages/product/configuration/data-sources/trino.mdx b/docs/pages/product/configuration/data-sources/trino.mdx index d035c396f1fdf..04d43a6c6575d 100644 --- a/docs/pages/product/configuration/data-sources/trino.mdx +++ b/docs/pages/product/configuration/data-sources/trino.mdx @@ -30,6 +30,7 @@ CUBEJS_DB_SCHEMA=my_trino_schema | `CUBEJS_DB_USER` | The username used to connect to the database | A valid database username | ✅ | | `CUBEJS_DB_PASS` | The password used to connect to the database | A valid database password | ✅ | | `CUBEJS_DB_PRESTO_CATALOG` | The catalog within Presto to connect to | A valid catalog name within a Presto database | ✅ | +| `CUBEJS_DB_PRESTO_AUTH_TOKEN` | The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header. | A valid authentication token | ❌ | | `CUBEJS_DB_SCHEMA` | The schema within the database to connect to | A valid schema name within a Presto database | ✅ | | `CUBEJS_DB_SSL` | If `true`, enables SSL encryption for database connections from Cube | `true`, `false` | ❌ | | `CUBEJS_DB_MAX_POOL` | The maximum number of concurrent database connections to pool. Default is `8` | A valid number | ❌ | diff --git a/docs/pages/product/configuration/reference/environment-variables.mdx b/docs/pages/product/configuration/reference/environment-variables.mdx index d0c5198adb777..4aba9df27a209 100644 --- a/docs/pages/product/configuration/reference/environment-variables.mdx +++ b/docs/pages/product/configuration/reference/environment-variables.mdx @@ -239,6 +239,22 @@ The name of the [Databricks catalog][databricks-catalog] to connect to. [databricks-catalog]: (https://docs.databricks.com/en/data-governance/unity-catalog/create-catalogs.html) +## `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_ID` + +The OAuth client ID for [service principal][ref-databricks-m2m-oauth] authentication in Databricks. + +| Possible Values | Default in Development | Default in Production | +| ---------------------- | ---------------------- | --------------------- | +| A valid client ID | N/A | N/A | + +## `CUBEJS_DB_DATABRICKS_OAUTH_CLIENT_SECRET` + +The OAuth client secret for [service principal][ref-databricks-m2m-oauth] authentication in Databricks. + +| Possible Values | Default in Development | Default in Production | +| ---------------------- | ---------------------- | --------------------- | +| A valid client secret | N/A | N/A | + ## `CUBEJS_DB_DATABRICKS_TOKEN` The [personal access token][databricks-docs-pat] used to authenticate the @@ -680,6 +696,14 @@ The catalog within Presto/Trino to connect to. | --------------------------------------------------- | ---------------------- | --------------------- | | A valid catalog name within a Presto/Trino database | N/A | N/A | +## `CUBEJS_DB_PRESTO_AUTH_TOKEN` + +The authentication token to use when connecting to Presto/Trino. It will be sent in the `Authorization` header. + +| Possible Values | Default in Development | Default in Production | +| --------------- | ---------------------- | --------------------- | +| A valid authentication token | N/A | N/A | + ## `CUBEJS_DB_QUERY_TIMEOUT` The timeout value for any queries made to the database by Cube. @@ -742,6 +766,22 @@ username/password, or `SNOWFLAKE_JWT` with key pairs. | ---------------------------- | ---------------------- | --------------------- | | `SNOWFLAKE`, `SNOWFLAKE_JWT` | `SNOWFLAKE` | `SNOWFLAKE` | +## `CUBEJS_DB_SNOWFLAKE_OAUTH_TOKEN` + +The OAuth token to use with Snowflake. + +| Possible Values | Default in Development | Default in Production | +| ------------------------------ | ---------------------- | --------------------- | +| A valid OAuth token | N/A | N/A | + +## `CUBEJS_DB_SNOWFLAKE_OAUTH_TOKEN_PATH` + +The path to the file containing the OAuth token for Snowflake. + +| Possible Values | Default in Development | Default in Production | +| ------------------------------ | ---------------------- | --------------------- | +| A valid OAuth token | N/A | N/A | + ## `CUBEJS_DB_SNOWFLAKE_CLIENT_SESSION_KEEP_ALIVE` If `true`, [keep the Snowflake connection alive @@ -1837,6 +1877,7 @@ The port for a Cube deployment to listen to API connections on. [ref-dataviz-tools]: /product/configuration/visualization-tools [ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id [ref-environments]: /product/workspace/environments +[ref-databricks-m2m-oauth]: https://docs.databricks.com/aws/en/dev-tools/auth/oauth-m2m [ref-mdx-api]: /product/apis-integrations/mdx-api [ref-mdx-api-locale]: /product/apis-integrations/mdx-api#measure-format [ref-time-dimensions]: /product/data-modeling/reference/dimensions#time diff --git a/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx b/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx index fe18dc10f6e24..55fcf42a3b2b3 100644 --- a/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx +++ b/docs/pages/product/data-modeling/concepts/calendar-cubes.mdx @@ -7,6 +7,14 @@ Calendar cubes can be used to [override](#overriding-time-shifts) the default ti shift behavior of time-shift measures as well as [override](#overriding-granularities) the default granularities of time dimensions. + + +Calendar cubes are powered by Tesseract, the [next-generation data modeling +engine][link-tesseract]. Tesseract is currently in preview. Use the +`CUBEJS_TESSERACT_SQL_PLANNER` environment variable to enable it. + + + ## Configuration Calendar cubes are [cubes][ref-cubes] where the [`calendar` parameter][ref-cubes-calendar] diff --git a/docs/pages/product/distribution.mdx b/docs/pages/product/distribution.mdx index d6251b7b24fbb..ee068b25ae389 100644 --- a/docs/pages/product/distribution.mdx +++ b/docs/pages/product/distribution.mdx @@ -84,7 +84,8 @@ List of LTS releases: | Version | Status | End-of-life date | | --- | --- | --- | -| `v1.0.x` | Active | October 29, 2025 | +| `v1.4.x` | Active | October 29, 2026 | +| `v1.0.x` | End-of-life | October 29, 2025 | [link-repo]: https://github.com/cube-js/cube diff --git a/docs/yarn.lock b/docs/yarn.lock index dce8bef41188c..ffca3cf9c958d 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -143,6 +143,13 @@ algoliasearch "^4.17.0" classnames "^2.3.2" +"@cube-dev/purple-banner@https://github.com/cubedevinc/purple-banner/releases/download/v2.0.21/cube-dev-purple-banner-2.0.21.tgz": + version "2.0.21" + resolved "https://github.com/cubedevinc/purple-banner/releases/download/v2.0.21/cube-dev-purple-banner-2.0.21.tgz#57217ed1c3952b5ba8f235d9863f07dc9921d3c4" + dependencies: + classnames "^2.3.1" + dayjs "^1.11.7" + "@cubejs-client/core@^0.32.17": version "0.32.30" resolved "https://registry.yarnpkg.com/@cubejs-client/core/-/core-0.32.30.tgz#40bad1199635363a82a1a5e9f4718a67f2fe4f59" @@ -1016,6 +1023,11 @@ character-reference-invalid@^2.0.0: optionalDependencies: fsevents "~2.3.2" +classnames@^2.3.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + classnames@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" From ae327483caabba974e271fb52f4ccc5fd5fa5789 Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Wed, 29 Oct 2025 22:35:40 +0400 Subject: [PATCH 8/9] fix(cubesql): Always repartition joins when right side has multiple partitions (#10105) Signed-off-by: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> --- packages/cubejs-backend-native/Cargo.lock | 12 ++++++------ rust/cubesql/Cargo.lock | 12 ++++++------ rust/cubesql/cubesql/Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/cubejs-backend-native/Cargo.lock b/packages/cubejs-backend-native/Cargo.lock index 2905b1a7ade4a..45941c342a94d 100644 --- a/packages/cubejs-backend-native/Cargo.lock +++ b/packages/cubejs-backend-native/Cargo.lock @@ -667,7 +667,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "arrow", "chrono", @@ -839,7 +839,7 @@ checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "ahash 0.7.8", "arrow", @@ -872,7 +872,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "arrow", "ordered-float 2.10.1", @@ -883,7 +883,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "async-trait", "chrono", @@ -896,7 +896,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "ahash 0.7.8", "arrow", @@ -907,7 +907,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/Cargo.lock b/rust/cubesql/Cargo.lock index 2f1f943713ffa..31690f3dfed5c 100644 --- a/rust/cubesql/Cargo.lock +++ b/rust/cubesql/Cargo.lock @@ -697,7 +697,7 @@ dependencies = [ [[package]] name = "cube-ext" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "arrow", "chrono", @@ -821,7 +821,7 @@ dependencies = [ [[package]] name = "datafusion" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "ahash 0.7.8", "arrow", @@ -854,7 +854,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "arrow", "ordered-float 2.10.0", @@ -865,7 +865,7 @@ dependencies = [ [[package]] name = "datafusion-data-access" version = "1.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "async-trait", "chrono", @@ -878,7 +878,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "ahash 0.7.8", "arrow", @@ -889,7 +889,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "7.0.0" -source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=e3eb4cf60bab0136b3925fe4795f82f67dad7e49#e3eb4cf60bab0136b3925fe4795f82f67dad7e49" +source = "git+https://github.com/cube-js/arrow-datafusion.git?rev=8e60e17fb5872d50e00ee65bf2200e1ebe5122ea#8e60e17fb5872d50e00ee65bf2200e1ebe5122ea" dependencies = [ "ahash 0.7.8", "arrow", diff --git a/rust/cubesql/cubesql/Cargo.toml b/rust/cubesql/cubesql/Cargo.toml index 1a66c2c7599d5..bb9c23a1aca89 100644 --- a/rust/cubesql/cubesql/Cargo.toml +++ b/rust/cubesql/cubesql/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://cube.dev" [dependencies] arc-swap = "1" -datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "e3eb4cf60bab0136b3925fe4795f82f67dad7e49", default-features = false, features = [ +datafusion = { git = 'https://github.com/cube-js/arrow-datafusion.git', rev = "8e60e17fb5872d50e00ee65bf2200e1ebe5122ea", default-features = false, features = [ "regex_expressions", "unicode_expressions", ] } From cdb5f44b975b4c67592f03660fc9e8df20cc2f78 Mon Sep 17 00:00:00 2001 From: Konstantin Burkalev Date: Wed, 29 Oct 2025 20:36:46 +0200 Subject: [PATCH 9/9] v1.4.0 --- CHANGELOG.md | 6 ++ lerna.json | 2 +- packages/cubejs-api-gateway/CHANGELOG.md | 4 ++ packages/cubejs-api-gateway/package.json | 10 ++-- packages/cubejs-athena-driver/CHANGELOG.md | 4 ++ packages/cubejs-athena-driver/package.json | 10 ++-- packages/cubejs-backend-cloud/CHANGELOG.md | 4 ++ packages/cubejs-backend-cloud/package.json | 6 +- packages/cubejs-backend-maven/CHANGELOG.md | 4 ++ packages/cubejs-backend-maven/package.json | 6 +- packages/cubejs-backend-native/CHANGELOG.md | 6 ++ packages/cubejs-backend-native/package.json | 8 +-- packages/cubejs-backend-shared/CHANGELOG.md | 4 ++ packages/cubejs-backend-shared/package.json | 4 +- packages/cubejs-base-driver/CHANGELOG.md | 4 ++ packages/cubejs-base-driver/package.json | 6 +- packages/cubejs-bigquery-driver/CHANGELOG.md | 4 ++ packages/cubejs-bigquery-driver/package.json | 8 +-- packages/cubejs-cli/CHANGELOG.md | 4 ++ packages/cubejs-cli/package.json | 12 ++-- .../cubejs-clickhouse-driver/CHANGELOG.md | 4 ++ .../cubejs-clickhouse-driver/package.json | 10 ++-- packages/cubejs-client-core/CHANGELOG.md | 4 ++ packages/cubejs-client-core/package.json | 4 +- packages/cubejs-client-dx/CHANGELOG.md | 4 ++ packages/cubejs-client-dx/package.json | 2 +- packages/cubejs-client-ngx/CHANGELOG.md | 4 ++ packages/cubejs-client-ngx/package.json | 2 +- packages/cubejs-client-react/CHANGELOG.md | 4 ++ packages/cubejs-client-react/package.json | 4 +- packages/cubejs-client-vue/CHANGELOG.md | 4 ++ packages/cubejs-client-vue/package.json | 4 +- packages/cubejs-client-vue3/CHANGELOG.md | 4 ++ packages/cubejs-client-vue3/package.json | 4 +- .../cubejs-client-ws-transport/CHANGELOG.md | 4 ++ .../cubejs-client-ws-transport/package.json | 6 +- packages/cubejs-crate-driver/CHANGELOG.md | 4 ++ packages/cubejs-crate-driver/package.json | 10 ++-- packages/cubejs-cubestore-driver/CHANGELOG.md | 4 ++ packages/cubejs-cubestore-driver/package.json | 12 ++-- .../CHANGELOG.md | 4 ++ .../package.json | 12 ++-- .../cubejs-dbt-schema-extension/CHANGELOG.md | 4 ++ .../cubejs-dbt-schema-extension/package.json | 8 +-- packages/cubejs-docker/CHANGELOG.md | 4 ++ packages/cubejs-docker/package.json | 60 +++++++++---------- packages/cubejs-dremio-driver/CHANGELOG.md | 4 ++ packages/cubejs-dremio-driver/package.json | 12 ++-- packages/cubejs-druid-driver/CHANGELOG.md | 4 ++ packages/cubejs-druid-driver/package.json | 10 ++-- packages/cubejs-duckdb-driver/CHANGELOG.md | 4 ++ packages/cubejs-duckdb-driver/package.json | 12 ++-- .../cubejs-elasticsearch-driver/CHANGELOG.md | 4 ++ .../cubejs-elasticsearch-driver/package.json | 8 +-- packages/cubejs-firebolt-driver/CHANGELOG.md | 4 ++ packages/cubejs-firebolt-driver/package.json | 12 ++-- packages/cubejs-hive-driver/CHANGELOG.md | 4 ++ packages/cubejs-hive-driver/package.json | 8 +-- packages/cubejs-jdbc-driver/CHANGELOG.md | 4 ++ packages/cubejs-jdbc-driver/package.json | 8 +-- packages/cubejs-ksql-driver/CHANGELOG.md | 4 ++ packages/cubejs-ksql-driver/package.json | 10 ++-- packages/cubejs-linter/CHANGELOG.md | 4 ++ packages/cubejs-linter/package.json | 2 +- .../cubejs-materialize-driver/CHANGELOG.md | 4 ++ .../cubejs-materialize-driver/package.json | 12 ++-- packages/cubejs-mongobi-driver/CHANGELOG.md | 4 ++ packages/cubejs-mongobi-driver/package.json | 8 +-- packages/cubejs-mssql-driver/CHANGELOG.md | 4 ++ packages/cubejs-mssql-driver/package.json | 6 +- .../CHANGELOG.md | 4 ++ .../package.json | 8 +-- packages/cubejs-mysql-driver/CHANGELOG.md | 4 ++ packages/cubejs-mysql-driver/package.json | 10 ++-- packages/cubejs-oracle-driver/CHANGELOG.md | 4 ++ packages/cubejs-oracle-driver/package.json | 4 +- packages/cubejs-pinot-driver/CHANGELOG.md | 4 ++ packages/cubejs-pinot-driver/package.json | 10 ++-- packages/cubejs-playground/CHANGELOG.md | 4 ++ packages/cubejs-playground/package.json | 6 +- packages/cubejs-postgres-driver/CHANGELOG.md | 4 ++ packages/cubejs-postgres-driver/package.json | 10 ++-- packages/cubejs-prestodb-driver/CHANGELOG.md | 4 ++ packages/cubejs-prestodb-driver/package.json | 8 +-- .../cubejs-query-orchestrator/CHANGELOG.md | 4 ++ .../cubejs-query-orchestrator/package.json | 10 ++-- packages/cubejs-questdb-driver/CHANGELOG.md | 4 ++ packages/cubejs-questdb-driver/package.json | 12 ++-- packages/cubejs-redshift-driver/CHANGELOG.md | 4 ++ packages/cubejs-redshift-driver/package.json | 10 ++-- packages/cubejs-schema-compiler/CHANGELOG.md | 4 ++ packages/cubejs-schema-compiler/package.json | 10 ++-- packages/cubejs-server-core/CHANGELOG.md | 4 ++ packages/cubejs-server-core/package.json | 22 +++---- packages/cubejs-server/CHANGELOG.md | 4 ++ packages/cubejs-server/package.json | 14 ++--- packages/cubejs-snowflake-driver/CHANGELOG.md | 4 ++ packages/cubejs-snowflake-driver/package.json | 8 +-- packages/cubejs-sqlite-driver/CHANGELOG.md | 4 ++ packages/cubejs-sqlite-driver/package.json | 8 +-- packages/cubejs-templates/CHANGELOG.md | 4 ++ packages/cubejs-templates/package.json | 6 +- packages/cubejs-testing-drivers/CHANGELOG.md | 4 ++ packages/cubejs-testing-drivers/package.json | 36 +++++------ packages/cubejs-testing-shared/CHANGELOG.md | 4 ++ packages/cubejs-testing-shared/package.json | 10 ++-- packages/cubejs-testing/CHANGELOG.md | 4 ++ packages/cubejs-testing/package.json | 22 +++---- packages/cubejs-trino-driver/CHANGELOG.md | 4 ++ packages/cubejs-trino-driver/package.json | 12 ++-- packages/cubejs-vertica-driver/CHANGELOG.md | 4 ++ packages/cubejs-vertica-driver/package.json | 12 ++-- rust/cubesql/CHANGELOG.md | 6 ++ rust/cubesql/package.json | 2 +- rust/cubestore/CHANGELOG.md | 4 ++ rust/cubestore/package.json | 6 +- 116 files changed, 525 insertions(+), 287 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e010f0f9361..23af935d198f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +### Bug Fixes + +- **cubesql:** Always repartition joins when right side has multiple partitions ([#10105](https://github.com/cube-js/cube/issues/10105)) ([ae32748](https://github.com/cube-js/cube/commit/ae327483caabba974e271fb52f4ccc5fd5fa5789)) + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) ### Features diff --git a/lerna.json b/lerna.json index aded0f2709591..bba0afe6c206a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "1.3.86", + "version": "1.4.0", "npmClient": "yarn", "command": { "bootstrap": { diff --git a/packages/cubejs-api-gateway/CHANGELOG.md b/packages/cubejs-api-gateway/CHANGELOG.md index 6599d39e1eb2f..1db482fcf0f82 100644 --- a/packages/cubejs-api-gateway/CHANGELOG.md +++ b/packages/cubejs-api-gateway/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/api-gateway + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/api-gateway diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json index 8b8d74f178197..dc780f76b30db 100644 --- a/packages/cubejs-api-gateway/package.json +++ b/packages/cubejs-api-gateway/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/api-gateway", "description": "Cube.js API Gateway", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/native": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/native": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@ungap/structured-clone": "^0.3.4", "assert-never": "^1.4.0", "body-parser": "^1.19.0", @@ -52,7 +52,7 @@ "uuid": "^8.3.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/express": "^4.17.21", "@types/jest": "^29", "@types/jsonwebtoken": "^9.0.2", diff --git a/packages/cubejs-athena-driver/CHANGELOG.md b/packages/cubejs-athena-driver/CHANGELOG.md index 17ea06bd64be6..c2c1db8437d94 100644 --- a/packages/cubejs-athena-driver/CHANGELOG.md +++ b/packages/cubejs-athena-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/athena-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/athena-driver diff --git a/packages/cubejs-athena-driver/package.json b/packages/cubejs-athena-driver/package.json index 1a44620b5b03a..f5753efa938e1 100644 --- a/packages/cubejs-athena-driver/package.json +++ b/packages/cubejs-athena-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/athena-driver", "description": "Cube.js Athena database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -30,13 +30,13 @@ "dependencies": { "@aws-sdk/client-athena": "^3.22.0", "@aws-sdk/credential-providers": "^3.22.0", - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "sqlstring": "^2.3.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "@types/ramda": "^0.27.40", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-backend-cloud/CHANGELOG.md b/packages/cubejs-backend-cloud/CHANGELOG.md index 219b267e742ca..e6ccad29da262 100644 --- a/packages/cubejs-backend-cloud/CHANGELOG.md +++ b/packages/cubejs-backend-cloud/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/cloud + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/cloud diff --git a/packages/cubejs-backend-cloud/package.json b/packages/cubejs-backend-cloud/package.json index a72e4ead996f5..2c63763d66a5f 100644 --- a/packages/cubejs-backend-cloud/package.json +++ b/packages/cubejs-backend-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cloud", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube Cloud package", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -25,7 +25,7 @@ "devDependencies": { "@babel/core": "^7.24.5", "@babel/preset-env": "^7.24.5", - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/fs-extra": "^9.0.8", "@types/jest": "^29", "jest": "^29", @@ -33,7 +33,7 @@ }, "dependencies": { "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "chokidar": "^3.5.1", "env-var": "^6.3.0", "form-data": "^4.0.0", diff --git a/packages/cubejs-backend-maven/CHANGELOG.md b/packages/cubejs-backend-maven/CHANGELOG.md index 3e0b91c2fae0f..8110c99be9e05 100644 --- a/packages/cubejs-backend-maven/CHANGELOG.md +++ b/packages/cubejs-backend-maven/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/maven + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/maven diff --git a/packages/cubejs-backend-maven/package.json b/packages/cubejs-backend-maven/package.json index 26cac4162d4d7..7f67551585d86 100644 --- a/packages/cubejs-backend-maven/package.json +++ b/packages/cubejs-backend-maven/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/maven", "description": "Cube.js Maven Wrapper for java dependencies downloading", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "license": "Apache-2.0", "repository": { "type": "git", @@ -31,12 +31,12 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "source-map-support": "^0.5.19", "xmlbuilder2": "^2.4.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "jest": "^29", diff --git a/packages/cubejs-backend-native/CHANGELOG.md b/packages/cubejs-backend-native/CHANGELOG.md index e9e5132de5eb2..05e7f240a9ae6 100644 --- a/packages/cubejs-backend-native/CHANGELOG.md +++ b/packages/cubejs-backend-native/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +### Bug Fixes + +- **cubesql:** Always repartition joins when right side has multiple partitions ([#10105](https://github.com/cube-js/cube/issues/10105)) ([ae32748](https://github.com/cube-js/cube/commit/ae327483caabba974e271fb52f4ccc5fd5fa5789)) + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/native diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index 7aef8d7fb32f2..518b5361f4959 100644 --- a/packages/cubejs-backend-native/package.json +++ b/packages/cubejs-backend-native/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/native", - "version": "1.3.86", + "version": "1.4.0", "author": "Cube Dev, Inc.", "description": "Native module for Cube.js (binding to Rust codebase)", "main": "dist/js/index.js", @@ -35,7 +35,7 @@ "dist/js" ], "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "cargo-cp-artifact": "^0.1.9", @@ -46,8 +46,8 @@ "uuid": "^8.3.2" }, "dependencies": { - "@cubejs-backend/cubesql": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/cubesql": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@cubejs-infra/post-installer": "^0.0.7" }, "resources": { diff --git a/packages/cubejs-backend-shared/CHANGELOG.md b/packages/cubejs-backend-shared/CHANGELOG.md index 2e18ca0d6a769..488ff0c06f711 100644 --- a/packages/cubejs-backend-shared/CHANGELOG.md +++ b/packages/cubejs-backend-shared/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/shared + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/shared diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json index f235abcbb7490..6340b338b0a8f 100644 --- a/packages/cubejs-backend-shared/package.json +++ b/packages/cubejs-backend-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/shared", - "version": "1.3.86", + "version": "1.4.0", "description": "Shared code for Cube.js backend packages", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -22,7 +22,7 @@ "author": "Cube Dev, Inc.", "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/bytes": "^3.1.5", "@types/cli-progress": "^3.9.1", "@types/decompress": "^4.2.7", diff --git a/packages/cubejs-base-driver/CHANGELOG.md b/packages/cubejs-base-driver/CHANGELOG.md index 6bc5f91e70284..d3032f1a56a37 100644 --- a/packages/cubejs-base-driver/CHANGELOG.md +++ b/packages/cubejs-base-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/base-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/base-driver diff --git a/packages/cubejs-base-driver/package.json b/packages/cubejs-base-driver/package.json index 333f5ad828181..795f3719ae8f4 100644 --- a/packages/cubejs-base-driver/package.json +++ b/packages/cubejs-base-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/base-driver", "description": "Cube.js Base Driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -33,11 +33,11 @@ "@aws-sdk/s3-request-presigner": "^3.49.0", "@azure/identity": "^4.4.1", "@azure/storage-blob": "^12.9.0", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "@google-cloud/storage": "^7.13.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "jest": "^29", diff --git a/packages/cubejs-bigquery-driver/CHANGELOG.md b/packages/cubejs-bigquery-driver/CHANGELOG.md index 6981c2a3f6fc9..c64e6cff08b01 100644 --- a/packages/cubejs-bigquery-driver/CHANGELOG.md +++ b/packages/cubejs-bigquery-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/bigquery-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/bigquery-driver diff --git a/packages/cubejs-bigquery-driver/package.json b/packages/cubejs-bigquery-driver/package.json index 767eb726d8f45..d79908c3501be 100644 --- a/packages/cubejs-bigquery-driver/package.json +++ b/packages/cubejs-bigquery-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/bigquery-driver", "description": "Cube.js BigQuery database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,15 +28,15 @@ "main": "index.js", "types": "dist/src/index.d.ts", "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "@google-cloud/bigquery": "^7.7.0", "@google-cloud/storage": "^7.13.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/testing-shared": "1.4.0", "@types/big.js": "^6.2.2", "@types/dedent": "^0.7.0", "@types/jest": "^29", diff --git a/packages/cubejs-cli/CHANGELOG.md b/packages/cubejs-cli/CHANGELOG.md index 6f31959644c12..9538ec7980da1 100644 --- a/packages/cubejs-cli/CHANGELOG.md +++ b/packages/cubejs-cli/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package cubejs-cli + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package cubejs-cli diff --git a/packages/cubejs-cli/package.json b/packages/cubejs-cli/package.json index e17a2051e72b1..88ded7b5cca01 100644 --- a/packages/cubejs-cli/package.json +++ b/packages/cubejs-cli/package.json @@ -2,7 +2,7 @@ "name": "cubejs-cli", "description": "Cube.js Command Line Interface", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -30,10 +30,10 @@ "LICENSE" ], "dependencies": { - "@cubejs-backend/cloud": "1.3.86", + "@cubejs-backend/cloud": "1.4.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "chalk": "^2.4.2", "cli-progress": "^3.10", "commander": "^2.19.0", @@ -50,8 +50,8 @@ "colors": "1.4.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/server": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/server": "1.4.0", "@oclif/command": "^1.8.0", "@types/cli-progress": "^3.8.0", "@types/cross-spawn": "^6.0.2", diff --git a/packages/cubejs-clickhouse-driver/CHANGELOG.md b/packages/cubejs-clickhouse-driver/CHANGELOG.md index edcf7f98bdbbd..b766abff9a416 100644 --- a/packages/cubejs-clickhouse-driver/CHANGELOG.md +++ b/packages/cubejs-clickhouse-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/clickhouse-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/clickhouse-driver diff --git a/packages/cubejs-clickhouse-driver/package.json b/packages/cubejs-clickhouse-driver/package.json index d0d0a419973ea..5c44d80b8dfb8 100644 --- a/packages/cubejs-clickhouse-driver/package.json +++ b/packages/cubejs-clickhouse-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/clickhouse-driver", "description": "Cube.js ClickHouse database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,16 +28,16 @@ }, "dependencies": { "@clickhouse/client": "^1.12.0", - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "moment": "^2.24.0", "sqlstring": "^2.3.1", "uuid": "^8.3.2" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "@types/jest": "^29", "jest": "^29", "typescript": "~5.2.2" diff --git a/packages/cubejs-client-core/CHANGELOG.md b/packages/cubejs-client-core/CHANGELOG.md index 85cd4f5fc334d..db45edc08559f 100644 --- a/packages/cubejs-client-core/CHANGELOG.md +++ b/packages/cubejs-client-core/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/core + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/core diff --git a/packages/cubejs-client-core/package.json b/packages/cubejs-client-core/package.json index 369fd3b7b3e91..edb7f36491f8d 100644 --- a/packages/cubejs-client-core/package.json +++ b/packages/cubejs-client-core/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/core", - "version": "1.3.86", + "version": "1.4.0", "engines": {}, "repository": { "type": "git", @@ -38,7 +38,7 @@ ], "license": "MIT", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/moment-range": "^4.0.0", "@types/ramda": "^0.27.34", diff --git a/packages/cubejs-client-dx/CHANGELOG.md b/packages/cubejs-client-dx/CHANGELOG.md index 4db960b6888d8..5c1a5f4691336 100644 --- a/packages/cubejs-client-dx/CHANGELOG.md +++ b/packages/cubejs-client-dx/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/dx + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/dx diff --git a/packages/cubejs-client-dx/package.json b/packages/cubejs-client-dx/package.json index ec0cef2f48148..3cd5c02ebd04c 100644 --- a/packages/cubejs-client-dx/package.json +++ b/packages/cubejs-client-dx/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/dx", - "version": "1.3.86", + "version": "1.4.0", "engines": {}, "repository": { "type": "git", diff --git a/packages/cubejs-client-ngx/CHANGELOG.md b/packages/cubejs-client-ngx/CHANGELOG.md index 6348a6bddf45a..49a7c84dd6cbd 100644 --- a/packages/cubejs-client-ngx/CHANGELOG.md +++ b/packages/cubejs-client-ngx/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/ngx + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/ngx diff --git a/packages/cubejs-client-ngx/package.json b/packages/cubejs-client-ngx/package.json index 97daa4353b097..d6fdecd83ae9d 100644 --- a/packages/cubejs-client-ngx/package.json +++ b/packages/cubejs-client-ngx/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/ngx", - "version": "1.3.86", + "version": "1.4.0", "author": "Cube Dev, Inc.", "engines": {}, "repository": { diff --git a/packages/cubejs-client-react/CHANGELOG.md b/packages/cubejs-client-react/CHANGELOG.md index 7eb515e0cc39f..c1658545f97c3 100644 --- a/packages/cubejs-client-react/CHANGELOG.md +++ b/packages/cubejs-client-react/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/react + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/react diff --git a/packages/cubejs-client-react/package.json b/packages/cubejs-client-react/package.json index 49319c1f285cf..a5954c3b470cb 100644 --- a/packages/cubejs-client-react/package.json +++ b/packages/cubejs-client-react/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/react", - "version": "1.3.86", + "version": "1.4.0", "author": "Cube Dev, Inc.", "license": "MIT", "engines": {}, @@ -24,7 +24,7 @@ ], "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.3.86", + "@cubejs-client/core": "1.4.0", "core-js": "^3.6.5", "ramda": "^0.27.2" }, diff --git a/packages/cubejs-client-vue/CHANGELOG.md b/packages/cubejs-client-vue/CHANGELOG.md index 9a0a68eac0663..25e2f4449fed8 100644 --- a/packages/cubejs-client-vue/CHANGELOG.md +++ b/packages/cubejs-client-vue/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube.js/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/vue + ## [1.3.86](https://github.com/cube-js/cube.js/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/vue diff --git a/packages/cubejs-client-vue/package.json b/packages/cubejs-client-vue/package.json index 5a580e4c69d15..83935bf7e742f 100644 --- a/packages/cubejs-client-vue/package.json +++ b/packages/cubejs-client-vue/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/vue", - "version": "1.3.86", + "version": "1.4.0", "engines": {}, "repository": { "type": "git", @@ -28,7 +28,7 @@ "src" ], "dependencies": { - "@cubejs-client/core": "1.3.86", + "@cubejs-client/core": "1.4.0", "core-js": "^3.6.5", "ramda": "^0.27.2" }, diff --git a/packages/cubejs-client-vue3/CHANGELOG.md b/packages/cubejs-client-vue3/CHANGELOG.md index 2350324848173..97a828ed80664 100644 --- a/packages/cubejs-client-vue3/CHANGELOG.md +++ b/packages/cubejs-client-vue3/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube.js/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/vue3 + ## [1.3.86](https://github.com/cube-js/cube.js/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/vue3 diff --git a/packages/cubejs-client-vue3/package.json b/packages/cubejs-client-vue3/package.json index 7afda03962eb1..1d60b216d7db8 100644 --- a/packages/cubejs-client-vue3/package.json +++ b/packages/cubejs-client-vue3/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/vue3", - "version": "1.3.86", + "version": "1.4.0", "engines": {}, "repository": { "type": "git", @@ -28,7 +28,7 @@ "src" ], "dependencies": { - "@cubejs-client/core": "1.3.86", + "@cubejs-client/core": "1.4.0", "ramda": "^0.27.0" }, "devDependencies": { diff --git a/packages/cubejs-client-ws-transport/CHANGELOG.md b/packages/cubejs-client-ws-transport/CHANGELOG.md index 9cb69bd2d602a..9d8a0a71d803a 100644 --- a/packages/cubejs-client-ws-transport/CHANGELOG.md +++ b/packages/cubejs-client-ws-transport/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/ws-transport + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/ws-transport diff --git a/packages/cubejs-client-ws-transport/package.json b/packages/cubejs-client-ws-transport/package.json index e921421a5cdb8..cbbf8118ef630 100644 --- a/packages/cubejs-client-ws-transport/package.json +++ b/packages/cubejs-client-ws-transport/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-client/ws-transport", - "version": "1.3.86", + "version": "1.4.0", "engines": {}, "repository": { "type": "git", @@ -20,7 +20,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@cubejs-client/core": "1.3.86", + "@cubejs-client/core": "1.4.0", "core-js": "^3.6.5", "isomorphic-ws": "^4.0.1", "ws": "^7.3.1" @@ -33,7 +33,7 @@ "@babel/core": "^7.3.3", "@babel/preset-env": "^7.3.1", "@babel/preset-typescript": "^7.12.1", - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/ws": "^7.2.9", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-crate-driver/CHANGELOG.md b/packages/cubejs-crate-driver/CHANGELOG.md index 2d5f1357cda59..155920d8d250a 100644 --- a/packages/cubejs-crate-driver/CHANGELOG.md +++ b/packages/cubejs-crate-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/crate-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/crate-driver diff --git a/packages/cubejs-crate-driver/package.json b/packages/cubejs-crate-driver/package.json index 25940a2ace764..e0d9b1c80c965 100644 --- a/packages/cubejs-crate-driver/package.json +++ b/packages/cubejs-crate-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/crate-driver", "description": "Cube.js Crate database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,14 +28,14 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/postgres-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/postgres-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "pg": "^8.7.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-cubestore-driver/CHANGELOG.md b/packages/cubejs-cubestore-driver/CHANGELOG.md index 8a076c6c8fc18..8aaa6de29b298 100644 --- a/packages/cubejs-cubestore-driver/CHANGELOG.md +++ b/packages/cubejs-cubestore-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/cubestore-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/cubestore-driver diff --git a/packages/cubejs-cubestore-driver/package.json b/packages/cubejs-cubestore-driver/package.json index 3272f73bb4542..4658d51510543 100644 --- a/packages/cubejs-cubestore-driver/package.json +++ b/packages/cubejs-cubestore-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/cubestore-driver", "description": "Cube Store driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -26,10 +26,10 @@ "lint:fix": "eslint --fix src/*.ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/cubestore": "1.3.86", - "@cubejs-backend/native": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/cubestore": "1.4.0", + "@cubejs-backend/native": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "csv-write-stream": "^2.0.0", "flatbuffers": "23.3.3", "fs-extra": "^9.1.0", @@ -41,7 +41,7 @@ "ws": "^7.4.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/csv-write-stream": "^2.0.0", "@types/jest": "^29", "@types/node": "^20", diff --git a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md index ac878ffd71692..b54b4537e1244 100644 --- a/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md +++ b/packages/cubejs-databricks-jdbc-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/databricks-jdbc-driver diff --git a/packages/cubejs-databricks-jdbc-driver/package.json b/packages/cubejs-databricks-jdbc-driver/package.json index fea259b1853d9..7fea422fe0136 100644 --- a/packages/cubejs-databricks-jdbc-driver/package.json +++ b/packages/cubejs-databricks-jdbc-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/databricks-jdbc-driver", "description": "Cube.js Databricks database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "license": "Apache-2.0", "repository": { "type": "git", @@ -30,17 +30,17 @@ "bin" ], "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/jdbc-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/jdbc-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "node-fetch": "^2.6.1", "ramda": "^0.27.2", "source-map-support": "^0.5.19", "uuid": "^8.3.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "@types/ramda": "^0.27.34", diff --git a/packages/cubejs-dbt-schema-extension/CHANGELOG.md b/packages/cubejs-dbt-schema-extension/CHANGELOG.md index b19e7d25d1022..91e8c4fd3242d 100644 --- a/packages/cubejs-dbt-schema-extension/CHANGELOG.md +++ b/packages/cubejs-dbt-schema-extension/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/dbt-schema-extension + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/dbt-schema-extension diff --git a/packages/cubejs-dbt-schema-extension/package.json b/packages/cubejs-dbt-schema-extension/package.json index 1b6717252c43b..7ab89d4d46933 100644 --- a/packages/cubejs-dbt-schema-extension/package.json +++ b/packages/cubejs-dbt-schema-extension/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/dbt-schema-extension", "description": "Cube.js dbt Schema Extension", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,14 +25,14 @@ "lint:fix": "eslint --fix src/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/schema-compiler": "1.3.86", + "@cubejs-backend/schema-compiler": "1.4.0", "fs-extra": "^9.1.0", "inflection": "^1.12.0", "node-fetch": "^2.6.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing": "1.4.0", "@types/jest": "^29", "jest": "^29", "stream-to-array": "^2.3.0", diff --git a/packages/cubejs-docker/CHANGELOG.md b/packages/cubejs-docker/CHANGELOG.md index 914bbede9fd3c..92f9d0bb2998b 100644 --- a/packages/cubejs-docker/CHANGELOG.md +++ b/packages/cubejs-docker/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/docker + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/docker diff --git a/packages/cubejs-docker/package.json b/packages/cubejs-docker/package.json index fa93910eac1ff..40dece24f8cbc 100644 --- a/packages/cubejs-docker/package.json +++ b/packages/cubejs-docker/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/docker", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube.js In Docker (virtual package)", "author": "Cube Dev, Inc.", "license": "Apache-2.0", @@ -9,35 +9,35 @@ "node": ">=18.0.0" }, "dependencies": { - "@cubejs-backend/athena-driver": "1.3.86", - "@cubejs-backend/bigquery-driver": "1.3.86", - "@cubejs-backend/clickhouse-driver": "1.3.86", - "@cubejs-backend/crate-driver": "1.3.86", - "@cubejs-backend/databricks-jdbc-driver": "1.3.86", - "@cubejs-backend/dbt-schema-extension": "1.3.86", - "@cubejs-backend/dremio-driver": "1.3.86", - "@cubejs-backend/druid-driver": "1.3.86", - "@cubejs-backend/duckdb-driver": "1.3.86", - "@cubejs-backend/elasticsearch-driver": "1.3.86", - "@cubejs-backend/firebolt-driver": "1.3.86", - "@cubejs-backend/hive-driver": "1.3.86", - "@cubejs-backend/ksql-driver": "1.3.86", - "@cubejs-backend/materialize-driver": "1.3.86", - "@cubejs-backend/mongobi-driver": "1.3.86", - "@cubejs-backend/mssql-driver": "1.3.86", - "@cubejs-backend/mysql-driver": "1.3.86", - "@cubejs-backend/oracle-driver": "1.3.86", - "@cubejs-backend/pinot-driver": "1.3.86", - "@cubejs-backend/postgres-driver": "1.3.86", - "@cubejs-backend/prestodb-driver": "1.3.86", - "@cubejs-backend/questdb-driver": "1.3.86", - "@cubejs-backend/redshift-driver": "1.3.86", - "@cubejs-backend/server": "1.3.86", - "@cubejs-backend/snowflake-driver": "1.3.86", - "@cubejs-backend/sqlite-driver": "1.3.86", - "@cubejs-backend/trino-driver": "1.3.86", - "@cubejs-backend/vertica-driver": "1.3.86", - "cubejs-cli": "1.3.86", + "@cubejs-backend/athena-driver": "1.4.0", + "@cubejs-backend/bigquery-driver": "1.4.0", + "@cubejs-backend/clickhouse-driver": "1.4.0", + "@cubejs-backend/crate-driver": "1.4.0", + "@cubejs-backend/databricks-jdbc-driver": "1.4.0", + "@cubejs-backend/dbt-schema-extension": "1.4.0", + "@cubejs-backend/dremio-driver": "1.4.0", + "@cubejs-backend/druid-driver": "1.4.0", + "@cubejs-backend/duckdb-driver": "1.4.0", + "@cubejs-backend/elasticsearch-driver": "1.4.0", + "@cubejs-backend/firebolt-driver": "1.4.0", + "@cubejs-backend/hive-driver": "1.4.0", + "@cubejs-backend/ksql-driver": "1.4.0", + "@cubejs-backend/materialize-driver": "1.4.0", + "@cubejs-backend/mongobi-driver": "1.4.0", + "@cubejs-backend/mssql-driver": "1.4.0", + "@cubejs-backend/mysql-driver": "1.4.0", + "@cubejs-backend/oracle-driver": "1.4.0", + "@cubejs-backend/pinot-driver": "1.4.0", + "@cubejs-backend/postgres-driver": "1.4.0", + "@cubejs-backend/prestodb-driver": "1.4.0", + "@cubejs-backend/questdb-driver": "1.4.0", + "@cubejs-backend/redshift-driver": "1.4.0", + "@cubejs-backend/server": "1.4.0", + "@cubejs-backend/snowflake-driver": "1.4.0", + "@cubejs-backend/sqlite-driver": "1.4.0", + "@cubejs-backend/trino-driver": "1.4.0", + "@cubejs-backend/vertica-driver": "1.4.0", + "cubejs-cli": "1.4.0", "typescript": "~5.2.2" }, "resolutions": { diff --git a/packages/cubejs-dremio-driver/CHANGELOG.md b/packages/cubejs-dremio-driver/CHANGELOG.md index 44e67efd0545d..79e1ba2e20477 100644 --- a/packages/cubejs-dremio-driver/CHANGELOG.md +++ b/packages/cubejs-dremio-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/dremio-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/dremio-driver diff --git a/packages/cubejs-dremio-driver/package.json b/packages/cubejs-dremio-driver/package.json index cf4c169bb2216..3ea5f6518227d 100644 --- a/packages/cubejs-dremio-driver/package.json +++ b/packages/cubejs-dremio-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/dremio-driver", "description": "Cube.js Dremio driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -22,15 +22,15 @@ "lint:fix": "eslint driver/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "axios": "^1.8.3", "sqlstring": "^2.3.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "jest": "^29" }, "license": "Apache-2.0", diff --git a/packages/cubejs-druid-driver/CHANGELOG.md b/packages/cubejs-druid-driver/CHANGELOG.md index c4fa608b5aa1c..108bed960ebcc 100644 --- a/packages/cubejs-druid-driver/CHANGELOG.md +++ b/packages/cubejs-druid-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/druid-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/druid-driver diff --git a/packages/cubejs-druid-driver/package.json b/packages/cubejs-druid-driver/package.json index 28764dc3eaaa8..4098d061edf9f 100644 --- a/packages/cubejs-druid-driver/package.json +++ b/packages/cubejs-druid-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/druid-driver", "description": "Cube.js Druid database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "license": "Apache-2.0", "repository": { "type": "git", @@ -28,13 +28,13 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "axios": "^1.8.3" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "jest": "^29", diff --git a/packages/cubejs-duckdb-driver/CHANGELOG.md b/packages/cubejs-duckdb-driver/CHANGELOG.md index 6e1f1d355c7d9..a56377f2193cf 100644 --- a/packages/cubejs-duckdb-driver/CHANGELOG.md +++ b/packages/cubejs-duckdb-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/duckdb-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/duckdb-driver diff --git a/packages/cubejs-duckdb-driver/package.json b/packages/cubejs-duckdb-driver/package.json index e3c109dd7819d..b867700fc9ce5 100644 --- a/packages/cubejs-duckdb-driver/package.json +++ b/packages/cubejs-duckdb-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/duckdb-driver", "description": "Cube DuckDB database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,15 +27,15 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "duckdb": "^1.4.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "jest": "^29", diff --git a/packages/cubejs-elasticsearch-driver/CHANGELOG.md b/packages/cubejs-elasticsearch-driver/CHANGELOG.md index b14af4e75b17c..ede0070eb71a1 100644 --- a/packages/cubejs-elasticsearch-driver/CHANGELOG.md +++ b/packages/cubejs-elasticsearch-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/elasticsearch-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/elasticsearch-driver diff --git a/packages/cubejs-elasticsearch-driver/package.json b/packages/cubejs-elasticsearch-driver/package.json index 6b4b2b2e60524..823fe4ff3c2c3 100644 --- a/packages/cubejs-elasticsearch-driver/package.json +++ b/packages/cubejs-elasticsearch-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/elasticsearch-driver", "description": "Cube.js elasticsearch database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -23,14 +23,14 @@ "driver" ], "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@elastic/elasticsearch": "7.12.0", "sqlstring": "^2.3.1" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0" diff --git a/packages/cubejs-firebolt-driver/CHANGELOG.md b/packages/cubejs-firebolt-driver/CHANGELOG.md index 6722abec32a22..54ea2bf26e004 100644 --- a/packages/cubejs-firebolt-driver/CHANGELOG.md +++ b/packages/cubejs-firebolt-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/firebolt-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/firebolt-driver diff --git a/packages/cubejs-firebolt-driver/package.json b/packages/cubejs-firebolt-driver/package.json index c37475f413014..493306ee7856b 100644 --- a/packages/cubejs-firebolt-driver/package.json +++ b/packages/cubejs-firebolt-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/firebolt-driver", "description": "Cube.js Firebolt database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -28,15 +28,15 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "firebolt-sdk": "1.10.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-hive-driver/CHANGELOG.md b/packages/cubejs-hive-driver/CHANGELOG.md index ed7b25038f4f2..bc39221dd2198 100644 --- a/packages/cubejs-hive-driver/CHANGELOG.md +++ b/packages/cubejs-hive-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/hive-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/hive-driver diff --git a/packages/cubejs-hive-driver/package.json b/packages/cubejs-hive-driver/package.json index c5e3b18e74c0e..cf80cc77396f1 100644 --- a/packages/cubejs-hive-driver/package.json +++ b/packages/cubejs-hive-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/hive-driver", "description": "Cube.js Hive database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -17,8 +17,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "generic-pool": "^3.8.2", "jshs2": "^0.4.4", "sasl-plain": "^0.1.0", @@ -28,7 +28,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86" + "@cubejs-backend/linter": "1.4.0" }, "publishConfig": { "access": "public" diff --git a/packages/cubejs-jdbc-driver/CHANGELOG.md b/packages/cubejs-jdbc-driver/CHANGELOG.md index 37750541e5a2c..8bb781c10b2fb 100644 --- a/packages/cubejs-jdbc-driver/CHANGELOG.md +++ b/packages/cubejs-jdbc-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/jdbc-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/jdbc-driver diff --git a/packages/cubejs-jdbc-driver/package.json b/packages/cubejs-jdbc-driver/package.json index afa314d4c4751..7e834b7ffc543 100644 --- a/packages/cubejs-jdbc-driver/package.json +++ b/packages/cubejs-jdbc-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/jdbc-driver", "description": "Cube.js JDBC database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,9 +25,9 @@ "index.js" ], "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", "@cubejs-backend/node-java-maven": "^0.1.3", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "generic-pool": "^3.9.0", "sqlstring": "^2.3.0" }, @@ -43,7 +43,7 @@ "testEnvironment": "node" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/node": "^20", "@types/sqlstring": "^2.3.0", "typescript": "~5.2.2" diff --git a/packages/cubejs-ksql-driver/CHANGELOG.md b/packages/cubejs-ksql-driver/CHANGELOG.md index e2f092345e71e..5d79a2608a670 100644 --- a/packages/cubejs-ksql-driver/CHANGELOG.md +++ b/packages/cubejs-ksql-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/ksql-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/ksql-driver diff --git a/packages/cubejs-ksql-driver/package.json b/packages/cubejs-ksql-driver/package.json index 28538c40bf1d1..686816b5adf93 100644 --- a/packages/cubejs-ksql-driver/package.json +++ b/packages/cubejs-ksql-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/ksql-driver", "description": "Cube.js ksql database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,9 +25,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "async-mutex": "0.3.2", "axios": "^1.8.3", "kafkajs": "^2.2.3", @@ -41,7 +41,7 @@ "extends": "../cubejs-linter" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-linter/CHANGELOG.md b/packages/cubejs-linter/CHANGELOG.md index 43e3f71243d98..87cd2c8157bf6 100644 --- a/packages/cubejs-linter/CHANGELOG.md +++ b/packages/cubejs-linter/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/linter + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/linter diff --git a/packages/cubejs-linter/package.json b/packages/cubejs-linter/package.json index 575e7e5e877b1..f561eba9390af 100644 --- a/packages/cubejs-linter/package.json +++ b/packages/cubejs-linter/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/linter", "description": "Cube.js ESLint (virtual package) for linting code", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", diff --git a/packages/cubejs-materialize-driver/CHANGELOG.md b/packages/cubejs-materialize-driver/CHANGELOG.md index 9f88d3a5ae134..55c44abd625b0 100644 --- a/packages/cubejs-materialize-driver/CHANGELOG.md +++ b/packages/cubejs-materialize-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/materialize-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/materialize-driver diff --git a/packages/cubejs-materialize-driver/package.json b/packages/cubejs-materialize-driver/package.json index 96fe6605a81ea..8e09fb69b08fd 100644 --- a/packages/cubejs-materialize-driver/package.json +++ b/packages/cubejs-materialize-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/materialize-driver", "description": "Cube.js Materialize database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,17 +27,17 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/postgres-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/postgres-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@types/pg": "^8.6.0", "pg": "^8.6.0", "semver": "^7.6.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing": "1.4.0", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-mongobi-driver/CHANGELOG.md b/packages/cubejs-mongobi-driver/CHANGELOG.md index 417466a54f659..0ffb845599b7a 100644 --- a/packages/cubejs-mongobi-driver/CHANGELOG.md +++ b/packages/cubejs-mongobi-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/mongobi-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/mongobi-driver diff --git a/packages/cubejs-mongobi-driver/package.json b/packages/cubejs-mongobi-driver/package.json index bdd2423a3f0a2..689fd55abc1e7 100644 --- a/packages/cubejs-mongobi-driver/package.json +++ b/packages/cubejs-mongobi-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mongobi-driver", "description": "Cube.js MongoBI driver", "author": "krunalsabnis@gmail.com", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,8 +27,8 @@ "integration:mongobi": "jest dist/test" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@types/node": "^20", "generic-pool": "^3.9.0", "moment": "^2.29.1", @@ -39,7 +39,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-mssql-driver/CHANGELOG.md b/packages/cubejs-mssql-driver/CHANGELOG.md index 6bd85523627c6..252f4e8063877 100644 --- a/packages/cubejs-mssql-driver/CHANGELOG.md +++ b/packages/cubejs-mssql-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/mssql-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/mssql-driver diff --git a/packages/cubejs-mssql-driver/package.json b/packages/cubejs-mssql-driver/package.json index 6ba2b53d2fcf4..30d17689f63c7 100644 --- a/packages/cubejs-mssql-driver/package.json +++ b/packages/cubejs-mssql-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mssql-driver", "description": "Cube.js MS SQL database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,8 +25,8 @@ "lint:fix": "eslint --fix src/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "mssql": "^11.0.1" }, "devDependencies": { diff --git a/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md b/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md index 66d9e70bc6a97..1802c27f1ed96 100644 --- a/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md +++ b/packages/cubejs-mysql-aurora-serverless-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/mysql-aurora-serverless-driver diff --git a/packages/cubejs-mysql-aurora-serverless-driver/package.json b/packages/cubejs-mysql-aurora-serverless-driver/package.json index e6eafefca8359..c5bef8b9dc89e 100644 --- a/packages/cubejs-mysql-aurora-serverless-driver/package.json +++ b/packages/cubejs-mysql-aurora-serverless-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mysql-aurora-serverless-driver", "description": "Cube.js Aurora Serverless Mysql database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -21,14 +21,14 @@ "lint": "eslint driver/*.js test/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@types/mysql": "^2.15.15", "aws-sdk": "^2.787.0", "data-api-client": "^1.1.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/data-api-client": "^1.2.1", "@types/jest": "^29", "jest": "^29", diff --git a/packages/cubejs-mysql-driver/CHANGELOG.md b/packages/cubejs-mysql-driver/CHANGELOG.md index bb76eeafb0276..dab716047e4a4 100644 --- a/packages/cubejs-mysql-driver/CHANGELOG.md +++ b/packages/cubejs-mysql-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/mysql-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/mysql-driver diff --git a/packages/cubejs-mysql-driver/package.json b/packages/cubejs-mysql-driver/package.json index 264c94f8c1aa7..ec5091d0f4855 100644 --- a/packages/cubejs-mysql-driver/package.json +++ b/packages/cubejs-mysql-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/mysql-driver", "description": "Cube.js Mysql database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,14 +27,14 @@ "lint:fix": "eslint --fix src/* test/* --ext .ts,.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "generic-pool": "^3.9.0", "mysql": "^2.18.1" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "@types/jest": "^29", "@types/mysql": "^2.15.21", "jest": "^29", diff --git a/packages/cubejs-oracle-driver/CHANGELOG.md b/packages/cubejs-oracle-driver/CHANGELOG.md index 44a2637d67b05..654ebf9dbad6c 100644 --- a/packages/cubejs-oracle-driver/CHANGELOG.md +++ b/packages/cubejs-oracle-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/oracle-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/oracle-driver diff --git a/packages/cubejs-oracle-driver/package.json b/packages/cubejs-oracle-driver/package.json index adab63b6fcc41..b318900d4722b 100644 --- a/packages/cubejs-oracle-driver/package.json +++ b/packages/cubejs-oracle-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/oracle-driver", "description": "Cube.js oracle database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -13,7 +13,7 @@ }, "main": "driver/OracleDriver.js", "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", "ramda": "^0.27.0" }, "optionalDependencies": { diff --git a/packages/cubejs-pinot-driver/CHANGELOG.md b/packages/cubejs-pinot-driver/CHANGELOG.md index a379ef8efea0d..6fc6f7fbcbb73 100644 --- a/packages/cubejs-pinot-driver/CHANGELOG.md +++ b/packages/cubejs-pinot-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/pinot-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/pinot-driver diff --git a/packages/cubejs-pinot-driver/package.json b/packages/cubejs-pinot-driver/package.json index 572bbc9774572..7183e332ad378 100644 --- a/packages/cubejs-pinot-driver/package.json +++ b/packages/cubejs-pinot-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/pinot-driver", "description": "Cube.js Pinot database driver", "author": "Julian Ronsse, InTheMemory, Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "node-fetch": "^2.6.1", "ramda": "^0.27.2", "sqlstring": "^2.3.3" @@ -39,7 +39,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "jest": "^29", "should": "^13.2.3", diff --git a/packages/cubejs-playground/CHANGELOG.md b/packages/cubejs-playground/CHANGELOG.md index 90f288ea0a040..6c62059dbeb23 100644 --- a/packages/cubejs-playground/CHANGELOG.md +++ b/packages/cubejs-playground/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-client/playground + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-client/playground diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json index 68afa5aff9e8a..0bdf3c3a9dc0b 100644 --- a/packages/cubejs-playground/package.json +++ b/packages/cubejs-playground/package.json @@ -1,7 +1,7 @@ { "name": "@cubejs-client/playground", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "engines": {}, "repository": { "type": "git", @@ -69,8 +69,8 @@ "@ant-design/compatible": "^1.0.1", "@ant-design/icons": "^5.3.5", "@cube-dev/ui-kit": "0.52.3", - "@cubejs-client/core": "1.3.86", - "@cubejs-client/react": "1.3.86", + "@cubejs-client/core": "1.4.0", + "@cubejs-client/react": "1.4.0", "@types/flexsearch": "^0.7.3", "@types/node": "^20", "@types/react": "^18.3.4", diff --git a/packages/cubejs-postgres-driver/CHANGELOG.md b/packages/cubejs-postgres-driver/CHANGELOG.md index 2687aff8a6b45..71725783f8f44 100644 --- a/packages/cubejs-postgres-driver/CHANGELOG.md +++ b/packages/cubejs-postgres-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/postgres-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/postgres-driver diff --git a/packages/cubejs-postgres-driver/package.json b/packages/cubejs-postgres-driver/package.json index 8719f781469f4..4d4d8215595d9 100644 --- a/packages/cubejs-postgres-driver/package.json +++ b/packages/cubejs-postgres-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/postgres-driver", "description": "Cube.js Postgres database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,8 +27,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@types/pg": "^8.6.0", "@types/pg-query-stream": "^1.0.3", "moment": "^2.24.0", @@ -37,8 +37,8 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-prestodb-driver/CHANGELOG.md b/packages/cubejs-prestodb-driver/CHANGELOG.md index 3d9ecb4b7a113..6d612e4a7be8c 100644 --- a/packages/cubejs-prestodb-driver/CHANGELOG.md +++ b/packages/cubejs-prestodb-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/prestodb-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/prestodb-driver diff --git a/packages/cubejs-prestodb-driver/package.json b/packages/cubejs-prestodb-driver/package.json index 10c6646cca4d0..a0e66f11bcad9 100644 --- a/packages/cubejs-prestodb-driver/package.json +++ b/packages/cubejs-prestodb-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/prestodb-driver", "description": "Cube.js Presto database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,8 +27,8 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "presto-client": "^1.1.0", "ramda": "^0.27.0", "sqlstring": "^2.3.1" @@ -38,7 +38,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "jest": "^29", "should": "^13.2.3", diff --git a/packages/cubejs-query-orchestrator/CHANGELOG.md b/packages/cubejs-query-orchestrator/CHANGELOG.md index 7422fd31d72d1..2f0512f84572c 100644 --- a/packages/cubejs-query-orchestrator/CHANGELOG.md +++ b/packages/cubejs-query-orchestrator/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/query-orchestrator + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/query-orchestrator diff --git a/packages/cubejs-query-orchestrator/package.json b/packages/cubejs-query-orchestrator/package.json index a854d376f6e58..1d9d431fc31d6 100644 --- a/packages/cubejs-query-orchestrator/package.json +++ b/packages/cubejs-query-orchestrator/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/query-orchestrator", "description": "Cube.js Query Orchestrator and Cache", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,15 +29,15 @@ "dist/src/*" ], "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/cubestore-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/cubestore-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "csv-write-stream": "^2.0.0", "lru-cache": "^11.1.0", "ramda": "^0.27.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "@types/node": "^20", "@types/ramda": "^0.27.32", diff --git a/packages/cubejs-questdb-driver/CHANGELOG.md b/packages/cubejs-questdb-driver/CHANGELOG.md index 1ed6861a8e91c..1a98ff5f11cda 100644 --- a/packages/cubejs-questdb-driver/CHANGELOG.md +++ b/packages/cubejs-questdb-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/questdb-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/questdb-driver diff --git a/packages/cubejs-questdb-driver/package.json b/packages/cubejs-questdb-driver/package.json index bcabe92062257..d1ff62b6c7154 100644 --- a/packages/cubejs-questdb-driver/package.json +++ b/packages/cubejs-questdb-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/questdb-driver", "description": "Cube.js QuestDB database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,9 +27,9 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@types/pg": "^8.6.0", "moment": "^2.24.0", "pg": "^8.7.0", @@ -37,8 +37,8 @@ }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "testcontainers": "^10.28.0", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-redshift-driver/CHANGELOG.md b/packages/cubejs-redshift-driver/CHANGELOG.md index aceff3dc5a50c..7ff094aaa5dfa 100644 --- a/packages/cubejs-redshift-driver/CHANGELOG.md +++ b/packages/cubejs-redshift-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/redshift-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/redshift-driver diff --git a/packages/cubejs-redshift-driver/package.json b/packages/cubejs-redshift-driver/package.json index 6f81030952002..b866892593019 100644 --- a/packages/cubejs-redshift-driver/package.json +++ b/packages/cubejs-redshift-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/redshift-driver", "description": "Cube.js Redshift database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -25,13 +25,13 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/postgres-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86" + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/postgres-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "typescript": "~5.2.2" }, "publishConfig": { diff --git a/packages/cubejs-schema-compiler/CHANGELOG.md b/packages/cubejs-schema-compiler/CHANGELOG.md index f3cd364304565..b1795eec9ac47 100644 --- a/packages/cubejs-schema-compiler/CHANGELOG.md +++ b/packages/cubejs-schema-compiler/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/schema-compiler + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) ### Features diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json index ee0e232333305..904772b74b4d7 100644 --- a/packages/cubejs-schema-compiler/package.json +++ b/packages/cubejs-schema-compiler/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/schema-compiler", "description": "Cube schema compiler", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -40,8 +40,8 @@ "@babel/standalone": "^7.24", "@babel/traverse": "^7.24", "@babel/types": "^7.24", - "@cubejs-backend/native": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/native": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "antlr4": "^4.13.2", "camelcase": "^6.2.0", "cron-parser": "^4.9.0", @@ -60,8 +60,8 @@ }, "devDependencies": { "@clickhouse/client": "^1.12.0", - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", "@types/babel__code-frame": "^7.0.6", "@types/babel__generator": "^7.6.8", "@types/babel__traverse": "^7.20.5", diff --git a/packages/cubejs-server-core/CHANGELOG.md b/packages/cubejs-server-core/CHANGELOG.md index df96dfb477266..ac080575cd0b6 100644 --- a/packages/cubejs-server-core/CHANGELOG.md +++ b/packages/cubejs-server-core/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/server-core + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/server-core diff --git a/packages/cubejs-server-core/package.json b/packages/cubejs-server-core/package.json index cccc93c54e5b0..c65447c6c0360 100644 --- a/packages/cubejs-server-core/package.json +++ b/packages/cubejs-server-core/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/server-core", "description": "Cube.js base component to wire all backend components together", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -29,14 +29,14 @@ "unit": "jest --runInBand --forceExit --coverage dist/test" }, "dependencies": { - "@cubejs-backend/api-gateway": "1.3.86", - "@cubejs-backend/cloud": "1.3.86", + "@cubejs-backend/api-gateway": "1.4.0", + "@cubejs-backend/cloud": "1.4.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", - "@cubejs-backend/templates": "1.3.86", + "@cubejs-backend/native": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", + "@cubejs-backend/templates": "1.4.0", "codesandbox-import-utils": "^2.1.12", "cross-spawn": "^7.0.1", "fs-extra": "^8.1.0", @@ -59,9 +59,9 @@ "ws": "^7.5.3" }, "devDependencies": { - "@cubejs-backend/cubestore-driver": "1.3.86", - "@cubejs-backend/linter": "1.3.86", - "@cubejs-client/playground": "1.3.86", + "@cubejs-backend/cubestore-driver": "1.4.0", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-client/playground": "1.4.0", "@types/cross-spawn": "^6.0.2", "@types/express": "^4.17.21", "@types/fs-extra": "^9.0.8", diff --git a/packages/cubejs-server/CHANGELOG.md b/packages/cubejs-server/CHANGELOG.md index fca52b5031a5e..87c294853e329 100644 --- a/packages/cubejs-server/CHANGELOG.md +++ b/packages/cubejs-server/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/server + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/server diff --git a/packages/cubejs-server/package.json b/packages/cubejs-server/package.json index a2216ed492224..61993ee09a787 100644 --- a/packages/cubejs-server/package.json +++ b/packages/cubejs-server/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/server", "description": "Cube.js all-in-one server", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "types": "index.d.ts", "repository": { "type": "git", @@ -40,11 +40,11 @@ "jest:shapshot": "jest --updateSnapshot test" }, "dependencies": { - "@cubejs-backend/cubestore-driver": "1.3.86", + "@cubejs-backend/cubestore-driver": "1.4.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/native": "1.3.86", - "@cubejs-backend/server-core": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/native": "1.4.0", + "@cubejs-backend/server-core": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@oclif/color": "^1.0.0", "@oclif/command": "^1.8.13", "@oclif/config": "^1.18.2", @@ -61,8 +61,8 @@ "ws": "^7.1.2" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", "@oclif/dev-cli": "^1.23.1", "@types/body-parser": "^1.19.0", "@types/cors": "^2.8.8", diff --git a/packages/cubejs-snowflake-driver/CHANGELOG.md b/packages/cubejs-snowflake-driver/CHANGELOG.md index ba5e0548cab9f..22f1b7a59fdee 100644 --- a/packages/cubejs-snowflake-driver/CHANGELOG.md +++ b/packages/cubejs-snowflake-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/snowflake-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/snowflake-driver diff --git a/packages/cubejs-snowflake-driver/package.json b/packages/cubejs-snowflake-driver/package.json index e4862d82f44da..a134cd276ad3b 100644 --- a/packages/cubejs-snowflake-driver/package.json +++ b/packages/cubejs-snowflake-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/snowflake-driver", "description": "Cube.js Snowflake database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -26,8 +26,8 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.726.0", - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "date-fns-timezone": "^0.1.4", "snowflake-sdk": "^2.2.0" }, @@ -39,7 +39,7 @@ "extends": "../cubejs-linter" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-sqlite-driver/CHANGELOG.md b/packages/cubejs-sqlite-driver/CHANGELOG.md index 2b5c544b9f3ba..dfcfd6d7ac10b 100644 --- a/packages/cubejs-sqlite-driver/CHANGELOG.md +++ b/packages/cubejs-sqlite-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/sqlite-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/sqlite-driver diff --git a/packages/cubejs-sqlite-driver/package.json b/packages/cubejs-sqlite-driver/package.json index 503347c8c6c12..aca48731f42f3 100644 --- a/packages/cubejs-sqlite-driver/package.json +++ b/packages/cubejs-sqlite-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/sqlite-driver", "description": "Cube.js Sqlite database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -18,13 +18,13 @@ "unit": "jest" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "sqlite3": "^5.1.7" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "jest": "^29" }, "publishConfig": { diff --git a/packages/cubejs-templates/CHANGELOG.md b/packages/cubejs-templates/CHANGELOG.md index e6b6199ff959f..b4e36607378ba 100644 --- a/packages/cubejs-templates/CHANGELOG.md +++ b/packages/cubejs-templates/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/templates + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/templates diff --git a/packages/cubejs-templates/package.json b/packages/cubejs-templates/package.json index 28888467e3bbd..1a2b9274a5dd2 100644 --- a/packages/cubejs-templates/package.json +++ b/packages/cubejs-templates/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/templates", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube.js Templates helpers", "author": "Cube Dev, Inc.", "license": "Apache-2.0", @@ -26,7 +26,7 @@ "extends": "../cubejs-linter" }, "dependencies": { - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "cross-spawn": "^7.0.3", "decompress": "^4.2.1", "decompress-targz": "^4.1.1", @@ -36,7 +36,7 @@ "source-map-support": "^0.5.19" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "typescript": "~5.2.2" } } diff --git a/packages/cubejs-testing-drivers/CHANGELOG.md b/packages/cubejs-testing-drivers/CHANGELOG.md index 6b8122124bef3..0cfa21aecc3da 100644 --- a/packages/cubejs-testing-drivers/CHANGELOG.md +++ b/packages/cubejs-testing-drivers/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/testing-drivers + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/testing-drivers diff --git a/packages/cubejs-testing-drivers/package.json b/packages/cubejs-testing-drivers/package.json index 4351f0bcc8bc7..ec154ca8e842e 100644 --- a/packages/cubejs-testing-drivers/package.json +++ b/packages/cubejs-testing-drivers/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing-drivers", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube.js drivers test suite", "author": "Cube Dev, Inc.", "license": "MIT", @@ -67,24 +67,24 @@ "dist/src" ], "dependencies": { - "@cubejs-backend/athena-driver": "1.3.86", - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/bigquery-driver": "1.3.86", - "@cubejs-backend/clickhouse-driver": "1.3.86", - "@cubejs-backend/cubestore-driver": "1.3.86", - "@cubejs-backend/databricks-jdbc-driver": "1.3.86", + "@cubejs-backend/athena-driver": "1.4.0", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/bigquery-driver": "1.4.0", + "@cubejs-backend/clickhouse-driver": "1.4.0", + "@cubejs-backend/cubestore-driver": "1.4.0", + "@cubejs-backend/databricks-jdbc-driver": "1.4.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/mssql-driver": "1.3.86", - "@cubejs-backend/mysql-driver": "1.3.86", - "@cubejs-backend/postgres-driver": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", - "@cubejs-backend/server-core": "1.3.86", - "@cubejs-backend/shared": "1.3.86", - "@cubejs-backend/snowflake-driver": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", - "@cubejs-client/core": "1.3.86", - "@cubejs-client/ws-transport": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/mssql-driver": "1.4.0", + "@cubejs-backend/mysql-driver": "1.4.0", + "@cubejs-backend/postgres-driver": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", + "@cubejs-backend/server-core": "1.4.0", + "@cubejs-backend/shared": "1.4.0", + "@cubejs-backend/snowflake-driver": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", + "@cubejs-client/core": "1.4.0", + "@cubejs-client/ws-transport": "1.4.0", "@jest/globals": "^29", "@types/jest": "^29", "@types/node": "^20", diff --git a/packages/cubejs-testing-shared/CHANGELOG.md b/packages/cubejs-testing-shared/CHANGELOG.md index 246b33fada5f8..b6a096d097fda 100644 --- a/packages/cubejs-testing-shared/CHANGELOG.md +++ b/packages/cubejs-testing-shared/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/testing-shared + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/testing-shared diff --git a/packages/cubejs-testing-shared/package.json b/packages/cubejs-testing-shared/package.json index 4d2d2c5d0eedf..ef7f263c801d6 100644 --- a/packages/cubejs-testing-shared/package.json +++ b/packages/cubejs-testing-shared/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing-shared", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube.js Testing Helpers", "author": "Cube Dev, Inc.", "license": "Apache-2.0", @@ -21,16 +21,16 @@ ], "dependencies": { "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/query-orchestrator": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/query-orchestrator": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "@testcontainers/kafka": "~10.28.0", "dedent": "^0.7.0", "node-fetch": "^2.6.7", "testcontainers": "^10.28.0" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@jest/globals": "^29", "@types/dedent": "^0.7.0", "@types/jest": "^29", diff --git a/packages/cubejs-testing/CHANGELOG.md b/packages/cubejs-testing/CHANGELOG.md index 2408aa6203302..07d67efddc241 100644 --- a/packages/cubejs-testing/CHANGELOG.md +++ b/packages/cubejs-testing/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/testing + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/testing diff --git a/packages/cubejs-testing/package.json b/packages/cubejs-testing/package.json index 6aa1791d38764..6438816b6389c 100644 --- a/packages/cubejs-testing/package.json +++ b/packages/cubejs-testing/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/testing", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube.js e2e tests", "author": "Cube Dev, Inc.", "license": "Apache-2.0", @@ -94,15 +94,15 @@ "birdbox-fixtures" ], "dependencies": { - "@cubejs-backend/cubestore-driver": "1.3.86", + "@cubejs-backend/cubestore-driver": "1.4.0", "@cubejs-backend/dotenv": "^9.0.2", - "@cubejs-backend/ksql-driver": "1.3.86", - "@cubejs-backend/postgres-driver": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", - "@cubejs-client/ws-transport": "1.3.86", + "@cubejs-backend/ksql-driver": "1.4.0", + "@cubejs-backend/postgres-driver": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", + "@cubejs-client/ws-transport": "1.4.0", "dedent": "^0.7.0", "fs-extra": "^8.1.0", "http-proxy": "^1.18.1", @@ -113,8 +113,8 @@ }, "devDependencies": { "@4tw/cypress-drag-drop": "^1.6.0", - "@cubejs-backend/linter": "1.3.86", - "@cubejs-client/core": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-client/core": "1.4.0", "@jest/globals": "^29", "@types/dedent": "^0.7.0", "@types/http-proxy": "^1.17.5", diff --git a/packages/cubejs-trino-driver/CHANGELOG.md b/packages/cubejs-trino-driver/CHANGELOG.md index 5b54cad34e8c9..0312e2db6ebdc 100644 --- a/packages/cubejs-trino-driver/CHANGELOG.md +++ b/packages/cubejs-trino-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/trino-driver + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/trino-driver diff --git a/packages/cubejs-trino-driver/package.json b/packages/cubejs-trino-driver/package.json index 728c6a69153cb..c344955f49d61 100644 --- a/packages/cubejs-trino-driver/package.json +++ b/packages/cubejs-trino-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/trino-driver", "description": "Cube.js Trino database driver", "author": "Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.git", @@ -27,10 +27,10 @@ "lint:fix": "eslint --fix src/* --ext .ts" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/prestodb-driver": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/prestodb-driver": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", + "@cubejs-backend/shared": "1.4.0", "node-fetch": "^2.6.1", "presto-client": "^1.1.0", "sqlstring": "^2.3.1" @@ -40,7 +40,7 @@ "access": "public" }, "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0", diff --git a/packages/cubejs-vertica-driver/CHANGELOG.md b/packages/cubejs-vertica-driver/CHANGELOG.md index ae8126b448bff..e816ca6c59c12 100644 --- a/packages/cubejs-vertica-driver/CHANGELOG.md +++ b/packages/cubejs-vertica-driver/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube.js/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/vertica-driver + ## [1.3.86](https://github.com/cube-js/cube.js/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/vertica-driver diff --git a/packages/cubejs-vertica-driver/package.json b/packages/cubejs-vertica-driver/package.json index b2d80daa7a120..0c3f0ae81ad4b 100644 --- a/packages/cubejs-vertica-driver/package.json +++ b/packages/cubejs-vertica-driver/package.json @@ -2,7 +2,7 @@ "name": "@cubejs-backend/vertica-driver", "description": "Cube.js Vertica database driver", "author": "Eduard Karacharov, Tim Brown, Cube Dev, Inc.", - "version": "1.3.86", + "version": "1.4.0", "repository": { "type": "git", "url": "https://github.com/cube-js/cube.js.git", @@ -19,15 +19,15 @@ "lint:fix": "eslint --fix **/*.js" }, "dependencies": { - "@cubejs-backend/base-driver": "1.3.86", - "@cubejs-backend/query-orchestrator": "1.3.86", - "@cubejs-backend/schema-compiler": "1.3.86", + "@cubejs-backend/base-driver": "1.4.0", + "@cubejs-backend/query-orchestrator": "1.4.0", + "@cubejs-backend/schema-compiler": "1.4.0", "vertica-nodejs": "^1.0.3" }, "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", - "@cubejs-backend/testing-shared": "1.3.86", + "@cubejs-backend/linter": "1.4.0", + "@cubejs-backend/testing-shared": "1.4.0", "@types/jest": "^29", "jest": "^29", "testcontainers": "^10.28.0" diff --git a/rust/cubesql/CHANGELOG.md b/rust/cubesql/CHANGELOG.md index 3faf5692adeab..f9c06ca499da7 100644 --- a/rust/cubesql/CHANGELOG.md +++ b/rust/cubesql/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +### Bug Fixes + +- **cubesql:** Always repartition joins when right side has multiple partitions ([#10105](https://github.com/cube-js/cube/issues/10105)) ([ae32748](https://github.com/cube-js/cube/commit/ae327483caabba974e271fb52f4ccc5fd5fa5789)) + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/cubesql diff --git a/rust/cubesql/package.json b/rust/cubesql/package.json index 31ebf7761724f..7e0a4a914417f 100644 --- a/rust/cubesql/package.json +++ b/rust/cubesql/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubesql", - "version": "1.3.86", + "version": "1.4.0", "description": "SQL API for Cube as proxy over MySQL protocol.", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" diff --git a/rust/cubestore/CHANGELOG.md b/rust/cubestore/CHANGELOG.md index 7be867ec2f58e..3051063e9b5e6 100644 --- a/rust/cubestore/CHANGELOG.md +++ b/rust/cubestore/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [1.4.0](https://github.com/cube-js/cube/compare/v1.3.86...v1.4.0) (2025-10-29) + +**Note:** Version bump only for package @cubejs-backend/cubestore + ## [1.3.86](https://github.com/cube-js/cube/compare/v1.3.85...v1.3.86) (2025-10-29) **Note:** Version bump only for package @cubejs-backend/cubestore diff --git a/rust/cubestore/package.json b/rust/cubestore/package.json index 2a72f655829c0..4b7e2c5345083 100644 --- a/rust/cubestore/package.json +++ b/rust/cubestore/package.json @@ -1,6 +1,6 @@ { "name": "@cubejs-backend/cubestore", - "version": "1.3.86", + "version": "1.4.0", "description": "Cube.js pre-aggregation storage layer.", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -27,7 +27,7 @@ "author": "Cube Dev, Inc.", "license": "Apache-2.0", "devDependencies": { - "@cubejs-backend/linter": "1.3.86", + "@cubejs-backend/linter": "1.4.0", "@types/jest": "^27", "@types/node": "^18", "jest": "^27", @@ -37,7 +37,7 @@ "access": "public" }, "dependencies": { - "@cubejs-backend/shared": "1.3.86", + "@cubejs-backend/shared": "1.4.0", "@octokit/core": "^3.2.5", "source-map-support": "^0.5.19" },