@chkit/core 0.1.2-beta.5 → 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 +63 -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 +123 -7
- package/dist/model-types.d.ts.map +1 -1
- package/dist/model.d.ts +4 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +13 -3
- 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 +18 -9
- package/dist/on-cluster.js.map +1 -1
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +144 -81
- 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 +9 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +95 -36
- 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 +350 -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
package/dist/planner.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { canonicalizeDefinitions, definitionKey } from './canonical.js';
|
|
2
2
|
import { diffByName, diffClauses, diffSettings } from './diff-primitives.js';
|
|
3
|
-
import { renderAlterAddColumn, renderAlterAddIndex, renderAlterAddProjection, renderAlterDropColumn, renderAlterDropIndex, renderAlterDropProjection, renderAlterModifyColumn, renderAlterModifyRefresh, renderAlterModifySetting, renderAlterModifyTTL, renderAlterRemoveCodec, renderAlterResetSetting, toCreateSQL, } from './sql.js';
|
|
3
|
+
import { renderAlterAddColumn, renderAlterAddIndex, renderAlterAddProjection, renderAlterDropColumn, renderAlterDropIndex, renderAlterDropProjection, renderAlterModifyColumn, renderAlterModifyRefresh, renderAlterModifySetting, renderAlterModifyTTL, renderAlterRemoveCodec, renderAlterRemoveColumnExpression, renderAlterResetSetting, renderDictionarySQL, toCreateSQL, } from './sql.js';
|
|
4
|
+
import { textIndexFingerprint } from './text-index.js';
|
|
4
5
|
import { assertValidDefinitions } from './validate.js';
|
|
6
|
+
import { quoteIdentifier, renderIdentifier, renderQualifiedName } from './identifier.js';
|
|
7
|
+
import { ChxValidationError } from './model.js';
|
|
8
|
+
import { isKafkaEngine, kafkaSettingFingerprint } from './kafka.js';
|
|
9
|
+
import { buildDependencyGraph, invertDependencyGraph, orderByDependencies, } from './object-dependencies.js';
|
|
5
10
|
function createMap(definitions) {
|
|
6
11
|
return new Map(definitions.map((def) => [definitionKey(def), def]));
|
|
7
12
|
}
|
|
@@ -11,7 +16,7 @@ function pushDropOperation(operations, def, risk = 'danger') {
|
|
|
11
16
|
type: 'drop_table',
|
|
12
17
|
key: definitionKey(def),
|
|
13
18
|
risk,
|
|
14
|
-
sql: `DROP TABLE IF EXISTS ${def.database}
|
|
19
|
+
sql: `DROP TABLE IF EXISTS ${renderQualifiedName(def.database, def.name)}${isKafkaEngine(def.engine) ? ' SYNC' : ''};`,
|
|
15
20
|
});
|
|
16
21
|
return;
|
|
17
22
|
}
|
|
@@ -20,7 +25,16 @@ function pushDropOperation(operations, def, risk = 'danger') {
|
|
|
20
25
|
type: 'drop_view',
|
|
21
26
|
key: definitionKey(def),
|
|
22
27
|
risk,
|
|
23
|
-
sql: `DROP VIEW IF EXISTS ${def.database
|
|
28
|
+
sql: `DROP VIEW IF EXISTS ${renderQualifiedName(def.database, def.name)};`,
|
|
29
|
+
});
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (def.kind === 'dictionary') {
|
|
33
|
+
operations.push({
|
|
34
|
+
type: 'drop_dictionary',
|
|
35
|
+
key: definitionKey(def),
|
|
36
|
+
risk,
|
|
37
|
+
sql: `DROP DICTIONARY IF EXISTS ${renderQualifiedName(def.database, def.name)};`,
|
|
24
38
|
});
|
|
25
39
|
return;
|
|
26
40
|
}
|
|
@@ -28,7 +42,7 @@ function pushDropOperation(operations, def, risk = 'danger') {
|
|
|
28
42
|
type: 'drop_materialized_view',
|
|
29
43
|
key: definitionKey(def),
|
|
30
44
|
risk,
|
|
31
|
-
sql: `DROP TABLE IF EXISTS ${def.database
|
|
45
|
+
sql: `DROP TABLE IF EXISTS ${renderQualifiedName(def.database, def.name)} SYNC;`,
|
|
32
46
|
});
|
|
33
47
|
}
|
|
34
48
|
function pushCreateOperation(operations, def, risk = 'safe') {
|
|
@@ -50,6 +64,15 @@ function pushCreateOperation(operations, def, risk = 'safe') {
|
|
|
50
64
|
});
|
|
51
65
|
return;
|
|
52
66
|
}
|
|
67
|
+
if (def.kind === 'dictionary') {
|
|
68
|
+
operations.push({
|
|
69
|
+
type: 'create_dictionary',
|
|
70
|
+
key: definitionKey(def),
|
|
71
|
+
risk,
|
|
72
|
+
sql: toCreateSQL(def),
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
53
76
|
operations.push({
|
|
54
77
|
type: 'create_materialized_view',
|
|
55
78
|
key: definitionKey(def),
|
|
@@ -62,7 +85,7 @@ function pushCreateDatabaseOperation(operations, database, risk = 'safe') {
|
|
|
62
85
|
type: 'create_database',
|
|
63
86
|
key: `database:${database}`,
|
|
64
87
|
risk,
|
|
65
|
-
sql: `CREATE DATABASE IF NOT EXISTS ${database};`,
|
|
88
|
+
sql: `CREATE DATABASE IF NOT EXISTS ${renderIdentifier(database)};`,
|
|
66
89
|
});
|
|
67
90
|
}
|
|
68
91
|
// Whitespace and identifier backtick-quoting carry no meaning in a key clause,
|
|
@@ -137,7 +160,7 @@ function renderRenameColumnSuggestionSQL(table, from, to) {
|
|
|
137
160
|
// IF EXISTS makes the rename idempotent: once it has run (the `from` column is
|
|
138
161
|
// gone), a replay after a partial migration failure is a safe no-op rather
|
|
139
162
|
// than an "unknown identifier" brick. ClickHouse supports the clause.
|
|
140
|
-
return `ALTER TABLE ${table.database
|
|
163
|
+
return `ALTER TABLE ${renderQualifiedName(table.database, table.name)} RENAME COLUMN IF EXISTS ${quoteIdentifier(from)} TO ${quoteIdentifier(to)};`;
|
|
141
164
|
}
|
|
142
165
|
function inferColumnRenameSuggestions(table, addedColumns, droppedColumns) {
|
|
143
166
|
if (addedColumns.length === 0 || droppedColumns.length === 0)
|
|
@@ -202,7 +225,7 @@ function diffMaterializedView(oldDef, newDef) {
|
|
|
202
225
|
type: 'drop_materialized_view',
|
|
203
226
|
key: definitionKey(newDef),
|
|
204
227
|
risk: 'caution',
|
|
205
|
-
sql: `DROP TABLE IF EXISTS ${newDef.database
|
|
228
|
+
sql: `DROP TABLE IF EXISTS ${renderQualifiedName(newDef.database, newDef.name)} SYNC;`,
|
|
206
229
|
},
|
|
207
230
|
{
|
|
208
231
|
type: 'create_materialized_view',
|
|
@@ -224,7 +247,50 @@ function diffMaterializedView(oldDef, newDef) {
|
|
|
224
247
|
}
|
|
225
248
|
return [];
|
|
226
249
|
}
|
|
250
|
+
// `chkit pull` writes ClickHouse's own introspection placeholder
|
|
251
|
+
// (`password '[HIDDEN]'`) into `source` when it can't recover a dictionary's
|
|
252
|
+
// real credential. That placeholder must never drive a diff — rendering it
|
|
253
|
+
// would deploy the literal string "[HIDDEN]" as the password. A real
|
|
254
|
+
// password value, by contrast, is fully known to chkit (it's a plain string
|
|
255
|
+
// in the schema file) and a change to it is a genuine diff like any other.
|
|
256
|
+
function dictionarySourceIsHidden(source) {
|
|
257
|
+
return source.includes('[HIDDEN]');
|
|
258
|
+
}
|
|
259
|
+
function dictionaryComparisonShape(def, omitSource) {
|
|
260
|
+
if (!omitSource)
|
|
261
|
+
return def;
|
|
262
|
+
const { source, ...rest } = def;
|
|
263
|
+
return rest;
|
|
264
|
+
}
|
|
265
|
+
function diffDictionary(oldDef, newDef) {
|
|
266
|
+
const omitSource = dictionarySourceIsHidden(newDef.source);
|
|
267
|
+
const unchanged = JSON.stringify(dictionaryComparisonShape(oldDef, omitSource)) ===
|
|
268
|
+
JSON.stringify(dictionaryComparisonShape(newDef, omitSource));
|
|
269
|
+
if (unchanged)
|
|
270
|
+
return [];
|
|
271
|
+
return [
|
|
272
|
+
{
|
|
273
|
+
type: 'create_dictionary',
|
|
274
|
+
key: definitionKey(newDef),
|
|
275
|
+
risk: 'caution',
|
|
276
|
+
sql: renderDictionarySQL(newDef, true),
|
|
277
|
+
},
|
|
278
|
+
];
|
|
279
|
+
}
|
|
227
280
|
function diffTables(oldDef, newDef) {
|
|
281
|
+
if (isKafkaEngine(oldDef.engine) || isKafkaEngine(newDef.engine)) {
|
|
282
|
+
const settings = (def) => Object.fromEntries(Object.entries(def.settings ?? {}).map(([key, value]) => [key, kafkaSettingFingerprint(value)]));
|
|
283
|
+
if (requiresTableRecreate(oldDef, newDef)
|
|
284
|
+
|| JSON.stringify(oldDef.columns.map(column => [column.name, normalizeColumn(column)])) !== JSON.stringify(newDef.columns.map(column => [column.name, normalizeColumn(column)]))
|
|
285
|
+
|| diffSettings(settings(oldDef), settings(newDef)).changes.length > 0
|
|
286
|
+
|| (oldDef.comment ?? '') !== (newDef.comment ?? '')) {
|
|
287
|
+
throw new ChxValidationError([{
|
|
288
|
+
code: 'kafka_change_requires_replacement', kind: 'table', database: newDef.database, name: newDef.name,
|
|
289
|
+
message: `Kafka table ${newDef.database}.${newDef.name} requires an explicit replacement; column, engine and setting ALTERs are not supported. Remove the queue and its consuming materialized views from the schema and generate a drop migration, then re-add the updated definitions and generate a create migration. Review both migrations and consumer-group/offset behavior before applying with --allow-destructive.`,
|
|
290
|
+
}]);
|
|
291
|
+
}
|
|
292
|
+
return { operations: [], renameSuggestions: [] };
|
|
293
|
+
}
|
|
228
294
|
if (requiresTableRecreate(oldDef, newDef)) {
|
|
229
295
|
return {
|
|
230
296
|
operations: [
|
|
@@ -232,7 +298,7 @@ function diffTables(oldDef, newDef) {
|
|
|
232
298
|
type: 'drop_table',
|
|
233
299
|
key: definitionKey(newDef),
|
|
234
300
|
risk: 'danger',
|
|
235
|
-
sql: `DROP TABLE IF EXISTS ${newDef.database
|
|
301
|
+
sql: `DROP TABLE IF EXISTS ${renderQualifiedName(newDef.database, newDef.name)};`,
|
|
236
302
|
},
|
|
237
303
|
{
|
|
238
304
|
type: 'create_table',
|
|
@@ -248,6 +314,19 @@ function diffTables(oldDef, newDef) {
|
|
|
248
314
|
const columnDiff = diffByName(oldDef.columns, newDef.columns, (column) => column.name, (left, right) => JSON.stringify(normalizeColumn(left)) === JSON.stringify(normalizeColumn(right)));
|
|
249
315
|
const addedColumns = columnDiff.added;
|
|
250
316
|
const droppedColumns = columnDiff.removed;
|
|
317
|
+
// Report every blocked column of the table at once, not one per generate run.
|
|
318
|
+
const kindChangeIssues = columnDiff.changed.flatMap(({ name, oldItem, newItem }) => {
|
|
319
|
+
const oldKind = oldItem.defaultKind ?? 'DEFAULT';
|
|
320
|
+
const newKind = newItem.defaultKind ?? 'DEFAULT';
|
|
321
|
+
if (oldKind === newKind || ![oldKind, newKind].some((kind) => kind === 'ALIAS' || kind === 'EPHEMERAL'))
|
|
322
|
+
return [];
|
|
323
|
+
return [{
|
|
324
|
+
code: 'column_kind_change_unsupported', kind: 'table', database: newDef.database, name: newDef.name,
|
|
325
|
+
message: `Cannot automatically change column ${newDef.database}.${newDef.name}.${name} from ${oldKind} to ${newKind}; storage-kind conversions involving ALIAS or EPHEMERAL are not supported. Keep the column declared as ${oldKind} in the schema.`,
|
|
326
|
+
}];
|
|
327
|
+
});
|
|
328
|
+
if (kindChangeIssues.length > 0)
|
|
329
|
+
throw new ChxValidationError(kindChangeIssues);
|
|
251
330
|
for (const column of columnDiff.added) {
|
|
252
331
|
ops.push({
|
|
253
332
|
type: 'alter_table_add_column',
|
|
@@ -257,14 +336,24 @@ function diffTables(oldDef, newDef) {
|
|
|
257
336
|
});
|
|
258
337
|
}
|
|
259
338
|
for (const { name, oldItem, newItem } of columnDiff.changed) {
|
|
339
|
+
const oldKind = oldItem.defaultKind ?? 'DEFAULT';
|
|
340
|
+
const newKind = newItem.defaultKind ?? 'DEFAULT';
|
|
341
|
+
const key = `table:${newDef.database}.${newDef.name}:column:${name}`;
|
|
342
|
+
const removeExpression = renderAlterRemoveColumnExpression(newDef, newItem, oldItem);
|
|
343
|
+
// Its own operation: migrate pairs each `-- operation:` marker with exactly one statement.
|
|
344
|
+
if (removeExpression)
|
|
345
|
+
ops.push({ type: 'alter_table_modify_column', key, risk: 'caution', sql: removeExpression });
|
|
260
346
|
const sql = isCodecRemoval(oldItem, newItem)
|
|
261
347
|
? renderAlterRemoveCodec(newDef, name)
|
|
262
348
|
: renderAlterModifyColumn(newDef, newItem);
|
|
263
349
|
ops.push({
|
|
264
350
|
type: 'alter_table_modify_column',
|
|
265
|
-
key
|
|
351
|
+
key,
|
|
266
352
|
risk: 'caution',
|
|
267
353
|
sql,
|
|
354
|
+
...((oldKind === 'DEFAULT' || oldKind === 'MATERIALIZED' || newKind === 'DEFAULT' || newKind === 'MATERIALIZED') && (oldItem.default !== newItem.default || oldKind !== newKind)
|
|
355
|
+
? { warning: `Changing the expression for ${newDef.database}.${newDef.name}.${name} does not rewrite stored historical values. Review a separate MATERIALIZE COLUMN migration if a rewrite is required; never reconstruct values from discarded EPHEMERAL inputs.` }
|
|
356
|
+
: {}),
|
|
268
357
|
});
|
|
269
358
|
}
|
|
270
359
|
for (const column of columnDiff.removed) {
|
|
@@ -275,7 +364,9 @@ function diffTables(oldDef, newDef) {
|
|
|
275
364
|
sql: renderAlterDropColumn(newDef, column.name),
|
|
276
365
|
});
|
|
277
366
|
}
|
|
278
|
-
const indexDiff = diffByName(oldDef.indexes ?? [], newDef.indexes ?? [], (index) => index.name, (left, right) =>
|
|
367
|
+
const indexDiff = diffByName(oldDef.indexes ?? [], newDef.indexes ?? [], (index) => index.name, (left, right) => left.type === 'text' && right.type === 'text'
|
|
368
|
+
? textIndexFingerprint(left) === textIndexFingerprint(right)
|
|
369
|
+
: JSON.stringify(left) === JSON.stringify(right));
|
|
279
370
|
for (const index of indexDiff.added) {
|
|
280
371
|
ops.push({
|
|
281
372
|
type: 'alter_table_add_index',
|
|
@@ -368,47 +459,6 @@ function diffTables(oldDef, newDef) {
|
|
|
368
459
|
renameSuggestions: inferColumnRenameSuggestions(newDef, addedColumns, droppedColumns),
|
|
369
460
|
};
|
|
370
461
|
}
|
|
371
|
-
/**
|
|
372
|
-
* Creation depth of each refreshable materialized view, derived from its
|
|
373
|
-
* `refresh.dependsOn` edges (#41). A view declared `DEPENDS ON other_mv` must
|
|
374
|
-
* be created AFTER `other_mv` exists, so ordering create operations by
|
|
375
|
-
* ascending depth puts every dependency before the views that depend on it.
|
|
376
|
-
* Names alone are unsafe: a dependent MV whose name sorts first would otherwise
|
|
377
|
-
* be created first and fail.
|
|
378
|
-
*/
|
|
379
|
-
function materializedViewCreationDepth(definitions, byKey) {
|
|
380
|
-
const depth = new Map();
|
|
381
|
-
const visiting = new Set();
|
|
382
|
-
const compute = (key) => {
|
|
383
|
-
const cached = depth.get(key);
|
|
384
|
-
if (cached !== undefined)
|
|
385
|
-
return cached;
|
|
386
|
-
// A dependency cycle has no valid creation order; stop recursing and let
|
|
387
|
-
// the alphabetical tiebreak apply rather than looping forever.
|
|
388
|
-
if (visiting.has(key))
|
|
389
|
-
return 0;
|
|
390
|
-
const def = byKey.get(key);
|
|
391
|
-
if (!def || def.kind !== 'materialized_view') {
|
|
392
|
-
depth.set(key, 0);
|
|
393
|
-
return 0;
|
|
394
|
-
}
|
|
395
|
-
visiting.add(key);
|
|
396
|
-
let result = 0;
|
|
397
|
-
for (const dep of def.refresh?.dependsOn ?? []) {
|
|
398
|
-
const depKey = `materialized_view:${dep.database}.${dep.name}`;
|
|
399
|
-
if (byKey.has(depKey))
|
|
400
|
-
result = Math.max(result, 1 + compute(depKey));
|
|
401
|
-
}
|
|
402
|
-
visiting.delete(key);
|
|
403
|
-
depth.set(key, result);
|
|
404
|
-
return result;
|
|
405
|
-
};
|
|
406
|
-
for (const def of definitions) {
|
|
407
|
-
if (def.kind === 'materialized_view')
|
|
408
|
-
compute(definitionKey(def));
|
|
409
|
-
}
|
|
410
|
-
return depth;
|
|
411
|
-
}
|
|
412
462
|
export function planDiff(oldDefinitions, newDefinitions) {
|
|
413
463
|
const oldCanonical = canonicalizeDefinitions(oldDefinitions);
|
|
414
464
|
const newCanonical = canonicalizeDefinitions(newDefinitions);
|
|
@@ -448,6 +498,10 @@ export function planDiff(oldDefinitions, newDefinitions) {
|
|
|
448
498
|
operations.push(...mvOps);
|
|
449
499
|
continue;
|
|
450
500
|
}
|
|
501
|
+
if (newDef.kind === oldDef.kind && newDef.kind === 'dictionary' && oldDef.kind === 'dictionary') {
|
|
502
|
+
operations.push(...diffDictionary(oldDef, newDef));
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
451
505
|
if (newDef.kind !== oldDef.kind) {
|
|
452
506
|
pushDropOperation(operations, oldDef, 'danger');
|
|
453
507
|
}
|
|
@@ -463,41 +517,16 @@ export function planDiff(oldDefinitions, newDefinitions) {
|
|
|
463
517
|
for (const database of [...databasesToCreate].sort((a, b) => a.localeCompare(b))) {
|
|
464
518
|
pushCreateDatabaseOperation(operations, database, 'safe');
|
|
465
519
|
}
|
|
466
|
-
const
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if (op.type.startsWith('drop_'))
|
|
470
|
-
return 0;
|
|
471
|
-
if (op.type === 'alter_materialized_view_modify_refresh')
|
|
472
|
-
return 1;
|
|
473
|
-
if (op.type.startsWith('alter_'))
|
|
474
|
-
return 1;
|
|
475
|
-
if (op.type === 'create_database')
|
|
476
|
-
return 2;
|
|
477
|
-
if (op.type === 'create_table')
|
|
478
|
-
return 3;
|
|
479
|
-
if (op.type === 'create_view')
|
|
480
|
-
return 4;
|
|
481
|
-
return 5;
|
|
482
|
-
};
|
|
483
|
-
const rankOrder = rank(a) - rank(b);
|
|
484
|
-
if (rankOrder !== 0)
|
|
485
|
-
return rankOrder;
|
|
486
|
-
// Within materialized-view creates, order a DEPENDS ON target before the
|
|
487
|
-
// view that depends on it (#41), then fall back to a stable name order.
|
|
488
|
-
if (a.type === 'create_materialized_view' && b.type === 'create_materialized_view') {
|
|
489
|
-
const depthOrder = (mvCreationDepth.get(a.key) ?? 0) - (mvCreationDepth.get(b.key) ?? 0);
|
|
490
|
-
if (depthOrder !== 0)
|
|
491
|
-
return depthOrder;
|
|
492
|
-
}
|
|
493
|
-
return a.key.localeCompare(b.key);
|
|
520
|
+
const ordered = orderOperations(operations.sort(compareOperations), {
|
|
521
|
+
drop: invertDependencyGraph(buildDependencyGraph(oldCanonical)),
|
|
522
|
+
create: buildDependencyGraph(newCanonical),
|
|
494
523
|
});
|
|
495
524
|
const riskSummary = { safe: 0, caution: 0, danger: 0 };
|
|
496
|
-
for (const operation of
|
|
525
|
+
for (const operation of ordered) {
|
|
497
526
|
riskSummary[operation.risk] = (riskSummary[operation.risk] ?? 0) + 1;
|
|
498
527
|
}
|
|
499
528
|
return {
|
|
500
|
-
operations,
|
|
529
|
+
operations: ordered,
|
|
501
530
|
riskSummary,
|
|
502
531
|
renameSuggestions: renameSuggestions.sort((a, b) => {
|
|
503
532
|
const tableOrder = `${a.database}.${a.table}`.localeCompare(`${b.database}.${b.table}`);
|
|
@@ -510,4 +539,38 @@ export function planDiff(oldDefinitions, newDefinitions) {
|
|
|
510
539
|
}),
|
|
511
540
|
};
|
|
512
541
|
}
|
|
542
|
+
// drop_* 0, alter_* 1, create_database 2, create_table 3, create_view 4, other creates 5.
|
|
543
|
+
function operationRank(op) {
|
|
544
|
+
if (op.type.startsWith('drop_'))
|
|
545
|
+
return 0;
|
|
546
|
+
if (op.type.startsWith('alter_'))
|
|
547
|
+
return 1;
|
|
548
|
+
if (op.type === 'create_database')
|
|
549
|
+
return 2;
|
|
550
|
+
if (op.type === 'create_table')
|
|
551
|
+
return 3;
|
|
552
|
+
if (op.type === 'create_view')
|
|
553
|
+
return 4;
|
|
554
|
+
return 5;
|
|
555
|
+
}
|
|
556
|
+
// The sort is stable, so operations that share a key keep the order diffTables
|
|
557
|
+
// pushed them in: a column's REMOVE DEFAULT before its MODIFY COLUMN.
|
|
558
|
+
function compareOperations(a, b) {
|
|
559
|
+
return operationRank(a) - operationRank(b) || a.key.localeCompare(b.key);
|
|
560
|
+
}
|
|
561
|
+
/**
|
|
562
|
+
* Reorders the drop and create segments of a (rank, key)-sorted plan by object
|
|
563
|
+
* dependencies (#231): drops run dependents first, creates run dependencies
|
|
564
|
+
* first. Alters and create_database keep their place.
|
|
565
|
+
*/
|
|
566
|
+
function orderOperations(sorted, prerequisites) {
|
|
567
|
+
const drops = sorted.filter((op) => operationRank(op) === 0);
|
|
568
|
+
const middle = sorted.filter((op) => operationRank(op) === 1 || operationRank(op) === 2);
|
|
569
|
+
const creates = sorted.filter((op) => operationRank(op) >= 3);
|
|
570
|
+
return [
|
|
571
|
+
...orderByDependencies(drops, (op) => op.key, (key) => prerequisites.drop.get(key) ?? []),
|
|
572
|
+
...middle,
|
|
573
|
+
...orderByDependencies(creates, (op) => op.key, (key) => prerequisites.create.get(key) ?? []),
|
|
574
|
+
];
|
|
575
|
+
}
|
|
513
576
|
//# sourceMappingURL=planner.js.map
|
package/dist/planner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
package/dist/projection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAKvF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,oBAAoB,GAC/B,UAAU,IAAI,yBAAyB,CAEzC;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB9D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,GAAG,oBAAoB,CAc7F;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAI7E"}
|
package/dist/projection.js
CHANGED
|
@@ -1,53 +1,18 @@
|
|
|
1
1
|
import { splitTopLevelComma } from './key-clause.js';
|
|
2
2
|
import { normalizeSQLFragment } from './sql-normalizer.js';
|
|
3
|
+
import { findQuoteEnd, isQuoteChar, stripWrappingParens } from './sql-scan.js';
|
|
3
4
|
export function isIndexProjection(projection) {
|
|
4
5
|
return 'index' in projection;
|
|
5
6
|
}
|
|
6
|
-
function stripWrappingParens(input) {
|
|
7
|
-
if (!input.startsWith('(') || !input.endsWith(')'))
|
|
8
|
-
return input;
|
|
9
|
-
// Only strip when the leading paren closes at the very end, so `(a), (b)`
|
|
10
|
-
// keeps both groups. Parens inside quoted identifiers and string literals
|
|
11
|
-
// are text, not nesting — `` (`weird)name`) `` is still a single wrapped
|
|
12
|
-
// expression.
|
|
13
|
-
let depth = 0;
|
|
14
|
-
let quote = null;
|
|
15
|
-
for (let i = 0; i < input.length; i += 1) {
|
|
16
|
-
const char = input[i];
|
|
17
|
-
if (quote) {
|
|
18
|
-
if (char === quote && input[i - 1] !== '\\')
|
|
19
|
-
quote = null;
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
if (char === "'" || char === '"' || char === '`') {
|
|
23
|
-
quote = char;
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
if (char === '(')
|
|
27
|
-
depth += 1;
|
|
28
|
-
else if (char === ')') {
|
|
29
|
-
depth -= 1;
|
|
30
|
-
if (depth === 0)
|
|
31
|
-
return i === input.length - 1 ? input.slice(1, -1).trim() : input;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return input;
|
|
35
|
-
}
|
|
36
7
|
/** ClickHouse prints one space after every argument separator. */
|
|
37
8
|
function spaceAfterCommas(input) {
|
|
38
9
|
let out = '';
|
|
39
|
-
let quote = null;
|
|
40
10
|
for (let i = 0; i < input.length; i += 1) {
|
|
41
11
|
const char = input[i] ?? '';
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (char === "'" || char === '"' || char === '`') {
|
|
49
|
-
quote = char;
|
|
50
|
-
out += char;
|
|
12
|
+
if (isQuoteChar(char)) {
|
|
13
|
+
const end = findQuoteEnd(input, i, char);
|
|
14
|
+
out += input.slice(i, end + 1);
|
|
15
|
+
i = end;
|
|
51
16
|
continue;
|
|
52
17
|
}
|
|
53
18
|
// Whitespace is already collapsed to single spaces by normalizeSQLFragment,
|
package/dist/projection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
|
package/dist/schema-loader.d.ts
CHANGED
|
@@ -3,4 +3,6 @@ export interface SchemaLoaderOptions {
|
|
|
3
3
|
cwd?: string;
|
|
4
4
|
}
|
|
5
5
|
export declare function loadSchemaDefinitions(schemaGlobs: string | string[], options?: SchemaLoaderOptions): Promise<SchemaDefinition[]>;
|
|
6
|
+
/** Load configured entry/schema modules so plugins can inspect their exported definitions. */
|
|
7
|
+
export declare function loadDefinitionModules(schemaGlobs: string | string[], options?: SchemaLoaderOptions): Promise<Record<string, unknown>[]>;
|
|
6
8
|
//# sourceMappingURL=schema-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../src/schema-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../src/schema-loader.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGlD,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAeD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAC9B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG7B;AAED,8FAA8F;AAC9F,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAC9B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAcpC"}
|
package/dist/schema-loader.js
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
1
2
|
import process from 'node:process';
|
|
2
3
|
import fg from 'fast-glob';
|
|
3
4
|
import { canonicalizeDefinitions, collectDefinitionsFromModule } from './canonical.js';
|
|
5
|
+
import { hasConflictMarkers } from './conflict-markers.js';
|
|
4
6
|
import { importModuleFile } from './ts-import.js';
|
|
7
|
+
/**
|
|
8
|
+
* The `<file>:<line>:<column>` line that jiti, the loader under Node, ends a
|
|
9
|
+
* parse error's message with. The file path can contain spaces.
|
|
10
|
+
*/
|
|
11
|
+
const MESSAGE_LOCATION_LINE = /^[ \t]*(.+):\d+:\d+[ \t]*$/gm;
|
|
5
12
|
export async function loadSchemaDefinitions(schemaGlobs, options = {}) {
|
|
13
|
+
const modules = await loadDefinitionModules(schemaGlobs, options);
|
|
14
|
+
return canonicalizeDefinitions(modules.flatMap(collectDefinitionsFromModule));
|
|
15
|
+
}
|
|
16
|
+
/** Load configured entry/schema modules so plugins can inspect their exported definitions. */
|
|
17
|
+
export async function loadDefinitionModules(schemaGlobs, options = {}) {
|
|
6
18
|
const patterns = Array.isArray(schemaGlobs) ? schemaGlobs : [schemaGlobs];
|
|
7
19
|
const files = await fg(patterns, {
|
|
8
20
|
cwd: options.cwd ?? process.cwd(),
|
|
@@ -11,11 +23,66 @@ export async function loadSchemaDefinitions(schemaGlobs, options = {}) {
|
|
|
11
23
|
if (files.length === 0) {
|
|
12
24
|
throw new Error('No schema files matched. Check config.schema patterns.');
|
|
13
25
|
}
|
|
14
|
-
const
|
|
15
|
-
for (const file of files)
|
|
16
|
-
|
|
17
|
-
|
|
26
|
+
const modules = [];
|
|
27
|
+
for (const file of files)
|
|
28
|
+
modules.push(await importSchemaFile(file));
|
|
29
|
+
return modules;
|
|
30
|
+
}
|
|
31
|
+
/** Import one schema file. A failure names the file, and points out git conflict markers. */
|
|
32
|
+
async function importSchemaFile(file) {
|
|
33
|
+
try {
|
|
34
|
+
return await importModuleFile(file);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(await describeImportFailure(file, error), { cause: error });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function describeImportFailure(file, error) {
|
|
41
|
+
const failures = errorEntries(error);
|
|
42
|
+
const summary = `Failed to load schema file ${file}: ${failures.map(describeErrorEntry).join('; ')}`;
|
|
43
|
+
// The parser names the file that failed to parse, which can be a module the schema file imports.
|
|
44
|
+
const conflicted = await findConflictedFile([file, ...failures.flatMap(reportedFiles)]);
|
|
45
|
+
if (conflicted === undefined)
|
|
46
|
+
return summary;
|
|
47
|
+
const holder = conflicted === file ? 'The file' : conflicted;
|
|
48
|
+
return `${summary}\n${holder} contains unresolved merge conflict markers. Resolve the conflict and run the command again.`;
|
|
49
|
+
}
|
|
50
|
+
async function findConflictedFile(files) {
|
|
51
|
+
for (const file of new Set(files)) {
|
|
52
|
+
if (hasConflictMarkers(await readFile(file, 'utf8').catch(() => '')))
|
|
53
|
+
return file;
|
|
18
54
|
}
|
|
19
|
-
return
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
/** The individual errors behind `error`: Bun reports several parse errors as one AggregateError. */
|
|
58
|
+
function errorEntries(error) {
|
|
59
|
+
if (isRecord(error) && Array.isArray(error.errors) && error.errors.length > 0)
|
|
60
|
+
return error.errors;
|
|
61
|
+
return [error];
|
|
62
|
+
}
|
|
63
|
+
function describeErrorEntry(entry) {
|
|
64
|
+
const message = messageOf(entry);
|
|
65
|
+
const position = positionOf(entry);
|
|
66
|
+
return position ? `${message} (${position.file}:${position.line}:${position.column})` : message;
|
|
67
|
+
}
|
|
68
|
+
/** The files an error names as failing: Bun's position, or the location line of jiti's message under Node. */
|
|
69
|
+
function reportedFiles(entry) {
|
|
70
|
+
const located = [...messageOf(entry).matchAll(MESSAGE_LOCATION_LINE)].flatMap((match) => match[1] ?? []);
|
|
71
|
+
const position = positionOf(entry);
|
|
72
|
+
return position ? [position.file, ...located] : located;
|
|
73
|
+
}
|
|
74
|
+
function messageOf(entry) {
|
|
75
|
+
return isRecord(entry) && typeof entry.message === 'string' && entry.message !== '' ? entry.message : String(entry);
|
|
76
|
+
}
|
|
77
|
+
function positionOf(entry) {
|
|
78
|
+
if (!isRecord(entry) || !isRecord(entry.position))
|
|
79
|
+
return undefined;
|
|
80
|
+
const { file, line, column } = entry.position;
|
|
81
|
+
if (typeof file !== 'string' || typeof line !== 'number' || typeof column !== 'number')
|
|
82
|
+
return undefined;
|
|
83
|
+
return { file, line, column };
|
|
84
|
+
}
|
|
85
|
+
function isRecord(value) {
|
|
86
|
+
return typeof value === 'object' && value !== null;
|
|
20
87
|
}
|
|
21
88
|
//# sourceMappingURL=schema-loader.js.map
|