@cubejs-backend/schema-compiler 1.7.30 → 1.7.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/adapter/BaseQuery.d.ts +27 -0
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +71 -12
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/MongoBiQuery.d.ts +1 -0
- package/dist/src/adapter/MongoBiQuery.d.ts.map +1 -1
- package/dist/src/adapter/MongoBiQuery.js +18 -0
- package/dist/src/adapter/MongoBiQuery.js.map +1 -1
- package/dist/src/adapter/MssqlQuery.d.ts.map +1 -1
- package/dist/src/adapter/MssqlQuery.js +2 -0
- package/dist/src/adapter/MssqlQuery.js.map +1 -1
- package/dist/src/adapter/PrestodbQuery.d.ts.map +1 -1
- package/dist/src/adapter/PrestodbQuery.js +5 -0
- package/dist/src/adapter/PrestodbQuery.js.map +1 -1
- package/dist/src/compiler/CubeEvaluator.d.ts +2 -1
- package/dist/src/compiler/CubeEvaluator.d.ts.map +1 -1
- package/dist/src/compiler/CubeEvaluator.js.map +1 -1
- package/package.json +7 -7
|
@@ -130,6 +130,7 @@ export class BaseQuery {
|
|
|
130
130
|
}[] | undefined;
|
|
131
131
|
useNativeSqlPlanner: any;
|
|
132
132
|
canUseNativeSqlPlannerPreAggregation: any;
|
|
133
|
+
localRefreshKey: any;
|
|
133
134
|
queryLevelJoinHints: any;
|
|
134
135
|
cubeAliasPrefix: any;
|
|
135
136
|
preAggregationsSchemaOption: any;
|
|
@@ -803,6 +804,32 @@ export class BaseQuery {
|
|
|
803
804
|
interval: number;
|
|
804
805
|
dayOffset: number;
|
|
805
806
|
};
|
|
807
|
+
/**
|
|
808
|
+
* Both the rendered SQL and the descriptor handed to the orchestrator for local
|
|
809
|
+
* evaluation derive from this, so they cannot disagree on the formula.
|
|
810
|
+
*
|
|
811
|
+
* @return {{ utcOffset: number, interval: number, dayOffset: number, cron: boolean }}
|
|
812
|
+
*/
|
|
813
|
+
everyRefreshKeyParts(refreshKey: any): {
|
|
814
|
+
utcOffset: number;
|
|
815
|
+
interval: number;
|
|
816
|
+
dayOffset: number;
|
|
817
|
+
cron: boolean;
|
|
818
|
+
};
|
|
819
|
+
/**
|
|
820
|
+
* @protected
|
|
821
|
+
* @param {BaseQuery} [query] the instance that rendered the SQL, when it differs from `this`
|
|
822
|
+
*/
|
|
823
|
+
protected localRefreshKeyOptions(refreshKey: any, query?: BaseQuery | undefined): {
|
|
824
|
+
localRefreshKey: {
|
|
825
|
+
utcOffset: number;
|
|
826
|
+
interval: number;
|
|
827
|
+
dayOffset: number;
|
|
828
|
+
cron: boolean;
|
|
829
|
+
};
|
|
830
|
+
} | {
|
|
831
|
+
localRefreshKey?: undefined;
|
|
832
|
+
};
|
|
806
833
|
everyRefreshKeySql(refreshKey: any, external?: boolean): any;
|
|
807
834
|
granularityFor(momentDate: any): "hour" | "day" | "week" | "month" | "year" | "minute" | "second";
|
|
808
835
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"AA8DA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AAEH;;;;;GAKG;AAEH;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH;
|
|
1
|
+
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
|
|
@@ -256,6 +256,7 @@ class BaseQuery {
|
|
|
256
256
|
memberToAlias: this.options.memberToAlias,
|
|
257
257
|
expressionParams: this.options.expressionParams,
|
|
258
258
|
convertTzForRawTimeDimension: this.options.convertTzForRawTimeDimension,
|
|
259
|
+
localRefreshKey: this.options.localRefreshKey,
|
|
259
260
|
from: this.options.from,
|
|
260
261
|
multiStageQuery: this.options.multiStageQuery,
|
|
261
262
|
multiStageDimensions: this.options.multiStageDimensions,
|
|
@@ -325,6 +326,9 @@ class BaseQuery {
|
|
|
325
326
|
// toggled independently. The neverUseSqlPlannerPreaggregation() guard still opts
|
|
326
327
|
// specific query types (e.g. CubeStoreQuery) out for correctness.
|
|
327
328
|
this.canUseNativeSqlPlannerPreAggregation = this.useNativeSqlPlanner && !this.neverUseSqlPlannerPreaggregation();
|
|
329
|
+
// Gated at emit time so that with the flag off the refresh key tuples stay
|
|
330
|
+
// byte-identical and nothing downstream re-hashes to a new cache key.
|
|
331
|
+
this.localRefreshKey = this.options.localRefreshKey ?? (0, shared_1.getEnv)('refreshKeyLocalTime');
|
|
328
332
|
this.queryLevelJoinHints = this.options.joinHints ?? [];
|
|
329
333
|
this.prebuildJoin();
|
|
330
334
|
this.cubeAliasPrefix = this.options.cubeAliasPrefix;
|
|
@@ -3398,6 +3402,7 @@ class BaseQuery {
|
|
|
3398
3402
|
externalQueryClass: this.options.externalQueryClass,
|
|
3399
3403
|
queryFactory: this.options.queryFactory,
|
|
3400
3404
|
useNativeSqlPlanner: this.options.useNativeSqlPlanner,
|
|
3405
|
+
localRefreshKey: this.options.localRefreshKey,
|
|
3401
3406
|
...options,
|
|
3402
3407
|
};
|
|
3403
3408
|
}
|
|
@@ -3432,18 +3437,21 @@ class BaseQuery {
|
|
|
3432
3437
|
this.refreshKeySelect(sql),
|
|
3433
3438
|
{
|
|
3434
3439
|
external,
|
|
3435
|
-
renewalThreshold: this.refreshKeyRenewalThresholdForInterval(cubeFromPath.refreshKey)
|
|
3440
|
+
renewalThreshold: this.refreshKeyRenewalThresholdForInterval(cubeFromPath.refreshKey),
|
|
3441
|
+
...this.localRefreshKeyOptions(cubeFromPath.refreshKey, query)
|
|
3436
3442
|
},
|
|
3437
3443
|
query
|
|
3438
3444
|
];
|
|
3439
3445
|
}
|
|
3440
3446
|
}
|
|
3441
|
-
const
|
|
3447
|
+
const defaultEveryRefreshKey = this.defaultEveryRefreshKey();
|
|
3448
|
+
const [sql, external, query] = this.everyRefreshKeySql(defaultEveryRefreshKey);
|
|
3442
3449
|
return [
|
|
3443
3450
|
this.refreshKeySelect(sql),
|
|
3444
3451
|
{
|
|
3445
3452
|
external,
|
|
3446
|
-
renewalThreshold: this.defaultRefreshKeyRenewalThreshold()
|
|
3453
|
+
renewalThreshold: this.defaultRefreshKeyRenewalThreshold(),
|
|
3454
|
+
...this.localRefreshKeyOptions(defaultEveryRefreshKey, query)
|
|
3447
3455
|
},
|
|
3448
3456
|
query
|
|
3449
3457
|
];
|
|
@@ -3640,8 +3648,27 @@ class BaseQuery {
|
|
|
3640
3648
|
FLOOR: 'FLOOR({{ args_concat }})',
|
|
3641
3649
|
CEIL: 'CEIL({{ args_concat }})',
|
|
3642
3650
|
TRUNC: 'TRUNC({{ args_concat }})',
|
|
3651
|
+
// Window functions. The SQL API resolves a window function to `functions/<NAME>`
|
|
3652
|
+
// just like any other function, so a built-in without an entry here is never
|
|
3653
|
+
// pushed down: the window, and everything computed on top of it, is left to
|
|
3654
|
+
// post processing over a row-capped result. These are the SQL:2003 window
|
|
3655
|
+
// functions, supported by every dialect that supports windowing at all, so they
|
|
3656
|
+
// live in the base and a dialect missing one deletes it.
|
|
3643
3657
|
LAG: 'LAG({{ args_concat }})',
|
|
3644
3658
|
LEAD: 'LEAD({{ args_concat }})',
|
|
3659
|
+
ROW_NUMBER: 'ROW_NUMBER({{ args_concat }})',
|
|
3660
|
+
RANK: 'RANK({{ args_concat }})',
|
|
3661
|
+
DENSE_RANK: 'DENSE_RANK({{ args_concat }})',
|
|
3662
|
+
PERCENT_RANK: 'PERCENT_RANK({{ args_concat }})',
|
|
3663
|
+
CUME_DIST: 'CUME_DIST({{ args_concat }})',
|
|
3664
|
+
// Unreachable from the SQL API until CORE-831: DataFusion types NTILE's argument
|
|
3665
|
+
// `Exact([UInt64])` and will not coerce an integer literal to it, so the query
|
|
3666
|
+
// fails to plan. Kept because the template itself is right - once the fork's
|
|
3667
|
+
// signature is relaxed, NTILE pushes down with no change here.
|
|
3668
|
+
NTILE: 'NTILE({{ args_concat }})',
|
|
3669
|
+
FIRST_VALUE: 'FIRST_VALUE({{ args_concat }})',
|
|
3670
|
+
LAST_VALUE: 'LAST_VALUE({{ args_concat }})',
|
|
3671
|
+
NTH_VALUE: 'NTH_VALUE({{ args_concat }})',
|
|
3645
3672
|
// There is a difference in behaviour of these function processing in different DBs and DWHs.
|
|
3646
3673
|
// The SQL standard requires greatest and least to return null in case one argument is null.
|
|
3647
3674
|
// However, many DBMS ignore NULL values (mostly because greatest and least were often supported
|
|
@@ -3933,17 +3960,42 @@ class BaseQuery {
|
|
|
3933
3960
|
dayOffset,
|
|
3934
3961
|
};
|
|
3935
3962
|
}
|
|
3963
|
+
/**
|
|
3964
|
+
* Both the rendered SQL and the descriptor handed to the orchestrator for local
|
|
3965
|
+
* evaluation derive from this, so they cannot disagree on the formula.
|
|
3966
|
+
*
|
|
3967
|
+
* @return {{ utcOffset: number, interval: number, dayOffset: number, cron: boolean }}
|
|
3968
|
+
*/
|
|
3969
|
+
everyRefreshKeyParts(refreshKey) {
|
|
3970
|
+
const every = refreshKey.every || '1 hour';
|
|
3971
|
+
if (/^(\d+) (second|minute|hour|day|week)s?$/.test(every)) {
|
|
3972
|
+
return {
|
|
3973
|
+
utcOffset: this.timezone ? moment_timezone_1.default.tz(this.timezone).utcOffset() * 60 : 0,
|
|
3974
|
+
interval: this.parseSecondDuration(every),
|
|
3975
|
+
dayOffset: 0,
|
|
3976
|
+
cron: false,
|
|
3977
|
+
};
|
|
3978
|
+
}
|
|
3979
|
+
return { ...this.calcIntervalForCronString(refreshKey), cron: true };
|
|
3980
|
+
}
|
|
3981
|
+
/**
|
|
3982
|
+
* @protected
|
|
3983
|
+
* @param {BaseQuery} [query] the instance that rendered the SQL, when it differs from `this`
|
|
3984
|
+
*/
|
|
3985
|
+
localRefreshKeyOptions(refreshKey, query) {
|
|
3986
|
+
return this.localRefreshKey
|
|
3987
|
+
? { localRefreshKey: (query || this).everyRefreshKeyParts(refreshKey) }
|
|
3988
|
+
: {};
|
|
3989
|
+
}
|
|
3936
3990
|
everyRefreshKeySql(refreshKey, external = false) {
|
|
3937
3991
|
if (this.externalQueryClass) {
|
|
3938
3992
|
return this.externalQuery().everyRefreshKeySql(refreshKey, true);
|
|
3939
3993
|
}
|
|
3940
|
-
const
|
|
3941
|
-
if (
|
|
3942
|
-
const utcOffset = this.timezone ? moment_timezone_1.default.tz(this.timezone).utcOffset() * 60 : 0;
|
|
3994
|
+
const { utcOffset, interval, dayOffset, cron } = this.everyRefreshKeyParts(refreshKey);
|
|
3995
|
+
if (!cron) {
|
|
3943
3996
|
const utcOffsetPrefix = utcOffset ? `${utcOffset} + ` : '';
|
|
3944
|
-
return [this.floorSql(`(${utcOffsetPrefix}${this.unixTimestampSql()}) / ${
|
|
3997
|
+
return [this.floorSql(`(${utcOffsetPrefix}${this.unixTimestampSql()}) / ${interval}`), external, this];
|
|
3945
3998
|
}
|
|
3946
|
-
const { dayOffset, utcOffset, interval } = this.calcIntervalForCronString(refreshKey);
|
|
3947
3999
|
/**
|
|
3948
4000
|
* Small explanation how it works for every `0 8 * * *`
|
|
3949
4001
|
* 28800 is a $dayOffset
|
|
@@ -4098,6 +4150,12 @@ class BaseQuery {
|
|
|
4098
4150
|
}
|
|
4099
4151
|
}
|
|
4100
4152
|
if (preAggregation.refreshKey.every || preAggregation.refreshKey.incremental) {
|
|
4153
|
+
// An incremental key is wrapped into `CASE WHEN NOW() < <dateTo + updateWindow>`
|
|
4154
|
+
// against an allocated partition range param, so it is not reproducible from
|
|
4155
|
+
// a time interval alone.
|
|
4156
|
+
const localRefreshKeyOptions = preAggregation.refreshKey.incremental
|
|
4157
|
+
? {}
|
|
4158
|
+
: this.localRefreshKeyOptions(preAggregation.refreshKey, refreshKeyQuery);
|
|
4101
4159
|
return [
|
|
4102
4160
|
refreshKeyQuery.paramAllocator.buildSqlAndParams(this.refreshKeySelect(refreshKey)).concat({
|
|
4103
4161
|
external: refreshKeyExternal,
|
|
@@ -4106,7 +4164,8 @@ class BaseQuery {
|
|
|
4106
4164
|
updateWindowSeconds: preAggregation.refreshKey.updateWindow &&
|
|
4107
4165
|
this.parseSecondDuration(preAggregation.refreshKey.updateWindow),
|
|
4108
4166
|
renewalThresholdOutsideUpdateWindow: preAggregation.refreshKey.incremental &&
|
|
4109
|
-
24 * 60 * 60
|
|
4167
|
+
24 * 60 * 60,
|
|
4168
|
+
...localRefreshKeyOptions
|
|
4110
4169
|
})
|
|
4111
4170
|
];
|
|
4112
4171
|
}
|
|
@@ -4121,14 +4180,14 @@ class BaseQuery {
|
|
|
4121
4180
|
const cubeFromPath = this.cubeEvaluator.cubeFromPath(cube);
|
|
4122
4181
|
return preAggregationQueryForSql.evaluateSymbolSqlWithContext(() => preAggregationQueryForSql.cacheKeyQueries((refreshKeyCube, [refreshKeySQL, refreshKeyQueryOptions, refreshKeyQuery]) => {
|
|
4123
4182
|
if (!cubeFromPath.refreshKey) {
|
|
4124
|
-
const
|
|
4125
|
-
|
|
4126
|
-
});
|
|
4183
|
+
const hourlyRefreshKey = { every: '1 hour' };
|
|
4184
|
+
const [sql, external, query] = this.everyRefreshKeySql(hourlyRefreshKey);
|
|
4127
4185
|
return [
|
|
4128
4186
|
this.refreshKeySelect(sql),
|
|
4129
4187
|
{
|
|
4130
4188
|
external,
|
|
4131
4189
|
renewalThreshold: this.defaultRefreshKeyRenewalThreshold(),
|
|
4190
|
+
...this.localRefreshKeyOptions(hourlyRefreshKey, query)
|
|
4132
4191
|
},
|
|
4133
4192
|
query
|
|
4134
4193
|
];
|