@cubejs-backend/schema-compiler 0.35.78 → 0.35.80
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/BaseGroupFilter.d.ts.map +1 -1
- package/dist/src/adapter/BaseGroupFilter.js +1 -5
- package/dist/src/adapter/BaseGroupFilter.js.map +1 -1
- package/dist/src/adapter/BaseQuery.d.ts +7 -3
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +87 -23
- 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 +4 -0
- package/dist/src/adapter/BigqueryQuery.js.map +1 -1
- package/dist/src/adapter/MssqlQuery.d.ts +2 -0
- package/dist/src/adapter/MssqlQuery.d.ts.map +1 -1
- package/dist/src/adapter/MssqlQuery.js +6 -0
- package/dist/src/adapter/MssqlQuery.js.map +1 -1
- package/dist/src/adapter/MysqlQuery.d.ts +1 -0
- package/dist/src/adapter/MysqlQuery.d.ts.map +1 -1
- package/dist/src/adapter/MysqlQuery.js +3 -0
- package/dist/src/adapter/MysqlQuery.js.map +1 -1
- package/dist/src/adapter/PreAggregations.d.ts +0 -3
- package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
- package/dist/src/adapter/PreAggregations.js +2 -30
- package/dist/src/adapter/PreAggregations.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseGroupFilter.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseGroupFilter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseGroupFilter.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseGroupFilter.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAE/B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC;IAEjC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IAEhC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;gBAEf,MAAM,EAAE,GAAG;IAOvB,cAAc,IAAI,OAAO;IAIzB,YAAY,CAAC,MAAM,KAAA;IAInB,aAAa;IAeb,YAAY;IAIZ,UAAU;CAQlB"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.BaseGroupFilter = void 0;
|
|
7
|
-
const ramda_1 = __importDefault(require("ramda"));
|
|
8
4
|
class BaseGroupFilter {
|
|
9
5
|
constructor(filter) {
|
|
10
6
|
this.values = filter.values;
|
|
@@ -25,7 +21,7 @@ class BaseGroupFilter {
|
|
|
25
21
|
return null;
|
|
26
22
|
}
|
|
27
23
|
return `(${sql})`;
|
|
28
|
-
}).filter(
|
|
24
|
+
}).filter(x => x).join(` ${this.operator.toUpperCase()} `);
|
|
29
25
|
if (!r.length) {
|
|
30
26
|
return null;
|
|
31
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseGroupFilter.js","sourceRoot":"","sources":["../../../src/adapter/BaseGroupFilter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseGroupFilter.js","sourceRoot":"","sources":["../../../src/adapter/BaseGroupFilter.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;IAS1B,YAAmB,MAAW;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAEM,cAAc;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,YAAY,CAAC,MAAM;QACxB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC;IAC1G,CAAC;IAEM,aAAa;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,CAAC,UAAU,EAAE;gBAChB,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC;aACvB;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAnDD,0CAmDC"}
|
|
@@ -38,8 +38,8 @@ export class BaseQuery {
|
|
|
38
38
|
};
|
|
39
39
|
static contextSymbolsProxyFrom(symbols: any, allocateParam: any): any;
|
|
40
40
|
static extractFilterMembers(filter: any): any;
|
|
41
|
-
static findAndSubTreeForFilterGroup(filter: any, groupMembers: any, newGroupFilter: any): any;
|
|
42
|
-
static renderFilterParams(filter: any, filterParamArgs: any, allocateParam: any, newGroupFilter: any): any;
|
|
41
|
+
static findAndSubTreeForFilterGroup(filter: any, groupMembers: any, newGroupFilter: any, aliases: any): any;
|
|
42
|
+
static renderFilterParams(filter: any, filterParamArgs: any, allocateParam: any, newGroupFilter: any, aliases: any): any;
|
|
43
43
|
static filterProxyFromAllFilters(allFilters: any, cubeEvaluator: any, allocateParam: any, newGroupFilter: any): {};
|
|
44
44
|
/**
|
|
45
45
|
* BaseQuery class constructor.
|
|
@@ -355,7 +355,7 @@ export class BaseQuery {
|
|
|
355
355
|
withCubeAliasPrefix(cubeAliasPrefix: any, fn: any): any;
|
|
356
356
|
/**
|
|
357
357
|
* Evaluate escaped SQL-alias for cube or cube's property
|
|
358
|
-
* (measure,
|
|
358
|
+
* (measure, dimension).
|
|
359
359
|
* @param {string} cubeName
|
|
360
360
|
* @returns string
|
|
361
361
|
*/
|
|
@@ -489,6 +489,10 @@ export class BaseQuery {
|
|
|
489
489
|
contextSymbolsProxy(symbols: any): any;
|
|
490
490
|
filtersProxy(): {};
|
|
491
491
|
filterGroupFunction(): (...filterParamArgs: any[]) => string;
|
|
492
|
+
flattenAllMembers(excludeSegments?: boolean): any[];
|
|
493
|
+
allBackAliasMembersExceptSegments(): any;
|
|
494
|
+
allBackAliasMembers(): any;
|
|
495
|
+
backAliasMembers(members: any): any;
|
|
492
496
|
}
|
|
493
497
|
/**
|
|
494
498
|
* Set of the schema compilers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;GAYG;AACH;
|
|
1
|
+
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
|
|
@@ -1621,14 +1621,16 @@ class BaseQuery {
|
|
|
1621
1621
|
const memberPathArray = [cubeName, name];
|
|
1622
1622
|
const memberPath = this.cubeEvaluator.pathFromArray(memberPathArray);
|
|
1623
1623
|
let type = memberExpressionType;
|
|
1624
|
-
if (!type
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1624
|
+
if (!type) {
|
|
1625
|
+
if (this.cubeEvaluator.isMeasure(memberPathArray)) {
|
|
1626
|
+
type = 'measure';
|
|
1627
|
+
}
|
|
1628
|
+
else if (this.cubeEvaluator.isDimension(memberPathArray)) {
|
|
1629
|
+
type = 'dimension';
|
|
1630
|
+
}
|
|
1631
|
+
else if (this.cubeEvaluator.isSegment(memberPathArray)) {
|
|
1632
|
+
type = 'segment';
|
|
1633
|
+
}
|
|
1632
1634
|
}
|
|
1633
1635
|
const parentMember = this.safeEvaluateSymbolContext().currentMember;
|
|
1634
1636
|
if (this.safeEvaluateSymbolContext().memberChildren && parentMember) {
|
|
@@ -1769,7 +1771,7 @@ class BaseQuery {
|
|
|
1769
1771
|
}
|
|
1770
1772
|
/**
|
|
1771
1773
|
* Evaluate escaped SQL-alias for cube or cube's property
|
|
1772
|
-
* (measure,
|
|
1774
|
+
* (measure, dimension).
|
|
1773
1775
|
* @param {string} cubeName
|
|
1774
1776
|
* @returns string
|
|
1775
1777
|
*/
|
|
@@ -2730,25 +2732,30 @@ class BaseQuery {
|
|
|
2730
2732
|
if (filter.operator === 'and' || filter.operator === 'or') {
|
|
2731
2733
|
return filter.values.map(f => BaseQuery.extractFilterMembers(f)).reduce((a, b) => ((a && b) ? { ...a, ...b } : null), {});
|
|
2732
2734
|
}
|
|
2733
|
-
else if (filter.measure
|
|
2735
|
+
else if (filter.measure) {
|
|
2736
|
+
return {
|
|
2737
|
+
[filter.measure]: true
|
|
2738
|
+
};
|
|
2739
|
+
}
|
|
2740
|
+
else if (filter.dimension) {
|
|
2734
2741
|
return {
|
|
2735
|
-
[filter.
|
|
2742
|
+
[filter.dimension]: true
|
|
2736
2743
|
};
|
|
2737
2744
|
}
|
|
2738
2745
|
else {
|
|
2739
2746
|
return null;
|
|
2740
2747
|
}
|
|
2741
2748
|
}
|
|
2742
|
-
static findAndSubTreeForFilterGroup(filter, groupMembers, newGroupFilter) {
|
|
2749
|
+
static findAndSubTreeForFilterGroup(filter, groupMembers, newGroupFilter, aliases) {
|
|
2743
2750
|
if ((filter.operator === 'and' || filter.operator === 'or') && !filter.values?.length) {
|
|
2744
2751
|
return null;
|
|
2745
2752
|
}
|
|
2746
2753
|
const filterMembers = BaseQuery.extractFilterMembers(filter);
|
|
2747
|
-
if (filterMembers && Object.keys(filterMembers).every(m => groupMembers.indexOf(m) !== -1)) {
|
|
2754
|
+
if (filterMembers && Object.keys(filterMembers).every(m => (groupMembers.indexOf(m) !== -1 || aliases.indexOf(m) !== -1))) {
|
|
2748
2755
|
return filter;
|
|
2749
2756
|
}
|
|
2750
2757
|
if (filter.operator === 'and') {
|
|
2751
|
-
const result = filter.values.map(f => BaseQuery.findAndSubTreeForFilterGroup(f, groupMembers, newGroupFilter)).filter(f => !!f);
|
|
2758
|
+
const result = filter.values.map(f => BaseQuery.findAndSubTreeForFilterGroup(f, groupMembers, newGroupFilter, aliases)).filter(f => !!f);
|
|
2752
2759
|
if (!result.length) {
|
|
2753
2760
|
return null;
|
|
2754
2761
|
}
|
|
@@ -2766,18 +2773,24 @@ class BaseQuery {
|
|
|
2766
2773
|
const { allFilters } = this;
|
|
2767
2774
|
return BaseQuery.filterProxyFromAllFilters(allFilters, this.cubeEvaluator, this.paramAllocator.allocateParam.bind(this.paramAllocator), this.newGroupFilter.bind(this));
|
|
2768
2775
|
}
|
|
2769
|
-
static renderFilterParams(filter, filterParamArgs, allocateParam, newGroupFilter) {
|
|
2776
|
+
static renderFilterParams(filter, filterParamArgs, allocateParam, newGroupFilter, aliases) {
|
|
2770
2777
|
if (!filter) {
|
|
2771
2778
|
return '1 = 1';
|
|
2772
2779
|
}
|
|
2773
2780
|
if (filter.operator === 'and' || filter.operator === 'or') {
|
|
2774
2781
|
const values = filter.values
|
|
2775
|
-
.map(f => BaseQuery.renderFilterParams(f, filterParamArgs, allocateParam, newGroupFilter))
|
|
2782
|
+
.map(f => BaseQuery.renderFilterParams(f, filterParamArgs, allocateParam, newGroupFilter, aliases))
|
|
2776
2783
|
.map(v => ({ filterToWhere: () => v }));
|
|
2777
2784
|
return newGroupFilter({ operator: filter.operator, values }).filterToWhere();
|
|
2778
2785
|
}
|
|
2779
|
-
const filterParams = filter
|
|
2780
|
-
const filterParamArg = filterParamArgs.filter(p =>
|
|
2786
|
+
const filterParams = filter.filterParams();
|
|
2787
|
+
const filterParamArg = filterParamArgs.filter(p => {
|
|
2788
|
+
const member = p.__member();
|
|
2789
|
+
return member === filter.measure ||
|
|
2790
|
+
member === filter.dimension ||
|
|
2791
|
+
(aliases[member] && (aliases[member] === filter.measure ||
|
|
2792
|
+
aliases[member] === filter.dimension));
|
|
2793
|
+
})[0];
|
|
2781
2794
|
if (!filterParamArg) {
|
|
2782
2795
|
throw new Error(`FILTER_PARAMS arg not found for ${filter.measure || filter.dimension}`);
|
|
2783
2796
|
}
|
|
@@ -2805,13 +2818,18 @@ class BaseQuery {
|
|
|
2805
2818
|
}
|
|
2806
2819
|
return f.__member();
|
|
2807
2820
|
});
|
|
2808
|
-
const
|
|
2809
|
-
|
|
2821
|
+
const aliases = allFilters ?
|
|
2822
|
+
allFilters
|
|
2823
|
+
.map(v => (v.query ? v.query.allBackAliasMembersExceptSegments() : {}))
|
|
2824
|
+
.reduce((a, b) => ({ ...a, ...b }), {})
|
|
2825
|
+
: {};
|
|
2826
|
+
const filter = BaseQuery.findAndSubTreeForFilterGroup(newGroupFilter({ operator: 'and', values: allFilters }), groupMembers, newGroupFilter, Object.values(aliases));
|
|
2827
|
+
return `(${BaseQuery.renderFilterParams(filter, filterParamArgs, allocateParam, newGroupFilter, aliases)})`;
|
|
2810
2828
|
};
|
|
2811
2829
|
}
|
|
2812
2830
|
static filterProxyFromAllFilters(allFilters, cubeEvaluator, allocateParam, newGroupFilter) {
|
|
2813
2831
|
return new Proxy({}, {
|
|
2814
|
-
get: (
|
|
2832
|
+
get: (_target, name) => {
|
|
2815
2833
|
if (name === '_objectWithResolvedProperties') {
|
|
2816
2834
|
return true;
|
|
2817
2835
|
}
|
|
@@ -2828,8 +2846,22 @@ class BaseQuery {
|
|
|
2828
2846
|
return cubeEvaluator.pathFromArray([cubeNameObj.cube, propertyName]);
|
|
2829
2847
|
},
|
|
2830
2848
|
toString() {
|
|
2831
|
-
|
|
2832
|
-
|
|
2849
|
+
// Segments should be excluded because they are evaluated separately in cubeReferenceProxy
|
|
2850
|
+
// In other case this falls into the recursive loop/stack exceeded caused by:
|
|
2851
|
+
// collectFrom() -> traverseSymbol() -> evaluateSymbolSql() ->
|
|
2852
|
+
// evaluateSql() -> resolveSymbolsCall() -> cubeReferenceProxy->toString() ->
|
|
2853
|
+
// evaluateSymbolSql() -> evaluateSql()... -> and got here again
|
|
2854
|
+
const aliases = allFilters ?
|
|
2855
|
+
allFilters
|
|
2856
|
+
.map(v => (v.query ? v.query.allBackAliasMembersExceptSegments() : {}))
|
|
2857
|
+
.reduce((a, b) => ({ ...a, ...b }), {})
|
|
2858
|
+
: {};
|
|
2859
|
+
// Filtering aliases that somehow relate to this cube
|
|
2860
|
+
const filteredAliases = Object.entries(aliases)
|
|
2861
|
+
.filter(([key, value]) => key.startsWith(cubeNameObj.cube) || value.startsWith(cubeNameObj.cube))
|
|
2862
|
+
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
2863
|
+
const filter = BaseQuery.findAndSubTreeForFilterGroup(newGroupFilter({ operator: 'and', values: allFilters }), [cubeEvaluator.pathFromArray([cubeNameObj.cube, propertyName])], newGroupFilter, Object.values(filteredAliases));
|
|
2864
|
+
return `(${BaseQuery.renderFilterParams(filter, [this], allocateParam, newGroupFilter, aliases)})`;
|
|
2833
2865
|
}
|
|
2834
2866
|
})
|
|
2835
2867
|
})
|
|
@@ -2837,6 +2869,38 @@ class BaseQuery {
|
|
|
2837
2869
|
}
|
|
2838
2870
|
});
|
|
2839
2871
|
}
|
|
2872
|
+
flattenAllMembers(excludeSegments = false) {
|
|
2873
|
+
return ramda_1.default.flatten(this.measures
|
|
2874
|
+
.concat(this.dimensions)
|
|
2875
|
+
.concat(excludeSegments ? [] : this.segments)
|
|
2876
|
+
.concat(this.filters)
|
|
2877
|
+
.concat(this.measureFilters)
|
|
2878
|
+
.concat(this.timeDimensions)
|
|
2879
|
+
.map(m => m.getMembers()));
|
|
2880
|
+
}
|
|
2881
|
+
allBackAliasMembersExceptSegments() {
|
|
2882
|
+
return this.backAliasMembers(this.flattenAllMembers(true));
|
|
2883
|
+
}
|
|
2884
|
+
allBackAliasMembers() {
|
|
2885
|
+
return this.backAliasMembers(this.flattenAllMembers());
|
|
2886
|
+
}
|
|
2887
|
+
backAliasMembers(members) {
|
|
2888
|
+
const query = this;
|
|
2889
|
+
return members.map(member => {
|
|
2890
|
+
const collectedMembers = query
|
|
2891
|
+
.collectFrom([member], query.collectMemberNamesFor.bind(query), 'collectMemberNamesFor');
|
|
2892
|
+
const memberPath = member.expressionPath();
|
|
2893
|
+
let nonAliasSeen = false;
|
|
2894
|
+
return collectedMembers
|
|
2895
|
+
.filter(d => {
|
|
2896
|
+
if (!query.cubeEvaluator.byPathAnyType(d).aliasMember) {
|
|
2897
|
+
nonAliasSeen = true;
|
|
2898
|
+
}
|
|
2899
|
+
return !nonAliasSeen;
|
|
2900
|
+
})
|
|
2901
|
+
.map(d => ({ [query.cubeEvaluator.byPathAnyType(d).aliasMember]: memberPath })).reduce((a, b) => ({ ...a, ...b }), {});
|
|
2902
|
+
}).reduce((a, b) => ({ ...a, ...b }), {});
|
|
2903
|
+
}
|
|
2840
2904
|
}
|
|
2841
2905
|
exports.BaseQuery = BaseQuery;
|
|
2842
2906
|
//# sourceMappingURL=BaseQuery.js.map
|