@devrev/meerkat-core 0.0.123 → 0.0.124
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 -1
- package/src/ast-validator/index.js +2 -1
- package/src/ast-validator/index.js.map +1 -1
- package/src/ast-validator/tests/test-data.d.ts +8 -1
- package/src/ast-validator/tests/test-data.js +16 -9
- package/src/ast-validator/tests/test-data.js.map +1 -1
- package/src/ast-validator/utils.d.ts +1 -0
- package/src/ast-validator/utils.js +11 -3
- package/src/ast-validator/utils.js.map +1 -1
- package/src/index.d.ts +5 -1
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/utils/__fixtures__/ensure-sql-expression-column-alias.fixtures.d.ts +15 -0
- package/src/utils/__fixtures__/ensure-sql-expression-column-alias.fixtures.js +240 -0
- package/src/utils/__fixtures__/ensure-sql-expression-column-alias.fixtures.js.map +1 -0
- package/src/utils/duckdb-ast-parse-serialize.d.ts +4 -0
- package/src/utils/duckdb-ast-parse-serialize.js +108 -0
- package/src/utils/duckdb-ast-parse-serialize.js.map +1 -0
- package/src/utils/ensure-sql-expression-column-alias.d.ts +14 -0
- package/src/utils/ensure-sql-expression-column-alias.js +184 -0
- package/src/utils/ensure-sql-expression-column-alias.js.map +1 -0
- package/src/utils/ensure-table-schema-alias-sql.d.ts +19 -0
- package/src/utils/ensure-table-schema-alias-sql.js +67 -0
- package/src/utils/ensure-table-schema-alias-sql.js.map +1 -0
- package/src/utils/get-child-expressions.d.ts +13 -0
- package/src/utils/get-child-expressions.js +75 -0
- package/src/utils/get-child-expressions.js.map +1 -0
- package/src/utils/get-column-names-from-ast.js +4 -27
- package/src/utils/get-column-names-from-ast.js.map +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureTableSchemaAliasSql = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const collectAliasableDescriptors = ({ members, memberType, tableName, descriptors, }) => {
|
|
6
|
+
members.forEach((member) => {
|
|
7
|
+
descriptors.push({
|
|
8
|
+
sql: member.sql,
|
|
9
|
+
context: {
|
|
10
|
+
tableName,
|
|
11
|
+
memberName: member.name,
|
|
12
|
+
memberType,
|
|
13
|
+
},
|
|
14
|
+
apply: (aliasedSql) => {
|
|
15
|
+
member.sql = aliasedSql;
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
const ensureDescriptorBatchAlias = ({ descriptors, ensureExpressionAlias, tableName, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
if (descriptors.length === 0) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const items = descriptors.map((descriptor) => ({
|
|
25
|
+
sql: descriptor.sql,
|
|
26
|
+
context: descriptor.context,
|
|
27
|
+
}));
|
|
28
|
+
try {
|
|
29
|
+
const aliasedSqls = yield ensureExpressionAlias({ items });
|
|
30
|
+
if (aliasedSqls.length !== descriptors.length) {
|
|
31
|
+
throw new Error(`Expected ${descriptors.length} aliased expressions, received ${aliasedSqls.length}`);
|
|
32
|
+
}
|
|
33
|
+
aliasedSqls.forEach((aliasedSql, index) => {
|
|
34
|
+
descriptors[index].apply(aliasedSql);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
throw new Error(`Failed to ensure alias for table ${tableName}: ${message}`);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const ensureTableSchemaAliasSql = ({ tableSchemas, ensureExpressionAlias, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
+
return Promise.all(tableSchemas.map((tableSchema) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
const aliasedTableSchema = Object.assign(Object.assign({}, tableSchema), { measures: tableSchema.measures.map((measure) => (Object.assign({}, measure))), dimensions: tableSchema.dimensions.map((dimension) => (Object.assign({}, dimension))) });
|
|
45
|
+
const descriptors = [];
|
|
46
|
+
collectAliasableDescriptors({
|
|
47
|
+
members: aliasedTableSchema.measures,
|
|
48
|
+
memberType: 'measure',
|
|
49
|
+
tableName: tableSchema.name,
|
|
50
|
+
descriptors,
|
|
51
|
+
});
|
|
52
|
+
collectAliasableDescriptors({
|
|
53
|
+
members: aliasedTableSchema.dimensions,
|
|
54
|
+
memberType: 'dimension',
|
|
55
|
+
tableName: tableSchema.name,
|
|
56
|
+
descriptors,
|
|
57
|
+
});
|
|
58
|
+
yield ensureDescriptorBatchAlias({
|
|
59
|
+
descriptors,
|
|
60
|
+
ensureExpressionAlias,
|
|
61
|
+
tableName: tableSchema.name,
|
|
62
|
+
});
|
|
63
|
+
return aliasedTableSchema;
|
|
64
|
+
})));
|
|
65
|
+
});
|
|
66
|
+
exports.ensureTableSchemaAliasSql = ensureTableSchemaAliasSql;
|
|
67
|
+
//# sourceMappingURL=ensure-table-schema-alias-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-table-schema-alias-sql.js","sourceRoot":"","sources":["../../../../meerkat-core/src/utils/ensure-table-schema-alias-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ParsedExpression } from '../types/duckdb-serialization-types';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the direct child ParsedExpression nodes reachable from the given
|
|
4
|
+
* expression node. This centralises the "which fields hold children?" knowledge
|
|
5
|
+
* so that every AST walker does not have to re-implement it.
|
|
6
|
+
*
|
|
7
|
+
* Leaf nodes (ColumnRef, Constant, etc.) return an empty array.
|
|
8
|
+
*
|
|
9
|
+
* NOTE: SubqueryExpression only yields `node.child` here; the nested
|
|
10
|
+
* QueryNode (`node.subquery.node`) requires its own traversal because it is
|
|
11
|
+
* not a ParsedExpression.
|
|
12
|
+
*/
|
|
13
|
+
export declare const getChildExpressions: (node: ParsedExpression) => ParsedExpression[];
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getChildExpressions = void 0;
|
|
4
|
+
const utils_1 = require("../types/utils");
|
|
5
|
+
/**
|
|
6
|
+
* Returns the direct child ParsedExpression nodes reachable from the given
|
|
7
|
+
* expression node. This centralises the "which fields hold children?" knowledge
|
|
8
|
+
* so that every AST walker does not have to re-implement it.
|
|
9
|
+
*
|
|
10
|
+
* Leaf nodes (ColumnRef, Constant, etc.) return an empty array.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: SubqueryExpression only yields `node.child` here; the nested
|
|
13
|
+
* QueryNode (`node.subquery.node`) requires its own traversal because it is
|
|
14
|
+
* not a ParsedExpression.
|
|
15
|
+
*/
|
|
16
|
+
const getChildExpressions = (node) => {
|
|
17
|
+
if ((0, utils_1.isBetweenExpression)(node)) {
|
|
18
|
+
return [node.input, node.lower, node.upper];
|
|
19
|
+
}
|
|
20
|
+
if ((0, utils_1.isCastExpression)(node) || (0, utils_1.isCollateExpression)(node)) {
|
|
21
|
+
return [node.child];
|
|
22
|
+
}
|
|
23
|
+
if ((0, utils_1.isComparisonExpression)(node)) {
|
|
24
|
+
return [node.left, node.right];
|
|
25
|
+
}
|
|
26
|
+
if ((0, utils_1.isFunctionExpression)(node)) {
|
|
27
|
+
const children = [...node.children];
|
|
28
|
+
if (node.filter)
|
|
29
|
+
children.push(node.filter);
|
|
30
|
+
return children;
|
|
31
|
+
}
|
|
32
|
+
if ((0, utils_1.isOperatorExpression)(node) || (0, utils_1.isConjunctionExpression)(node)) {
|
|
33
|
+
return [...node.children];
|
|
34
|
+
}
|
|
35
|
+
if ((0, utils_1.isCaseExpression)(node)) {
|
|
36
|
+
const children = [];
|
|
37
|
+
node.case_checks.forEach((check) => {
|
|
38
|
+
children.push(check.then_expr, check.when_expr);
|
|
39
|
+
});
|
|
40
|
+
if (node.else_expr)
|
|
41
|
+
children.push(node.else_expr);
|
|
42
|
+
return children;
|
|
43
|
+
}
|
|
44
|
+
if ((0, utils_1.isWindowExpression)(node)) {
|
|
45
|
+
const children = [...node.children];
|
|
46
|
+
children.push(...node.partitions);
|
|
47
|
+
node.orders.forEach((order) => children.push(order.expression));
|
|
48
|
+
if (node.start_expr)
|
|
49
|
+
children.push(node.start_expr);
|
|
50
|
+
if (node.end_expr)
|
|
51
|
+
children.push(node.end_expr);
|
|
52
|
+
if (node.offset_expr)
|
|
53
|
+
children.push(node.offset_expr);
|
|
54
|
+
if (node.default_expr)
|
|
55
|
+
children.push(node.default_expr);
|
|
56
|
+
if (node.filter_expr)
|
|
57
|
+
children.push(node.filter_expr);
|
|
58
|
+
return children;
|
|
59
|
+
}
|
|
60
|
+
if ((0, utils_1.isLambdaExpression)(node)) {
|
|
61
|
+
const children = [node.lhs];
|
|
62
|
+
if (node.expr)
|
|
63
|
+
children.push(node.expr);
|
|
64
|
+
return children;
|
|
65
|
+
}
|
|
66
|
+
if ((0, utils_1.isSubqueryExpression)(node)) {
|
|
67
|
+
const children = [];
|
|
68
|
+
if (node.child)
|
|
69
|
+
children.push(node.child);
|
|
70
|
+
return children;
|
|
71
|
+
}
|
|
72
|
+
return [];
|
|
73
|
+
};
|
|
74
|
+
exports.getChildExpressions = getChildExpressions;
|
|
75
|
+
//# sourceMappingURL=get-child-expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-child-expressions.js","sourceRoot":"","sources":["../../../../meerkat-core/src/utils/get-child-expressions.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,42 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getColumnNamesFromAst = void 0;
|
|
4
4
|
const member_formatters_1 = require("../member-formatters");
|
|
5
5
|
const utils_1 = require("../types/utils");
|
|
6
|
+
const get_child_expressions_1 = require("./get-child-expressions");
|
|
6
7
|
const getColumnNamesFromAst = (node, columnSet = new Set()) => {
|
|
7
8
|
if (!node)
|
|
8
9
|
return Array.from(columnSet);
|
|
9
|
-
if ((0, utils_1.isBetweenExpression)(node)) {
|
|
10
|
-
(0, exports.getColumnNamesFromAst)(node.input, columnSet);
|
|
11
|
-
(0, exports.getColumnNamesFromAst)(node.lower, columnSet);
|
|
12
|
-
(0, exports.getColumnNamesFromAst)(node.upper, columnSet);
|
|
13
|
-
}
|
|
14
10
|
if ((0, utils_1.isColumnRefExpression)(node)) {
|
|
15
11
|
columnSet.add(node.column_names.join(member_formatters_1.COLUMN_NAME_DELIMITER));
|
|
16
12
|
}
|
|
17
|
-
if ((0, utils_1.isCastExpression)(node) || (0, utils_1.isCollateExpression)(node)) {
|
|
18
|
-
(0, exports.getColumnNamesFromAst)(node.child, columnSet);
|
|
19
|
-
}
|
|
20
|
-
if ((0, utils_1.isComparisonExpression)(node)) {
|
|
21
|
-
(0, exports.getColumnNamesFromAst)(node.left, columnSet);
|
|
22
|
-
(0, exports.getColumnNamesFromAst)(node.right, columnSet);
|
|
23
|
-
}
|
|
24
|
-
if ((0, utils_1.isFunctionExpression)(node) ||
|
|
25
|
-
(0, utils_1.isWindowExpression)(node) ||
|
|
26
|
-
(0, utils_1.isOperatorExpression)(node) ||
|
|
27
|
-
(0, utils_1.isConjunctionExpression)(node)) {
|
|
28
|
-
node.children.forEach((child) => (0, exports.getColumnNamesFromAst)(child, columnSet));
|
|
29
|
-
}
|
|
30
|
-
if ((0, utils_1.isCaseExpression)(node)) {
|
|
31
|
-
node.case_checks.forEach((check) => {
|
|
32
|
-
(0, exports.getColumnNamesFromAst)(check.then_expr, columnSet);
|
|
33
|
-
(0, exports.getColumnNamesFromAst)(check.when_expr, columnSet);
|
|
34
|
-
});
|
|
35
|
-
(0, exports.getColumnNamesFromAst)(node.else_expr, columnSet);
|
|
36
|
-
}
|
|
37
13
|
if ((0, utils_1.isSubqueryExpression)(node) && (0, utils_1.isSelectNode)(node.subquery.node)) {
|
|
38
|
-
node.subquery.node.select_list.forEach((
|
|
39
|
-
(0, exports.getColumnNamesFromAst)(
|
|
14
|
+
node.subquery.node.select_list.forEach((child) => {
|
|
15
|
+
(0, exports.getColumnNamesFromAst)(child, columnSet);
|
|
40
16
|
});
|
|
41
17
|
}
|
|
18
|
+
(0, get_child_expressions_1.getChildExpressions)(node).forEach((child) => (0, exports.getColumnNamesFromAst)(child, columnSet));
|
|
42
19
|
return Array.from(columnSet);
|
|
43
20
|
};
|
|
44
21
|
exports.getColumnNamesFromAst = getColumnNamesFromAst;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-column-names-from-ast.js","sourceRoot":"","sources":["../../../../meerkat-core/src/utils/get-column-names-from-ast.ts"],"names":[],"mappings":";;;AAAA,4DAA6D;AAE7D,
|
|
1
|
+
{"version":3,"file":"get-column-names-from-ast.js","sourceRoot":"","sources":["../../../../meerkat-core/src/utils/get-column-names-from-ast.ts"],"names":[],"mappings":";;;AAAA,4DAA6D;AAE7D,0CAA2F;AAC3F,mEAA8D;AAEvD,MAAM,qBAAqB,GAAG,CACnC,IAAsB,EACtB,YAAyB,IAAI,GAAG,EAAE,EACxB,EAAE;IACZ,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAExC,IAAI,IAAA,6BAAqB,EAAC,IAAI,CAAC,EAAE;QAC/B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yCAAqB,CAAC,CAAC,CAAC;KAC9D;IAED,IAAI,IAAA,4BAAoB,EAAC,IAAI,CAAC,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAClE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/C,IAAA,6BAAqB,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;KACJ;IAED,IAAA,2CAAmB,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1C,IAAA,6BAAqB,EAAC,KAAK,EAAE,SAAS,CAAC,CACxC,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC,CAAC;AArBW,QAAA,qBAAqB,yBAqBhC"}
|