pipework 0.293.0 → 0.294.0
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/CHANGELOG.md +4 -0
- package/REFERENCE.md +9 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +17 -2
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/data/migrate/apply.d.ts +8 -0
- package/dist/data/migrate/apply.d.ts.map +1 -1
- package/dist/data/migrate/apply.js +43 -10
- package/dist/data/migrate/apply.js.map +1 -1
- package/dist/data/migrate/index.d.ts +1 -1
- package/dist/data/migrate/index.d.ts.map +1 -1
- package/dist/data/migrate/index.js +1 -1
- package/dist/data/migrate/index.js.map +1 -1
- package/dist/data/migrate/invalid-indexes.d.ts +51 -0
- package/dist/data/migrate/invalid-indexes.d.ts.map +1 -0
- package/dist/data/migrate/invalid-indexes.js +219 -0
- package/dist/data/migrate/invalid-indexes.js.map +1 -0
- package/dist/data/migrate/run.d.ts +23 -1
- package/dist/data/migrate/run.d.ts.map +1 -1
- package/dist/data/migrate/run.js +38 -0
- package/dist/data/migrate/run.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/migrate.ts +17 -2
- package/src/data/migrate/apply.ts +53 -9
- package/src/data/migrate/index.ts +1 -1
- package/src/data/migrate/invalid-indexes.ts +296 -0
- package/src/data/migrate/run.ts +51 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.294.0
|
|
4
|
+
|
|
5
|
+
- **Fixed: `pipework migrate` repairs the INVALID indexes its own migrations made, and reports the rest** (#1005). A cut `CREATE INDEX CONCURRENTLY` leaves an INVALID index under its name. #1003 dropped it only when a file resumed at that statement, so a cut in a no-transaction file's first statement left no progress mark, the rerun started at 0, and the INVALID index was kept and the file recorded applied (under `IF NOT EXISTS`). Now `migrate` drops an INVALID index of that name before every `CREATE [UNIQUE] INDEX CONCURRENTLY` of a no-transaction file, and refuses to record such a file applied while an index it built is INVALID (the rerun rebuilds it). For damage already in a database, after a run that finishes without error, `migrate` reads every INVALID index and: (a) drops an index an applied migration owns and reruns that migration's own `CREATE` statement, the same repair as #1003, and fails migrate (`InvalidIndexRepairError`, naming the cause, e.g. the duplicate key; the next run does the same, and a pending migration that removes the duplicates runs first) when it cannot be made VALID, the only new non-zero exit; (b) drops a `_ccnew[N]` / `_ccold[N]` leftover whose counterpart, found in the catalog, is an owned VALID index; (c) leaves anything else alone and warns with the `REINDEX INDEX CONCURRENTLY` / `DROP INDEX CONCURRENTLY` statements its owner can run. Indexes on a table with a build running in another session, partitioned parent indexes, extension-owned and system indexes are skipped. `MigrateResult.invalidIndexes` lists each with its case, action, outcome and the printed statements; `invalidIndexReadError` is set when the catalog read failed. `migrate` now holds one session advisory lock per database for the whole run, so a second run at once waits and then finds nothing to apply. `onDropInvalidIndex` / `droppedInvalidIndexes` now also fire for a drop before a first-run build, and the CLI line changes from `resumed "<tag>" at statement N; dropped ...` to `"<tag>" statement N: dropped INVALID index ... before building it again`. An index too big for a deploy window fails that deploy on its first run on this version, like any `CREATE INDEX CONCURRENTLY` migration; run migrate outside the window.
|
|
6
|
+
|
|
3
7
|
## 0.293.0
|
|
4
8
|
|
|
5
9
|
- **Fixed: a handler reply that fails its own output schema answers 500 `OUTPUT_VALIDATION_ERROR`, not 422** (#1021). A route whose handler returned something its declared `.output()` schema refuses (an extra key on a `.strict()` object, a union that lacks the returned branch, a `{ status, body }` whose body fails that status's schema) answered 422 `VALIDATION_ERROR` "Invalid input", blaming a caller whose input was valid, so an agent retried with changed input. It now answers 500 `{ error: { code: 'OUTPUT_VALIDATION_ERROR', message } }`, and the server logs `Handler reply failed its output schema` at error level with the route, the request id and each failing path with the schema's message (never the value), and runs `onInternalError` once. The body carries the failing paths under `error.details.issues` only when `exposeErrorDetails` is on. 422 stays for input that fails the input schema. New `OutputValidationError` (`errors.OutputValidation`, exported from the root) carries the issues; `'response'` is no longer a `ValidationSource`. A job whose handler fails its output schema now fails with `OUTPUT_VALIDATION_ERROR`; job retry is unchanged. A union failure is flattened into its branches' issues, each with its full path (the union's own path prefixed), so the log names the field, for example `kind`.
|
package/REFERENCE.md
CHANGED
|
@@ -920,6 +920,15 @@ An applied migration is immutable: a changed file is refused. The one exception
|
|
|
920
920
|
|
|
921
921
|
A no-transaction file whose `CREATE INDEX CONCURRENTLY` is cut off (client killed, timeout, lost connection) leaves an INVALID index holding the name, and the progress row keeps the file half applied. When the next run resumes at that statement and it is a `CREATE [UNIQUE] INDEX CONCURRENTLY [IF NOT EXISTS] <name> ON <table>`, `migrate` first looks in `pg_index` for an INVALID index of that name on that table (schema resolved from the table as written, search path included) and, if there is one, runs `DROP INDEX CONCURRENTLY IF EXISTS <schema>.<name>`, then reruns the statement. Only the resumed statement's own index is touched, and a VALID index of that name is left alone (the plain form then fails with "already exists" as before). `MigrateResult.droppedInvalidIndexes` (`{ tag, statement, index }`) and `applyMigrations`'s `onDropInvalidIndex` report it, and the CLI prints `resumed "<tag>" at statement N; dropped INVALID index <name> left by the cut build.` A `pg_dump --schema-only` copy omits invalid indexes, so a dry run on one does not show this case.
|
|
922
922
|
|
|
923
|
+
Before every `CREATE [UNIQUE] INDEX CONCURRENTLY` of a no-transaction file (not only a resumed one) `migrate` drops an INVALID index of that name on that table, and it does not record such a file applied while an index the file built is INVALID (the progress mark goes back to that statement, so the rerun rebuilds it).
|
|
924
|
+
|
|
925
|
+
`migrate` holds one session advisory lock per database for the whole run; a second run at once waits, then finds nothing to apply.
|
|
926
|
+
|
|
927
|
+
After a run that finishes without error, `migrate` reads every INVALID index in the database (`pg_index WHERE NOT indisvalid`), except those on a table with a build running in another session (`pg_stat_progress_create_index`), partitioned parent indexes, extension-owned indexes and system schemas, and reports each in `MigrateResult.invalidIndexes` (`{ case, index, table, action, outcome, tag?, statement?, printed, reason? }`):
|
|
928
|
+
- (a) An index an applied migration owns (its schema-qualified name and table match a `CREATE [UNIQUE] INDEX` in an applied file, the latest winning, and no later applied file drops it) is dropped (`DROP INDEX CONCURRENTLY`, with a 30 s `lock_timeout`) and rebuilt with that migration's own `CREATE` statement. If the rebuild fails (for example duplicate rows under a UNIQUE index) `migrate` throws `InvalidIndexRepairError` naming the cause, and the next run does the same; a pending migration that removes the duplicates runs first, so the repair then passes. This is the only case that changes the exit code.
|
|
929
|
+
- (b) A `<name>_ccnew[N]` or `<name>_ccold[N]` leftover of a cut `REINDEX CONCURRENTLY`, whose counterpart (the one index on the table with the same definition, found in the catalog) is an owned, VALID index, is dropped.
|
|
930
|
+
- (c) Anything else (made by hand, by another tool, an unnamed cut build, a leftover of an index no migration owns) is left alone and warned about, with the `REINDEX INDEX CONCURRENTLY` and `DROP INDEX CONCURRENTLY` statements its owner can run (only the drop for a leftover whose counterpart is VALID). `invalidIndexReadError` is set when the catalog read failed and nothing was checked.
|
|
931
|
+
|
|
923
932
|
### `pipe.migrateOne`
|
|
924
933
|
|
|
925
934
|
Runs migrations for a single named database.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAG7E,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC,GAAG,MAAM,GAAG,IAAI,CAmBhB;
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAG7E,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC,GAAG,MAAM,GAAG,IAAI,CAmBhB;AA4CD,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAQrD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAElD"}
|
|
@@ -92,8 +92,23 @@ function reportResumed(result) {
|
|
|
92
92
|
`${r.totalStatements} — a previous run stopped mid-file.`);
|
|
93
93
|
}
|
|
94
94
|
for (const d of result.droppedInvalidIndexes) {
|
|
95
|
-
warn(`${result.database}:
|
|
96
|
-
`left by
|
|
95
|
+
warn(`${result.database}: "${d.tag}" statement ${d.statement}: dropped INVALID index ${d.index} ` +
|
|
96
|
+
`left by a cut build before building it again.`);
|
|
97
|
+
}
|
|
98
|
+
for (const i of result.invalidIndexes) {
|
|
99
|
+
if (i.case === 'a' && i.outcome === 'repaired') {
|
|
100
|
+
warn(`${result.database}: rebuilt INVALID index ${i.index} with the statement from "${i.tag}".`);
|
|
101
|
+
}
|
|
102
|
+
else if (i.case === 'b' && i.outcome === 'repaired') {
|
|
103
|
+
warn(`${result.database}: dropped INVALID leftover ${i.index}; ${i.reason}.`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
warn(`${result.database}: INVALID index ${i.index} on ${i.table} was left alone: ${i.reason}. ` +
|
|
107
|
+
`Its owner can run: ${i.printed.join(' ; ')}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (result.invalidIndexReadError !== null) {
|
|
111
|
+
warn(`${result.database}: could not check for INVALID indexes: ${result.invalidIndexReadError}`);
|
|
97
112
|
}
|
|
98
113
|
}
|
|
99
114
|
function reportFrameworkTables(result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,6 +99,14 @@ export declare function parseCreateIndexConcurrently(statement: string): {
|
|
|
99
99
|
index: string;
|
|
100
100
|
table: string;
|
|
101
101
|
} | null;
|
|
102
|
+
/**
|
|
103
|
+
* Like `parseCreateIndexConcurrently`, for a CREATE [UNIQUE] INDEX with or
|
|
104
|
+
* without CONCURRENTLY. Null for any other statement or an unnamed index.
|
|
105
|
+
*/
|
|
106
|
+
export declare function parseCreateIndex(statement: string): {
|
|
107
|
+
index: string;
|
|
108
|
+
table: string;
|
|
109
|
+
} | null;
|
|
102
110
|
/**
|
|
103
111
|
* Rewrite every `CREATE TABLE` (including the `IF NOT EXISTS` form) to
|
|
104
112
|
* `CREATE UNLOGGED TABLE`. Used only when applying schema to a test database —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/apply.ts"],"names":[],"mappings":"AASA,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxG;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5E;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CACjG;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/apply.ts"],"names":[],"mappings":"AASA,qFAAqF;AACrF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxG;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5E;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CACjG;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,gGAAgG;IAChG,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA+L5E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,CA8BjE;AAeD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EACpD,eAAe,EAAE,MAAM,GACtB,MAAM,CAiBR;AAgBD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIvG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI3F;AAuCD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -114,16 +114,15 @@ export async function applyMigrations(options) {
|
|
|
114
114
|
if (from > 0)
|
|
115
115
|
options.onResume?.(migration.tag, from + 1, migration.statements.length);
|
|
116
116
|
for (let i = from; i < migration.statements.length; i++) {
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
117
|
+
// Before every CREATE INDEX CONCURRENTLY, not only a resumed one: a
|
|
118
|
+
// cut build leaves the name held by an INVALID index, which the plain
|
|
119
|
+
// form fails on ("already exists") and IF NOT EXISTS silently keeps,
|
|
120
|
+
// and a cut in a file's first statement leaves no progress mark, so
|
|
121
|
+
// the rerun starts at 0. Only the statement's own index; a VALID
|
|
122
|
+
// index of that name is left alone. Issues #1003, #1005.
|
|
123
|
+
const dropped = await dropInvalidIndexOf(client, migration.statements[i]);
|
|
124
|
+
if (dropped !== null)
|
|
125
|
+
options.onDropInvalidIndex?.(migration.tag, i + 1, dropped);
|
|
127
126
|
await inStatement(migration.tag, i + 1, migration.statements.length, () => client.unsafe(migration.statements[i]));
|
|
128
127
|
// Recorded AFTER the statement it describes: marking first would let
|
|
129
128
|
// a death between the mark and the statement skip work silently,
|
|
@@ -134,6 +133,23 @@ export async function applyMigrations(options) {
|
|
|
134
133
|
ON CONFLICT (tag) DO UPDATE SET statements_done = EXCLUDED.statements_done, updated_at = now()`, [migration.tag, migration.hash, i + 1]);
|
|
135
134
|
options.onStatement?.(migration.tag, i + 1, migration.statements.length, applied + 1, migrations.length);
|
|
136
135
|
}
|
|
136
|
+
// Never record a file applied while an index it built is INVALID.
|
|
137
|
+
// The progress mark goes back to that statement, so the rerun drops
|
|
138
|
+
// the index and builds it again. Issue #1005.
|
|
139
|
+
for (const [i, statement] of migration.statements.entries()) {
|
|
140
|
+
// Only builds the rerun can repair: `CREATE INDEX ... ON ONLY parent` is
|
|
141
|
+
// INVALID until every partition's index attaches, and no rerun fixes that.
|
|
142
|
+
const target = parseCreateIndexConcurrently(statement);
|
|
143
|
+
if (target === null)
|
|
144
|
+
continue;
|
|
145
|
+
if (await isInvalidIndex(client, target)) {
|
|
146
|
+
await client.unsafe(`INSERT INTO ${progress} (tag, hash, statements_done) VALUES ($1, $2, $3)
|
|
147
|
+
ON CONFLICT (tag) DO UPDATE SET statements_done = EXCLUDED.statements_done, updated_at = now()`, [migration.tag, migration.hash, i]);
|
|
148
|
+
throw new Error(`Migration "${migration.tag}" statement ${i + 1} built index ${target.index} on ${target.table}, ` +
|
|
149
|
+
`but the index is INVALID, so the migration is not recorded as applied. The next run drops it ` +
|
|
150
|
+
`and builds it again.`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
137
153
|
await client.unsafe(`INSERT INTO ${table} ("hash", "created_at", "tag") VALUES ($1, $2, $3)`, [migration.hash, migration.folderMillis, migration.tag]);
|
|
138
154
|
await client.unsafe(`DELETE FROM ${progress} WHERE tag = $1`, [migration.tag]);
|
|
139
155
|
}
|
|
@@ -232,6 +248,7 @@ export function resumePoint(migration, recorded, migrationsTable) {
|
|
|
232
248
|
return Math.min(recorded.done, migration.statements.length);
|
|
233
249
|
}
|
|
234
250
|
const IDENT = String.raw `"(?:[^"]|"")+"|[A-Za-z_][A-Za-z0-9_$]*`;
|
|
251
|
+
const CREATE_INDEX_RE = new RegExp(String.raw `^\s*CREATE\s+(?:UNIQUE\s+)?INDEX\s+(?:CONCURRENTLY\s+)?(?:IF\s+NOT\s+EXISTS\s+)?(${IDENT})\s+ON\s+(?:ONLY\s+)?((?:${IDENT})(?:\s*\.\s*(?:${IDENT}))?)`, 'i');
|
|
235
252
|
const CREATE_INDEX_CONCURRENTLY_RE = new RegExp(String.raw `^\s*CREATE\s+(?:UNIQUE\s+)?INDEX\s+CONCURRENTLY\s+(?:IF\s+NOT\s+EXISTS\s+)?(${IDENT})\s+ON\s+(?:ONLY\s+)?((?:${IDENT})(?:\s*\.\s*(?:${IDENT}))?)`, 'i');
|
|
236
253
|
function unquoteIdent(token) {
|
|
237
254
|
return token.startsWith('"') ? token.slice(1, -1).replace(/""/g, '"') : token.toLowerCase();
|
|
@@ -247,6 +264,22 @@ export function parseCreateIndexConcurrently(statement) {
|
|
|
247
264
|
return null;
|
|
248
265
|
return { index: unquoteIdent(match[1]), table: match[2] };
|
|
249
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Like `parseCreateIndexConcurrently`, for a CREATE [UNIQUE] INDEX with or
|
|
269
|
+
* without CONCURRENTLY. Null for any other statement or an unnamed index.
|
|
270
|
+
*/
|
|
271
|
+
export function parseCreateIndex(statement) {
|
|
272
|
+
const match = CREATE_INDEX_RE.exec(stripComments(statement));
|
|
273
|
+
if (match === null)
|
|
274
|
+
return null;
|
|
275
|
+
return { index: unquoteIdent(match[1]), table: match[2] };
|
|
276
|
+
}
|
|
277
|
+
/** True when an index of this name on this table exists and is INVALID. */
|
|
278
|
+
async function isInvalidIndex(client, target) {
|
|
279
|
+
const found = await client.unsafe(`SELECT 1 AS one FROM pg_index i JOIN pg_class c ON c.oid = i.indexrelid
|
|
280
|
+
WHERE c.relname = $1 AND NOT i.indisvalid AND i.indrelid = to_regclass($2)`, [target.index, target.table]);
|
|
281
|
+
return found.length > 0;
|
|
282
|
+
}
|
|
250
283
|
/**
|
|
251
284
|
* Drop the INVALID index a cut CREATE INDEX CONCURRENTLY left under the name
|
|
252
285
|
* this statement is about to create, on the statement's own table. Returns the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/data/migrate/apply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/data/migrate/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { migrateAll, migrateOne, UnsafeMigrationError, type MigrateResult, type MigrateOptions } from './run.js';
|
|
1
|
+
export { migrateAll, migrateOne, UnsafeMigrationError, InvalidIndexRepairError, type InvalidIndex, type MigrateResult, type MigrateOptions } from './run.js';
|
|
2
2
|
export { checkMigrations, formatCheckResult, type MigrationCheckResult, type FileHazards, type MigrationHazard, type Severity } from './check.js';
|
|
3
3
|
export { hasPragma, PRAGMA_FOR, type PragmaKind } from './pragma.js';
|
|
4
4
|
export { readAppliedState, type AppliedState } from './applied.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAA;AAC5J,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AACjJ,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { migrateAll, migrateOne, UnsafeMigrationError } from './run.js';
|
|
1
|
+
export { migrateAll, migrateOne, UnsafeMigrationError, InvalidIndexRepairError } from './run.js';
|
|
2
2
|
export { checkMigrations, formatCheckResult } from './check.js';
|
|
3
3
|
export { hasPragma, PRAGMA_FOR } from './pragma.js';
|
|
4
4
|
export { readAppliedState } from './applied.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/migrate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/migrate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,uBAAuB,EAA8D,MAAM,UAAU,CAAA;AAC5J,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoF,MAAM,YAAY,CAAA;AACjJ,OAAO,EAAE,SAAS,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAqB,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAuB,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What migrate does with an INVALID index met in a database it migrated.
|
|
3
|
+
* Issue #1005.
|
|
4
|
+
*
|
|
5
|
+
* - `a`: an index a migration owns. Dropped and rebuilt with the migration's
|
|
6
|
+
* own CREATE statement.
|
|
7
|
+
* - `b`: a `_ccnew` / `_ccold` leftover of an owned index whose counterpart is
|
|
8
|
+
* VALID. Dropped.
|
|
9
|
+
* - `c`: anything else. Nothing is touched; the statements to run are printed.
|
|
10
|
+
*/
|
|
11
|
+
export interface InvalidIndex {
|
|
12
|
+
case: 'a' | 'b' | 'c';
|
|
13
|
+
/** Schema-qualified, quoted. */
|
|
14
|
+
index: string;
|
|
15
|
+
/** Schema-qualified, quoted. */
|
|
16
|
+
table: string;
|
|
17
|
+
/** What migrate did: rebuilt (a), dropped the leftover (b), or nothing (c). */
|
|
18
|
+
action: 'rebuilt' | 'dropped' | 'none';
|
|
19
|
+
outcome: 'repaired' | 'failed' | 'warned';
|
|
20
|
+
/** For (a): the tag of the migration whose CREATE was rerun. */
|
|
21
|
+
tag?: string;
|
|
22
|
+
/** For (a): the statement rerun. */
|
|
23
|
+
statement?: string;
|
|
24
|
+
/** For (c) and a failed (a): the statements its owner can run. */
|
|
25
|
+
printed: string[];
|
|
26
|
+
/** Why migrate left it alone, or what failed. */
|
|
27
|
+
reason?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface InvalidIndexReport {
|
|
30
|
+
indexes: InvalidIndex[];
|
|
31
|
+
/** Set when the catalog read failed; nothing was checked. */
|
|
32
|
+
readError: string | null;
|
|
33
|
+
}
|
|
34
|
+
export declare class InvalidIndexRepairError extends Error {
|
|
35
|
+
readonly indexes: InvalidIndex[];
|
|
36
|
+
readonly name = "InvalidIndexRepairError";
|
|
37
|
+
constructor(indexes: InvalidIndex[], message: string);
|
|
38
|
+
}
|
|
39
|
+
export interface RepairOptions {
|
|
40
|
+
migrationsFolder: string;
|
|
41
|
+
migrationsTable: string;
|
|
42
|
+
connectionUrl: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Repair the INVALID indexes the applied migrations made, and report the rest.
|
|
46
|
+
* Called once per database after `applyMigrations` finished without error,
|
|
47
|
+
* while the run's advisory lock is held. Throws `InvalidIndexRepairError` when
|
|
48
|
+
* an owned index cannot be made VALID. Issue #1005.
|
|
49
|
+
*/
|
|
50
|
+
export declare function repairInvalidIndexes(options: RepairOptions): Promise<InvalidIndexReport>;
|
|
51
|
+
//# sourceMappingURL=invalid-indexes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-indexes.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/invalid-indexes.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IACrB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACzC,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAG9B,OAAO,EAAE,YAAY,EAAE;IAFzC,SAAkB,IAAI,6BAA4B;gBAEhC,OAAO,EAAE,YAAY,EAAE,EACvC,OAAO,EAAE,MAAM;CAIlB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACtB;AA4GD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgI9F"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import postgres, {} from 'postgres';
|
|
2
|
+
import { stripComments } from './statements.js';
|
|
3
|
+
import { parseCreateIndex, readMigrations } from './apply.js';
|
|
4
|
+
export class InvalidIndexRepairError extends Error {
|
|
5
|
+
indexes;
|
|
6
|
+
name = 'InvalidIndexRepairError';
|
|
7
|
+
constructor(indexes, message) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.indexes = indexes;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const LOCK_TIMEOUT = '30s';
|
|
13
|
+
const LEFTOVER_RE = /_cc(?:new|old)\d*$/;
|
|
14
|
+
const IDENT = String.raw `"(?:[^"]|"")+"|[A-Za-z_][A-Za-z0-9_$]*`;
|
|
15
|
+
const DROP_INDEX_RE = new RegExp(String.raw `^\s*DROP\s+INDEX\s+(?:CONCURRENTLY\s+)?(?:IF\s+EXISTS\s+)?((?:(?:${IDENT})(?:\s*\.\s*(?:${IDENT}))?\s*,?\s*)+)`, 'i');
|
|
16
|
+
function quoteIdent(name) {
|
|
17
|
+
return `"${name.replace(/"/g, '""')}"`;
|
|
18
|
+
}
|
|
19
|
+
function unquoteIdent(token) {
|
|
20
|
+
return token.startsWith('"') ? token.slice(1, -1).replace(/""/g, '"') : token.toLowerCase();
|
|
21
|
+
}
|
|
22
|
+
/** The (schema?, name) pairs a DROP INDEX statement names; empty for any other statement. */
|
|
23
|
+
function parseDropIndex(statement) {
|
|
24
|
+
const match = DROP_INDEX_RE.exec(stripComments(statement));
|
|
25
|
+
if (match === null)
|
|
26
|
+
return [];
|
|
27
|
+
const tokens = match[1].match(new RegExp(`(?:${IDENT})(?:\\s*\\.\\s*(?:${IDENT}))?`, 'g')) ?? [];
|
|
28
|
+
return tokens.map((token) => {
|
|
29
|
+
const parts = token.match(new RegExp(IDENT, 'g'));
|
|
30
|
+
return parts.length === 2
|
|
31
|
+
? { schema: unquoteIdent(parts[0]), name: unquoteIdent(parts[1]) }
|
|
32
|
+
: { schema: null, name: unquoteIdent(parts[0]) };
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** An index definition with its own name removed, so a leftover compares equal to its counterpart. */
|
|
36
|
+
function nameless(def) {
|
|
37
|
+
return def.replace(/^(CREATE (?:UNIQUE )?INDEX )(?:"(?:[^"]|"")+"|\S+)( ON )/, '$1$2');
|
|
38
|
+
}
|
|
39
|
+
const INVALID_INDEXES = `
|
|
40
|
+
SELECT i.indexrelid::text AS oid, i.indrelid::text AS "tableOid", n.nspname AS schema, c.relname AS name,
|
|
41
|
+
tn.nspname AS "tableSchema", t.relname AS "table", pg_get_indexdef(i.indexrelid) AS def
|
|
42
|
+
FROM pg_index i
|
|
43
|
+
JOIN pg_class c ON c.oid = i.indexrelid
|
|
44
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
45
|
+
JOIN pg_class t ON t.oid = i.indrelid
|
|
46
|
+
JOIN pg_namespace tn ON tn.oid = t.relnamespace
|
|
47
|
+
WHERE NOT i.indisvalid
|
|
48
|
+
AND c.relkind = 'i'
|
|
49
|
+
AND n.nspname <> 'information_schema' AND n.nspname NOT LIKE 'pg\\_%'
|
|
50
|
+
AND NOT EXISTS (SELECT 1 FROM pg_depend d
|
|
51
|
+
WHERE d.classid = 'pg_class'::regclass AND d.objid = i.indexrelid AND d.deptype = 'e')
|
|
52
|
+
AND NOT EXISTS (SELECT 1 FROM pg_stat_progress_create_index p WHERE p.relid = i.indrelid)
|
|
53
|
+
ORDER BY n.nspname, c.relname`;
|
|
54
|
+
async function building(client, tableOid) {
|
|
55
|
+
const rows = await client.unsafe(`SELECT 1 FROM pg_stat_progress_create_index WHERE relid = $1::oid`, [tableOid]);
|
|
56
|
+
return rows.length > 0;
|
|
57
|
+
}
|
|
58
|
+
/** The applied migrations' CREATE INDEX statements that still stand, keyed by table oid and index name. */
|
|
59
|
+
async function ownedIndexes(client, options) {
|
|
60
|
+
const applied = new Set((await client.unsafe(`SELECT tag FROM ${quoteIdent(options.migrationsTable)} WHERE tag IS NOT NULL`)).map((r) => r.tag));
|
|
61
|
+
const owned = new Map();
|
|
62
|
+
for (const migration of readMigrations(options)) {
|
|
63
|
+
if (!applied.has(migration.tag))
|
|
64
|
+
continue;
|
|
65
|
+
for (const statement of migration.statements) {
|
|
66
|
+
const create = parseCreateIndex(statement);
|
|
67
|
+
if (create !== null) {
|
|
68
|
+
const [table] = await client.unsafe(`SELECT c.oid::text AS oid, n.nspname AS schema FROM pg_class c
|
|
69
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.oid = to_regclass($1)`, [create.table]);
|
|
70
|
+
if (table !== undefined)
|
|
71
|
+
owned.set(`${table.oid}:${create.index}`, { tag: migration.tag, statement, schema: table.schema });
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
for (const dropped of parseDropIndex(statement)) {
|
|
75
|
+
for (const [key, owner] of owned) {
|
|
76
|
+
if (key.endsWith(`:${dropped.name}`) && (dropped.schema === null || dropped.schema === owner.schema)) {
|
|
77
|
+
owned.delete(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return owned;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Repair the INVALID indexes the applied migrations made, and report the rest.
|
|
87
|
+
* Called once per database after `applyMigrations` finished without error,
|
|
88
|
+
* while the run's advisory lock is held. Throws `InvalidIndexRepairError` when
|
|
89
|
+
* an owned index cannot be made VALID. Issue #1005.
|
|
90
|
+
*/
|
|
91
|
+
export async function repairInvalidIndexes(options) {
|
|
92
|
+
const client = postgres(options.connectionUrl, { max: 1, onnotice: () => { } });
|
|
93
|
+
try {
|
|
94
|
+
let rows;
|
|
95
|
+
let owned;
|
|
96
|
+
try {
|
|
97
|
+
rows = await client.unsafe(INVALID_INDEXES);
|
|
98
|
+
owned = rows.length === 0 ? new Map() : await ownedIndexes(client, options);
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
return { indexes: [], readError: err instanceof Error ? err.message : String(err) };
|
|
102
|
+
}
|
|
103
|
+
const qualified = (schema, name) => `${quoteIdent(schema)}.${quoteIdent(name)}`;
|
|
104
|
+
const results = [];
|
|
105
|
+
const failures = [];
|
|
106
|
+
const ownedKey = (r) => `${r.tableOid}:${r.name}`;
|
|
107
|
+
const printed = (r, rebuild) => [
|
|
108
|
+
...(rebuild ? [`REINDEX INDEX CONCURRENTLY ${qualified(r.schema, r.name)}`] : []),
|
|
109
|
+
`DROP INDEX CONCURRENTLY ${qualified(r.schema, r.name)}`,
|
|
110
|
+
];
|
|
111
|
+
// (a) owned: drop and rerun the migration's own CREATE.
|
|
112
|
+
const leftovers = [];
|
|
113
|
+
for (const row of rows) {
|
|
114
|
+
const owner = owned.get(ownedKey(row));
|
|
115
|
+
if (owner === undefined) {
|
|
116
|
+
if (LEFTOVER_RE.test(row.name))
|
|
117
|
+
leftovers.push(row);
|
|
118
|
+
else {
|
|
119
|
+
results.push({
|
|
120
|
+
case: 'c', index: qualified(row.schema, row.name), table: qualified(row.tableSchema, row.table),
|
|
121
|
+
action: 'none', outcome: 'warned', printed: printed(row, true),
|
|
122
|
+
reason: 'no applied migration owns this index',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Another session may have started a build on the table since the read.
|
|
128
|
+
if (await building(client, row.tableOid))
|
|
129
|
+
continue;
|
|
130
|
+
const entry = {
|
|
131
|
+
case: 'a', index: qualified(row.schema, row.name), table: qualified(row.tableSchema, row.table),
|
|
132
|
+
action: 'rebuilt', outcome: 'repaired', tag: owner.tag, statement: owner.statement, printed: [],
|
|
133
|
+
};
|
|
134
|
+
try {
|
|
135
|
+
await client.unsafe(`SET lock_timeout = '${LOCK_TIMEOUT}'`);
|
|
136
|
+
try {
|
|
137
|
+
await client.unsafe(`DROP INDEX CONCURRENTLY IF EXISTS ${entry.index}`);
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
await client.unsafe('RESET lock_timeout');
|
|
141
|
+
}
|
|
142
|
+
await client.unsafe(owner.statement);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
146
|
+
const extra = err.detail;
|
|
147
|
+
entry.outcome = 'failed';
|
|
148
|
+
entry.reason = typeof extra === 'string' ? `${detail} (${extra})` : detail;
|
|
149
|
+
entry.printed = printed(row, true);
|
|
150
|
+
failures.push(`${entry.index} (rerunning "${owner.tag}"): ${entry.reason}`);
|
|
151
|
+
}
|
|
152
|
+
results.push(entry);
|
|
153
|
+
}
|
|
154
|
+
// (b) / (c) leftovers, classified against the table's indexes as they stand after (a).
|
|
155
|
+
const byTable = new Map();
|
|
156
|
+
for (const row of leftovers) {
|
|
157
|
+
if (!byTable.has(row.tableOid)) {
|
|
158
|
+
byTable.set(row.tableOid, await client.unsafe(`SELECT c.relname AS name, n.nspname AS schema, i.indisvalid AS valid, pg_get_indexdef(i.indexrelid) AS def
|
|
159
|
+
FROM pg_index i JOIN pg_class c ON c.oid = i.indexrelid
|
|
160
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace WHERE i.indrelid = $1::oid`, [row.tableOid]));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
for (const row of leftovers) {
|
|
164
|
+
const own = nameless(row.def);
|
|
165
|
+
const matches = byTable.get(row.tableOid).filter((o) => o.name !== row.name && nameless(o.def) === own);
|
|
166
|
+
const counterpart = matches.length === 1 ? matches[0] : undefined;
|
|
167
|
+
const base = { index: qualified(row.schema, row.name), table: qualified(row.tableSchema, row.table) };
|
|
168
|
+
if (counterpart === undefined) {
|
|
169
|
+
results.push({
|
|
170
|
+
case: 'c', ...base, action: 'none', outcome: 'warned', printed: printed(row, true),
|
|
171
|
+
reason: matches.length === 0
|
|
172
|
+
? 'a leftover of an index build or rebuild, and no index on the table matches it'
|
|
173
|
+
: 'a leftover of an index build or rebuild, and more than one index on the table matches it',
|
|
174
|
+
});
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const counterpartOwned = owned.has(`${row.tableOid}:${counterpart.name}`);
|
|
178
|
+
if (!counterpartOwned || !counterpart.valid) {
|
|
179
|
+
results.push({
|
|
180
|
+
case: 'c', ...base, action: 'none', outcome: 'warned', printed: printed(row, !counterpart.valid),
|
|
181
|
+
reason: counterpartOwned
|
|
182
|
+
? `a leftover of ${qualified(counterpart.schema, counterpart.name)}, which is not valid`
|
|
183
|
+
: `a leftover of ${qualified(counterpart.schema, counterpart.name)}, which no applied migration owns`,
|
|
184
|
+
});
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (await building(client, row.tableOid))
|
|
188
|
+
continue;
|
|
189
|
+
const entry = { case: 'b', ...base, action: 'dropped', outcome: 'repaired', printed: [],
|
|
190
|
+
reason: `a leftover of ${qualified(counterpart.schema, counterpart.name)}, which stays in use` };
|
|
191
|
+
try {
|
|
192
|
+
await client.unsafe(`SET lock_timeout = '${LOCK_TIMEOUT}'`);
|
|
193
|
+
try {
|
|
194
|
+
await client.unsafe(`DROP INDEX CONCURRENTLY IF EXISTS ${base.index}`);
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
await client.unsafe('RESET lock_timeout');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
entry.outcome = 'failed';
|
|
202
|
+
entry.action = 'none';
|
|
203
|
+
entry.reason = err instanceof Error ? err.message : String(err);
|
|
204
|
+
entry.printed = printed(row, false);
|
|
205
|
+
}
|
|
206
|
+
results.push(entry);
|
|
207
|
+
}
|
|
208
|
+
if (failures.length > 0) {
|
|
209
|
+
throw new InvalidIndexRepairError(results, `migrate could not make ${failures.length} INVALID ${failures.length === 1 ? 'index' : 'indexes'} ` +
|
|
210
|
+
`its migrations built valid:\n ${failures.join('\n ')}\n` +
|
|
211
|
+
`The next run drops each and builds it again; fix the cause first (for a UNIQUE index, the duplicate rows).`);
|
|
212
|
+
}
|
|
213
|
+
return { indexes: results, readError: null };
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
await client.end();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=invalid-indexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-indexes.js","sourceRoot":"","sources":["../../../src/data/migrate/invalid-indexes.ts"],"names":[],"mappings":"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"}
|