@metaobjectsdev/migrate-ts 0.20.1-rc.1 → 0.20.2-rc.1
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/dist/check-expr-compare.d.ts.map +1 -1
- package/dist/check-expr-compare.js +46 -1
- package/dist/check-expr-compare.js.map +1 -1
- package/dist/diff/index.d.ts.map +1 -1
- package/dist/diff/index.js +65 -19
- package/dist/diff/index.js.map +1 -1
- package/dist/introspect/sqlite-shared.d.ts +7 -3
- package/dist/introspect/sqlite-shared.d.ts.map +1 -1
- package/dist/introspect/sqlite-shared.js +73 -6
- package/dist/introspect/sqlite-shared.js.map +1 -1
- package/package.json +2 -2
- package/src/check-expr-compare.ts +43 -1
- package/src/diff/index.ts +68 -18
- package/src/introspect/sqlite-shared.ts +64 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-expr-compare.d.ts","sourceRoot":"","sources":["../src/check-expr-compare.ts"],"names":[],"mappings":"AAcA,yHAAyH;AACzH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"check-expr-compare.d.ts","sourceRoot":"","sources":["../src/check-expr-compare.ts"],"names":[],"mappings":"AAcA,yHAAyH;AACzH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+BvD;AAqCD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGrF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrD"}
|
|
@@ -35,7 +35,52 @@ export function normalizeCheckExpr(expr) {
|
|
|
35
35
|
.trim();
|
|
36
36
|
// PG stores `col IN (…)` as `col = ANY (ARRAY[…])`; after the bracket strip above
|
|
37
37
|
// that reads `col = any array …`. Fold it back to the `col in …` form we emit.
|
|
38
|
-
|
|
38
|
+
const folded = stripped.replace(/=\s*any\s+array/g, "in").replace(/\s+/g, " ").trim();
|
|
39
|
+
// Normalize spacing AROUND COMMAS so a generated IN-list (`'a', 'b'`) compares equal
|
|
40
|
+
// to a hand-written one (`'a','b'`) — the separator commas are never semantically
|
|
41
|
+
// meaningful, and a hand SQLite migration omits the space. This is done OUTSIDE
|
|
42
|
+
// single-quoted literals only: a comma inside a string/regex literal (`'a, b'`, or a
|
|
43
|
+
// quantifier `'{1, 3}'`) IS meaningful, so two checks that differ only there must
|
|
44
|
+
// stay distinct (else a real regex/predicate change reads as clean drift).
|
|
45
|
+
return collapseCommaSpacingOutsideQuotes(folded);
|
|
46
|
+
}
|
|
47
|
+
/** Collapse `\s*,\s*` → `,` OUTSIDE single-quoted literals (see normalizeCheckExpr). */
|
|
48
|
+
function collapseCommaSpacingOutsideQuotes(s) {
|
|
49
|
+
let out = "";
|
|
50
|
+
let i = 0;
|
|
51
|
+
const n = s.length;
|
|
52
|
+
while (i < n) {
|
|
53
|
+
const ch = s[i];
|
|
54
|
+
if (ch === "'") {
|
|
55
|
+
// Copy the single-quoted literal verbatim ('' escapes honored) — never touched.
|
|
56
|
+
const start = i;
|
|
57
|
+
i++;
|
|
58
|
+
while (i < n) {
|
|
59
|
+
if (s[i] === "'") {
|
|
60
|
+
if (s[i + 1] === "'") {
|
|
61
|
+
i += 2;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
i++;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
out += s.slice(start, i);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (ch === ",") {
|
|
73
|
+
out = out.replace(/\s+$/, ""); // drop whitespace already emitted before it
|
|
74
|
+
out += ",";
|
|
75
|
+
i++;
|
|
76
|
+
while (i < n && /\s/.test(s[i]))
|
|
77
|
+
i++; // skip whitespace after it
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
out += ch;
|
|
81
|
+
i++;
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
39
84
|
}
|
|
40
85
|
/** True when two CHECK expressions are equivalent after normalization. */
|
|
41
86
|
export function checkExprEquals(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-expr-compare.js","sourceRoot":"","sources":["../src/check-expr-compare.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,2EAA2E;AAC3E,wFAAwF;AACxF,wGAAwG;AACxG,2DAA2D;AAC3D,gFAAgF;AAChF,uFAAuF;AAEvF,yHAAyH;AACzH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,QAAQ,GAAG,IAAI;SAClB,WAAW,EAAE;QACd,8EAA8E;QAC9E,0EAA0E;QAC1E,6EAA6E;QAC7E,+EAA+E;QAC/E,iEAAiE;SAChE,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnC,6EAA6E;QAC7E,4EAA4E;QAC5E,6EAA6E;QAC7E,wEAAwE;QACxE,8EAA8E;QAC9E,0EAA0E;QAC1E,yEAAyE;QACzE,8CAA8C;SAC7C,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;SACzB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAK,6CAA6C;SAC1E,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IACV,kFAAkF;IAClF,+EAA+E;IAC/E,
|
|
1
|
+
{"version":3,"file":"check-expr-compare.js","sourceRoot":"","sources":["../src/check-expr-compare.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGQ,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGQ,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAE3E,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgDD;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAChE,wBAAsB,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC"}
|
package/dist/diff/index.js
CHANGED
|
@@ -118,7 +118,7 @@ export async function diff(argsOrExpected, actualMaybe, optsMaybe) {
|
|
|
118
118
|
const actualTable = actualTables.get(id);
|
|
119
119
|
if (!actualTable)
|
|
120
120
|
continue;
|
|
121
|
-
diffTableColumns(expectedTable, actualTable, changes);
|
|
121
|
+
diffTableColumns(expectedTable, actualTable, changes, args.dialect);
|
|
122
122
|
diffTableIndexes(expectedTable, actualTable, changes);
|
|
123
123
|
diffTableForeignKeys(expectedTable, actualTable, changes, args.dialect);
|
|
124
124
|
// CHECK constraints on existing tables are evolved whenever a dialect is
|
|
@@ -130,7 +130,7 @@ export async function diff(argsOrExpected, actualMaybe, optsMaybe) {
|
|
|
130
130
|
// callers may hold hand-built snapshots with empty check lists, and
|
|
131
131
|
// diffing them would re-propose every modeled check forever.
|
|
132
132
|
if (args.dialect !== undefined)
|
|
133
|
-
diffTableChecks(expectedTable, actualTable, changes);
|
|
133
|
+
diffTableChecks(expectedTable, actualTable, changes, args.dialect);
|
|
134
134
|
}
|
|
135
135
|
// Pass 2b: views. Identity is (schema, name). How "changed" is decided is
|
|
136
136
|
// DIALECT-DEPENDENT — see diffViews.
|
|
@@ -168,7 +168,30 @@ export async function diff(argsOrExpected, actualMaybe, optsMaybe) {
|
|
|
168
168
|
function isDiffArgs(x) {
|
|
169
169
|
return "expected" in x && "actual" in x;
|
|
170
170
|
}
|
|
171
|
-
|
|
171
|
+
/**
|
|
172
|
+
* Collapse a SqlType to what SQLite/D1 can PHYSICALLY store, so the diff never
|
|
173
|
+
* reports drift the database could never represent (and thus could never fix).
|
|
174
|
+
*
|
|
175
|
+
* SQLite/D1 has a single text storage class: `json` is stored as TEXT (no native
|
|
176
|
+
* json type), and a `VARCHAR(N)` length is cosmetic — not enforced — so a bounded
|
|
177
|
+
* and an unbounded text column are the same physical column. Both collapse to bare
|
|
178
|
+
* `text`. The tool's own emit round-trips are unaffected (VARCHAR(8) and TEXT both
|
|
179
|
+
* canon to `text`), while a hand-written `TEXT` column now matches maxLength'd /
|
|
180
|
+
* jsonb metadata. Postgres represents both faithfully and is left exact.
|
|
181
|
+
*/
|
|
182
|
+
function canonTypeForDialect(t, dialect) {
|
|
183
|
+
if (dialect !== "sqlite" && dialect !== "d1")
|
|
184
|
+
return t;
|
|
185
|
+
if (t.kind === "json")
|
|
186
|
+
return { kind: "text" };
|
|
187
|
+
if (t.kind === "text" && t.maxLength !== undefined)
|
|
188
|
+
return { kind: "text" };
|
|
189
|
+
return t;
|
|
190
|
+
}
|
|
191
|
+
function sqlTypeEqualsForDialect(a, b, dialect) {
|
|
192
|
+
return sqlTypeEquals(canonTypeForDialect(a, dialect), canonTypeForDialect(b, dialect));
|
|
193
|
+
}
|
|
194
|
+
function diffTableColumns(expected, actual, changes, dialect) {
|
|
172
195
|
const table = expected.name;
|
|
173
196
|
const sx = schemaSpread(expected.schema);
|
|
174
197
|
const expectedCols = new Map(expected.columns.map((c) => [c.name, c]));
|
|
@@ -179,8 +202,11 @@ function diffTableColumns(expected, actual, changes) {
|
|
|
179
202
|
changes.push({ kind: "add-column", table, ...sx, column: ec, status: ALLOWED });
|
|
180
203
|
continue;
|
|
181
204
|
}
|
|
182
|
-
// Compare type, nullable, default — emit per-aspect change.
|
|
183
|
-
|
|
205
|
+
// Compare type, nullable, default — emit per-aspect change. Type equality is
|
|
206
|
+
// dialect-aware: SQLite/D1 cannot physically represent a VARCHAR length or a
|
|
207
|
+
// native json type, so those distinctions must not read as drift (see
|
|
208
|
+
// canonTypeForDialect). Postgres stays exact.
|
|
209
|
+
if (!sqlTypeEqualsForDialect(ec.sqlType, ac.sqlType, dialect)) {
|
|
184
210
|
changes.push({
|
|
185
211
|
kind: "change-column-type", table, ...sx, column: name,
|
|
186
212
|
from: ac.sqlType, to: ec.sqlType, status: ALLOWED,
|
|
@@ -312,24 +338,44 @@ function diffTableForeignKeys(expected, actual, changes, dialect) {
|
|
|
312
338
|
}
|
|
313
339
|
}
|
|
314
340
|
}
|
|
315
|
-
function diffTableChecks(expected, actual, changes) {
|
|
341
|
+
function diffTableChecks(expected, actual, changes, dialect) {
|
|
316
342
|
const sx = schemaSpread(expected.schema);
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
343
|
+
// SQLite/D1 stores no constraint identity for an inline `CHECK (…)`, so hand-written
|
|
344
|
+
// DDL yields anonymous (empty-name) checks. When an expected named check has no
|
|
345
|
+
// same-name actual, fall back to matching by NORMALIZED EXPRESSION so an
|
|
346
|
+
// already-enforced constraint is not re-proposed as add-check (and its actual is not
|
|
347
|
+
// re-proposed as drop-check). The fallback scans ALL still-unconsumed actual checks,
|
|
348
|
+
// so it also reconciles a name-MISMATCHED actual (a check the DB named differently
|
|
349
|
+
// than the model's generated `<table>_<col>_chk`), not only truly-anonymous ones —
|
|
350
|
+
// beneficial and safe: the name-keyed pass runs first, so a genuine expression change
|
|
351
|
+
// on a name-matched check is still caught as drop+add. Postgres constraints are always
|
|
352
|
+
// named, so it keeps the exact name-keyed behavior (exprFallback off).
|
|
353
|
+
const exprFallback = dialect === "sqlite" || dialect === "d1";
|
|
354
|
+
const actualByName = new Map(actual.checks.filter((c) => c.name !== "").map((c) => [c.name, c]));
|
|
355
|
+
const consumed = new Set();
|
|
356
|
+
for (const ec of expected.checks) {
|
|
357
|
+
const ac = actualByName.get(ec.name);
|
|
358
|
+
if (ac) {
|
|
359
|
+
consumed.add(ac);
|
|
360
|
+
if (!checkExprEquals(ec.expression, ac.expression)) {
|
|
361
|
+
changes.push({ kind: "drop-check", table: expected.name, ...sx, check: ec.name, restore: ac, status: ALLOWED });
|
|
362
|
+
changes.push({ kind: "add-check", table: expected.name, ...sx, check: ec, status: ALLOWED });
|
|
363
|
+
}
|
|
364
|
+
continue;
|
|
323
365
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
366
|
+
if (exprFallback) {
|
|
367
|
+
const match = actual.checks.find((a) => !consumed.has(a) && checkExprEquals(ec.expression, a.expression));
|
|
368
|
+
if (match) {
|
|
369
|
+
consumed.add(match);
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
327
372
|
}
|
|
373
|
+
changes.push({ kind: "add-check", table: expected.name, ...sx, check: ec, status: ALLOWED });
|
|
328
374
|
}
|
|
329
|
-
for (const
|
|
330
|
-
if (
|
|
331
|
-
|
|
332
|
-
}
|
|
375
|
+
for (const ac of actual.checks) {
|
|
376
|
+
if (consumed.has(ac))
|
|
377
|
+
continue;
|
|
378
|
+
changes.push({ kind: "drop-check", table: expected.name, ...sx, check: ac.name, restore: ac, status: ALLOWED });
|
|
333
379
|
}
|
|
334
380
|
}
|
|
335
381
|
function viewIdentity(v) {
|
package/dist/diff/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,13 @@ export declare function sqliteTypeToSqlType(declaredType: string): SqlType;
|
|
|
21
21
|
* Without it the actual side always reported `checks: []` and every expected
|
|
22
22
|
* check re-surfaced as add-check on every single run.
|
|
23
23
|
*
|
|
24
|
-
* Unnamed checks (`CHECK (…)` with no CONSTRAINT clause —
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Unnamed inline checks (`CHECK (…)` with no CONSTRAINT clause — the idiomatic
|
|
25
|
+
* hand-written-migration form) ARE parsed, with an empty name. They have no
|
|
26
|
+
* identity to match by name, so the diff reconciles them by NORMALIZED EXPRESSION
|
|
27
|
+
* on sqlite/d1: an anonymous DB check that already enforces a modeled constraint
|
|
28
|
+
* is matched to the expected named check rather than re-proposed as add-check.
|
|
29
|
+
* (Before, they were skipped entirely, so every modeled check over such a table
|
|
30
|
+
* re-surfaced as false drift on `verify --dialect d1` on every run.)
|
|
27
31
|
*
|
|
28
32
|
* The expression is scanned with balanced parens and string-literal awareness
|
|
29
33
|
* (an enum member may contain `(`/`)`), and returned verbatim — the diff's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-shared.d.ts","sourceRoot":"","sources":["../../src/introspect/sqlite-shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,4BAA4B,2CAK/B,CAAC;AAEX,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"sqlite-shared.d.ts","sourceRoot":"","sources":["../../src/introspect/sqlite-shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,4BAA4B,2CAK/B,CAAC;AAEX,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAiChF;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CA0CjE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,EAAE,CAwCzF;AAiED,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,oBAAoB,GAAG,SAAS,CA+B1G;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,oBAAoB,EAC3B,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,eAAe,CAkBjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAMzD"}
|
|
@@ -7,6 +7,16 @@ export const SQLITE_EXPR_DEFAULT_PATTERNS = [
|
|
|
7
7
|
export function parseSqliteDefault(raw) {
|
|
8
8
|
if (raw === null || raw === undefined || raw === "")
|
|
9
9
|
return undefined;
|
|
10
|
+
// A bare (unquoted) NULL keyword is SQL for "no default": `DEFAULT NULL` is
|
|
11
|
+
// functionally identical to declaring no default at all. It reaches us as the
|
|
12
|
+
// JSON string "null" from the D1/wrangler runner (which stringifies a SQL NULL
|
|
13
|
+
// dflt_value) or as `NULL` from parsed DDL. A GENUINE string literal default of
|
|
14
|
+
// "null" is QUOTED (`'null'`) and is matched by the quoted branch below, so this
|
|
15
|
+
// bare test is unambiguous. Without it every no-default column on D1 reads back a
|
|
16
|
+
// literal "null" default that no metadata field ever declares — permanent, and on
|
|
17
|
+
// SQLite/D1 destructive (recreate-and-copy) false drift on every verify/migrate.
|
|
18
|
+
if (raw.trim().toLowerCase() === "null")
|
|
19
|
+
return undefined;
|
|
10
20
|
// A QUOTE-WRAPPED value is a string literal BY CONSTRUCTION — SQLite always quotes a
|
|
11
21
|
// literal string default. This test MUST come before the expr patterns: one of those
|
|
12
22
|
// patterns is a bare /\(.*\)/, so a perfectly ordinary literal containing parentheses
|
|
@@ -86,9 +96,13 @@ export function sqliteTypeToSqlType(declaredType) {
|
|
|
86
96
|
* Without it the actual side always reported `checks: []` and every expected
|
|
87
97
|
* check re-surfaced as add-check on every single run.
|
|
88
98
|
*
|
|
89
|
-
* Unnamed checks (`CHECK (…)` with no CONSTRAINT clause —
|
|
90
|
-
*
|
|
91
|
-
*
|
|
99
|
+
* Unnamed inline checks (`CHECK (…)` with no CONSTRAINT clause — the idiomatic
|
|
100
|
+
* hand-written-migration form) ARE parsed, with an empty name. They have no
|
|
101
|
+
* identity to match by name, so the diff reconciles them by NORMALIZED EXPRESSION
|
|
102
|
+
* on sqlite/d1: an anonymous DB check that already enforces a modeled constraint
|
|
103
|
+
* is matched to the expected named check rather than re-proposed as add-check.
|
|
104
|
+
* (Before, they were skipped entirely, so every modeled check over such a table
|
|
105
|
+
* re-surfaced as false drift on `verify --dialect d1` on every run.)
|
|
92
106
|
*
|
|
93
107
|
* The expression is scanned with balanced parens and string-literal awareness
|
|
94
108
|
* (an enum member may contain `(`/`)`), and returned verbatim — the diff's
|
|
@@ -98,10 +112,18 @@ export function parseSqliteChecks(createSql) {
|
|
|
98
112
|
if (createSql === null || createSql === undefined || createSql === "")
|
|
99
113
|
return [];
|
|
100
114
|
const out = [];
|
|
101
|
-
|
|
115
|
+
// Find `CHECK (` on a MASKED copy (comments + single-quoted literals blanked to
|
|
116
|
+
// spaces of equal length) so a `CHECK (` appearing inside a `--`/`/* */` comment
|
|
117
|
+
// or a string literal (`DEFAULT 'see CHECK (x)'`) can NEVER be mis-parsed as a
|
|
118
|
+
// constraint. Positions are 1:1, so the balanced expression is sliced from the
|
|
119
|
+
// ORIGINAL (with its real quotes intact).
|
|
120
|
+
const masked = maskCommentsAndStrings(createSql);
|
|
121
|
+
// An optional `CONSTRAINT <name>` prefix then `CHECK (`. Named → group 1/2;
|
|
122
|
+
// bare inline `CHECK (` → name defaults to "" (anonymous, expression-matched).
|
|
123
|
+
const re = /(?:\bCONSTRAINT\s+(?:"((?:[^"]|"")+)"|([A-Za-z_][A-Za-z0-9_$]*))\s+)?\bCHECK\s*\(/gi;
|
|
102
124
|
let m;
|
|
103
|
-
while ((m = re.exec(
|
|
104
|
-
const name = m[1] !== undefined ? m[1].replace(/""/g, '"') : m[2];
|
|
125
|
+
while ((m = re.exec(masked)) !== null) {
|
|
126
|
+
const name = m[1] !== undefined ? m[1].replace(/""/g, '"') : (m[2] ?? "");
|
|
105
127
|
const open = re.lastIndex - 1; // position of the "(" the regex just consumed
|
|
106
128
|
let depth = 0;
|
|
107
129
|
let inString = false;
|
|
@@ -136,6 +158,51 @@ export function parseSqliteChecks(createSql) {
|
|
|
136
158
|
}
|
|
137
159
|
return out;
|
|
138
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Same-length copy of a CREATE TABLE DDL with SQL comments (`--` line, `/* *\/`
|
|
163
|
+
* block) and single-quoted string literals blanked to spaces, so a token scan
|
|
164
|
+
* (e.g. the CHECK finder) cannot match inside them. Double-quoted identifiers are
|
|
165
|
+
* PRESERVED — a constraint or column name may be double-quoted, and none legitimately
|
|
166
|
+
* contains a `CHECK (` token. Positions are unchanged for downstream slicing.
|
|
167
|
+
*/
|
|
168
|
+
function maskCommentsAndStrings(sql) {
|
|
169
|
+
const chars = sql.split("");
|
|
170
|
+
let i = 0;
|
|
171
|
+
const n = sql.length;
|
|
172
|
+
while (i < n) {
|
|
173
|
+
const ch = sql[i];
|
|
174
|
+
if (ch === "'") {
|
|
175
|
+
const end = skipSingleQuoted(sql, i);
|
|
176
|
+
for (let j = i; j < end; j++)
|
|
177
|
+
chars[j] = " ";
|
|
178
|
+
i = end;
|
|
179
|
+
}
|
|
180
|
+
else if (ch === '"') {
|
|
181
|
+
i = skipDoubleQuoted(sql, i); // preserve the identifier verbatim
|
|
182
|
+
}
|
|
183
|
+
else if (ch === "-" && sql[i + 1] === "-") {
|
|
184
|
+
let j = i;
|
|
185
|
+
while (j < n && sql[j] !== "\n") {
|
|
186
|
+
chars[j] = " ";
|
|
187
|
+
j++;
|
|
188
|
+
}
|
|
189
|
+
i = j;
|
|
190
|
+
}
|
|
191
|
+
else if (ch === "/" && sql[i + 1] === "*") {
|
|
192
|
+
let j = i + 2;
|
|
193
|
+
while (j < n && !(sql[j] === "*" && sql[j + 1] === "/"))
|
|
194
|
+
j++;
|
|
195
|
+
const end = Math.min(n, j + 2);
|
|
196
|
+
for (let k = i; k < end; k++)
|
|
197
|
+
chars[k] = " ";
|
|
198
|
+
i = end;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
i++;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return chars.join("");
|
|
205
|
+
}
|
|
139
206
|
/** Skip a single-quoted SQL string starting at `i` (position of the opening
|
|
140
207
|
* quote); returns the position just past the closing quote ('' escapes honored). */
|
|
141
208
|
function skipSingleQuoted(s, i) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-shared.js","sourceRoot":"","sources":["../../src/introspect/sqlite-shared.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;IACjB,QAAQ;CACA,CAAC;AAEX,MAAM,UAAU,kBAAkB,CAAC,GAAkB;IACnD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtE,qFAAqF;IACrF,qFAAqF;IACrF,sFAAsF;IACtF,gFAAgF;IAChF,sFAAsF;IACtF,sFAAsF;IACtF,qFAAqF;IACrF,qFAAqF;IACrF,wBAAwB;IACxB,EAAE;IACF,uFAAuF;IACvF,oFAAoF;IACpF,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,kGAAkG;IAClG,+EAA+E;IAE/E,gBAAgB;IAChB,MAAM,YAAY,GAAG,4CAA4C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;IAC3F,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAE9D,mBAAmB;IACnB,MAAM,QAAQ,GAAG,8CAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAChE,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1C,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAE7F,qEAAqE;IACrE,iFAAiF;IACjF,wEAAwE;IACxE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC7F,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAExD,gBAAgB;IAChB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEtD,gBAAgB;IAChB,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAEtD,4BAA4B;IAC5B,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAE1D,kCAAkC;IAClC,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"sqlite-shared.js","sourceRoot":"","sources":["../../src/introspect/sqlite-shared.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metaobjectsdev/migrate-ts",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.2-rc.1",
|
|
4
4
|
"description": "Schema migration tooling for MetaObjects: diff metadata vs DB and emit SQL for Postgres and SQLite.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@iarna/toml": "^2.2.5",
|
|
48
|
-
"@metaobjectsdev/metadata": "0.20.
|
|
48
|
+
"@metaobjectsdev/metadata": "0.20.2-rc.1"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"kysely": ">=0.27.0"
|
|
@@ -36,7 +36,49 @@ export function normalizeCheckExpr(expr: string): string {
|
|
|
36
36
|
.trim();
|
|
37
37
|
// PG stores `col IN (…)` as `col = ANY (ARRAY[…])`; after the bracket strip above
|
|
38
38
|
// that reads `col = any array …`. Fold it back to the `col in …` form we emit.
|
|
39
|
-
|
|
39
|
+
const folded = stripped.replace(/=\s*any\s+array/g, "in").replace(/\s+/g, " ").trim();
|
|
40
|
+
// Normalize spacing AROUND COMMAS so a generated IN-list (`'a', 'b'`) compares equal
|
|
41
|
+
// to a hand-written one (`'a','b'`) — the separator commas are never semantically
|
|
42
|
+
// meaningful, and a hand SQLite migration omits the space. This is done OUTSIDE
|
|
43
|
+
// single-quoted literals only: a comma inside a string/regex literal (`'a, b'`, or a
|
|
44
|
+
// quantifier `'{1, 3}'`) IS meaningful, so two checks that differ only there must
|
|
45
|
+
// stay distinct (else a real regex/predicate change reads as clean drift).
|
|
46
|
+
return collapseCommaSpacingOutsideQuotes(folded);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Collapse `\s*,\s*` → `,` OUTSIDE single-quoted literals (see normalizeCheckExpr). */
|
|
50
|
+
function collapseCommaSpacingOutsideQuotes(s: string): string {
|
|
51
|
+
let out = "";
|
|
52
|
+
let i = 0;
|
|
53
|
+
const n = s.length;
|
|
54
|
+
while (i < n) {
|
|
55
|
+
const ch = s[i]!;
|
|
56
|
+
if (ch === "'") {
|
|
57
|
+
// Copy the single-quoted literal verbatim ('' escapes honored) — never touched.
|
|
58
|
+
const start = i;
|
|
59
|
+
i++;
|
|
60
|
+
while (i < n) {
|
|
61
|
+
if (s[i] === "'") {
|
|
62
|
+
if (s[i + 1] === "'") { i += 2; continue; }
|
|
63
|
+
i++;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
i++;
|
|
67
|
+
}
|
|
68
|
+
out += s.slice(start, i);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (ch === ",") {
|
|
72
|
+
out = out.replace(/\s+$/, ""); // drop whitespace already emitted before it
|
|
73
|
+
out += ",";
|
|
74
|
+
i++;
|
|
75
|
+
while (i < n && /\s/.test(s[i]!)) i++; // skip whitespace after it
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
out += ch;
|
|
79
|
+
i++;
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
40
82
|
}
|
|
41
83
|
|
|
42
84
|
/** True when two CHECK expressions are equivalent after normalization. */
|
package/src/diff/index.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
ViewDescriptor,
|
|
4
4
|
DependentRelation,
|
|
5
5
|
Change, ChangeStatus, DiffResult, AllowOptions, AmbiguousCallback, Dialect,
|
|
6
|
+
CheckDescriptor,
|
|
6
7
|
} from "../types.js";
|
|
7
8
|
import type { SqlType } from "../sql-type.js";
|
|
8
9
|
import { sqlTypeEquals } from "../sql-type.js";
|
|
@@ -212,7 +213,7 @@ export async function diff(
|
|
|
212
213
|
for (const [id, expectedTable] of expectedTables) {
|
|
213
214
|
const actualTable = actualTables.get(id);
|
|
214
215
|
if (!actualTable) continue;
|
|
215
|
-
diffTableColumns(expectedTable, actualTable, changes);
|
|
216
|
+
diffTableColumns(expectedTable, actualTable, changes, args.dialect);
|
|
216
217
|
diffTableIndexes(expectedTable, actualTable, changes);
|
|
217
218
|
diffTableForeignKeys(expectedTable, actualTable, changes, args.dialect);
|
|
218
219
|
// CHECK constraints on existing tables are evolved whenever a dialect is
|
|
@@ -223,7 +224,7 @@ export async function diff(
|
|
|
223
224
|
// no dialect (legacy positional callers) checks stay un-diffed — those
|
|
224
225
|
// callers may hold hand-built snapshots with empty check lists, and
|
|
225
226
|
// diffing them would re-propose every modeled check forever.
|
|
226
|
-
if (args.dialect !== undefined) diffTableChecks(expectedTable, actualTable, changes);
|
|
227
|
+
if (args.dialect !== undefined) diffTableChecks(expectedTable, actualTable, changes, args.dialect);
|
|
227
228
|
}
|
|
228
229
|
|
|
229
230
|
// Pass 2b: views. Identity is (schema, name). How "changed" is decided is
|
|
@@ -272,10 +273,33 @@ function isDiffArgs(x: DiffArgs | SchemaSnapshot): x is DiffArgs {
|
|
|
272
273
|
return "expected" in x && "actual" in x;
|
|
273
274
|
}
|
|
274
275
|
|
|
276
|
+
/**
|
|
277
|
+
* Collapse a SqlType to what SQLite/D1 can PHYSICALLY store, so the diff never
|
|
278
|
+
* reports drift the database could never represent (and thus could never fix).
|
|
279
|
+
*
|
|
280
|
+
* SQLite/D1 has a single text storage class: `json` is stored as TEXT (no native
|
|
281
|
+
* json type), and a `VARCHAR(N)` length is cosmetic — not enforced — so a bounded
|
|
282
|
+
* and an unbounded text column are the same physical column. Both collapse to bare
|
|
283
|
+
* `text`. The tool's own emit round-trips are unaffected (VARCHAR(8) and TEXT both
|
|
284
|
+
* canon to `text`), while a hand-written `TEXT` column now matches maxLength'd /
|
|
285
|
+
* jsonb metadata. Postgres represents both faithfully and is left exact.
|
|
286
|
+
*/
|
|
287
|
+
function canonTypeForDialect(t: SqlType, dialect: Dialect | undefined): SqlType {
|
|
288
|
+
if (dialect !== "sqlite" && dialect !== "d1") return t;
|
|
289
|
+
if (t.kind === "json") return { kind: "text" };
|
|
290
|
+
if (t.kind === "text" && t.maxLength !== undefined) return { kind: "text" };
|
|
291
|
+
return t;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function sqlTypeEqualsForDialect(a: SqlType, b: SqlType, dialect: Dialect | undefined): boolean {
|
|
295
|
+
return sqlTypeEquals(canonTypeForDialect(a, dialect), canonTypeForDialect(b, dialect));
|
|
296
|
+
}
|
|
297
|
+
|
|
275
298
|
function diffTableColumns(
|
|
276
299
|
expected: TableDescriptor,
|
|
277
300
|
actual: TableDescriptor,
|
|
278
301
|
changes: Change[],
|
|
302
|
+
dialect?: Dialect,
|
|
279
303
|
): void {
|
|
280
304
|
const table = expected.name;
|
|
281
305
|
const sx = schemaSpread(expected.schema);
|
|
@@ -288,8 +312,11 @@ function diffTableColumns(
|
|
|
288
312
|
changes.push({ kind: "add-column", table, ...sx, column: ec, status: ALLOWED });
|
|
289
313
|
continue;
|
|
290
314
|
}
|
|
291
|
-
// Compare type, nullable, default — emit per-aspect change.
|
|
292
|
-
|
|
315
|
+
// Compare type, nullable, default — emit per-aspect change. Type equality is
|
|
316
|
+
// dialect-aware: SQLite/D1 cannot physically represent a VARCHAR length or a
|
|
317
|
+
// native json type, so those distinctions must not read as drift (see
|
|
318
|
+
// canonTypeForDialect). Postgres stays exact.
|
|
319
|
+
if (!sqlTypeEqualsForDialect(ec.sqlType, ac.sqlType, dialect)) {
|
|
293
320
|
changes.push({
|
|
294
321
|
kind: "change-column-type", table, ...sx, column: name,
|
|
295
322
|
from: ac.sqlType, to: ec.sqlType, status: ALLOWED,
|
|
@@ -441,23 +468,46 @@ function diffTableForeignKeys(
|
|
|
441
468
|
}
|
|
442
469
|
}
|
|
443
470
|
|
|
444
|
-
function diffTableChecks(
|
|
471
|
+
function diffTableChecks(
|
|
472
|
+
expected: TableDescriptor,
|
|
473
|
+
actual: TableDescriptor,
|
|
474
|
+
changes: Change[],
|
|
475
|
+
dialect?: Dialect,
|
|
476
|
+
): void {
|
|
445
477
|
const sx = schemaSpread(expected.schema);
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
478
|
+
// SQLite/D1 stores no constraint identity for an inline `CHECK (…)`, so hand-written
|
|
479
|
+
// DDL yields anonymous (empty-name) checks. When an expected named check has no
|
|
480
|
+
// same-name actual, fall back to matching by NORMALIZED EXPRESSION so an
|
|
481
|
+
// already-enforced constraint is not re-proposed as add-check (and its actual is not
|
|
482
|
+
// re-proposed as drop-check). The fallback scans ALL still-unconsumed actual checks,
|
|
483
|
+
// so it also reconciles a name-MISMATCHED actual (a check the DB named differently
|
|
484
|
+
// than the model's generated `<table>_<col>_chk`), not only truly-anonymous ones —
|
|
485
|
+
// beneficial and safe: the name-keyed pass runs first, so a genuine expression change
|
|
486
|
+
// on a name-matched check is still caught as drop+add. Postgres constraints are always
|
|
487
|
+
// named, so it keeps the exact name-keyed behavior (exprFallback off).
|
|
488
|
+
const exprFallback = dialect === "sqlite" || dialect === "d1";
|
|
489
|
+
const actualByName = new Map(actual.checks.filter((c) => c.name !== "").map((c) => [c.name, c]));
|
|
490
|
+
const consumed = new Set<CheckDescriptor>();
|
|
491
|
+
|
|
492
|
+
for (const ec of expected.checks) {
|
|
493
|
+
const ac = actualByName.get(ec.name);
|
|
494
|
+
if (ac) {
|
|
495
|
+
consumed.add(ac);
|
|
496
|
+
if (!checkExprEquals(ec.expression, ac.expression)) {
|
|
497
|
+
changes.push({ kind: "drop-check", table: expected.name, ...sx, check: ec.name, restore: ac, status: ALLOWED });
|
|
498
|
+
changes.push({ kind: "add-check", table: expected.name, ...sx, check: ec, status: ALLOWED });
|
|
499
|
+
}
|
|
500
|
+
continue;
|
|
455
501
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
changes.push({ kind: "drop-check", table: expected.name, ...sx, check: name, restore: ac, status: ALLOWED });
|
|
502
|
+
if (exprFallback) {
|
|
503
|
+
const match = actual.checks.find((a) => !consumed.has(a) && checkExprEquals(ec.expression, a.expression));
|
|
504
|
+
if (match) { consumed.add(match); continue; }
|
|
460
505
|
}
|
|
506
|
+
changes.push({ kind: "add-check", table: expected.name, ...sx, check: ec, status: ALLOWED });
|
|
507
|
+
}
|
|
508
|
+
for (const ac of actual.checks) {
|
|
509
|
+
if (consumed.has(ac)) continue;
|
|
510
|
+
changes.push({ kind: "drop-check", table: expected.name, ...sx, check: ac.name, restore: ac, status: ALLOWED });
|
|
461
511
|
}
|
|
462
512
|
}
|
|
463
513
|
|
|
@@ -18,6 +18,16 @@ export const SQLITE_EXPR_DEFAULT_PATTERNS = [
|
|
|
18
18
|
export function parseSqliteDefault(raw: string | null): ColumnDefault | undefined {
|
|
19
19
|
if (raw === null || raw === undefined || raw === "") return undefined;
|
|
20
20
|
|
|
21
|
+
// A bare (unquoted) NULL keyword is SQL for "no default": `DEFAULT NULL` is
|
|
22
|
+
// functionally identical to declaring no default at all. It reaches us as the
|
|
23
|
+
// JSON string "null" from the D1/wrangler runner (which stringifies a SQL NULL
|
|
24
|
+
// dflt_value) or as `NULL` from parsed DDL. A GENUINE string literal default of
|
|
25
|
+
// "null" is QUOTED (`'null'`) and is matched by the quoted branch below, so this
|
|
26
|
+
// bare test is unambiguous. Without it every no-default column on D1 reads back a
|
|
27
|
+
// literal "null" default that no metadata field ever declares — permanent, and on
|
|
28
|
+
// SQLite/D1 destructive (recreate-and-copy) false drift on every verify/migrate.
|
|
29
|
+
if (raw.trim().toLowerCase() === "null") return undefined;
|
|
30
|
+
|
|
21
31
|
// A QUOTE-WRAPPED value is a string literal BY CONSTRUCTION — SQLite always quotes a
|
|
22
32
|
// literal string default. This test MUST come before the expr patterns: one of those
|
|
23
33
|
// patterns is a bare /\(.*\)/, so a perfectly ordinary literal containing parentheses
|
|
@@ -95,9 +105,13 @@ export function sqliteTypeToSqlType(declaredType: string): SqlType {
|
|
|
95
105
|
* Without it the actual side always reported `checks: []` and every expected
|
|
96
106
|
* check re-surfaced as add-check on every single run.
|
|
97
107
|
*
|
|
98
|
-
* Unnamed checks (`CHECK (…)` with no CONSTRAINT clause —
|
|
99
|
-
*
|
|
100
|
-
*
|
|
108
|
+
* Unnamed inline checks (`CHECK (…)` with no CONSTRAINT clause — the idiomatic
|
|
109
|
+
* hand-written-migration form) ARE parsed, with an empty name. They have no
|
|
110
|
+
* identity to match by name, so the diff reconciles them by NORMALIZED EXPRESSION
|
|
111
|
+
* on sqlite/d1: an anonymous DB check that already enforces a modeled constraint
|
|
112
|
+
* is matched to the expected named check rather than re-proposed as add-check.
|
|
113
|
+
* (Before, they were skipped entirely, so every modeled check over such a table
|
|
114
|
+
* re-surfaced as false drift on `verify --dialect d1` on every run.)
|
|
101
115
|
*
|
|
102
116
|
* The expression is scanned with balanced parens and string-literal awareness
|
|
103
117
|
* (an enum member may contain `(`/`)`), and returned verbatim — the diff's
|
|
@@ -106,10 +120,18 @@ export function sqliteTypeToSqlType(declaredType: string): SqlType {
|
|
|
106
120
|
export function parseSqliteChecks(createSql: string | null | undefined): CheckDescriptor[] {
|
|
107
121
|
if (createSql === null || createSql === undefined || createSql === "") return [];
|
|
108
122
|
const out: CheckDescriptor[] = [];
|
|
109
|
-
|
|
123
|
+
// Find `CHECK (` on a MASKED copy (comments + single-quoted literals blanked to
|
|
124
|
+
// spaces of equal length) so a `CHECK (` appearing inside a `--`/`/* */` comment
|
|
125
|
+
// or a string literal (`DEFAULT 'see CHECK (x)'`) can NEVER be mis-parsed as a
|
|
126
|
+
// constraint. Positions are 1:1, so the balanced expression is sliced from the
|
|
127
|
+
// ORIGINAL (with its real quotes intact).
|
|
128
|
+
const masked = maskCommentsAndStrings(createSql);
|
|
129
|
+
// An optional `CONSTRAINT <name>` prefix then `CHECK (`. Named → group 1/2;
|
|
130
|
+
// bare inline `CHECK (` → name defaults to "" (anonymous, expression-matched).
|
|
131
|
+
const re = /(?:\bCONSTRAINT\s+(?:"((?:[^"]|"")+)"|([A-Za-z_][A-Za-z0-9_$]*))\s+)?\bCHECK\s*\(/gi;
|
|
110
132
|
let m: RegExpExecArray | null;
|
|
111
|
-
while ((m = re.exec(
|
|
112
|
-
const name = m[1] !== undefined ? m[1].replace(/""/g, '"') : m[2]
|
|
133
|
+
while ((m = re.exec(masked)) !== null) {
|
|
134
|
+
const name = m[1] !== undefined ? m[1].replace(/""/g, '"') : (m[2] ?? "");
|
|
113
135
|
const open = re.lastIndex - 1; // position of the "(" the regex just consumed
|
|
114
136
|
let depth = 0;
|
|
115
137
|
let inString = false;
|
|
@@ -137,6 +159,42 @@ export function parseSqliteChecks(createSql: string | null | undefined): CheckDe
|
|
|
137
159
|
return out;
|
|
138
160
|
}
|
|
139
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Same-length copy of a CREATE TABLE DDL with SQL comments (`--` line, `/* *\/`
|
|
164
|
+
* block) and single-quoted string literals blanked to spaces, so a token scan
|
|
165
|
+
* (e.g. the CHECK finder) cannot match inside them. Double-quoted identifiers are
|
|
166
|
+
* PRESERVED — a constraint or column name may be double-quoted, and none legitimately
|
|
167
|
+
* contains a `CHECK (` token. Positions are unchanged for downstream slicing.
|
|
168
|
+
*/
|
|
169
|
+
function maskCommentsAndStrings(sql: string): string {
|
|
170
|
+
const chars = sql.split("");
|
|
171
|
+
let i = 0;
|
|
172
|
+
const n = sql.length;
|
|
173
|
+
while (i < n) {
|
|
174
|
+
const ch = sql[i];
|
|
175
|
+
if (ch === "'") {
|
|
176
|
+
const end = skipSingleQuoted(sql, i);
|
|
177
|
+
for (let j = i; j < end; j++) chars[j] = " ";
|
|
178
|
+
i = end;
|
|
179
|
+
} else if (ch === '"') {
|
|
180
|
+
i = skipDoubleQuoted(sql, i); // preserve the identifier verbatim
|
|
181
|
+
} else if (ch === "-" && sql[i + 1] === "-") {
|
|
182
|
+
let j = i;
|
|
183
|
+
while (j < n && sql[j] !== "\n") { chars[j] = " "; j++; }
|
|
184
|
+
i = j;
|
|
185
|
+
} else if (ch === "/" && sql[i + 1] === "*") {
|
|
186
|
+
let j = i + 2;
|
|
187
|
+
while (j < n && !(sql[j] === "*" && sql[j + 1] === "/")) j++;
|
|
188
|
+
const end = Math.min(n, j + 2);
|
|
189
|
+
for (let k = i; k < end; k++) chars[k] = " ";
|
|
190
|
+
i = end;
|
|
191
|
+
} else {
|
|
192
|
+
i++;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return chars.join("");
|
|
196
|
+
}
|
|
197
|
+
|
|
140
198
|
/** Skip a single-quoted SQL string starting at `i` (position of the opening
|
|
141
199
|
* quote); returns the position just past the closing quote ('' escapes honored). */
|
|
142
200
|
function skipSingleQuoted(s: string, i: number): number {
|