@cubejs-backend/schema-compiler 1.3.14 → 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/BaseDimension.js +1 -1
- package/dist/src/adapter/BaseDimension.js.map +1 -1
- 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 +111 -50
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDimension.js","sourceRoot":"","sources":["../../../src/adapter/BaseDimension.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BaseDimension.js","sourceRoot":"","sources":["../../../src/adapter/BaseDimension.ts"],"names":[],"mappings":"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"}
|
|
@@ -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);
|
|
@@ -997,15 +1002,34 @@ class BaseQuery {
|
|
|
997
1002
|
const withQueries = [];
|
|
998
1003
|
const multiStageMembers = ramda_1.default.uniq(this.allMembersConcat(false)
|
|
999
1004
|
// TODO boolean logic filter support
|
|
1000
|
-
.
|
|
1001
|
-
|
|
1005
|
+
.reduce((acc, m) => {
|
|
1006
|
+
if (m.isMemberExpression) {
|
|
1007
|
+
let refMemberPath;
|
|
1008
|
+
this.evaluateSql(m.cube().name, m.definition().sql, {
|
|
1009
|
+
sqlResolveFn: (_symbol, cube, prop) => {
|
|
1010
|
+
const path = this.cubeEvaluator.pathFromArray([cube, prop]);
|
|
1011
|
+
refMemberPath = path;
|
|
1012
|
+
// We don't need real SQL here, so just returning something.
|
|
1013
|
+
return path;
|
|
1014
|
+
}
|
|
1015
|
+
});
|
|
1016
|
+
if (hasMultiStageMembers(refMemberPath)) {
|
|
1017
|
+
acc.push(refMemberPath);
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
else if (m.expressionPath && hasMultiStageMembers(m.expressionPath())) {
|
|
1021
|
+
acc.push(m.expressionPath());
|
|
1022
|
+
}
|
|
1023
|
+
return acc;
|
|
1024
|
+
}, [])).map(m => this.multiStageWithQueries(m, {
|
|
1002
1025
|
dimensions: this.dimensions.map(d => d.dimension),
|
|
1003
1026
|
multiStageDimensions: this.dimensions.map(d => d.dimension),
|
|
1004
1027
|
// TODO accessing timeDimensions directly from options might miss some processing logic
|
|
1005
1028
|
timeDimensions: this.options.timeDimensions || [],
|
|
1006
1029
|
multiStageTimeDimensions: (this.options.timeDimensions || []).filter(td => !!td.granularity),
|
|
1007
1030
|
// TODO accessing filters directly from options might miss some processing logic
|
|
1008
|
-
filters: this.options.filters || []
|
|
1031
|
+
filters: this.options.filters || [],
|
|
1032
|
+
segments: this.options.segments || [],
|
|
1009
1033
|
}, allMemberChildren, withQueries));
|
|
1010
1034
|
const usedWithQueries = {};
|
|
1011
1035
|
multiStageMembers.forEach(m => this.collectUsedWithQueries(usedWithQueries, m));
|
|
@@ -1095,44 +1119,26 @@ class BaseQuery {
|
|
|
1095
1119
|
queryContext = { ...queryContext, dimensions: ramda_1.default.uniq(queryContext.dimensions.concat(memberDef.addGroupByReferences)) };
|
|
1096
1120
|
}
|
|
1097
1121
|
if (memberDef.timeShiftReferences?.length) {
|
|
1098
|
-
let
|
|
1099
|
-
const
|
|
1122
|
+
let { commonTimeShift } = queryContext;
|
|
1123
|
+
const timeShifts = queryContext.timeShifts || {};
|
|
1124
|
+
const memberOfCube = !this.cubeEvaluator.cubeFromPath(memberPath).isView;
|
|
1100
1125
|
if (memberDef.timeShiftReferences.length === 1 && !memberDef.timeShiftReferences[0].timeDimension) {
|
|
1101
1126
|
const timeShift = memberDef.timeShiftReferences[0];
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
if (td.shiftInterval && !td.dimension === allBackAliasMembers[timeShift.timeDimension]) {
|
|
1107
|
-
throw new UserError_1.UserError(`Hierarchical time shift is not supported but was provided for '${td.dimension}'. Parent time shift is '${td.shiftInterval}' and current is '${timeShift.interval}'`);
|
|
1108
|
-
}
|
|
1109
|
-
return {
|
|
1110
|
-
...td,
|
|
1111
|
-
shiftInterval: timeShift.type === 'next' ? this.negateInterval(timeShift.interval) : timeShift.interval
|
|
1112
|
-
};
|
|
1113
|
-
};
|
|
1127
|
+
// We avoid view's timeshift evaluation as there will be another round of underlying cube's member evaluation
|
|
1128
|
+
if (memberOfCube) {
|
|
1129
|
+
commonTimeShift = timeShift.type === 'next' ? this.negateInterval(timeShift.interval) : timeShift.interval;
|
|
1130
|
+
}
|
|
1114
1131
|
}
|
|
1115
|
-
else {
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
// occurrence, but later during recursion it will hit the original td but shiftInterval will be
|
|
1121
|
-
// present and simple check for td.shiftInterval will always result in error.
|
|
1122
|
-
if (td.shiftInterval && !td.dimension === allBackAliasMembers[timeShift.timeDimension]) {
|
|
1123
|
-
throw new UserError_1.UserError(`Hierarchical time shift is not supported but was provided for '${td.dimension}'. Parent time shift is '${td.shiftInterval}' and current is '${timeShift.interval}'`);
|
|
1124
|
-
}
|
|
1125
|
-
return {
|
|
1126
|
-
...td,
|
|
1127
|
-
shiftInterval: timeShift.type === 'next' ? this.negateInterval(timeShift.interval) : timeShift.interval
|
|
1128
|
-
};
|
|
1129
|
-
}
|
|
1130
|
-
return td;
|
|
1131
|
-
};
|
|
1132
|
+
else if (memberOfCube) {
|
|
1133
|
+
// We avoid view's timeshift evaluation as there will be another round of underlying cube's member evaluation
|
|
1134
|
+
memberDef.timeShiftReferences.forEach((r) => {
|
|
1135
|
+
timeShifts[r.timeDimension] = r.type === 'next' ? this.negateInterval(r.interval) : r.interval;
|
|
1136
|
+
});
|
|
1132
1137
|
}
|
|
1133
1138
|
queryContext = {
|
|
1134
1139
|
...queryContext,
|
|
1135
|
-
|
|
1140
|
+
commonTimeShift,
|
|
1141
|
+
timeShifts,
|
|
1136
1142
|
};
|
|
1137
1143
|
}
|
|
1138
1144
|
queryContext = {
|
|
@@ -1175,12 +1181,16 @@ class BaseQuery {
|
|
|
1175
1181
|
...queryContext,
|
|
1176
1182
|
// TODO make it same way as keepFilters
|
|
1177
1183
|
timeDimensions: queryContext.timeDimensions.map(td => ({ ...td, dateRange: undefined })),
|
|
1184
|
+
// TODO keep segments related to this multistage (if applicable)
|
|
1185
|
+
segments: [],
|
|
1178
1186
|
filters: this.keepFilters(queryContext.filters, filterMember => filterMember === memberPath),
|
|
1179
1187
|
};
|
|
1180
1188
|
}
|
|
1181
1189
|
else {
|
|
1182
1190
|
queryContext = {
|
|
1183
1191
|
...queryContext,
|
|
1192
|
+
// TODO remove not related segments
|
|
1193
|
+
// segments: queryContext.segments,
|
|
1184
1194
|
filters: this.keepFilters(queryContext.filters, filterMember => !this.memberInstanceByPath(filterMember).isMultiStage()),
|
|
1185
1195
|
};
|
|
1186
1196
|
}
|
|
@@ -1197,11 +1207,15 @@ class BaseQuery {
|
|
|
1197
1207
|
return [m, measure.aliasName()];
|
|
1198
1208
|
}).concat(from.dimensions.map(m => {
|
|
1199
1209
|
const member = this.newDimension(m);
|
|
1200
|
-
|
|
1210
|
+
// In case of request coming from the SQL API, member could be expression-based
|
|
1211
|
+
const mPath = typeof m === 'string' ? m : this.cubeEvaluator.pathFromArray([m.cubeName, m.name]);
|
|
1212
|
+
return [mPath, member.aliasName()];
|
|
1201
1213
|
})).concat(from.timeDimensions.map(m => {
|
|
1202
1214
|
const member = this.newTimeDimension(m);
|
|
1203
1215
|
return member.granularity ? [`${member.dimension}.${member.granularity}`, member.aliasName()] : [];
|
|
1204
|
-
})))))
|
|
1216
|
+
}))))),
|
|
1217
|
+
commonTimeShift: withQuery.commonTimeShift,
|
|
1218
|
+
timeShifts: withQuery.timeShifts,
|
|
1205
1219
|
};
|
|
1206
1220
|
const fromSubQuery = fromMeasures && this.newSubQuery({
|
|
1207
1221
|
measures: fromMeasures,
|
|
@@ -1230,6 +1244,7 @@ class BaseQuery {
|
|
|
1230
1244
|
multiStageDimensions: withQuery.multiStageDimensions,
|
|
1231
1245
|
multiStageTimeDimensions: withQuery.multiStageTimeDimensions,
|
|
1232
1246
|
filters: withQuery.filters,
|
|
1247
|
+
segments: withQuery.segments,
|
|
1233
1248
|
from: fromSql && {
|
|
1234
1249
|
sql: fromSql,
|
|
1235
1250
|
alias: `${withQuery.alias}_join`,
|
|
@@ -1444,6 +1459,18 @@ class BaseQuery {
|
|
|
1444
1459
|
dateTimeCast(value) {
|
|
1445
1460
|
return `${value}::timestamp`;
|
|
1446
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
|
+
}
|
|
1447
1474
|
commonQuery() {
|
|
1448
1475
|
return `SELECT${this.topLimit()}
|
|
1449
1476
|
${this.baseSelect()}
|
|
@@ -1816,14 +1843,32 @@ class BaseQuery {
|
|
|
1816
1843
|
* @returns {Array<Array<string>>}
|
|
1817
1844
|
*/
|
|
1818
1845
|
collectJoinHints(excludeTimeDimensions = false) {
|
|
1819
|
-
const
|
|
1820
|
-
|
|
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 => ({
|
|
1821
1861
|
getMembers: () => [{
|
|
1822
1862
|
path: () => null,
|
|
1823
1863
|
cube: () => this.cubeEvaluator.cubeFromPath(j.originalFrom),
|
|
1824
1864
|
definition: () => j.join,
|
|
1825
1865
|
}]
|
|
1826
|
-
})) : []
|
|
1866
|
+
})) : [];
|
|
1867
|
+
const membersToCollectFrom = [
|
|
1868
|
+
...this.allMembersConcat(excludeTimeDimensions),
|
|
1869
|
+
...joinMembers,
|
|
1870
|
+
...customSubQueryJoinMembers,
|
|
1871
|
+
];
|
|
1827
1872
|
return this.collectJoinHintsFromMembers(membersToCollectFrom);
|
|
1828
1873
|
}
|
|
1829
1874
|
collectJoinHintsFromMembers(members) {
|
|
@@ -2208,8 +2253,21 @@ class BaseQuery {
|
|
|
2208
2253
|
}
|
|
2209
2254
|
else {
|
|
2210
2255
|
let res = this.autoPrefixAndEvaluateSql(cubeName, symbol.sql, isMemberExpr);
|
|
2211
|
-
|
|
2212
|
-
|
|
2256
|
+
const memPath = this.cubeEvaluator.pathFromArray([cubeName, name]);
|
|
2257
|
+
// Skip view's member evaluation as there will be underlying cube's same member evaluation
|
|
2258
|
+
if (symbol.type === 'time' && !this.cubeEvaluator.cubeFromPath(memPath).isView) {
|
|
2259
|
+
if (this.safeEvaluateSymbolContext().timeShifts?.[memPath]) {
|
|
2260
|
+
if (symbol.shiftInterval) {
|
|
2261
|
+
throw new UserError_1.UserError(`Hierarchical time shift is not supported but was provided for '${memPath}'. Parent time shift is '${symbol.shiftInterval}' and current is '${this.safeEvaluateSymbolContext().timeShifts?.[memPath]}'`);
|
|
2262
|
+
}
|
|
2263
|
+
res = `(${this.addTimestampInterval(res, this.safeEvaluateSymbolContext().timeShifts?.[memPath])})`;
|
|
2264
|
+
}
|
|
2265
|
+
else if (this.safeEvaluateSymbolContext().commonTimeShift) {
|
|
2266
|
+
if (symbol.shiftInterval) {
|
|
2267
|
+
throw new UserError_1.UserError(`Hierarchical time shift is not supported but was provided for '${memPath}'. Parent time shift is '${symbol.shiftInterval}' and current is '${this.safeEvaluateSymbolContext().commonTimeShift}'`);
|
|
2268
|
+
}
|
|
2269
|
+
res = `(${this.addTimestampInterval(res, this.safeEvaluateSymbolContext().commonTimeShift)})`;
|
|
2270
|
+
}
|
|
2213
2271
|
}
|
|
2214
2272
|
if (this.safeEvaluateSymbolContext().convertTzForRawTimeDimension &&
|
|
2215
2273
|
!this.safeEvaluateSymbolContext().ignoreConvertTzForTimeDimension &&
|
|
@@ -3019,6 +3077,9 @@ class BaseQuery {
|
|
|
3019
3077
|
like_escape: '{{ like_expr }} ESCAPE {{ escape_char }}',
|
|
3020
3078
|
concat_strings: '{{ strings | join(\' || \' ) }}',
|
|
3021
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
|
+
},
|
|
3022
3083
|
filters: {
|
|
3023
3084
|
equals: '{{ column }} = {{ value }}{{ is_null_check }}',
|
|
3024
3085
|
not_equals: '{{ column }} <> {{ value }}{{ is_null_check }}',
|