@devrev/meerkat-core 0.0.85 → 0.0.87
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/package.json +1 -1
- package/src/ast-validator/index.d.ts +1 -0
- package/src/ast-validator/index.js +4 -0
- package/src/ast-validator/index.js.map +1 -1
- package/src/ast-validator/tests/test-data.d.ts +18 -0
- package/src/ast-validator/tests/test-data.js +67 -6
- package/src/ast-validator/tests/test-data.js.map +1 -1
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +3 -2
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -1
- package/src/cube-filter-transformer/constant.d.ts +1 -0
- package/src/cube-filter-transformer/constant.js +10 -0
- package/src/cube-filter-transformer/constant.js.map +1 -0
- package/src/cube-filter-transformer/contains/contains.js +2 -1
- package/src/cube-filter-transformer/contains/contains.js.map +1 -1
- package/src/cube-filter-transformer/in/in.d.ts +1 -1
- package/src/cube-filter-transformer/in/in.js +22 -21
- package/src/cube-filter-transformer/in/in.js.map +1 -1
- package/src/cube-filter-transformer/not-contains/not-contains.d.ts +1 -1
- package/src/cube-filter-transformer/not-contains/not-contains.js +2 -1
- package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -1
- package/src/cube-filter-transformer/not-in/not-in.d.ts +1 -1
- package/src/cube-filter-transformer/not-in/not-in.js +23 -22
- package/src/cube-filter-transformer/not-in/not-in.js.map +1 -1
- package/src/cube-filter-transformer/not-set/not-set.d.ts +1 -1
- package/src/cube-filter-transformer/not-set/not-set.js +6 -5
- package/src/cube-filter-transformer/not-set/not-set.js.map +1 -1
- package/src/cube-filter-transformer/set/set.d.ts +1 -1
- package/src/cube-filter-transformer/set/set.js +6 -5
- package/src/cube-filter-transformer/set/set.js.map +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/utils/get-column-names-from-ast.d.ts +2 -0
- package/src/utils/get-column-names-from-ast.js +45 -0
- package/src/utils/get-column-names-from-ast.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../meerkat-core/src/cube-filter-transformer/constant.ts"],"sourcesContent":["export const COLUMN_NAME_DELIMITER = '.';\n"],"names":["COLUMN_NAME_DELIMITER"],"mappings":";+BAAaA;;;eAAAA;;;AAAN,MAAMA,wBAAwB"}
|
|
@@ -15,6 +15,7 @@ _export(exports, {
|
|
|
15
15
|
});
|
|
16
16
|
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
17
17
|
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
18
|
+
const _constant = require("../constant");
|
|
18
19
|
const _or = require("../or/or");
|
|
19
20
|
const containsDuckdbCondition = (columnName, value, memberInfo)=>{
|
|
20
21
|
return {
|
|
@@ -28,7 +29,7 @@ const containsDuckdbCondition = (columnName, value, memberInfo)=>{
|
|
|
28
29
|
class: 'COLUMN_REF',
|
|
29
30
|
type: 'COLUMN_REF',
|
|
30
31
|
alias: '',
|
|
31
|
-
column_names: columnName.split(
|
|
32
|
+
column_names: columnName.split(_constant.COLUMN_NAME_DELIMITER)
|
|
32
33
|
},
|
|
33
34
|
{
|
|
34
35
|
class: 'CONSTANT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/contains/contains.ts"],"sourcesContent":["import { Member, QueryFilter } from '../../types/cube-types/query';\nimport { Dimension, Measure } from '../../types/cube-types/table';\n\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport interface ContainsFilters extends QueryFilter {\n member: Member;\n operator: 'contains';\n values: string[];\n}\n\nexport const containsDuckdbCondition = (\n columnName: string,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '~~*',\n schema: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/contains/contains.ts"],"sourcesContent":["import { Member, QueryFilter } from '../../types/cube-types/query';\nimport { Dimension, Measure } from '../../types/cube-types/table';\n\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { COLUMN_NAME_DELIMITER } from '../constant';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport interface ContainsFilters extends QueryFilter {\n member: Member;\n operator: 'contains';\n values: string[];\n}\n\nexport const containsDuckdbCondition = (\n columnName: string,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '~~*',\n schema: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n },\n {\n class: 'CONSTANT',\n type: 'VALUE_CONSTANT',\n alias: '',\n value: valueBuilder(`%${value}%`, memberInfo),\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n };\n};\n\nexport const containsTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n\n if (!values || values.length === 0) {\n throw new Error('Contains filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple Contains condition\n */\n if (values.length === 1) {\n return containsDuckdbCondition(member, values[0], memberInfo);\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n containsDuckdbCondition(member, value, memberInfo)\n );\n });\n return orCondition;\n};\n"],"names":["containsDuckdbCondition","containsTransform","columnName","value","memberInfo","class","ExpressionClass","FUNCTION","type","ExpressionType","alias","function_name","schema","children","column_names","split","COLUMN_NAME_DELIMITER","valueBuilder","filter","order_bys","orders","distinct","is_operator","export_state","catalog","query","member","values","length","Error","orCondition","orDuckdbCondition","forEach","push"],"mappings":";;;;;;;;IAkBaA,uBAAuB;eAAvBA;;IAqCAC,iBAAiB;eAAjBA;;;4BAjDN;sCACsB;0BACS;oBAEJ;AAQ3B,MAAMD,0BAA0B,CACrCE,YACAC,OACAC;IAEA,OAAO;QACLC,OAAOC,2BAAe,CAACC,QAAQ;QAC/BC,MAAMC,0BAAc,CAACF,QAAQ;QAC7BG,OAAO;QACPC,eAAe;QACfC,QAAQ;QACRC,UAAU;YACR;gBACER,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPI,cAAcZ,WAAWa,KAAK,CAACC,+BAAqB;YACtD;YACA;gBACEX,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPP,OAAOc,IAAAA,kCAAY,EAAC,CAAC,CAAC,EAAEd,MAAM,CAAC,CAAC,EAAEC;YACpC;SACD;QACDc,QAAQ;QACRC,WAAW;YACTX,MAAM;YACNY,QAAQ,EAAE;QACZ;QACAC,UAAU;QACVC,aAAa;QACbC,cAAc;QACdC,SAAS;IACX;AACF;AAEO,MAAMvB,oBAAoD,CAACwB;IAChE,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEvB,UAAU,EAAE,GAAGqB;IAEvC,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAO5B,wBAAwB0B,QAAQC,MAAM,CAAC,EAAE,EAAEvB;IACpD;IAEA;;GAEC,GACD,MAAM0B,cAAcC,IAAAA,qBAAiB;IACrCJ,OAAOK,OAAO,CAAC,CAAC7B;QACd2B,YAAYjB,QAAQ,CAACoB,IAAI,CACvBjC,wBAAwB0B,QAAQvB,OAAOC;IAE3C;IACA,OAAO0B;AACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CubeToParseExpressionTransform } from
|
|
1
|
+
import { CubeToParseExpressionTransform } from '../factory';
|
|
2
2
|
export declare const inTransform: CubeToParseExpressionTransform;
|
|
@@ -7,49 +7,50 @@ Object.defineProperty(exports, "inTransform", {
|
|
|
7
7
|
});
|
|
8
8
|
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
9
|
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
10
|
+
const _constant = require("../constant");
|
|
10
11
|
const inDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
11
12
|
const sqlTreeValues = values.map((value)=>{
|
|
12
13
|
return {
|
|
13
14
|
class: _Expression.ExpressionClass.CONSTANT,
|
|
14
15
|
type: _Expression.ExpressionType.VALUE_CONSTANT,
|
|
15
|
-
alias:
|
|
16
|
+
alias: '',
|
|
16
17
|
value: (0, _baseconditionbuilder.valueBuilder)(value, memberInfo)
|
|
17
18
|
};
|
|
18
19
|
});
|
|
19
20
|
const columnRef = {
|
|
20
|
-
class:
|
|
21
|
-
type:
|
|
22
|
-
alias:
|
|
23
|
-
column_names: columnName.split(
|
|
21
|
+
class: 'COLUMN_REF',
|
|
22
|
+
type: 'COLUMN_REF',
|
|
23
|
+
alias: '',
|
|
24
|
+
column_names: columnName.split(_constant.COLUMN_NAME_DELIMITER)
|
|
24
25
|
};
|
|
25
26
|
switch(memberInfo.type){
|
|
26
27
|
case 'number_array':
|
|
27
28
|
case 'string_array':
|
|
28
29
|
{
|
|
29
30
|
return {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
class: _Expression.ExpressionClass.FUNCTION,
|
|
32
|
+
type: _Expression.ExpressionType.FUNCTION,
|
|
33
|
+
alias: '',
|
|
34
|
+
function_name: '&&',
|
|
35
|
+
schema: '',
|
|
36
|
+
children: [
|
|
36
37
|
columnRef,
|
|
37
38
|
{
|
|
38
39
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
39
40
|
type: _Expression.ExpressionType.ARRAY_CONSTRUCTOR,
|
|
40
|
-
alias:
|
|
41
|
+
alias: '',
|
|
41
42
|
children: sqlTreeValues
|
|
42
43
|
}
|
|
43
44
|
],
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
filter: null,
|
|
46
|
+
order_bys: {
|
|
47
|
+
type: 'ORDER_MODIFIER',
|
|
48
|
+
orders: []
|
|
48
49
|
},
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
distinct: false,
|
|
51
|
+
is_operator: true,
|
|
52
|
+
export_state: false,
|
|
53
|
+
catalog: ''
|
|
53
54
|
};
|
|
54
55
|
}
|
|
55
56
|
default:
|
|
@@ -57,7 +58,7 @@ const inDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
|
57
58
|
return {
|
|
58
59
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
59
60
|
type: _Expression.ExpressionType.COMPARE_IN,
|
|
60
|
-
alias:
|
|
61
|
+
alias: '',
|
|
61
62
|
children: [
|
|
62
63
|
columnRef,
|
|
63
64
|
...sqlTreeValues
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/in/in.ts"],"sourcesContent":["import { Dimension, Measure } from '../../types/cube-types/table';\nimport {\n
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/in/in.ts"],"sourcesContent":["import { Dimension, Measure } from '../../types/cube-types/table';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { COLUMN_NAME_DELIMITER } from '../constant';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nconst inDuckDbCondition = (\n columnName: string,\n values: string[],\n memberInfo: Measure | Dimension\n) => {\n const sqlTreeValues = values.map((value) => {\n return {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n value: valueBuilder(value, memberInfo),\n };\n });\n const columnRef = {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n };\n switch (memberInfo.type) {\n case 'number_array':\n case 'string_array': {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '&&',\n schema: '',\n children: [\n columnRef,\n {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.ARRAY_CONSTRUCTOR,\n alias: '',\n children: sqlTreeValues,\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n };\n }\n default: {\n return {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.COMPARE_IN,\n alias: '',\n children: [columnRef, ...sqlTreeValues],\n };\n }\n }\n};\n\nexport const inTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n if (!values) {\n throw new Error('In filter must have at least one value');\n }\n return inDuckDbCondition(member, values, memberInfo);\n};\n"],"names":["inTransform","inDuckDbCondition","columnName","values","memberInfo","sqlTreeValues","map","value","class","ExpressionClass","CONSTANT","type","ExpressionType","VALUE_CONSTANT","alias","valueBuilder","columnRef","column_names","split","COLUMN_NAME_DELIMITER","FUNCTION","function_name","schema","children","OPERATOR","ARRAY_CONSTRUCTOR","filter","order_bys","orders","distinct","is_operator","export_state","catalog","COMPARE_IN","query","member","Error"],"mappings":";+BAoEaA;;;eAAAA;;;4BAhEN;sCACsB;0BACS;AAGtC,MAAMC,oBAAoB,CACxBC,YACAC,QACAC;IAEA,MAAMC,gBAAgBF,OAAOG,GAAG,CAAC,CAACC;QAChC,OAAO;YACLC,OAAOC,2BAAe,CAACC,QAAQ;YAC/BC,MAAMC,0BAAc,CAACC,cAAc;YACnCC,OAAO;YACPP,OAAOQ,IAAAA,kCAAY,EAACR,OAAOH;QAC7B;IACF;IACA,MAAMY,YAAY;QAChBR,OAAO;QACPG,MAAM;QACNG,OAAO;QACPG,cAAcf,WAAWgB,KAAK,CAACC,+BAAqB;IACtD;IACA,OAAQf,WAAWO,IAAI;QACrB,KAAK;QACL,KAAK;YAAgB;gBACnB,OAAO;oBACLH,OAAOC,2BAAe,CAACW,QAAQ;oBAC/BT,MAAMC,0BAAc,CAACQ,QAAQ;oBAC7BN,OAAO;oBACPO,eAAe;oBACfC,QAAQ;oBACRC,UAAU;wBACRP;wBACA;4BACER,OAAOC,2BAAe,CAACe,QAAQ;4BAC/Bb,MAAMC,0BAAc,CAACa,iBAAiB;4BACtCX,OAAO;4BACPS,UAAUlB;wBACZ;qBACD;oBACDqB,QAAQ;oBACRC,WAAW;wBACThB,MAAM;wBACNiB,QAAQ,EAAE;oBACZ;oBACAC,UAAU;oBACVC,aAAa;oBACbC,cAAc;oBACdC,SAAS;gBACX;YACF;QACA;YAAS;gBACP,OAAO;oBACLxB,OAAOC,2BAAe,CAACe,QAAQ;oBAC/Bb,MAAMC,0BAAc,CAACqB,UAAU;oBAC/BnB,OAAO;oBACPS,UAAU;wBAACP;2BAAcX;qBAAc;gBACzC;YACF;IACF;AACF;AAEO,MAAML,cAA8C,CAACkC;IAC1D,MAAM,EAAEC,MAAM,EAAEhC,MAAM,EAAEC,UAAU,EAAE,GAAG8B;IACvC,IAAI,CAAC/B,QAAQ;QACX,MAAM,IAAIiC,MAAM;IAClB;IACA,OAAOnC,kBAAkBkC,QAAQhC,QAAQC;AAC3C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Dimension, Measure } from '../../types/cube-types/table';
|
|
2
1
|
import { Member, QueryFilter } from '../../types/cube-types/query';
|
|
2
|
+
import { Dimension, Measure } from '../../types/cube-types/table';
|
|
3
3
|
import { ExpressionClass, ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';
|
|
4
4
|
import { CubeToParseExpressionTransform } from '../factory';
|
|
5
5
|
export interface NotContainsFilters extends QueryFilter {
|
|
@@ -15,6 +15,7 @@ _export(exports, {
|
|
|
15
15
|
});
|
|
16
16
|
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
17
17
|
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
18
|
+
const _constant = require("../constant");
|
|
18
19
|
const _or = require("../or/or");
|
|
19
20
|
const notContainsDuckdbCondition = (columnName, value, memberInfo)=>{
|
|
20
21
|
return {
|
|
@@ -28,7 +29,7 @@ const notContainsDuckdbCondition = (columnName, value, memberInfo)=>{
|
|
|
28
29
|
class: 'COLUMN_REF',
|
|
29
30
|
type: 'COLUMN_REF',
|
|
30
31
|
alias: '',
|
|
31
|
-
column_names: columnName.split(
|
|
32
|
+
column_names: columnName.split(_constant.COLUMN_NAME_DELIMITER)
|
|
32
33
|
},
|
|
33
34
|
{
|
|
34
35
|
class: 'CONSTANT',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-contains/not-contains.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-contains/not-contains.ts"],"sourcesContent":["import { Member, QueryFilter } from '../../types/cube-types/query';\nimport { Dimension, Measure } from '../../types/cube-types/table';\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { COLUMN_NAME_DELIMITER } from '../constant';\nimport { CubeToParseExpressionTransform } from '../factory';\nimport { orDuckdbCondition } from '../or/or';\n\nexport interface NotContainsFilters extends QueryFilter {\n member: Member;\n operator: 'notContains';\n values: string[];\n}\n\nexport const notContainsDuckdbCondition = (\n columnName: string,\n value: string,\n memberInfo: Measure | Dimension\n) => {\n return {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '!~~',\n schema: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n },\n {\n class: 'CONSTANT',\n type: 'VALUE_CONSTANT',\n alias: '',\n value: valueBuilder(`%${value}%`, memberInfo),\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n };\n};\n\nexport const notContainsTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n\n if (!values || values.length === 0) {\n throw new Error('Contains filter must have at least one value');\n }\n\n /**\n * If there is only one value, we can create a simple Contains condition\n */\n if (values.length === 1) {\n return notContainsDuckdbCondition(member, values[0], memberInfo);\n }\n\n /**\n * If there are multiple values, we need to create an OR condition\n */\n const orCondition = orDuckdbCondition();\n values.forEach((value) => {\n orCondition.children.push(\n notContainsDuckdbCondition(member, value, memberInfo)\n );\n });\n return orCondition;\n};\n"],"names":["notContainsDuckdbCondition","notContainsTransform","columnName","value","memberInfo","class","ExpressionClass","FUNCTION","type","ExpressionType","alias","function_name","schema","children","column_names","split","COLUMN_NAME_DELIMITER","valueBuilder","filter","order_bys","orders","distinct","is_operator","export_state","catalog","query","member","values","length","Error","orCondition","orDuckdbCondition","forEach","push"],"mappings":";;;;;;;;IAiBaA,0BAA0B;eAA1BA;;IAqCAC,oBAAoB;eAApBA;;;4BAjDN;sCACsB;0BACS;oBAEJ;AAQ3B,MAAMD,6BAA6B,CACxCE,YACAC,OACAC;IAEA,OAAO;QACLC,OAAOC,2BAAe,CAACC,QAAQ;QAC/BC,MAAMC,0BAAc,CAACF,QAAQ;QAC7BG,OAAO;QACPC,eAAe;QACfC,QAAQ;QACRC,UAAU;YACR;gBACER,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPI,cAAcZ,WAAWa,KAAK,CAACC,+BAAqB;YACtD;YACA;gBACEX,OAAO;gBACPG,MAAM;gBACNE,OAAO;gBACPP,OAAOc,IAAAA,kCAAY,EAAC,CAAC,CAAC,EAAEd,MAAM,CAAC,CAAC,EAAEC;YACpC;SACD;QACDc,QAAQ;QACRC,WAAW;YACTX,MAAM;YACNY,QAAQ,EAAE;QACZ;QACAC,UAAU;QACVC,aAAa;QACbC,cAAc;QACdC,SAAS;IACX;AACF;AAEO,MAAMvB,uBAAuD,CAACwB;IACnE,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEvB,UAAU,EAAE,GAAGqB;IAEvC,IAAI,CAACE,UAAUA,OAAOC,MAAM,KAAK,GAAG;QAClC,MAAM,IAAIC,MAAM;IAClB;IAEA;;GAEC,GACD,IAAIF,OAAOC,MAAM,KAAK,GAAG;QACvB,OAAO5B,2BAA2B0B,QAAQC,MAAM,CAAC,EAAE,EAAEvB;IACvD;IAEA;;GAEC,GACD,MAAM0B,cAAcC,IAAAA,qBAAiB;IACrCJ,OAAOK,OAAO,CAAC,CAAC7B;QACd2B,YAAYjB,QAAQ,CAACoB,IAAI,CACvBjC,2BAA2B0B,QAAQvB,OAAOC;IAE9C;IACA,OAAO0B;AACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CubeToParseExpressionTransform } from
|
|
1
|
+
import { CubeToParseExpressionTransform } from '../factory';
|
|
2
2
|
export declare const notInTransform: CubeToParseExpressionTransform;
|
|
@@ -7,20 +7,21 @@ Object.defineProperty(exports, "notInTransform", {
|
|
|
7
7
|
});
|
|
8
8
|
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
9
|
const _baseconditionbuilder = require("../base-condition-builder/base-condition-builder");
|
|
10
|
+
const _constant = require("../constant");
|
|
10
11
|
const notInDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
11
12
|
const sqlTreeValues = values.map((value)=>{
|
|
12
13
|
return {
|
|
13
14
|
class: _Expression.ExpressionClass.CONSTANT,
|
|
14
15
|
type: _Expression.ExpressionType.VALUE_CONSTANT,
|
|
15
|
-
alias:
|
|
16
|
+
alias: '',
|
|
16
17
|
value: (0, _baseconditionbuilder.valueBuilder)(value, memberInfo)
|
|
17
18
|
};
|
|
18
19
|
});
|
|
19
20
|
const columnRef = {
|
|
20
|
-
class:
|
|
21
|
-
type:
|
|
22
|
-
alias:
|
|
23
|
-
column_names: columnName.split(
|
|
21
|
+
class: 'COLUMN_REF',
|
|
22
|
+
type: 'COLUMN_REF',
|
|
23
|
+
alias: '',
|
|
24
|
+
column_names: columnName.split(_constant.COLUMN_NAME_DELIMITER)
|
|
24
25
|
};
|
|
25
26
|
switch(memberInfo.type){
|
|
26
27
|
case 'number_array':
|
|
@@ -29,32 +30,32 @@ const notInDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
|
29
30
|
return {
|
|
30
31
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
31
32
|
type: _Expression.ExpressionType.OPERATOR_NOT,
|
|
32
|
-
alias:
|
|
33
|
+
alias: '',
|
|
33
34
|
children: [
|
|
34
35
|
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
class: _Expression.ExpressionClass.FUNCTION,
|
|
37
|
+
type: _Expression.ExpressionType.FUNCTION,
|
|
38
|
+
alias: '',
|
|
39
|
+
function_name: '&&',
|
|
40
|
+
schema: '',
|
|
41
|
+
children: [
|
|
41
42
|
columnRef,
|
|
42
43
|
{
|
|
43
44
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
44
45
|
type: _Expression.ExpressionType.ARRAY_CONSTRUCTOR,
|
|
45
|
-
alias:
|
|
46
|
+
alias: '',
|
|
46
47
|
children: sqlTreeValues
|
|
47
48
|
}
|
|
48
49
|
],
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
filter: null,
|
|
51
|
+
order_bys: {
|
|
52
|
+
type: 'ORDER_MODIFIER',
|
|
53
|
+
orders: []
|
|
53
54
|
},
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
distinct: false,
|
|
56
|
+
is_operator: true,
|
|
57
|
+
export_state: false,
|
|
58
|
+
catalog: ''
|
|
58
59
|
}
|
|
59
60
|
]
|
|
60
61
|
};
|
|
@@ -64,7 +65,7 @@ const notInDuckDbCondition = (columnName, values, memberInfo)=>{
|
|
|
64
65
|
return {
|
|
65
66
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
66
67
|
type: _Expression.ExpressionType.COMPARE_NOT_IN,
|
|
67
|
-
alias:
|
|
68
|
+
alias: '',
|
|
68
69
|
children: [
|
|
69
70
|
columnRef,
|
|
70
71
|
...sqlTreeValues
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-in/not-in.ts"],"sourcesContent":["import { Dimension, Measure } from '../../types/cube-types/table';\nimport { CubeToParseExpressionTransform } from
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-in/not-in.ts"],"sourcesContent":["import { Dimension, Measure } from '../../types/cube-types/table';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nimport {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { valueBuilder } from '../base-condition-builder/base-condition-builder';\nimport { COLUMN_NAME_DELIMITER } from '../constant';\n\nconst notInDuckDbCondition = (\n columnName: string,\n values: string[],\n memberInfo: Measure | Dimension\n) => {\n const sqlTreeValues = values.map((value) => {\n return {\n class: ExpressionClass.CONSTANT,\n type: ExpressionType.VALUE_CONSTANT,\n alias: '',\n value: valueBuilder(value, memberInfo),\n };\n });\n const columnRef = {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: columnName.split(COLUMN_NAME_DELIMITER),\n };\n switch (memberInfo.type) {\n case 'number_array':\n case 'string_array': {\n return {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.OPERATOR_NOT,\n alias: '',\n children: [\n {\n class: ExpressionClass.FUNCTION,\n type: ExpressionType.FUNCTION,\n alias: '',\n function_name: '&&',\n schema: '',\n children: [\n columnRef,\n {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.ARRAY_CONSTRUCTOR,\n alias: '',\n children: sqlTreeValues,\n },\n ],\n filter: null,\n order_bys: {\n type: 'ORDER_MODIFIER',\n orders: [],\n },\n distinct: false,\n is_operator: true,\n export_state: false,\n catalog: '',\n },\n ],\n };\n }\n default: {\n return {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.COMPARE_NOT_IN,\n alias: '',\n children: [columnRef, ...sqlTreeValues],\n };\n }\n }\n};\n\nexport const notInTransform: CubeToParseExpressionTransform = (query) => {\n const { member, values, memberInfo } = query;\n if (!values) {\n throw new Error('Not in filter must have at least one value');\n }\n\n return notInDuckDbCondition(member, values, memberInfo);\n};\n"],"names":["notInTransform","notInDuckDbCondition","columnName","values","memberInfo","sqlTreeValues","map","value","class","ExpressionClass","CONSTANT","type","ExpressionType","VALUE_CONSTANT","alias","valueBuilder","columnRef","column_names","split","COLUMN_NAME_DELIMITER","OPERATOR","OPERATOR_NOT","children","FUNCTION","function_name","schema","ARRAY_CONSTRUCTOR","filter","order_bys","orders","distinct","is_operator","export_state","catalog","COMPARE_NOT_IN","query","member","Error"],"mappings":";+BA4EaA;;;eAAAA;;;4BAtEN;sCACsB;0BACS;AAEtC,MAAMC,uBAAuB,CAC3BC,YACAC,QACAC;IAEA,MAAMC,gBAAgBF,OAAOG,GAAG,CAAC,CAACC;QAChC,OAAO;YACLC,OAAOC,2BAAe,CAACC,QAAQ;YAC/BC,MAAMC,0BAAc,CAACC,cAAc;YACnCC,OAAO;YACPP,OAAOQ,IAAAA,kCAAY,EAACR,OAAOH;QAC7B;IACF;IACA,MAAMY,YAAY;QAChBR,OAAO;QACPG,MAAM;QACNG,OAAO;QACPG,cAAcf,WAAWgB,KAAK,CAACC,+BAAqB;IACtD;IACA,OAAQf,WAAWO,IAAI;QACrB,KAAK;QACL,KAAK;YAAgB;gBACnB,OAAO;oBACLH,OAAOC,2BAAe,CAACW,QAAQ;oBAC/BT,MAAMC,0BAAc,CAACS,YAAY;oBACjCP,OAAO;oBACPQ,UAAU;wBACR;4BACEd,OAAOC,2BAAe,CAACc,QAAQ;4BAC/BZ,MAAMC,0BAAc,CAACW,QAAQ;4BAC7BT,OAAO;4BACPU,eAAe;4BACfC,QAAQ;4BACRH,UAAU;gCACRN;gCACA;oCACER,OAAOC,2BAAe,CAACW,QAAQ;oCAC/BT,MAAMC,0BAAc,CAACc,iBAAiB;oCACtCZ,OAAO;oCACPQ,UAAUjB;gCACZ;6BACD;4BACDsB,QAAQ;4BACRC,WAAW;gCACTjB,MAAM;gCACNkB,QAAQ,EAAE;4BACZ;4BACAC,UAAU;4BACVC,aAAa;4BACbC,cAAc;4BACdC,SAAS;wBACX;qBACD;gBACH;YACF;QACA;YAAS;gBACP,OAAO;oBACLzB,OAAOC,2BAAe,CAACW,QAAQ;oBAC/BT,MAAMC,0BAAc,CAACsB,cAAc;oBACnCpB,OAAO;oBACPQ,UAAU;wBAACN;2BAAcX;qBAAc;gBACzC;YACF;IACF;AACF;AAEO,MAAML,iBAAiD,CAACmC;IAC7D,MAAM,EAAEC,MAAM,EAAEjC,MAAM,EAAEC,UAAU,EAAE,GAAG+B;IACvC,IAAI,CAAChC,QAAQ;QACX,MAAM,IAAIkC,MAAM;IAClB;IAEA,OAAOpC,qBAAqBmC,QAAQjC,QAAQC;AAC9C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CubeToParseExpressionTransform } from
|
|
1
|
+
import { CubeToParseExpressionTransform } from '../factory';
|
|
2
2
|
export declare const notSetTransform: CubeToParseExpressionTransform;
|
|
@@ -6,18 +6,19 @@ Object.defineProperty(exports, "notSetTransform", {
|
|
|
6
6
|
}
|
|
7
7
|
});
|
|
8
8
|
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
+
const _constant = require("../constant");
|
|
9
10
|
const notSetTransform = (query)=>{
|
|
10
11
|
const { member } = query;
|
|
11
12
|
return {
|
|
12
13
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
13
14
|
type: _Expression.ExpressionType.OPERATOR_IS_NULL,
|
|
14
|
-
alias:
|
|
15
|
+
alias: '',
|
|
15
16
|
children: [
|
|
16
17
|
{
|
|
17
|
-
class:
|
|
18
|
-
type:
|
|
19
|
-
alias:
|
|
20
|
-
column_names: member.split(
|
|
18
|
+
class: 'COLUMN_REF',
|
|
19
|
+
type: 'COLUMN_REF',
|
|
20
|
+
alias: '',
|
|
21
|
+
column_names: member.split(_constant.COLUMN_NAME_DELIMITER)
|
|
21
22
|
}
|
|
22
23
|
]
|
|
23
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-set/not-set.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-set/not-set.ts"],"sourcesContent":["import {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { COLUMN_NAME_DELIMITER } from '../constant';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nexport const notSetTransform: CubeToParseExpressionTransform = (query) => {\n const { member } = query;\n return {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.OPERATOR_IS_NULL,\n alias: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: member.split(COLUMN_NAME_DELIMITER),\n },\n ],\n };\n};\n"],"names":["notSetTransform","query","member","class","ExpressionClass","OPERATOR","type","ExpressionType","OPERATOR_IS_NULL","alias","children","column_names","split","COLUMN_NAME_DELIMITER"],"mappings":";+BAOaA;;;eAAAA;;;4BAJN;0BAC+B;AAG/B,MAAMA,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,MAAM,EAAE,GAAGD;IACnB,OAAO;QACLE,OAAOC,2BAAe,CAACC,QAAQ;QAC/BC,MAAMC,0BAAc,CAACC,gBAAgB;QACrCC,OAAO;QACPC,UAAU;YACR;gBACEP,OAAO;gBACPG,MAAM;gBACNG,OAAO;gBACPE,cAAcT,OAAOU,KAAK,CAACC,+BAAqB;YAClD;SACD;IACH;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CubeToParseExpressionTransform } from
|
|
1
|
+
import { CubeToParseExpressionTransform } from '../factory';
|
|
2
2
|
export declare const setTransform: CubeToParseExpressionTransform;
|
|
@@ -6,18 +6,19 @@ Object.defineProperty(exports, "setTransform", {
|
|
|
6
6
|
}
|
|
7
7
|
});
|
|
8
8
|
const _Expression = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
9
|
+
const _constant = require("../constant");
|
|
9
10
|
const setTransform = (query)=>{
|
|
10
11
|
const { member } = query;
|
|
11
12
|
return {
|
|
12
13
|
class: _Expression.ExpressionClass.OPERATOR,
|
|
13
14
|
type: _Expression.ExpressionType.OPERATOR_IS_NOT_NULL,
|
|
14
|
-
alias:
|
|
15
|
+
alias: '',
|
|
15
16
|
children: [
|
|
16
17
|
{
|
|
17
|
-
class:
|
|
18
|
-
type:
|
|
19
|
-
alias:
|
|
20
|
-
column_names: member.split(
|
|
18
|
+
class: 'COLUMN_REF',
|
|
19
|
+
type: 'COLUMN_REF',
|
|
20
|
+
alias: '',
|
|
21
|
+
column_names: member.split(_constant.COLUMN_NAME_DELIMITER)
|
|
21
22
|
}
|
|
22
23
|
]
|
|
23
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/set/set.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-core/src/cube-filter-transformer/set/set.ts"],"sourcesContent":["import {\n ExpressionClass,\n ExpressionType,\n} from '../../types/duckdb-serialization-types/serialization/Expression';\nimport { COLUMN_NAME_DELIMITER } from '../constant';\nimport { CubeToParseExpressionTransform } from '../factory';\n\nexport const setTransform: CubeToParseExpressionTransform = (query) => {\n const { member } = query;\n return {\n class: ExpressionClass.OPERATOR,\n type: ExpressionType.OPERATOR_IS_NOT_NULL,\n alias: '',\n children: [\n {\n class: 'COLUMN_REF',\n type: 'COLUMN_REF',\n alias: '',\n column_names: member.split(COLUMN_NAME_DELIMITER),\n },\n ],\n };\n};\n"],"names":["setTransform","query","member","class","ExpressionClass","OPERATOR","type","ExpressionType","OPERATOR_IS_NOT_NULL","alias","children","column_names","split","COLUMN_NAME_DELIMITER"],"mappings":";+BAOaA;;;eAAAA;;;4BAJN;0BAC+B;AAG/B,MAAMA,eAA+C,CAACC;IAC3D,MAAM,EAAEC,MAAM,EAAE,GAAGD;IACnB,OAAO;QACLE,OAAOC,2BAAe,CAACC,QAAQ;QAC/BC,MAAMC,0BAAc,CAACC,oBAAoB;QACzCC,OAAO;QACPC,UAAU;YACR;gBACEP,OAAO;gBACPG,MAAM;gBACNG,OAAO;gBACPE,cAAcT,OAAOU,KAAK,CAACC,+BAAqB;YAClD;SACD;IACH;AACF"}
|
package/src/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export * from './types/duckdb-serialization-types/index';
|
|
|
16
16
|
export * from './types/utils';
|
|
17
17
|
export { BASE_TABLE_NAME } from './utils/base-ast';
|
|
18
18
|
export * from './utils/cube-to-table-schema';
|
|
19
|
+
export * from './utils/get-column-names-from-ast';
|
|
19
20
|
export * from './utils/get-possible-nodes';
|
|
20
21
|
export { meerkatPlaceholderReplacer } from './utils/meerkat-placeholder-replacer';
|
|
21
22
|
export { memberKeyToSafeKey } from './utils/member-key-to-safe-key';
|
package/src/index.js
CHANGED
|
@@ -59,6 +59,7 @@ _export_star._(require("./types/duckdb-serialization-types/index"), exports);
|
|
|
59
59
|
_export_star._(require("./types/utils"), exports);
|
|
60
60
|
const _baseast = require("./utils/base-ast");
|
|
61
61
|
_export_star._(require("./utils/cube-to-table-schema"), exports);
|
|
62
|
+
_export_star._(require("./utils/get-column-names-from-ast"), exports);
|
|
62
63
|
_export_star._(require("./utils/get-possible-nodes"), exports);
|
|
63
64
|
const _meerkatplaceholderreplacer = require("./utils/meerkat-placeholder-replacer");
|
|
64
65
|
const _memberkeytosafekey = require("./utils/member-key-to-safe-key");
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-core/src/index.ts"],"sourcesContent":["export * from './ast-builder/ast-builder';\nexport * from './ast-deserializer/ast-deserializer';\nexport * from './ast-serializer/ast-serializer';\nexport * from './ast-validator';\nexport { detectApplyContextParamsToBaseSQL } from './context-params/context-params-ast';\nexport * from './cube-measure-transformer/cube-measure-transformer';\nexport * from './cube-to-duckdb/cube-filter-to-duckdb';\nexport {\n applyFilterParamsToBaseSQL,\n detectAllFilterParamsFromSQL,\n getFilterParamsAST,\n} from './filter-params/filter-params-ast';\nexport { getFilterParamsSQL } from './get-filter-params-sql/get-filter-params-sql';\nexport { getFinalBaseSQL } from './get-final-base-sql/get-final-base-sql';\nexport { getWrappedBaseQueryWithProjections } from './get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections';\nexport * from './joins/joins';\nexport { FilterType } from './types/cube-types';\nexport * from './types/cube-types/index';\nexport * from './types/duckdb-serialization-types/index';\nexport * from './types/utils';\nexport { BASE_TABLE_NAME } from './utils/base-ast';\nexport * from './utils/cube-to-table-schema';\nexport * from './utils/get-possible-nodes';\nexport { meerkatPlaceholderReplacer } from './utils/meerkat-placeholder-replacer';\nexport { memberKeyToSafeKey } from './utils/member-key-to-safe-key';\n"],"names":["detectApplyContextParamsToBaseSQL","applyFilterParamsToBaseSQL","detectAllFilterParamsFromSQL","getFilterParamsAST","getFilterParamsSQL","getFinalBaseSQL","getWrappedBaseQueryWithProjections","FilterType","BASE_TABLE_NAME","meerkatPlaceholderReplacer","memberKeyToSafeKey"],"mappings":";;;;;;;;IAISA,iCAAiC;eAAjCA,mDAAiC;;IAIxCC,0BAA0B;eAA1BA,2CAA0B;;IAC1BC,4BAA4B;eAA5BA,6CAA4B;;IAC5BC,kBAAkB;eAAlBA,mCAAkB;;IAEXC,kBAAkB;eAAlBA,sCAAkB;;IAClBC,eAAe;eAAfA,gCAAe;;IACfC,kCAAkC;eAAlCA,sEAAkC;;IAElCC,UAAU;eAAVA,qBAAU;;IAIVC,eAAe;eAAfA,wBAAe;;
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-core/src/index.ts"],"sourcesContent":["export * from './ast-builder/ast-builder';\nexport * from './ast-deserializer/ast-deserializer';\nexport * from './ast-serializer/ast-serializer';\nexport * from './ast-validator';\nexport { detectApplyContextParamsToBaseSQL } from './context-params/context-params-ast';\nexport * from './cube-measure-transformer/cube-measure-transformer';\nexport * from './cube-to-duckdb/cube-filter-to-duckdb';\nexport {\n applyFilterParamsToBaseSQL,\n detectAllFilterParamsFromSQL,\n getFilterParamsAST,\n} from './filter-params/filter-params-ast';\nexport { getFilterParamsSQL } from './get-filter-params-sql/get-filter-params-sql';\nexport { getFinalBaseSQL } from './get-final-base-sql/get-final-base-sql';\nexport { getWrappedBaseQueryWithProjections } from './get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections';\nexport * from './joins/joins';\nexport { FilterType } from './types/cube-types';\nexport * from './types/cube-types/index';\nexport * from './types/duckdb-serialization-types/index';\nexport * from './types/utils';\nexport { BASE_TABLE_NAME } from './utils/base-ast';\nexport * from './utils/cube-to-table-schema';\nexport * from './utils/get-column-names-from-ast';\nexport * from './utils/get-possible-nodes';\nexport { meerkatPlaceholderReplacer } from './utils/meerkat-placeholder-replacer';\nexport { memberKeyToSafeKey } from './utils/member-key-to-safe-key';\n"],"names":["detectApplyContextParamsToBaseSQL","applyFilterParamsToBaseSQL","detectAllFilterParamsFromSQL","getFilterParamsAST","getFilterParamsSQL","getFinalBaseSQL","getWrappedBaseQueryWithProjections","FilterType","BASE_TABLE_NAME","meerkatPlaceholderReplacer","memberKeyToSafeKey"],"mappings":";;;;;;;;IAISA,iCAAiC;eAAjCA,mDAAiC;;IAIxCC,0BAA0B;eAA1BA,2CAA0B;;IAC1BC,4BAA4B;eAA5BA,6CAA4B;;IAC5BC,kBAAkB;eAAlBA,mCAAkB;;IAEXC,kBAAkB;eAAlBA,sCAAkB;;IAClBC,eAAe;eAAfA,gCAAe;;IACfC,kCAAkC;eAAlCA,sEAAkC;;IAElCC,UAAU;eAAVA,qBAAU;;IAIVC,eAAe;eAAfA,wBAAe;;IAIfC,0BAA0B;eAA1BA,sDAA0B;;IAC1BC,kBAAkB;eAAlBA,sCAAkB;;;;uBAzBb;uBACA;uBACA;uBACA;kCACoC;uBACpC;uBACA;iCAKP;oCAC4B;iCACH;oDACmB;uBACrC;2BACa;uBACb;uBACA;uBACA;yBACkB;uBAClB;uBACA;uBACA;4CAC6B;oCACR"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "getColumnNamesFromAst", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: function() {
|
|
5
|
+
return getColumnNamesFromAst;
|
|
6
|
+
}
|
|
7
|
+
});
|
|
8
|
+
const _constant = require("../cube-filter-transformer/constant");
|
|
9
|
+
const _utils = require("../types/utils");
|
|
10
|
+
const getColumnNamesFromAst = (node, columnSet = new Set())=>{
|
|
11
|
+
if (!node) return Array.from(columnSet);
|
|
12
|
+
if ((0, _utils.isBetweenExpression)(node)) {
|
|
13
|
+
getColumnNamesFromAst(node.input, columnSet);
|
|
14
|
+
getColumnNamesFromAst(node.lower, columnSet);
|
|
15
|
+
getColumnNamesFromAst(node.upper, columnSet);
|
|
16
|
+
}
|
|
17
|
+
if ((0, _utils.isColumnRefExpression)(node)) {
|
|
18
|
+
columnSet.add(node.column_names.join(_constant.COLUMN_NAME_DELIMITER));
|
|
19
|
+
}
|
|
20
|
+
if ((0, _utils.isCastExpression)(node) || (0, _utils.isCollateExpression)(node)) {
|
|
21
|
+
getColumnNamesFromAst(node.child, columnSet);
|
|
22
|
+
}
|
|
23
|
+
if ((0, _utils.isComparisonExpression)(node)) {
|
|
24
|
+
getColumnNamesFromAst(node.left, columnSet);
|
|
25
|
+
getColumnNamesFromAst(node.right, columnSet);
|
|
26
|
+
}
|
|
27
|
+
if ((0, _utils.isFunctionExpression)(node) || (0, _utils.isWindowExpression)(node) || (0, _utils.isOperatorExpression)(node) || (0, _utils.isConjunctionExpression)(node)) {
|
|
28
|
+
node.children.forEach((child)=>getColumnNamesFromAst(child, columnSet));
|
|
29
|
+
}
|
|
30
|
+
if ((0, _utils.isCaseExpression)(node)) {
|
|
31
|
+
node.case_checks.forEach((check)=>{
|
|
32
|
+
getColumnNamesFromAst(check.then_expr, columnSet);
|
|
33
|
+
getColumnNamesFromAst(check.when_expr, columnSet);
|
|
34
|
+
});
|
|
35
|
+
getColumnNamesFromAst(node.else_expr, columnSet);
|
|
36
|
+
}
|
|
37
|
+
if ((0, _utils.isSubqueryExpression)(node) && (0, _utils.isSelectNode)(node.subquery.node)) {
|
|
38
|
+
node.subquery.node.select_list.forEach((node)=>{
|
|
39
|
+
getColumnNamesFromAst(node, columnSet);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return Array.from(columnSet);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=get-column-names-from-ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../meerkat-core/src/utils/get-column-names-from-ast.ts"],"sourcesContent":["import { COLUMN_NAME_DELIMITER } from '../cube-filter-transformer/constant';\nimport { ParsedExpression } from '../types/duckdb-serialization-types';\nimport {\n isBetweenExpression,\n isCaseExpression,\n isCastExpression,\n isCollateExpression,\n isColumnRefExpression,\n isComparisonExpression,\n isConjunctionExpression,\n isFunctionExpression,\n isOperatorExpression,\n isSelectNode,\n isSubqueryExpression,\n isWindowExpression,\n} from '../types/utils';\n\nexport const getColumnNamesFromAst = (\n node: ParsedExpression,\n columnSet: Set<string> = new Set()\n): string[] => {\n if (!node) return Array.from(columnSet);\n\n if (isBetweenExpression(node)) {\n getColumnNamesFromAst(node.input, columnSet);\n getColumnNamesFromAst(node.lower, columnSet);\n getColumnNamesFromAst(node.upper, columnSet);\n }\n\n if (isColumnRefExpression(node)) {\n columnSet.add(node.column_names.join(COLUMN_NAME_DELIMITER));\n }\n\n if (isCastExpression(node) || isCollateExpression(node)) {\n getColumnNamesFromAst(node.child, columnSet);\n }\n\n if (isComparisonExpression(node)) {\n getColumnNamesFromAst(node.left, columnSet);\n getColumnNamesFromAst(node.right, columnSet);\n }\n\n if (\n isFunctionExpression(node) ||\n isWindowExpression(node) ||\n isOperatorExpression(node) ||\n isConjunctionExpression(node)\n ) {\n node.children.forEach((child) => getColumnNamesFromAst(child, columnSet));\n }\n\n if (isCaseExpression(node)) {\n node.case_checks.forEach((check) => {\n getColumnNamesFromAst(check.then_expr, columnSet);\n getColumnNamesFromAst(check.when_expr, columnSet);\n });\n getColumnNamesFromAst(node.else_expr, columnSet);\n }\n\n if (isSubqueryExpression(node) && isSelectNode(node.subquery.node)) {\n node.subquery.node.select_list.forEach((node) => {\n getColumnNamesFromAst(node, columnSet);\n });\n }\n\n return Array.from(columnSet);\n};\n"],"names":["getColumnNamesFromAst","node","columnSet","Set","Array","from","isBetweenExpression","input","lower","upper","isColumnRefExpression","add","column_names","join","COLUMN_NAME_DELIMITER","isCastExpression","isCollateExpression","child","isComparisonExpression","left","right","isFunctionExpression","isWindowExpression","isOperatorExpression","isConjunctionExpression","children","forEach","isCaseExpression","case_checks","check","then_expr","when_expr","else_expr","isSubqueryExpression","isSelectNode","subquery","select_list"],"mappings":";+BAiBaA;;;eAAAA;;;0BAjByB;uBAe/B;AAEA,MAAMA,wBAAwB,CACnCC,MACAC,YAAyB,IAAIC,KAAK;IAElC,IAAI,CAACF,MAAM,OAAOG,MAAMC,IAAI,CAACH;IAE7B,IAAII,IAAAA,0BAAmB,EAACL,OAAO;QAC7BD,sBAAsBC,KAAKM,KAAK,EAAEL;QAClCF,sBAAsBC,KAAKO,KAAK,EAAEN;QAClCF,sBAAsBC,KAAKQ,KAAK,EAAEP;IACpC;IAEA,IAAIQ,IAAAA,4BAAqB,EAACT,OAAO;QAC/BC,UAAUS,GAAG,CAACV,KAAKW,YAAY,CAACC,IAAI,CAACC,+BAAqB;IAC5D;IAEA,IAAIC,IAAAA,uBAAgB,EAACd,SAASe,IAAAA,0BAAmB,EAACf,OAAO;QACvDD,sBAAsBC,KAAKgB,KAAK,EAAEf;IACpC;IAEA,IAAIgB,IAAAA,6BAAsB,EAACjB,OAAO;QAChCD,sBAAsBC,KAAKkB,IAAI,EAAEjB;QACjCF,sBAAsBC,KAAKmB,KAAK,EAAElB;IACpC;IAEA,IACEmB,IAAAA,2BAAoB,EAACpB,SACrBqB,IAAAA,yBAAkB,EAACrB,SACnBsB,IAAAA,2BAAoB,EAACtB,SACrBuB,IAAAA,8BAAuB,EAACvB,OACxB;QACAA,KAAKwB,QAAQ,CAACC,OAAO,CAAC,CAACT,QAAUjB,sBAAsBiB,OAAOf;IAChE;IAEA,IAAIyB,IAAAA,uBAAgB,EAAC1B,OAAO;QAC1BA,KAAK2B,WAAW,CAACF,OAAO,CAAC,CAACG;YACxB7B,sBAAsB6B,MAAMC,SAAS,EAAE5B;YACvCF,sBAAsB6B,MAAME,SAAS,EAAE7B;QACzC;QACAF,sBAAsBC,KAAK+B,SAAS,EAAE9B;IACxC;IAEA,IAAI+B,IAAAA,2BAAoB,EAAChC,SAASiC,IAAAA,mBAAY,EAACjC,KAAKkC,QAAQ,CAAClC,IAAI,GAAG;QAClEA,KAAKkC,QAAQ,CAAClC,IAAI,CAACmC,WAAW,CAACV,OAAO,CAAC,CAACzB;YACtCD,sBAAsBC,MAAMC;QAC9B;IACF;IAEA,OAAOE,MAAMC,IAAI,CAACH;AACpB"}
|