@cubejs-backend/schema-compiler 1.3.83 → 1.3.85
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 +12 -4
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +61 -18
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/OracleQuery.d.ts +10 -0
- package/dist/src/adapter/OracleQuery.d.ts.map +1 -1
- package/dist/src/adapter/OracleQuery.js +76 -1
- package/dist/src/adapter/OracleQuery.js.map +1 -1
- package/dist/src/adapter/PreAggregations.d.ts +15 -2
- package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
- package/dist/src/adapter/PreAggregations.js +100 -49
- package/dist/src/adapter/PreAggregations.js.map +1 -1
- package/dist/src/compiler/CubeEvaluator.d.ts +2 -3
- package/dist/src/compiler/CubeEvaluator.d.ts.map +1 -1
- package/dist/src/compiler/CubeEvaluator.js +10 -3
- package/dist/src/compiler/CubeEvaluator.js.map +1 -1
- package/dist/src/compiler/CubeSymbols.d.ts +14 -3
- package/dist/src/compiler/CubeSymbols.d.ts.map +1 -1
- package/dist/src/compiler/CubeSymbols.js +30 -7
- package/dist/src/compiler/CubeSymbols.js.map +1 -1
- package/dist/src/compiler/JoinGraph.d.ts +1 -1
- package/dist/src/compiler/JoinGraph.d.ts.map +1 -1
- package/dist/src/scaffolding/ScaffoldingSchema.d.ts.map +1 -1
- package/dist/src/scaffolding/ScaffoldingSchema.js +10 -1
- package/dist/src/scaffolding/ScaffoldingSchema.js.map +1 -1
- package/package.json +6 -6
|
@@ -136,13 +136,14 @@ export class BaseQuery {
|
|
|
136
136
|
prebuildJoin(): void;
|
|
137
137
|
joinGraphPaths: Record<string, string[]> | undefined;
|
|
138
138
|
/**
|
|
139
|
-
* Is used by native
|
|
140
139
|
* This function follows the same logic as in this.collectJoinHints()
|
|
141
|
-
*
|
|
140
|
+
* skipQueryJoinMap is used by PreAggregations to build join tree without user's query all members map
|
|
141
|
+
* @public
|
|
142
142
|
* @param {Array<(Array<string> | string)>} hints
|
|
143
|
+
* @param { boolean } skipQueryJoinMap
|
|
143
144
|
* @return {import('../compiler/JoinGraph').FinishedJoinTree}
|
|
144
145
|
*/
|
|
145
|
-
|
|
146
|
+
public joinTreeForHints(hints: Array<(Array<string> | string)>, skipQueryJoinMap?: boolean): import('../compiler/JoinGraph').FinishedJoinTree;
|
|
146
147
|
cacheValue(key: any, fn: any, { contextPropNames, inputProps, cache }?: {
|
|
147
148
|
contextPropNames: any;
|
|
148
149
|
inputProps: any;
|
|
@@ -161,6 +162,13 @@ export class BaseQuery {
|
|
|
161
162
|
* @return { Record<string, string[][]>}
|
|
162
163
|
*/
|
|
163
164
|
private queryJoinMap;
|
|
165
|
+
/**
|
|
166
|
+
* @private
|
|
167
|
+
* @param { import('../compiler/JoinGraph').FinishedJoinTree } joinTree
|
|
168
|
+
* @param { string[] } joinHints
|
|
169
|
+
* @return { string[][] }
|
|
170
|
+
*/
|
|
171
|
+
private enrichedJoinHintsFromJoinTree;
|
|
164
172
|
/**
|
|
165
173
|
* @private
|
|
166
174
|
* @param { (string|string[])[] } hints
|
|
@@ -736,7 +744,7 @@ export class BaseQuery {
|
|
|
736
744
|
subQueryOptions(options: any): any;
|
|
737
745
|
cacheKeyQueries(transformFn: any): any;
|
|
738
746
|
refreshKeysByCubes(cubes: any, transformFn: any): any;
|
|
739
|
-
aggSelectForDimension(cube: any, dimension: any, aggFunction: any): string
|
|
747
|
+
aggSelectForDimension(cube: any, dimension: any, aggFunction: any): string;
|
|
740
748
|
cubeCardinalityQueries(): {
|
|
741
749
|
[index: string]: [string, unknown[]];
|
|
742
750
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"AA6DA;;;;;;;;;;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":"AA6DA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AAEH;;;;;GAKG;AAEH;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH;IAwoJE;;;;;;;MASC;IAgBD,8CAcC;IAED,4GAsBC;IA6BD,yHAyCC;IAsCD,mHAuDC;IA30JD;;;;OAIG;IACH,uBAHW,SAAS,MAAE,gBAgBrB;IAhDD,0DAA0D;IAC1D,iBADW,OAAO,mBAAmB,EAAE,eAAe,CACtC;IAEhB,oDAAoD;IACpD,UADW,OAAO,eAAe,EAAE,WAAW,EAAE,CACvC;IAET,wDAAwD;IACxD,YADW,OAAO,iBAAiB,EAAE,aAAa,EAAE,CACzC;IAEX,wDAAwD;IACxD,sBADW,OAAO,iBAAiB,EAAE,aAAa,EAAE,CAC/B;IAErB,gEAAgE;IAChE,0BADW,OAAO,qBAAqB,EAAE,iBAAiB,EAAE,CACnC;IAEzB,oDAAoD;IACpD,UADW,OAAO,eAAe,EAAE,WAAW,EAAE,CACvC;IAET,6CAA6C;IAC7C,SADW,CAAC,UAAU,GAAC,eAAe,CAAC,EAAE,CACjC;IAER,6CAA6C;IAC7C,gBADW,CAAC,UAAU,GAAC,eAAe,CAAC,EAAE,CAC1B;IAEf,gEAAgE;IAChE,gBADW,OAAO,qBAAqB,EAAE,iBAAiB,EAAE,CAC7C;IAEf,+DAA+D;IAC/D,MADW,OAAO,uBAAuB,EAAE,gBAAgB,CACtD;IAQH,eAA0B;IAC1B,gEAAgE;IAChE,eADW,OAAO,2BAA2B,EAAE,aAAa,CAChB;IAC5C,wDAAwD;IACxD,WADW,OAAO,uBAAuB,EAAE,SAAS,CAChB;IACpC,aAA4B;IA6zF9B;;;OAGG;IACH,wBAHW;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAC3B,MAAM,GAAC,IAAI,CAevB;IA32ED;;;QA4BC;IA3fC,6BAA6B;IAC7B,gBADW,cAAc,CACiF;IAI5G,qDAoBC;IAED,sDAYC;IAED,2CAuDC;IAED;;OAEG;IACH,kCA0GC;IAzGC,oBAGC;IACD,mBAA0D;IAC1D,gBA8BE;IACF,UAA6B;IAC7B,qBAAmD;IACnD,cAAqC;IACrC,cAAqC;IACrC,YAAiC;IAsCjC,4CAAgF;IAChF;;;;;OAKG;IACH;aAFsB,MAAM;YAAM;YAAC,UAAU,WAAU;SAAC;kBAAY,MAAM,GAAG,OAAO;eAAS,MAAM;oBAExC;IAC3D,yBAAyF;IACzF,0CAAqF;IAMrF,yBAAuD;IAGvD,qBAAmD;IACnD,iCAAuG;IACvG,wBAAyD;IAIzD,WAAsD;IAMxD,4CAEC;IAED,qBAuBC;IATG,qDAA0C;IAW9C;;;;;;;OAOG;IACH,+BAJW,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,qBAC9B,OAAO,GACP,OAAO,uBAAuB,EAAE,gBAAgB,CA2C3D;IAED;;;;YAkCC;IAED,6BAKC;IAHG,yCAAiD;IAKrD;;;OAGG;IACH,0CAKC;IAHG,sDAAiD;IAKrD;;;OAGG;IACH,qBAYC;IAED;;;;;OAKG;IACH,sCAoBC;IAED;;;;;OAKG;IACH,+BAmBC;IAED,yBAMC;IAED,kCAEC;IAED;;MASC;IAED,sBAeC;IAdC,eAAuC;IAgBzC,mCAYC;IARG,0CAIC;IAML,4BAEC;IAED,2BAEC;IAgCD;;;;OAIG;IACH,8BAFa,WAAW,CAIvB;IAED;;;;OAIG;IACH,kCAFa,aAAa,CAiBzB;IAED;;;;OAIG;IACH,8BAFa,WAAW,CAIvB;IAED;;OAEG;IACH,yBAFa,eAAe,GAAC,UAAU,CAStC;IAED;;OAEG;IACH,wBAFa,UAAU,CAItB;IAED;;;;OAIG;IACH,6BAFa,eAAe,CAI3B;IAED;;;OAGG;IACH,sCAFY,iBAAiB,CAI5B;IAED;;;;OAIG;IACH,0CAFa,cAAc,CAI1B;IAED;;;OAGG;IACH,sBAFa,eAAe,CAI3B;IAED;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,0BAFa,MAAM,CA6ClB;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,MAAM,CAOlB;IAED,6IAqBC;IAED,uCAYC;IAED,6BAGC;IAED;;;;OAIG;IACH,6DAFa,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAgDpC;IAED,gCAKC;IAED,sDA2CC;IAGD,sCAmCC;IAED,oCAIC;IAED,gCAEC;IAGD,wGAEC;IAGD,mIAEC;IAED,kIAEC;IAED,iCAEC;IAED;;;OAGG;IACH,oBAFa,OAAO,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,CAwCzC;IAED,qBAMC;IAED,oKAQC;IAED,4DAqBC;IAED,kGAoCC;IAED;;;;OAIG;IACH,uBAJW,MAAM,YACN,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,kBAJW,MAAM,YACN,MAAM,GACJ,MAAM,CAKlB;IAGD,6CAEC;IAED;;;OAGG;IACH,yBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,gCAJW,MAAM,YACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,qCAJW,MAAM,YACN,MAAM,GACJ,MAAM,CAIlB;IAED,oCAEC;IAED,qBAEC;IAED,sBAYC;IAED;;;OAGG;IACH,yBAFa,MAAM,CAqJlB;IAED,uHAWC;IAED,kGAgDC;IAED,oCAEC;IAED,gDAMC;IAED;;;;;;MAgFC;IAED,4CAaC;IAED;;MAYC;IAED,wEAeC;IAED,kGA+BC;IAED,4DAGC;IAED,mEAyDC;IAED,2FA6CC;IAED;;;MAkFC;IAED,iEAQC;IAED,gCAGC;IAED,iCAGC;IAED,4CAEC;IAED,8BA0CC;IAED,kDAEC;IAED,0DAuBC;IAED,oFAuFC;IAED,sKAKC;IAED,qFAOC;IAED;;;;OAIG;IACH,8GAqBC;IAED;;;OAGG;IACH,6BAHW,OAAO,qBAAqB,EAAE,iBAAiB,GAC9C,MAAM,CAIjB;IAED;;;;;OAKG;IACH,yBAHW,OAAO,qBAAqB,EAAE,iBAAiB,GAC9C,MAAM,CAOjB;IAED;;;OAGG;IACH,8BAHW,OAAO,iBAAiB,EAAE,aAAa,GAAC,OAAO,qBAAqB,EAAE,iBAAiB,GACtF,MAAM,CAIjB;IAED,2FAEC;IAED,gGAEC;IAED,iEAEC;IAED,qEAEC;IAED,gEAEC;IAED,oEAEC;IAED,kCAEC;IAED,iCAEC;IAED;;;;;;OAMG;IACH,iDAGC;IAED,sBAKC;IAED,6DA+CC;IAED;;MAqCC;IAED,aAMC;IAED;;;;;OAKG;IACH,2BAJW,MAAM,8CAEJ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAsBrC;IAED;;;;OAIG;IACH,gBAJW,OAAO,uBAAuB,EAAE,gBAAgB,sBAChD,MAAM,MAAM,CAAC,GACX,MAAM,CAwBlB;IAED;;;OAGG;IACH,uCAFa,MAAM,CAYlB;IAED;;;;;OAKG;IACH;aAJiB,MAAM;YAAM;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,UAAU,WAAU;SAAC;kBAAY,MAAM,GAAG,OAAO;eAAS,MAAM;QAEnG,QAAQ,CAWpB;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,QAAQ,CAkBpB;IAED,oDAOC;IALG,+DAEC;IAKL;;;;OAIG;IACH,+BAHW,MAAM;gBACM,MAAM;;kBAA4B,MAAM;MA4C9D;IAED;;;;;OAKG;IACH,uBAJW,MAAM,QACN,MAAM,GACJ,MAAM,CAIlB;IAED,6DAiBC;IAED;;;;;;OAMG;IACH,+BALW,MAAM,YACN,MAAM,WAAW,CAAC,WAClB,MAAM,UAAU,CAAC,GACf,MAAM,CAqElB;IAED;;;;OAIG;IACH,+CAJW,MAAM,WAAW,CAAC,eAClB,MAAM,GACJ,OAAO,CAwCnB;IAED,iJAOC;IAED,mFAKC;IAED,yCAKC;IAED,2DAYC;IAED,8CAKC;IAED,gFAaC;IAED;;OAEG;IACH,cAFW,MAAM,OA0BhB;IAED,4BAmBC;IAED;;;OAGG;IACH,oBAFa,MAAM,MAAM,CAAC,CAQzB;IAED;;;;;;OAMG;IACH,yBAqBC;IAED;;;;OAIG;IACH,yBAoDC;IAED;;;;;;;;;QAeC;IAED,oCAUC;IAED,iDAWC;IAED;;;;;;OAMG;IACH,6CALW,OAAO,UACH,MAAM,IAAI,oBACd,MAAM,GAAG,MAAM,MAAM,CAAC,KAahC;IAED;;;;OAIG;IACH,wCAHW,OAAO,GACL,MAAM,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC,CAS5D;IAED;;;;;;;OAOG;IACH,uCANW,MAAM,OAAO,CAAC,UACV,MAAM,IAAI,sBACd,MAAM,GAAG,MAAM,MAAM,CAAC,UACtB,OAAO,OAsBjB;IAED;;;;OAIG;IACH,iCAHW,MAAM,IAAI,GACR,MAAM,MAAM,CAAC,CASzB;IAED,6DAMC;IAED;;;;OAIG;IACH,kCAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,iBAFa,MAAM,CAYlB;IAED;;;;;OAKG;IACH,4BAHW,MAAM,GACJ,MAAM,GAAC,MAAM,GAAC,IAAI,CAsD9B;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,IAAI,GAAC,MAAM,CAsDvB;IAqBD,kBAgBC;IAED;;;;OAIG;IACH,uBAFa,MAAM,MAAM,CAAC,CAIzB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,MAAM,MAAM,CAAC,CAIzB;IAED,gCAWC;IAED;;;;OAIG;IACH,8CAHW,MAAM,MAAM,CAAC,GACX,MAAM,CA0ClB;IAED;;;;;OAKG;IACH,sDAFa,MAAM,CAMlB;IAED,mBAEC;IAED,qBAEC;IAED,sDAIC;IAED;;OAEG;IACH,aAFa,MAAM,aAAa,GAAC,WAAW,CAAC,CAI5C;IAED;;;OAGG;IACH,uBAFa,CAAC,aAAa,GAAC,iBAAiB,CAAC,EAAE,CAI/C;IAED,kCAEC;IAED,8BAEC;IAED,8BAEC;IAED,6EAKC;IAED,6CAEC;IAED,0DAIC;IAED,oCAOC;IAED,uEAgBC;IAED,iCAEC;IAED,+GAkLC;IAED,+EAEC;IAED,oCAEC;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,MAAM,CAAC,CAQzB;IAED,uDAEC;IAED,wDAuBC;IAED,wDAEC;IAED;;;;;OAKG;IACH,oBAHW,MAAM,UAYhB;IAED;;;;OAIG;IACH,8BAFa,MAAM,MAAM,CAAC,CAUzB;IAED,sCAOC;IAED;;;;OAIG;IACH,gCAFa,MAAM,MAAM,CAAC,CAUzB;IAED,kCAEC;IAED,4DAmBC;IAED,wCAWC;IAED;;;;;OAKG;IACH,0DAHW,OAAO,OAajB;IARC,2BAA0F;IAU5F,oHAwGC;IAED,6GAgBC;IAED,qDAKC;IAED,yBAEC;IAED,0BAEC;IAED,gCAEC;IAED,6BAEC;IAED,oCAEC;IAED,+BAEC;IAGD,oCAEC;IAED,sDAMC;IAED,qDASC;IAED,yDAKC;IAED,qDAGC;IAED,uEAQC;IAED,wDAEC;IAED,4DAGC;IAED;;;;OAIG;IACH,8BAJW,MAAM,YACN,MAAM,GACJ,OAAO,CASnB;IAED;;;OAGG;IACH,gDAGC;IAED,uCAEC;IAED;;OAEG;IACH,mBAFY,MAAM,CAIjB;IAED;;OAEG;IACH,sBAFY,MAAM,CAIjB;IAED;;;OAGG;IAEH,iBAJW,MAAM,GACL,MAAM,CAKjB;IAED;;;;OAIG;IAEH,+BALW,MAAM,aACN,MAAM,GACL,MAAM,CAKjB;IAED;;;;;;;OAOG;IAEH,kBANW,MAAM,UACN,MAAM,UACN,MAAM,GACJ,MAAM,CAMlB;IAED;;;;;OAKG;IACH,4CAHW,MAAM,GACJ,MAAM,CAoBlB;IAED;;;;OAIG;IACH,sCAJW,MAAM,eACN,OAAO,eAAe,EAAE,WAAW,GAClC,MAAM,CAoBjB;IAED;;;;;OAKG;IACH,gBAJW,MAAM,yBACN,OAAO,UACL,MAAM,CAoBlB;IAED;;;;OAIG;IACH,qBAHW,OAAO,GACL,IAAI,CAKhB;IAED,iDAWC;IAED,mCAeC;IAED,uCASC;IAED,sDA4CC;IAED,2EAqBC;IAED;;MAMC;IAED,wDAEC;IAED,0BAEC;IAED,2BAEC;IAED,qFAGC;IAED,4BAEC;IAED,6EAGC;IAED,8DAEC;IAED,0FAWC;IAED,iDAiBC;IAED,4EAEC;IAED,uDA6BC;IAED,qEA4CC;IAED,oEAMC;IAED,kEAEC;IAED,uFAEC;IAED;;;OAGG;IACH,uBAFa,GAAG,CAyNf;IAED;;;;;OAKG;IAEH,mFAHa,SAAS,CAWrB;IAED;;;;MA0BC;IAED;;;;MAwBC;IAED,6DA0BC;IAED,kGAoDC;IAED;;;;OAIG;IACH,kCAHW,MAAM,GACL,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3B;IAED,sCAIC;IAED,2CAKC;IAED,+BAEC;IAED,8EAcC;IAED,4CAEC;IAED;;MAIC;IAED;;;;;;;;;;;;;;;OAeG;IACH,gCAHW,MAAM,GACL,MAAM,CAIjB;IAED,sEAEC;IAED,iGAqGC;IAED,0FAqBC;IAED,qFAcC;IAED,kCAcC;IAZG,qCASE;IAgBN,iCAEC;IAED;2BAlgCW,MAAM,KACL,MAAM;MAqgCjB;IAED,0CAEC;IA0CD,mBAQC;IAED,0CASC;IAED,oFAIC;IA6CD,6DAGC;IAED,gFA6BC;IA2DD;;;;OAIG;IACH,oCAHW,OAAO,GACL,MAAM,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC,CAY5D;IAED;;OAEG;IACH,8BAFa,OAAO,MAAM,EAAE,MAAM,CAAC,CAKlC;IAED;;OAEG;IACH,qCAFa,OAAO,MAAM,EAAE,MAAM,CAAC,CAIlC;IAED;;OAEG;IACH,uBAFa,OAAO,MAAM,EAAE,MAAM,CAAC,CAIlC;IAED;;;;OAIG;IACH,0BAHW,MAAM,WAAW,GAAG,aAAa,GAAG,WAAW,CAAC,GAC9C,OAAO,MAAM,EAAE,MAAM,CAAC,CAwDlC;IAED,kDAkCC;IAED;;;;OAIG;IACH,2BAFa,mBAAkB,MAAM,CAAC,CAkBrC;CACF;;;;;cAjjKa,OAAO,gCAAgC,EAAE,kBAAkB;qBAC3D,OAAO,mCAAmC,EAAE,qBAAqB;mBACjE,OAAO,2BAA2B,EAAE,aAAa;sBACjD,OAAO,8BAA8B,EAAE,gBAAgB;eACvD,OAAO,uBAAuB,EAAE,SAAS;mBACzC,OAAO,2BAA2B,EAAE,aAAa;;;;SAMjD,MAAM;WACN,MAAM;;;SAKN,MAAM;WACN,MAAM;QACN,MAAM;;wBAIP,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC;2BAxDT,cAAc;gCACT,mBAAmB;+BAKpB,kBAAkB;kCAFf,qBAAqB;4BAF3B,eAAe;8BAHb,iBAAiB;4BAInB,eAAe;gCAIX,mBAAmB;cA3BrC,OAAO;uBAHE,aAAa"}
|
|
@@ -349,16 +349,16 @@ class BaseQuery {
|
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
/**
|
|
352
|
-
* Is used by native
|
|
353
352
|
* This function follows the same logic as in this.collectJoinHints()
|
|
354
|
-
*
|
|
353
|
+
* skipQueryJoinMap is used by PreAggregations to build join tree without user's query all members map
|
|
354
|
+
* @public
|
|
355
355
|
* @param {Array<(Array<string> | string)>} hints
|
|
356
|
+
* @param { boolean } skipQueryJoinMap
|
|
356
357
|
* @return {import('../compiler/JoinGraph').FinishedJoinTree}
|
|
357
358
|
*/
|
|
358
|
-
joinTreeForHints(hints) {
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
const newCollectedHints = [];
|
|
359
|
+
joinTreeForHints(hints, skipQueryJoinMap = false) {
|
|
360
|
+
const queryJoinMaps = skipQueryJoinMap ? {} : this.queryJoinMap();
|
|
361
|
+
let newCollectedHints = [];
|
|
362
362
|
const constructJH = () => ramda_1.default.uniq(this.enrichHintsWithJoinMap([
|
|
363
363
|
...newCollectedHints,
|
|
364
364
|
...hints,
|
|
@@ -377,14 +377,18 @@ class BaseQuery {
|
|
|
377
377
|
const iterationCollectedHints = joinMembersJoinHints.filter(j => !allJoinHintsFlatten.has(j));
|
|
378
378
|
newJoinHintsCollectedCnt = iterationCollectedHints.length;
|
|
379
379
|
cnt++;
|
|
380
|
-
if (newJoin) {
|
|
381
|
-
|
|
380
|
+
if (newJoin && newJoin.joins.length > 0) {
|
|
381
|
+
// Even if there is no join tree changes, we still
|
|
382
|
+
// push correctly ordered join hints, collected from the resolving of members of join tree
|
|
383
|
+
// upfront the all existing query members. This ensures the correct cube join order
|
|
384
|
+
// with transitive joins even if they are already presented among query members.
|
|
385
|
+
newCollectedHints = this.enrichedJoinHintsFromJoinTree(newJoin, joinMembersJoinHints);
|
|
382
386
|
}
|
|
383
387
|
} while (newJoin?.joins.length > 0 && !this.isJoinTreesEqual(prevJoin, newJoin) && cnt < 10000 && newJoinHintsCollectedCnt > 0);
|
|
384
388
|
if (cnt >= 10000) {
|
|
385
389
|
throw new UserError_1.UserError('Can not construct joins for the query, potential loop detected');
|
|
386
390
|
}
|
|
387
|
-
return
|
|
391
|
+
return this.joinGraph.buildJoin(constructJH());
|
|
388
392
|
}
|
|
389
393
|
cacheValue(key, fn, { contextPropNames, inputProps, cache } = {}) {
|
|
390
394
|
const currentContext = this.safeEvaluateSymbolContext();
|
|
@@ -450,6 +454,30 @@ class BaseQuery {
|
|
|
450
454
|
}
|
|
451
455
|
return joinMaps;
|
|
452
456
|
}
|
|
457
|
+
/**
|
|
458
|
+
* @private
|
|
459
|
+
* @param { import('../compiler/JoinGraph').FinishedJoinTree } joinTree
|
|
460
|
+
* @param { string[] } joinHints
|
|
461
|
+
* @return { string[][] }
|
|
462
|
+
*/
|
|
463
|
+
enrichedJoinHintsFromJoinTree(joinTree, joinHints) {
|
|
464
|
+
const joinsMap = {};
|
|
465
|
+
for (const j of joinTree.joins) {
|
|
466
|
+
joinsMap[j.to] = j.from;
|
|
467
|
+
}
|
|
468
|
+
return joinHints.map(jh => {
|
|
469
|
+
let cubeName = jh;
|
|
470
|
+
const path = [cubeName];
|
|
471
|
+
while (joinsMap[cubeName]) {
|
|
472
|
+
cubeName = joinsMap[cubeName];
|
|
473
|
+
path.push(cubeName);
|
|
474
|
+
}
|
|
475
|
+
if (path.length === 1) {
|
|
476
|
+
return path[0];
|
|
477
|
+
}
|
|
478
|
+
return path.reverse();
|
|
479
|
+
});
|
|
480
|
+
}
|
|
453
481
|
/**
|
|
454
482
|
* @private
|
|
455
483
|
* @param { (string|string[])[] } hints
|
|
@@ -1084,8 +1112,8 @@ class BaseQuery {
|
|
|
1084
1112
|
};
|
|
1085
1113
|
const join = ramda_1.default.drop(1, toJoin)
|
|
1086
1114
|
.map((q, i) => (this.dimensionAliasNames().length ?
|
|
1087
|
-
`INNER JOIN ${this.wrapInParenthesis((q))}
|
|
1088
|
-
`, ${this.wrapInParenthesis(q)}
|
|
1115
|
+
`INNER JOIN ${this.wrapInParenthesis((q))} ${this.asSyntaxJoin} q_${i + 1} ON ${this.dimensionsJoinCondition(`q_${i}`, `q_${i + 1}`)}` :
|
|
1116
|
+
`, ${this.wrapInParenthesis(q)} ${this.asSyntaxJoin} q_${i + 1}`)).join('\n');
|
|
1089
1117
|
const columnsToSelect = this.evaluateSymbolSqlWithContext(() => this.dimensionColumns('q_0').concat(outerMembers.map(m => m.selectColumns())).join(', '), renderedReferenceContext);
|
|
1090
1118
|
const queryHasNoRemapping = this.evaluateSymbolSqlWithContext(() => this.dimensionsForSelect().concat(outerMembers).every(r => r.hasNoRemapping()), renderedReferenceContext);
|
|
1091
1119
|
const havingFilters = this.evaluateSymbolSqlWithContext(() => this.baseWhere(this.measureFilters), renderedReferenceContext);
|
|
@@ -1097,7 +1125,7 @@ class BaseQuery {
|
|
|
1097
1125
|
queryHasNoRemapping) {
|
|
1098
1126
|
return `${toJoin[0].replace(/^SELECT/, `SELECT ${this.topLimit()}`)} ${this.orderBy()}${this.groupByDimensionLimit()}`;
|
|
1099
1127
|
}
|
|
1100
|
-
return `SELECT ${this.topLimit()}${columnsToSelect} FROM ${this.wrapInParenthesis(toJoin[0])}
|
|
1128
|
+
return `SELECT ${this.topLimit()}${columnsToSelect} FROM ${this.wrapInParenthesis(toJoin[0])} ${this.asSyntaxJoin} q_0 ${join}${havingFilters}${this.orderBy()}${this.groupByDimensionLimit()}`;
|
|
1101
1129
|
}
|
|
1102
1130
|
wrapInParenthesis(select) {
|
|
1103
1131
|
return select.trim().match(/^[a-zA-Z0-9_\-`".*]+$/i) ? select : `(${select})`;
|
|
@@ -2067,10 +2095,9 @@ class BaseQuery {
|
|
|
2067
2095
|
*/
|
|
2068
2096
|
collectJoinHints(excludeTimeDimensions = false) {
|
|
2069
2097
|
const allMembersJoinHints = this.collectJoinHintsFromMembers(this.allMembersConcat(excludeTimeDimensions));
|
|
2070
|
-
const explicitJoinHintMembers = new Set(allMembersJoinHints.filter(j => Array.isArray(j)).flat());
|
|
2071
2098
|
const queryJoinMaps = this.queryJoinMap();
|
|
2072
2099
|
const customSubQueryJoinHints = this.collectJoinHintsFromMembers(this.joinMembersFromCustomSubQuery());
|
|
2073
|
-
|
|
2100
|
+
let newCollectedHints = [];
|
|
2074
2101
|
// One cube may join the other cube via transitive joined cubes,
|
|
2075
2102
|
// members from which are referenced in the join `on` clauses.
|
|
2076
2103
|
// We need to collect such join hints and push them upfront of the joining one
|
|
@@ -2097,8 +2124,12 @@ class BaseQuery {
|
|
|
2097
2124
|
const iterationCollectedHints = joinMembersJoinHints.filter(j => !allJoinHintsFlatten.has(j));
|
|
2098
2125
|
newJoinHintsCollectedCnt = iterationCollectedHints.length;
|
|
2099
2126
|
cnt++;
|
|
2100
|
-
if (newJoin) {
|
|
2101
|
-
|
|
2127
|
+
if (newJoin && newJoin.joins.length > 0) {
|
|
2128
|
+
// Even if there is no join tree changes, we still
|
|
2129
|
+
// push correctly ordered join hints, collected from the resolving of members of join tree
|
|
2130
|
+
// upfront the all existing query members. This ensures the correct cube join order
|
|
2131
|
+
// with transitive joins even if they are already presented among query members.
|
|
2132
|
+
newCollectedHints = this.enrichedJoinHintsFromJoinTree(newJoin, joinMembersJoinHints);
|
|
2102
2133
|
}
|
|
2103
2134
|
} while (newJoin?.joins.length > 0 && !this.isJoinTreesEqual(prevJoin, newJoin) && cnt < 10000 && newJoinHintsCollectedCnt > 0);
|
|
2104
2135
|
if (cnt >= 10000) {
|
|
@@ -2134,9 +2165,14 @@ class BaseQuery {
|
|
|
2134
2165
|
})) : [];
|
|
2135
2166
|
}
|
|
2136
2167
|
collectJoinHintsFromMembers(members) {
|
|
2168
|
+
// Extract cube names from members to make cache key member-cubes-specific
|
|
2169
|
+
const memberCubes = members
|
|
2170
|
+
.map(m => m.cube?.()?.name)
|
|
2171
|
+
.filter(Boolean)
|
|
2172
|
+
.sort();
|
|
2137
2173
|
return [
|
|
2138
2174
|
...members.map(m => m.joinHint).filter(h => h?.length > 0),
|
|
2139
|
-
...this.collectFrom(members, this.collectJoinHintsFor.bind(this), 'collectJoinHintsFromMembers'),
|
|
2175
|
+
...this.collectFrom(members, this.collectJoinHintsFor.bind(this), ['collectJoinHintsFromMembers', ...memberCubes]),
|
|
2140
2176
|
];
|
|
2141
2177
|
}
|
|
2142
2178
|
/**
|
|
@@ -3172,7 +3208,14 @@ class BaseQuery {
|
|
|
3172
3208
|
const dimensionSql = this.dimensionSql(dimension);
|
|
3173
3209
|
return `select ${aggFunction}(${this.convertTz(dimensionSql)}) from ${this.cubeSql(cube)} ${this.asSyntaxTable} ${this.cubeAlias(cube)}`;
|
|
3174
3210
|
}
|
|
3175
|
-
|
|
3211
|
+
// Handle case that requires joins
|
|
3212
|
+
const subQuery = this.newSubQuery({
|
|
3213
|
+
dimensions: [dimension.dimension],
|
|
3214
|
+
rowLimit: null,
|
|
3215
|
+
});
|
|
3216
|
+
const dimensionSql = subQuery.dimensionSql(dimension);
|
|
3217
|
+
const fromClause = subQuery.query();
|
|
3218
|
+
return `select ${aggFunction}(${subQuery.convertTz(dimensionSql)}) from ${fromClause}`;
|
|
3176
3219
|
}
|
|
3177
3220
|
cubeCardinalityQueries() {
|
|
3178
3221
|
return ramda_1.default.fromPairs(this.allCubeNames
|