@cubejs-backend/schema-compiler 1.3.15 → 1.3.16
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 +15 -6
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +49 -11
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/BigqueryQuery.d.ts +1 -0
- package/dist/src/adapter/BigqueryQuery.d.ts.map +1 -1
- package/dist/src/adapter/BigqueryQuery.js +34 -3
- package/dist/src/adapter/BigqueryQuery.js.map +1 -1
- package/dist/src/adapter/CubeStoreQuery.d.ts +1 -0
- package/dist/src/adapter/CubeStoreQuery.d.ts.map +1 -1
- package/dist/src/adapter/CubeStoreQuery.js +4 -0
- package/dist/src/adapter/CubeStoreQuery.js.map +1 -1
- package/dist/src/adapter/PostgresQuery.d.ts.map +1 -1
- package/dist/src/adapter/PostgresQuery.js +6 -3
- package/dist/src/adapter/PostgresQuery.js.map +1 -1
- package/dist/src/compiler/CubeSymbols.js +2 -2
- package/dist/src/compiler/CubeSymbols.js.map +1 -1
- package/package.json +7 -8
|
@@ -102,12 +102,6 @@ export class BaseQuery {
|
|
|
102
102
|
rowLimit: any;
|
|
103
103
|
offset: any;
|
|
104
104
|
allFilters: BaseTimeDimension[] | undefined;
|
|
105
|
-
useNativeSqlPlanner: any;
|
|
106
|
-
canUseNativeSqlPlannerPreAggregation: boolean | undefined;
|
|
107
|
-
queryLevelJoinHints: any;
|
|
108
|
-
cubeAliasPrefix: any;
|
|
109
|
-
preAggregationsSchemaOption: any;
|
|
110
|
-
externalQueryClass: any;
|
|
111
105
|
/**
|
|
112
106
|
* @type {Array<{sql: string, on: {expression: Function}, joinType: 'LEFT' | 'INNER', alias: string}>}
|
|
113
107
|
*/
|
|
@@ -119,7 +113,14 @@ export class BaseQuery {
|
|
|
119
113
|
joinType: 'LEFT' | 'INNER';
|
|
120
114
|
alias: string;
|
|
121
115
|
}[] | undefined;
|
|
116
|
+
useNativeSqlPlanner: any;
|
|
117
|
+
canUseNativeSqlPlannerPreAggregation: boolean | undefined;
|
|
118
|
+
queryLevelJoinHints: any;
|
|
119
|
+
cubeAliasPrefix: any;
|
|
120
|
+
preAggregationsSchemaOption: any;
|
|
121
|
+
externalQueryClass: any;
|
|
122
122
|
order: any;
|
|
123
|
+
neverUseSqlPlannerPreaggregation(): boolean;
|
|
123
124
|
prebuildJoin(): void;
|
|
124
125
|
join: any;
|
|
125
126
|
cacheValue(key: any, fn: any, { contextPropNames, inputProps, cache }?: {
|
|
@@ -328,6 +329,14 @@ export class BaseQuery {
|
|
|
328
329
|
afterOrOnDateFilter(dimensionSql: any, timeStampParam: any): string;
|
|
329
330
|
timeStampCast(value: any): string;
|
|
330
331
|
dateTimeCast(value: any): string;
|
|
332
|
+
/**
|
|
333
|
+
* Converts the input interval (e.g. "2 years", "3 months", "5 days")
|
|
334
|
+
* into a format compatible with the target SQL dialect.
|
|
335
|
+
* Also returns the minimal time unit required (e.g. for use in DATEDIFF).
|
|
336
|
+
*
|
|
337
|
+
* Returns a tuple: (formatted interval, minimal time unit)
|
|
338
|
+
*/
|
|
339
|
+
intervalAndMinimalTimeUnit(interval: any): any[];
|
|
331
340
|
commonQuery(): string;
|
|
332
341
|
dimensionOnlyMeasureToHierarchy(context: any, m: any): any[];
|
|
333
342
|
collectRootMeasureToHierarchy(context: any): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
|
|
@@ -293,9 +293,13 @@ class BaseQuery {
|
|
|
293
293
|
return dimension;
|
|
294
294
|
}).filter(ramda_1.default.identity).map(this.newTimeDimension.bind(this));
|
|
295
295
|
this.allFilters = this.timeDimensions.concat(this.segments).concat(this.filters);
|
|
296
|
+
/**
|
|
297
|
+
* @type {Array<{sql: string, on: {expression: Function}, joinType: 'LEFT' | 'INNER', alias: string}>}
|
|
298
|
+
*/
|
|
299
|
+
this.customSubQueryJoins = this.options.subqueryJoins ?? [];
|
|
296
300
|
this.useNativeSqlPlanner = this.options.useNativeSqlPlanner ?? (0, shared_1.getEnv)('nativeSqlPlanner');
|
|
297
301
|
this.canUseNativeSqlPlannerPreAggregation = false;
|
|
298
|
-
if (this.useNativeSqlPlanner) {
|
|
302
|
+
if (this.useNativeSqlPlanner && !this.neverUseSqlPlannerPreaggregation()) {
|
|
299
303
|
const hasMultiStageMeasures = this.fullKeyQueryAggregateMeasures({ hasMultipliedForPreAggregation: true }).multiStageMembers.length > 0;
|
|
300
304
|
this.canUseNativeSqlPlannerPreAggregation = hasMultiStageMeasures;
|
|
301
305
|
}
|
|
@@ -304,15 +308,15 @@ class BaseQuery {
|
|
|
304
308
|
this.cubeAliasPrefix = this.options.cubeAliasPrefix;
|
|
305
309
|
this.preAggregationsSchemaOption = this.options.preAggregationsSchema ?? DEFAULT_PREAGGREGATIONS_SCHEMA;
|
|
306
310
|
this.externalQueryClass = this.options.externalQueryClass;
|
|
307
|
-
/**
|
|
308
|
-
* @type {Array<{sql: string, on: {expression: Function}, joinType: 'LEFT' | 'INNER', alias: string}>}
|
|
309
|
-
*/
|
|
310
|
-
this.customSubQueryJoins = this.options.subqueryJoins ?? [];
|
|
311
311
|
// Set the default order only when options.order is not provided at all
|
|
312
312
|
// if options.order is set (empty array [] or with data) - use it as is
|
|
313
313
|
this.order = this.options.order ?? this.defaultOrder();
|
|
314
314
|
this.initUngrouped();
|
|
315
315
|
}
|
|
316
|
+
// Temporary workaround to avoid checking for multistage in CubeStoreQuery, since that could lead to errors when HLL functions are present in the query.
|
|
317
|
+
neverUseSqlPlannerPreaggregation() {
|
|
318
|
+
return false;
|
|
319
|
+
}
|
|
316
320
|
prebuildJoin() {
|
|
317
321
|
try {
|
|
318
322
|
// TODO allJoinHints should contain join hints form pre-agg
|
|
@@ -661,7 +665,8 @@ class BaseQuery {
|
|
|
661
665
|
baseTools: this,
|
|
662
666
|
ungrouped: this.options.ungrouped,
|
|
663
667
|
exportAnnotatedSql: exportAnnotatedSql === true,
|
|
664
|
-
preAggregationQuery: this.options.preAggregationQuery
|
|
668
|
+
preAggregationQuery: this.options.preAggregationQuery,
|
|
669
|
+
totalQuery: this.options.totalQuery,
|
|
665
670
|
};
|
|
666
671
|
const buildResult = (0, native_1.buildSqlAndParams)(queryParams);
|
|
667
672
|
if (buildResult.error) {
|
|
@@ -727,11 +732,11 @@ class BaseQuery {
|
|
|
727
732
|
}
|
|
728
733
|
// FIXME helper for native generator, maybe should be moved entirely to rust
|
|
729
734
|
generateTimeSeries(granularity, dateRange) {
|
|
730
|
-
return (0, shared_1.timeSeries)(granularity, dateRange);
|
|
735
|
+
return (0, shared_1.timeSeries)(granularity, dateRange, { timestampPrecision: this.timestampPrecision() });
|
|
731
736
|
}
|
|
732
737
|
// FIXME helper for native generator, maybe should be moved entirely to rust
|
|
733
738
|
generateCustomTimeSeries(granularityInterval, dateRange, origin) {
|
|
734
|
-
return (0, shared_1.timeSeriesFromCustomInterval)(granularityInterval, dateRange, (0, moment_timezone_1.default)(origin), { timestampPrecision:
|
|
739
|
+
return (0, shared_1.timeSeriesFromCustomInterval)(granularityInterval, dateRange, (0, moment_timezone_1.default)(origin), { timestampPrecision: this.timestampPrecision() });
|
|
735
740
|
}
|
|
736
741
|
getPreAggregationByName(cube, preAggregationName) {
|
|
737
742
|
return this.preAggregations.getRollupPreAggregationByName(cube, preAggregationName);
|
|
@@ -1454,6 +1459,18 @@ class BaseQuery {
|
|
|
1454
1459
|
dateTimeCast(value) {
|
|
1455
1460
|
return `${value}::timestamp`;
|
|
1456
1461
|
}
|
|
1462
|
+
/**
|
|
1463
|
+
* Converts the input interval (e.g. "2 years", "3 months", "5 days")
|
|
1464
|
+
* into a format compatible with the target SQL dialect.
|
|
1465
|
+
* Also returns the minimal time unit required (e.g. for use in DATEDIFF).
|
|
1466
|
+
*
|
|
1467
|
+
* Returns a tuple: (formatted interval, minimal time unit)
|
|
1468
|
+
*/
|
|
1469
|
+
intervalAndMinimalTimeUnit(interval) {
|
|
1470
|
+
const intervalParsed = (0, shared_1.parseSqlInterval)(interval);
|
|
1471
|
+
const minGranularity = this.diffTimeUnitForInterval(interval);
|
|
1472
|
+
return [interval, minGranularity];
|
|
1473
|
+
}
|
|
1457
1474
|
commonQuery() {
|
|
1458
1475
|
return `SELECT${this.topLimit()}
|
|
1459
1476
|
${this.baseSelect()}
|
|
@@ -1826,14 +1843,32 @@ class BaseQuery {
|
|
|
1826
1843
|
* @returns {Array<Array<string>>}
|
|
1827
1844
|
*/
|
|
1828
1845
|
collectJoinHints(excludeTimeDimensions = false) {
|
|
1829
|
-
const
|
|
1830
|
-
|
|
1846
|
+
const customSubQueryJoinMembers = this.customSubQueryJoins.map(j => {
|
|
1847
|
+
const res = {
|
|
1848
|
+
path: () => null,
|
|
1849
|
+
cube: () => this.cubeEvaluator.cubeFromPath(j.on.cubeName),
|
|
1850
|
+
definition: () => ({
|
|
1851
|
+
sql: j.on.expression,
|
|
1852
|
+
// TODO use actual type even though it isn't used right now
|
|
1853
|
+
type: 'number'
|
|
1854
|
+
}),
|
|
1855
|
+
};
|
|
1856
|
+
return {
|
|
1857
|
+
getMembers: () => [res],
|
|
1858
|
+
};
|
|
1859
|
+
});
|
|
1860
|
+
const joinMembers = this.join ? this.join.joins.map(j => ({
|
|
1831
1861
|
getMembers: () => [{
|
|
1832
1862
|
path: () => null,
|
|
1833
1863
|
cube: () => this.cubeEvaluator.cubeFromPath(j.originalFrom),
|
|
1834
1864
|
definition: () => j.join,
|
|
1835
1865
|
}]
|
|
1836
|
-
})) : []
|
|
1866
|
+
})) : [];
|
|
1867
|
+
const membersToCollectFrom = [
|
|
1868
|
+
...this.allMembersConcat(excludeTimeDimensions),
|
|
1869
|
+
...joinMembers,
|
|
1870
|
+
...customSubQueryJoinMembers,
|
|
1871
|
+
];
|
|
1837
1872
|
return this.collectJoinHintsFromMembers(membersToCollectFrom);
|
|
1838
1873
|
}
|
|
1839
1874
|
collectJoinHintsFromMembers(members) {
|
|
@@ -3042,6 +3077,9 @@ class BaseQuery {
|
|
|
3042
3077
|
like_escape: '{{ like_expr }} ESCAPE {{ escape_char }}',
|
|
3043
3078
|
concat_strings: '{{ strings | join(\' || \' ) }}',
|
|
3044
3079
|
},
|
|
3080
|
+
tesseract: {
|
|
3081
|
+
ilike: '{{ expr }} {% if negated %}NOT {% endif %}ILIKE {{ pattern }}', // May require different overloads in Tesseract than the ilike from expressions used in SQLAPI.
|
|
3082
|
+
},
|
|
3045
3083
|
filters: {
|
|
3046
3084
|
equals: '{{ column }} = {{ value }}{{ is_null_check }}',
|
|
3047
3085
|
not_equals: '{{ column }} <> {{ value }}{{ is_null_check }}',
|