@cubejs-backend/schema-compiler 1.7.34 → 1.7.35
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 +7 -0
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +82 -37
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/MemberSqlTemplateCompiler.d.ts.map +1 -1
- package/dist/src/adapter/MemberSqlTemplateCompiler.js +49 -17
- package/dist/src/adapter/MemberSqlTemplateCompiler.js.map +1 -1
- package/dist/src/adapter/PreAggregations.d.ts +6 -0
- package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
- package/dist/src/adapter/PreAggregations.js +16 -2
- package/dist/src/adapter/PreAggregations.js.map +1 -1
- package/package.json +7 -7
|
@@ -50,6 +50,13 @@ export class BaseQuery {
|
|
|
50
50
|
static findAndSubTreeForFilterGroup(filter: any, groupMembers: any, newGroupFilter: any, aliases: any): any;
|
|
51
51
|
static renderFilterParams(filter: any, filterParamArgs: any, allocateParam: any, newGroupFilter: any, aliases: any): any;
|
|
52
52
|
static filterProxyFromAllFilters(allFilters: any, cubeEvaluator: any, allocateParam: any, newGroupFilter: any): {};
|
|
53
|
+
static get NOT_SHIFT_NAMES(): Set<string>;
|
|
54
|
+
static filterProxyBinding(cubeName: any, propertyName: any, isTimeShift: any, column: any, allFilters: any, cubeEvaluator: any, allocateParam: any, newGroupFilter: any): {
|
|
55
|
+
__column(): any;
|
|
56
|
+
__member(): any;
|
|
57
|
+
__timeShift(): any;
|
|
58
|
+
toString(): string;
|
|
59
|
+
};
|
|
53
60
|
/**
|
|
54
61
|
* BaseQuery class constructor.
|
|
55
62
|
* @param {Compilers|*} compilers
|
|
@@ -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;IAsiKE;;;;;;;;MAUC;IA2BD,8CAcC;IAED,4GAsBC;IA6BD,
|
|
1
|
+
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
|
|
@@ -4373,16 +4373,22 @@ class BaseQuery {
|
|
|
4373
4373
|
return newGroupFilter({ operator: filter.operator, values }).filterToWhere();
|
|
4374
4374
|
}
|
|
4375
4375
|
const filterParams = filter.filterParams();
|
|
4376
|
-
const
|
|
4376
|
+
const matching = filterParamArgs.filter(p => {
|
|
4377
4377
|
const member = p.__member();
|
|
4378
4378
|
return member === filter.measure ||
|
|
4379
4379
|
member === filter.dimension ||
|
|
4380
4380
|
(aliases[member] && (aliases[member] === filter.measure ||
|
|
4381
4381
|
aliases[member] === filter.dimension));
|
|
4382
|
-
})
|
|
4383
|
-
if (!
|
|
4382
|
+
});
|
|
4383
|
+
if (!matching.length) {
|
|
4384
4384
|
throw new Error(`FILTER_PARAMS arg not found for ${filter.measure || filter.dimension}`);
|
|
4385
4385
|
}
|
|
4386
|
+
// Several args can name the same member, one per time shift it addresses.
|
|
4387
|
+
// Only the one addressing no shift describes the rows this query reads.
|
|
4388
|
+
const filterParamArg = matching.find(p => !(p.__timeShift && p.__timeShift()));
|
|
4389
|
+
if (!filterParamArg) {
|
|
4390
|
+
return BaseFilter_1.BaseFilter.ALWAYS_TRUE;
|
|
4391
|
+
}
|
|
4386
4392
|
if (typeof filterParamArg.__column() !== 'function') {
|
|
4387
4393
|
return filter.conditionSql(filterParamArg.__column());
|
|
4388
4394
|
}
|
|
@@ -4429,46 +4435,85 @@ class BaseQuery {
|
|
|
4429
4435
|
// and do not check cube validity as it's part of compilation step.
|
|
4430
4436
|
const cubeName = allFilters && cubeEvaluator.cubeNameFromPath(name);
|
|
4431
4437
|
return new Proxy({ cube: cubeName }, {
|
|
4432
|
-
get: (cubeNameObj, propertyName) => ({
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
return column;
|
|
4436
|
-
},
|
|
4437
|
-
__member() {
|
|
4438
|
-
return cubeEvaluator.pathFromArray([cubeNameObj.cube, propertyName]);
|
|
4439
|
-
},
|
|
4440
|
-
toString() {
|
|
4441
|
-
// Segments should be excluded because they are evaluated separately in cubeReferenceProxy
|
|
4442
|
-
// In other case this falls into the recursive loop/stack exceeded caused by:
|
|
4443
|
-
// collectFrom() -> traverseSymbol() -> evaluateSymbolSql() ->
|
|
4444
|
-
// evaluateSql() -> resolveSymbolsCall() -> cubeReferenceProxy->toString() ->
|
|
4445
|
-
// evaluateSymbolSql() -> evaluateSql()... -> and got here again
|
|
4446
|
-
//
|
|
4447
|
-
// When FILTER_PARAMS is used in dimension/measure SQL - we also hit recursive loop:
|
|
4448
|
-
// allBackAliasMembersExceptSegments() -> collectFrom() -> traverseSymbol() -> evaluateSymbolSql() ->
|
|
4449
|
-
// autoPrefixAndEvaluateSql() -> evaluateSql() -> filterProxyFromAllFilters->Proxy->toString()
|
|
4450
|
-
// and so on...
|
|
4451
|
-
// For this case aliasGathering flag is added to the context in first iteration and
|
|
4452
|
-
// is checked below to prevent looping.
|
|
4453
|
-
const aliases = allFilters ?
|
|
4454
|
-
allFilters
|
|
4455
|
-
.map(v => (v.query && !v.query.safeEvaluateSymbolContext().aliasGathering ? v.query.allBackAliasMembersExceptSegments() : {}))
|
|
4456
|
-
.reduce((a, b) => ({ ...a, ...b }), {})
|
|
4457
|
-
: {};
|
|
4458
|
-
// Filtering aliases that somehow relate to this group member
|
|
4459
|
-
const groupMember = cubeEvaluator.pathFromArray([cubeNameObj.cube, propertyName]);
|
|
4460
|
-
const aliasesForGroupMembers = Object.entries(aliases)
|
|
4461
|
-
.filter(([key, _value]) => key === groupMember)
|
|
4462
|
-
.map(([_key, value]) => value);
|
|
4463
|
-
const filter = BaseQuery.findAndSubTreeForFilterGroup(newGroupFilter({ operator: 'and', values: allFilters }), [groupMember], newGroupFilter, aliasesForGroupMembers);
|
|
4464
|
-
return `(${BaseQuery.renderFilterParams(filter, [this], allocateParam, newGroupFilter, aliases)})`;
|
|
4438
|
+
get: (cubeNameObj, propertyName) => new Proxy({}, {
|
|
4439
|
+
get: (memberTarget, prop) => {
|
|
4440
|
+
if (prop === 'filter') {
|
|
4441
|
+
return (column) => BaseQuery.filterProxyBinding(cubeNameObj.cube, propertyName, false, column, allFilters, cubeEvaluator, allocateParam, newGroupFilter);
|
|
4465
4442
|
}
|
|
4466
|
-
|
|
4443
|
+
// A time shift is addressed only by the native planner. Here the
|
|
4444
|
+
// binding still has to exist, so that a model written for it
|
|
4445
|
+
// compiles and FILTER_GROUP can recover its member, but it
|
|
4446
|
+
// restates nothing.
|
|
4447
|
+
if (prop === 'time_shifts' || prop === 'timeShifts') {
|
|
4448
|
+
return new Proxy({}, {
|
|
4449
|
+
get: (_shiftTarget, timeShiftName) => {
|
|
4450
|
+
// Under `time_shifts` every string reads as the name of a
|
|
4451
|
+
// shift, so string coercion and `filter` — the plain form
|
|
4452
|
+
// with `time_shifts.` inserted by mistake — are reserved.
|
|
4453
|
+
if (typeof timeShiftName !== 'string' || BaseQuery.NOT_SHIFT_NAMES.has(timeShiftName)) {
|
|
4454
|
+
return () => {
|
|
4455
|
+
throw new UserError_1.UserError(`FILTER_PARAMS.${cubeNameObj.cube}.${propertyName}.time_shifts needs the name of a time shift: ` +
|
|
4456
|
+
'FILTER_PARAMS.<cube>.<member>.time_shifts.<name>.filter(...)');
|
|
4457
|
+
};
|
|
4458
|
+
}
|
|
4459
|
+
return {
|
|
4460
|
+
filter: (column) => BaseQuery.filterProxyBinding(cubeNameObj.cube, propertyName, true, column, allFilters, cubeEvaluator, allocateParam, newGroupFilter)
|
|
4461
|
+
};
|
|
4462
|
+
}
|
|
4463
|
+
});
|
|
4464
|
+
}
|
|
4465
|
+
return Reflect.get(memberTarget, prop);
|
|
4466
|
+
}
|
|
4467
4467
|
})
|
|
4468
4468
|
});
|
|
4469
4469
|
}
|
|
4470
4470
|
});
|
|
4471
4471
|
}
|
|
4472
|
+
static get NOT_SHIFT_NAMES() {
|
|
4473
|
+
return new Set(['toString', 'valueOf', 'filter']);
|
|
4474
|
+
}
|
|
4475
|
+
static filterProxyBinding(cubeName, propertyName, isTimeShift, column, allFilters, cubeEvaluator, allocateParam, newGroupFilter) {
|
|
4476
|
+
return {
|
|
4477
|
+
__column() {
|
|
4478
|
+
return column;
|
|
4479
|
+
},
|
|
4480
|
+
__member() {
|
|
4481
|
+
return cubeEvaluator.pathFromArray([cubeName, propertyName]);
|
|
4482
|
+
},
|
|
4483
|
+
__timeShift() {
|
|
4484
|
+
return isTimeShift;
|
|
4485
|
+
},
|
|
4486
|
+
toString() {
|
|
4487
|
+
if (isTimeShift) {
|
|
4488
|
+
return `(${BaseFilter_1.BaseFilter.ALWAYS_TRUE})`;
|
|
4489
|
+
}
|
|
4490
|
+
// Segments should be excluded because they are evaluated separately in cubeReferenceProxy
|
|
4491
|
+
// In other case this falls into the recursive loop/stack exceeded caused by:
|
|
4492
|
+
// collectFrom() -> traverseSymbol() -> evaluateSymbolSql() ->
|
|
4493
|
+
// evaluateSql() -> resolveSymbolsCall() -> cubeReferenceProxy->toString() ->
|
|
4494
|
+
// evaluateSymbolSql() -> evaluateSql()... -> and got here again
|
|
4495
|
+
//
|
|
4496
|
+
// When FILTER_PARAMS is used in dimension/measure SQL - we also hit recursive loop:
|
|
4497
|
+
// allBackAliasMembersExceptSegments() -> collectFrom() -> traverseSymbol() -> evaluateSymbolSql() ->
|
|
4498
|
+
// autoPrefixAndEvaluateSql() -> evaluateSql() -> filterProxyFromAllFilters->Proxy->toString()
|
|
4499
|
+
// and so on...
|
|
4500
|
+
// For this case aliasGathering flag is added to the context in first iteration and
|
|
4501
|
+
// is checked below to prevent looping.
|
|
4502
|
+
const aliases = allFilters ?
|
|
4503
|
+
allFilters
|
|
4504
|
+
.map(v => (v.query && !v.query.safeEvaluateSymbolContext().aliasGathering ? v.query.allBackAliasMembersExceptSegments() : {}))
|
|
4505
|
+
.reduce((a, b) => ({ ...a, ...b }), {})
|
|
4506
|
+
: {};
|
|
4507
|
+
// Filtering aliases that somehow relate to this group member
|
|
4508
|
+
const groupMember = cubeEvaluator.pathFromArray([cubeName, propertyName]);
|
|
4509
|
+
const aliasesForGroupMembers = Object.entries(aliases)
|
|
4510
|
+
.filter(([key, _value]) => key === groupMember)
|
|
4511
|
+
.map(([_key, value]) => value);
|
|
4512
|
+
const filter = BaseQuery.findAndSubTreeForFilterGroup(newGroupFilter({ operator: 'and', values: allFilters }), [groupMember], newGroupFilter, aliasesForGroupMembers);
|
|
4513
|
+
return `(${BaseQuery.renderFilterParams(filter, [this], allocateParam, newGroupFilter, aliases)})`;
|
|
4514
|
+
}
|
|
4515
|
+
};
|
|
4516
|
+
}
|
|
4472
4517
|
/**
|
|
4473
4518
|
*
|
|
4474
4519
|
* @param {boolean} excludeSegments
|