@chkit/core 0.1.2-beta.7 → 0.2.0-beta.11
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/README.md +26 -6
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +26 -7
- package/dist/canonical.js.map +1 -1
- package/dist/column-default.d.ts +62 -0
- package/dist/column-default.d.ts.map +1 -0
- package/dist/column-default.js +212 -0
- package/dist/column-default.js.map +1 -0
- package/dist/conflict-markers.d.ts +3 -0
- package/dist/conflict-markers.d.ts.map +1 -0
- package/dist/conflict-markers.js +9 -0
- package/dist/conflict-markers.js.map +1 -0
- package/dist/identifier.d.ts +22 -0
- package/dist/identifier.d.ts.map +1 -0
- package/dist/identifier.js +69 -0
- package/dist/identifier.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/insert-columns.d.ts +13 -0
- package/dist/insert-columns.d.ts.map +1 -0
- package/dist/insert-columns.js +36 -0
- package/dist/insert-columns.js.map +1 -0
- package/dist/kafka.d.ts +9 -0
- package/dist/kafka.d.ts.map +1 -0
- package/dist/kafka.js +64 -0
- package/dist/kafka.js.map +1 -0
- package/dist/key-clause.d.ts +6 -1
- package/dist/key-clause.d.ts.map +1 -1
- package/dist/key-clause.js +12 -13
- package/dist/key-clause.js.map +1 -1
- package/dist/model-types.d.ts +84 -6
- package/dist/model-types.d.ts.map +1 -1
- package/dist/model.d.ts +3 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +9 -2
- package/dist/model.js.map +1 -1
- package/dist/object-dependencies.d.ts +18 -0
- package/dist/object-dependencies.d.ts.map +1 -0
- package/dist/object-dependencies.js +351 -0
- package/dist/object-dependencies.js.map +1 -0
- package/dist/on-cluster.d.ts.map +1 -1
- package/dist/on-cluster.js +7 -3
- package/dist/on-cluster.js.map +1 -1
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +93 -82
- package/dist/planner.js.map +1 -1
- package/dist/projection.d.ts.map +1 -1
- package/dist/projection.js +5 -40
- package/dist/projection.js.map +1 -1
- package/dist/schema-loader.d.ts +2 -0
- package/dist/schema-loader.d.ts.map +1 -1
- package/dist/schema-loader.js +72 -5
- package/dist/schema-loader.js.map +1 -1
- package/dist/sql-lexer.d.ts +29 -0
- package/dist/sql-lexer.d.ts.map +1 -0
- package/dist/sql-lexer.js +220 -0
- package/dist/sql-lexer.js.map +1 -0
- package/dist/sql-normalizer.d.ts +48 -0
- package/dist/sql-normalizer.d.ts.map +1 -1
- package/dist/sql-normalizer.js +118 -1
- package/dist/sql-normalizer.js.map +1 -1
- package/dist/sql-scan.d.ts +20 -0
- package/dist/sql-scan.d.ts.map +1 -0
- package/dist/sql-scan.js +82 -0
- package/dist/sql-scan.js.map +1 -0
- package/dist/sql-splitter.d.ts.map +1 -1
- package/dist/sql-splitter.js +52 -5
- package/dist/sql-splitter.js.map +1 -1
- package/dist/sql.d.ts +7 -0
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +51 -39
- package/dist/sql.js.map +1 -1
- package/dist/text-index-sql.d.ts +6 -0
- package/dist/text-index-sql.d.ts.map +1 -0
- package/dist/text-index-sql.js +200 -0
- package/dist/text-index-sql.js.map +1 -0
- package/dist/text-index.d.ts +10 -0
- package/dist/text-index.d.ts.map +1 -0
- package/dist/text-index.js +121 -0
- package/dist/text-index.js.map +1 -0
- package/dist/ts-import.d.ts.map +1 -1
- package/dist/ts-import.js +23 -3
- package/dist/ts-import.js.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +303 -3
- package/dist/validate.js.map +1 -1
- package/package.json +1 -1
- package/dist/utils.d.ts +0 -2
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -2
- package/dist/utils.js.map +0 -1
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { definitionKey } from './canonical.js';
|
|
2
|
+
import { parseColumnDefault } from './column-default.js';
|
|
3
|
+
import { identifierName, isTrivia, stringLiteralValue, tokenizeSQL } from './sql-lexer.js';
|
|
4
|
+
// Functions whose first argument names a dictionary or Join table, plus the
|
|
5
|
+
// dictionary() table function.
|
|
6
|
+
const OBJECT_NAME_FUNCTION = /^(dictGet\w*|dictHas|dictIsIn|joinGet|joinGetOrNull|dictionary)$/i;
|
|
7
|
+
// `WITH TOTALS`, `WITH ROLLUP`, `WITH CUBE`, `WITH FILL` and `WITH TIES` are
|
|
8
|
+
// modifiers, not the start of a WITH list.
|
|
9
|
+
const WITH_MODIFIER = /^(totals|rollup|cube|fill|ties)$/i;
|
|
10
|
+
/**
|
|
11
|
+
* Edges from every definition to the definitions it reads, restricted to the
|
|
12
|
+
* given set. Expects canonical definitions (`canonicalizeDefinitions`).
|
|
13
|
+
*/
|
|
14
|
+
export function buildDependencyGraph(definitions) {
|
|
15
|
+
const keysByName = new Map();
|
|
16
|
+
for (const def of definitions) {
|
|
17
|
+
const name = `${def.database}.${def.name}`;
|
|
18
|
+
keysByName.set(name, [...(keysByName.get(name) ?? []), definitionKey(def)]);
|
|
19
|
+
}
|
|
20
|
+
const graph = new Map();
|
|
21
|
+
for (const def of definitions) {
|
|
22
|
+
const key = definitionKey(def);
|
|
23
|
+
const edges = new Set();
|
|
24
|
+
for (const ref of definitionReferences(def)) {
|
|
25
|
+
for (const target of keysByName.get(`${ref.database}.${ref.name}`) ?? []) {
|
|
26
|
+
if (target !== key)
|
|
27
|
+
edges.add(target);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
graph.set(key, edges);
|
|
31
|
+
}
|
|
32
|
+
return graph;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Stable topological order. Items whose prerequisites are all placed keep their
|
|
36
|
+
* input order; an item moves behind every prerequisite found in `items`.
|
|
37
|
+
* Members of a dependency cycle stay together in input order, and whatever
|
|
38
|
+
* depends on the cycle comes after all of them.
|
|
39
|
+
*/
|
|
40
|
+
export function orderByDependencies(items, keyOf, prerequisitesOf) {
|
|
41
|
+
const indexesByKey = new Map();
|
|
42
|
+
items.forEach((item, index) => {
|
|
43
|
+
const key = keyOf(item);
|
|
44
|
+
indexesByKey.set(key, [...(indexesByKey.get(key) ?? []), index]);
|
|
45
|
+
});
|
|
46
|
+
const prerequisites = items.map((item, index) => {
|
|
47
|
+
const found = new Set();
|
|
48
|
+
for (const key of prerequisitesOf(keyOf(item))) {
|
|
49
|
+
for (const other of indexesByKey.get(key) ?? []) {
|
|
50
|
+
if (other !== index)
|
|
51
|
+
found.add(other);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return [...found];
|
|
55
|
+
});
|
|
56
|
+
const components = stronglyConnectedComponents(prerequisites);
|
|
57
|
+
const componentOf = new Array(items.length);
|
|
58
|
+
components.forEach((members, component) => {
|
|
59
|
+
for (const member of members)
|
|
60
|
+
componentOf[member] = component;
|
|
61
|
+
});
|
|
62
|
+
const placed = new Set();
|
|
63
|
+
const ordered = [];
|
|
64
|
+
// Components sorted by their earliest member keep cycle-free input order.
|
|
65
|
+
const pending = components
|
|
66
|
+
.map((members, component) => ({ component, members: [...members].sort((a, b) => a - b) }))
|
|
67
|
+
.sort((a, b) => (a.members[0] ?? 0) - (b.members[0] ?? 0));
|
|
68
|
+
while (pending.length > 0) {
|
|
69
|
+
const readyAt = pending.findIndex(({ component, members }) => members.every((member) => (prerequisites[member] ?? []).every((other) => componentOf[other] === component || placed.has(componentOf[other] ?? -1))));
|
|
70
|
+
const next = pending[readyAt];
|
|
71
|
+
if (next === undefined) {
|
|
72
|
+
throw new Error('orderByDependencies: no component is ready, but the component graph is acyclic');
|
|
73
|
+
}
|
|
74
|
+
pending.splice(readyAt, 1);
|
|
75
|
+
placed.add(next.component);
|
|
76
|
+
for (const member of next.members) {
|
|
77
|
+
const item = items[member];
|
|
78
|
+
if (item !== undefined)
|
|
79
|
+
ordered.push(item);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return ordered;
|
|
83
|
+
}
|
|
84
|
+
/** Reverses every edge: key → keys of the definitions that reference it. */
|
|
85
|
+
export function invertDependencyGraph(graph) {
|
|
86
|
+
const inverted = new Map();
|
|
87
|
+
for (const [key, targets] of graph) {
|
|
88
|
+
for (const target of targets) {
|
|
89
|
+
inverted.set(target, (inverted.get(target) ?? new Set()).add(key));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return inverted;
|
|
93
|
+
}
|
|
94
|
+
function definitionReferences(def) {
|
|
95
|
+
if (def.kind === 'view')
|
|
96
|
+
return sqlReferences(def.as, def.database);
|
|
97
|
+
if (def.kind === 'materialized_view') {
|
|
98
|
+
return [...sqlReferences(def.as, def.database), def.to, ...(def.refresh?.dependsOn ?? [])];
|
|
99
|
+
}
|
|
100
|
+
if (def.kind === 'table')
|
|
101
|
+
return tableReferences(def);
|
|
102
|
+
return dictionarySourceReferences(def);
|
|
103
|
+
}
|
|
104
|
+
// Column default expressions, such as `{ expression: "dictGet('db.dict', 'name', id)" }`.
|
|
105
|
+
function tableReferences(def) {
|
|
106
|
+
return def.columns.flatMap((column) => {
|
|
107
|
+
if (column.default === undefined)
|
|
108
|
+
return [];
|
|
109
|
+
const parsed = parseColumnDefault(column.default);
|
|
110
|
+
return parsed.kind === 'expression' ? sqlReferences(parsed.sql, def.database) : [];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// SOURCE(CLICKHOUSE(... TABLE 't' DB 'd' ...)) or SOURCE(CLICKHOUSE(... QUERY '...' ...)).
|
|
114
|
+
function dictionarySourceReferences(def) {
|
|
115
|
+
const tokens = significantTokens(def.source);
|
|
116
|
+
if (!/^clickhouse$/i.test(tokens[0]?.text ?? '') || tokens[1]?.text !== '(')
|
|
117
|
+
return [];
|
|
118
|
+
const params = new Map();
|
|
119
|
+
for (let i = 2; i + 1 < tokens.length; i += 1) {
|
|
120
|
+
const key = tokens[i];
|
|
121
|
+
const value = tokens[i + 1];
|
|
122
|
+
if (key?.kind !== 'identifier' || !value)
|
|
123
|
+
continue;
|
|
124
|
+
const text = stringLiteralValue(value);
|
|
125
|
+
if (text !== undefined)
|
|
126
|
+
params.set(key.text.toUpperCase(), text);
|
|
127
|
+
}
|
|
128
|
+
const query = params.get('QUERY');
|
|
129
|
+
if (query !== undefined)
|
|
130
|
+
return sqlReferences(query, def.database);
|
|
131
|
+
const table = params.get('TABLE');
|
|
132
|
+
if (table === undefined)
|
|
133
|
+
return [];
|
|
134
|
+
return [{ database: params.get('DB') ?? def.database, name: table }];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Objects a SQL query or expression reads: qualified `db.name` pairs anywhere,
|
|
138
|
+
* the name argument of dictGet-family/joinGet/dictionary(), and unqualified
|
|
139
|
+
* FROM/JOIN targets, resolved against `ownDatabase` unless a CTE in scope has
|
|
140
|
+
* that name.
|
|
141
|
+
*/
|
|
142
|
+
function sqlReferences(sql, ownDatabase) {
|
|
143
|
+
const tokens = significantTokens(sql);
|
|
144
|
+
const root = { query: true, cteNames: new Set(), withList: 'none' };
|
|
145
|
+
const scopes = [root];
|
|
146
|
+
const references = [];
|
|
147
|
+
for (let i = 0; i < tokens.length; i += 1) {
|
|
148
|
+
const text = tokens[i]?.text;
|
|
149
|
+
const scope = scopes[scopes.length - 1] ?? root;
|
|
150
|
+
if (text === '(') {
|
|
151
|
+
const query = /^(select|with)$/i.test(tokens[i + 1]?.text ?? '');
|
|
152
|
+
// A CTE's column list is a parenthesis of its own; only the body declares.
|
|
153
|
+
const declaresOnClose = scope.pendingCte?.bodyAt === i ? scope.pendingCte.name : undefined;
|
|
154
|
+
if (declaresOnClose !== undefined)
|
|
155
|
+
scope.pendingCte = undefined;
|
|
156
|
+
scopes.push({ query, cteNames: new Set(), withList: 'none', declaresOnClose });
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (text === ')') {
|
|
160
|
+
if (scopes.length === 1)
|
|
161
|
+
continue;
|
|
162
|
+
scopes.pop();
|
|
163
|
+
const declared = scope.declaresOnClose;
|
|
164
|
+
if (declared !== undefined)
|
|
165
|
+
(scopes[scopes.length - 1] ?? root).cteNames.add(declared);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
trackWithList(tokens, i, scope);
|
|
169
|
+
const found = [
|
|
170
|
+
qualifiedReference(tokens, i),
|
|
171
|
+
objectNameArgument(tokens, i, ownDatabase),
|
|
172
|
+
scope.query ? unqualifiedTableTarget(tokens, i, ownDatabase, scopes) : undefined,
|
|
173
|
+
];
|
|
174
|
+
for (const reference of found) {
|
|
175
|
+
if (reference)
|
|
176
|
+
references.push(reference);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return references;
|
|
180
|
+
}
|
|
181
|
+
// `WITH a AS (…), b AS (…) SELECT …` declares the CTEs `a` and `b` for this
|
|
182
|
+
// level and every level inside it. Each name takes effect when its body
|
|
183
|
+
// closes: a CTE body that names its own CTE reads the real object, and only
|
|
184
|
+
// `WITH RECURSIVE` lets a body see its own name. The list ends at the level's
|
|
185
|
+
// SELECT, so a later `WINDOW w AS (…)` declares nothing.
|
|
186
|
+
function trackWithList(tokens, i, scope) {
|
|
187
|
+
const token = tokens[i];
|
|
188
|
+
if (!token)
|
|
189
|
+
return;
|
|
190
|
+
const keyword = token.kind === 'identifier' ? token.text.toLowerCase() : '';
|
|
191
|
+
const next = tokens[i + 1]?.text ?? '';
|
|
192
|
+
if (keyword === 'with') {
|
|
193
|
+
if (WITH_MODIFIER.test(next))
|
|
194
|
+
scope.withList = 'none';
|
|
195
|
+
else
|
|
196
|
+
scope.withList = /^recursive$/i.test(next) ? 'recursive' : 'open';
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (keyword === 'select') {
|
|
200
|
+
scope.withList = 'none';
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const name = identifierName(token);
|
|
204
|
+
if (name === undefined || scope.withList === 'none')
|
|
205
|
+
return;
|
|
206
|
+
const previous = tokens[i - 1]?.text.toLowerCase();
|
|
207
|
+
const startsEntry = previous === 'with' || previous === 'recursive' || previous === ',';
|
|
208
|
+
const bodyAt = startsEntry ? cteBodyStart(tokens, i + 1) : undefined;
|
|
209
|
+
if (bodyAt === undefined)
|
|
210
|
+
return;
|
|
211
|
+
if (scope.withList === 'recursive')
|
|
212
|
+
scope.cteNames.add(name);
|
|
213
|
+
else
|
|
214
|
+
scope.pendingCte = { name, bodyAt };
|
|
215
|
+
}
|
|
216
|
+
// The `(` that opens a CTE body, after the CTE name: an optional column list
|
|
217
|
+
// `(a, b)`, `AS`, an optional `MATERIALIZED`, then the body. Anything else,
|
|
218
|
+
// such as `lower(x) AS alias`, is an expression alias, not a CTE.
|
|
219
|
+
function cteBodyStart(tokens, afterName) {
|
|
220
|
+
let i = tokens[afterName]?.text === '(' ? closingParenthesis(tokens, afterName) + 1 : afterName;
|
|
221
|
+
if (!/^as$/i.test(tokens[i]?.text ?? ''))
|
|
222
|
+
return undefined;
|
|
223
|
+
i += 1;
|
|
224
|
+
if (/^materialized$/i.test(tokens[i]?.text ?? ''))
|
|
225
|
+
i += 1;
|
|
226
|
+
return tokens[i]?.text === '(' ? i : undefined;
|
|
227
|
+
}
|
|
228
|
+
// Index of the `)` matching the `(` at `open`, or past the end when unbalanced.
|
|
229
|
+
function closingParenthesis(tokens, open) {
|
|
230
|
+
let depth = 0;
|
|
231
|
+
for (let i = open; i < tokens.length; i += 1) {
|
|
232
|
+
const text = tokens[i]?.text;
|
|
233
|
+
if (text === '(')
|
|
234
|
+
depth += 1;
|
|
235
|
+
else if (text === ')') {
|
|
236
|
+
depth -= 1;
|
|
237
|
+
if (depth === 0)
|
|
238
|
+
return i;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return tokens.length;
|
|
242
|
+
}
|
|
243
|
+
// `db.name`, with bare or quoted parts and any comments around the dot. A pair
|
|
244
|
+
// right after another dot is a column path (`db.t.col`), not an object.
|
|
245
|
+
function qualifiedReference(tokens, i) {
|
|
246
|
+
const first = tokens[i];
|
|
247
|
+
const second = tokens[i + 2];
|
|
248
|
+
if (!first || !second || tokens[i + 1]?.text !== '.' || tokens[i - 1]?.text === '.')
|
|
249
|
+
return undefined;
|
|
250
|
+
const database = identifierName(first);
|
|
251
|
+
const name = identifierName(second);
|
|
252
|
+
return database === undefined || name === undefined ? undefined : { database, name };
|
|
253
|
+
}
|
|
254
|
+
// The first argument of dictGet and the other OBJECT_NAME_FUNCTION calls: a
|
|
255
|
+
// string (`dictGet('db.dict', …)`) or a bare or quoted name (`dictGet(dict, …)`).
|
|
256
|
+
// ClickHouse resolves an unqualified one against the current database; a
|
|
257
|
+
// qualified `db.dict` is found as a pair.
|
|
258
|
+
function objectNameArgument(tokens, i, ownDatabase) {
|
|
259
|
+
const token = tokens[i];
|
|
260
|
+
if (token?.kind !== 'identifier' || !OBJECT_NAME_FUNCTION.test(token.text))
|
|
261
|
+
return undefined;
|
|
262
|
+
const argument = tokens[i + 2];
|
|
263
|
+
if (tokens[i + 1]?.text !== '(' || !argument)
|
|
264
|
+
return undefined;
|
|
265
|
+
const value = stringLiteralValue(argument);
|
|
266
|
+
if (value !== undefined)
|
|
267
|
+
return parseObjectName(value, ownDatabase);
|
|
268
|
+
const name = identifierName(argument);
|
|
269
|
+
const after = tokens[i + 3]?.text;
|
|
270
|
+
return name !== undefined && (after === ',' || after === ')') ? { database: ownDatabase, name } : undefined;
|
|
271
|
+
}
|
|
272
|
+
// `FROM name` / `JOIN name` in query context. Skips `ARRAY JOIN expr`,
|
|
273
|
+
// `x IS [NOT] DISTINCT FROM y`, qualified names (found as pairs), table
|
|
274
|
+
// functions (`numbers(10)`) and CTE names declared at this level or above.
|
|
275
|
+
function unqualifiedTableTarget(tokens, i, ownDatabase, scopes) {
|
|
276
|
+
const token = tokens[i];
|
|
277
|
+
const keyword = token?.kind === 'identifier' ? token.text.toLowerCase() : '';
|
|
278
|
+
if (keyword !== 'from' && keyword !== 'join')
|
|
279
|
+
return undefined;
|
|
280
|
+
const previous = tokens[i - 1]?.text.toLowerCase();
|
|
281
|
+
if (keyword === 'join' && previous === 'array')
|
|
282
|
+
return undefined;
|
|
283
|
+
if (keyword === 'from' && previous === 'distinct')
|
|
284
|
+
return undefined;
|
|
285
|
+
const next = tokens[i + 1];
|
|
286
|
+
const target = next ? identifierName(next) : undefined;
|
|
287
|
+
const after = tokens[i + 2]?.text;
|
|
288
|
+
if (target === undefined || after === '.' || after === '(')
|
|
289
|
+
return undefined;
|
|
290
|
+
if (scopes.some((scope) => scope.cteNames.has(target)))
|
|
291
|
+
return undefined;
|
|
292
|
+
return { database: ownDatabase, name: target };
|
|
293
|
+
}
|
|
294
|
+
// Mirrors ClickHouse's QualifiedTableName::tryParseFromString: one dot splits
|
|
295
|
+
// database and name; no dot means the current database.
|
|
296
|
+
function parseObjectName(value, ownDatabase) {
|
|
297
|
+
const parts = value.split('.');
|
|
298
|
+
if (parts.some((part) => part.length === 0) || parts.length > 2)
|
|
299
|
+
return undefined;
|
|
300
|
+
const [first, second] = parts;
|
|
301
|
+
if (first === undefined)
|
|
302
|
+
return undefined;
|
|
303
|
+
return second === undefined ? { database: ownDatabase, name: first } : { database: first, name: second };
|
|
304
|
+
}
|
|
305
|
+
function significantTokens(sql) {
|
|
306
|
+
return tokenizeSQL(sql).filter((token) => !isTrivia(token));
|
|
307
|
+
}
|
|
308
|
+
// Tarjan's algorithm over index-based edges (`edges[v]` = nodes v points to).
|
|
309
|
+
function stronglyConnectedComponents(edges) {
|
|
310
|
+
let counter = 0;
|
|
311
|
+
const index = new Map();
|
|
312
|
+
const lowLink = new Map();
|
|
313
|
+
const onStack = new Set();
|
|
314
|
+
const stack = [];
|
|
315
|
+
const components = [];
|
|
316
|
+
const visit = (v) => {
|
|
317
|
+
index.set(v, counter);
|
|
318
|
+
lowLink.set(v, counter);
|
|
319
|
+
counter += 1;
|
|
320
|
+
stack.push(v);
|
|
321
|
+
onStack.add(v);
|
|
322
|
+
for (const w of edges[v] ?? []) {
|
|
323
|
+
if (!index.has(w)) {
|
|
324
|
+
visit(w);
|
|
325
|
+
lowLink.set(v, Math.min(lowLink.get(v) ?? 0, lowLink.get(w) ?? 0));
|
|
326
|
+
}
|
|
327
|
+
else if (onStack.has(w)) {
|
|
328
|
+
lowLink.set(v, Math.min(lowLink.get(v) ?? 0, index.get(w) ?? 0));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
if (lowLink.get(v) !== index.get(v))
|
|
332
|
+
return;
|
|
333
|
+
const component = [];
|
|
334
|
+
for (;;) {
|
|
335
|
+
const w = stack.pop();
|
|
336
|
+
if (w === undefined)
|
|
337
|
+
break;
|
|
338
|
+
onStack.delete(w);
|
|
339
|
+
component.push(w);
|
|
340
|
+
if (w === v)
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
components.push(component);
|
|
344
|
+
};
|
|
345
|
+
for (let v = 0; v < edges.length; v += 1) {
|
|
346
|
+
if (!index.has(v))
|
|
347
|
+
visit(v);
|
|
348
|
+
}
|
|
349
|
+
return components;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=object-dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-dependencies.js","sourceRoot":"","sources":["../src/object-dependencies.ts"],"names":[],"mappings":"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"}
|
package/dist/on-cluster.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-cluster.d.ts","sourceRoot":"","sources":["../src/on-cluster.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAuDrD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEnE;
|
|
1
|
+
{"version":3,"file":"on-cluster.d.ts","sourceRoot":"","sources":["../src/on-cluster.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAuDrD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEnE;AAiDD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,aAAa,CAcf"}
|
package/dist/on-cluster.js
CHANGED
|
@@ -61,6 +61,10 @@ export function onClusterClause(cluster) {
|
|
|
61
61
|
// keyword and the object reference. Preserved verbatim so the clause lands after
|
|
62
62
|
// the object, never after the guard.
|
|
63
63
|
const OBJECT_GUARD = /^IF\s+(?:NOT\s+)?EXISTS\s+/i;
|
|
64
|
+
// One identifier part: backtick-quoted (backslash-escaped or doubled backticks)
|
|
65
|
+
// or a bare run up to the next space, `;`, `(`, or `.`.
|
|
66
|
+
const IDENTIFIER_PART = /(?:`(?:[^`\\]|\\.|``)*`|[^\s;(.`]+)/.source;
|
|
67
|
+
const OBJECT_REFERENCE = new RegExp(`^${IDENTIFIER_PART}(?:\\.${IDENTIFIER_PART})*`);
|
|
64
68
|
// Idempotency is checked positionally — an `ON CLUSTER` clause sitting exactly
|
|
65
69
|
// where injection would place it — never by scanning the whole statement, so
|
|
66
70
|
// user-authored content (a column COMMENT, a view's SELECT body) containing the
|
|
@@ -87,9 +91,9 @@ function injectOnClusterClause(sql, clause) {
|
|
|
87
91
|
// after the object reference regardless of whether the statement carries it.
|
|
88
92
|
const guard = rest.match(OBJECT_GUARD)?.[0] ?? '';
|
|
89
93
|
const afterGuard = rest.slice(guard.length);
|
|
90
|
-
// The object reference (`db.name` or `db`)
|
|
91
|
-
//
|
|
92
|
-
const ref = afterGuard.match(
|
|
94
|
+
// The object reference (`db.name` or `db`), where each part may be a
|
|
95
|
+
// backtick-quoted identifier containing spaces, dots or escaped backticks.
|
|
96
|
+
const ref = afterGuard.match(OBJECT_REFERENCE)?.[0];
|
|
93
97
|
if (!ref)
|
|
94
98
|
return sql;
|
|
95
99
|
const afterRef = afterGuard.slice(ref.length);
|
package/dist/on-cluster.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-cluster.js","sourceRoot":"","sources":["../src/on-cluster.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,sEAAsE;AACtE,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG;IACzB,iCAAiC;IACjC,cAAc;IACd,aAAa;IACb,0BAA0B;IAC1B,iBAAiB;IACjB,mBAAmB;IACnB,2EAA2E;IAC3E,qEAAqE;IACrE,uEAAuE;IACvE,gDAAgD;IAChD,8BAA8B;IAC9B,aAAa;IACb,YAAY;IACZ,WAAW;IACX,iBAAiB;IACjB,4EAA4E;IAC5E,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,gBAAgB;CACR,CAAA;AAEV,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,8EAA8E;AAC9E,qEAAqE;AACrE,MAAM,2BAA2B,GAAG;IAClC,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,uBAAuB;CACf,CAAA;AAEV;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAA2B;IACzD,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,6EAA6E;AAC7E,iFAAiF;AACjF,qCAAqC;AACrC,MAAM,YAAY,GAAG,6BAA6B,CAAA;AAElD,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,iBAAiB,GAAG,qBAAqB,CAAA;AAC/C,MAAM,iBAAiB,GAAG,2BAA2B,CAAA;AAErD,SAAS,qBAAqB,CAAC,GAAW,EAAE,MAAc;IACxD,8EAA8E;IAC9E,gEAAgE;IAChE,KAAK,MAAM,MAAM,IAAI,2BAA2B,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,SAAQ;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACvD,+EAA+E;QAC/E,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAA;QAC5C,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAAA;IACrE,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,SAAQ;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACzC,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3C,
|
|
1
|
+
{"version":3,"file":"on-cluster.js","sourceRoot":"","sources":["../src/on-cluster.ts"],"names":[],"mappings":"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"}
|
package/dist/planner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAOV,aAAa,EAEb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAOV,aAAa,EAEb,gBAAgB,EAGjB,MAAM,YAAY,CAAA;AA2iBnB,wBAAgB,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAyF9G"}
|