@devrev/meerkat-core 0.0.117 → 0.0.118

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-core",
3
- "version": "0.0.117",
3
+ "version": "0.0.118",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },
@@ -3,6 +3,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCombinedTableSchema = exports.checkLoopInJoinPath = exports.createDirectedGraph = exports.generateSqlQuery = exports.parseTableColumnReference = exports.quoteIdentifierIfNeeded = void 0;
4
4
  const get_used_table_schema_1 = require("../get-used-table-schema/get-used-table-schema");
5
5
  const cube_types_1 = require("../types/cube-types");
6
+ /**
7
+ * Regex pattern to match a CONTAINS function call in join SQL.
8
+ *
9
+ * Matches: CONTAINS(arg1, arg2)
10
+ *
11
+ * Pattern breakdown:
12
+ * - ^\s* : Start of string, optional leading whitespace
13
+ * - CONTAINS : Literal "CONTAINS" (case-insensitive due to 'i' flag)
14
+ * - \s*\(\s* : Opening parenthesis with optional whitespace
15
+ * - (.+?) : Capture group 1 - first argument (non-greedy)
16
+ * - \s*,\s* : Comma separator with optional whitespace
17
+ * - (.+?) : Capture group 2 - second argument (non-greedy)
18
+ * - \s*\)\s*$ : Closing parenthesis with optional whitespace, end of string
19
+ *
20
+ * Examples that match:
21
+ * - "CONTAINS(table1.col, table2.col)"
22
+ * - " contains( table1.items , table2.id ) "
23
+ * - "CONTAINS(\"quoted.table\".col, other.col)"
24
+ */
25
+ const CONTAINS_FUNCTION_REGEX = /^\s*CONTAINS\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*$/i;
26
+ /**
27
+ * Regex pattern to validate table.column reference format.
28
+ *
29
+ * Matches: tableName.columnName or "quotedTableName".columnName
30
+ * Also supports composite fields with multiple dots (e.g., table.field.subfield)
31
+ *
32
+ * Pattern breakdown:
33
+ * - ^ : Start of string
34
+ * - (?: : Non-capturing group for table name alternatives:
35
+ * - "[^"]+" : Quoted identifier (e.g., "table.name")
36
+ * - | : OR
37
+ * - [^.]+ : Unquoted identifier (any chars except dot)
38
+ * - ) : End of non-capturing group
39
+ * - \. : Literal dot separator
40
+ * - .+ : Column/field path (one or more chars, allows dots for composite fields)
41
+ * - $ : End of string
42
+ *
43
+ * Examples that match:
44
+ * - "table1.column"
45
+ * - "myTable.myColumn"
46
+ * - "\"quoted.table\".column"
47
+ * - "table.field.subfield" (composite field)
48
+ * - "table.nested.deep.field" (deeply nested composite field)
49
+ *
50
+ * Examples that do NOT match:
51
+ * - "just_a_column" (no dot)
52
+ * - ".column" (empty table name)
53
+ */
54
+ const TABLE_COLUMN_REFERENCE_REGEX = /^(?:"[^"]+"|[^.]+)\..+$/;
6
55
  /**
7
56
  * Quotes an identifier if it contains dots or other special characters.
8
57
  * Used for table aliases in SQL that may contain dots when useDotNotation is true.
@@ -94,6 +143,50 @@ function generateSqlQuery(path, tableSchemaSqlMap, directedGraph) {
94
143
  exports.generateSqlQuery = generateSqlQuery;
95
144
  const createDirectedGraph = (tableSchema, tableSchemaSqlMap) => {
96
145
  const directedGraph = {};
146
+ /**
147
+ * Parses a join SQL condition and extracts the table and column names
148
+ * from each side of the binary operator.
149
+ *
150
+ * Supported forms (whitespace and case-insensitive for operators):
151
+ * - tableA.column = tableB.column
152
+ * - CONTAINS(tableA.column, tableB.column)
153
+ *
154
+ * The full, original join SQL string is still stored as the join condition
155
+ * in the directed graph; this helper is only responsible for figuring out
156
+ * which tables and columns participate in the join.
157
+ */
158
+ function parseJoinSqlColumns(joinSql) {
159
+ let leftPart;
160
+ let rightPart;
161
+ const containsFnMatch = joinSql.match(CONTAINS_FUNCTION_REGEX);
162
+ if (containsFnMatch) {
163
+ leftPart = containsFnMatch[1];
164
+ rightPart = containsFnMatch[2];
165
+ // Validate that both arguments follow the table.column structure
166
+ if (!TABLE_COLUMN_REFERENCE_REGEX.test(leftPart.trim())) {
167
+ throw new Error(`Invalid CONTAINS argument: "${leftPart}". Expected format: table.column`);
168
+ }
169
+ if (!TABLE_COLUMN_REFERENCE_REGEX.test(rightPart.trim())) {
170
+ throw new Error(`Invalid CONTAINS argument: "${rightPart}". Expected format: table.column`);
171
+ }
172
+ }
173
+ else {
174
+ // Try equality join: tableA.col = tableB.col
175
+ const equalsParts = joinSql.split('=');
176
+ if (equalsParts.length === 2) {
177
+ [leftPart, rightPart] = equalsParts;
178
+ }
179
+ else {
180
+ throw new Error(`Invalid join SQL: ${joinSql}`);
181
+ }
182
+ }
183
+ const leftRef = parseTableColumnReference(leftPart);
184
+ const rightRef = parseTableColumnReference(rightPart);
185
+ return {
186
+ tables: [leftRef.tableName, rightRef.tableName],
187
+ conditions: [leftRef.columnName, rightRef.columnName],
188
+ };
189
+ }
97
190
  function addEdge(table1, table2, joinOn, joinCondition) {
98
191
  if (table1 === table2 ||
99
192
  (directedGraph[table1] &&
@@ -110,25 +203,18 @@ const createDirectedGraph = (tableSchema, tableSchemaSqlMap) => {
110
203
  /**
111
204
  * Iterate through the table schema and add the edges to the directed graph.
112
205
  * The edges are added based on the join conditions provided in the table schema.
113
- * The SQL is split by the '=' sign and the tables columns involved in the joins are extracted.
206
+ * The SQL is parsed to extract the tables and columns involved in the joins,
207
+ * supporting both '=' equality joins and CONTAINS(arg1, arg2) function syntax.
114
208
  * The tables are then added as edges to the directed graph.
115
209
  * Supports quoted identifiers for table names that contain dots (e.g., "table.name".column).
116
210
  */
117
211
  tableSchema.forEach((schema) => {
118
212
  var _a;
119
213
  (_a = schema === null || schema === void 0 ? void 0 : schema.joins) === null || _a === void 0 ? void 0 : _a.forEach((join) => {
120
- const parts = join.sql.split('=');
121
- /**
122
- * If the join SQL does not contain exactly 2 parts (left = right), then the join is invalid.
123
- */
124
- if (parts.length !== 2) {
125
- throw new Error(`Invalid join SQL: ${join.sql}`);
126
- }
127
- // Parse the table and column from each side of the join condition
128
- const leftRef = parseTableColumnReference(parts[0]);
129
- const rightRef = parseTableColumnReference(parts[1]);
130
- const tables = [leftRef.tableName, rightRef.tableName];
131
- const conditions = [leftRef.columnName, rightRef.columnName];
214
+ // Parse the table and column from each side of the join condition.
215
+ // Supports both equality joins (tableA.col = tableB.col) and
216
+ // CONTAINS-style joins (tableA.col contains tableB.col).
217
+ const { tables, conditions } = parseJoinSqlColumns(join.sql);
132
218
  /**
133
219
  * If the tables are the same, then the join is invalid.
134
220
  */
@@ -1 +1 @@
1
- {"version":3,"file":"joins.js","sourceRoot":"","sources":["../../../../meerkat-core/src/joins/joins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"joins.js","sourceRoot":"","sources":["../../../../meerkat-core/src/joins/joins.ts"],"names":[],"mappings":"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"}