chkit 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 +69 -56
- package/dist/bin/chkit.js +57 -26
- package/dist/bin/chkit.js.map +1 -1
- package/dist/commands/drift/compare.d.ts +26 -2
- package/dist/commands/drift/compare.d.ts.map +1 -1
- package/dist/commands/drift/compare.js +147 -41
- package/dist/commands/drift/compare.js.map +1 -1
- package/dist/commands/drift/payload.d.ts.map +1 -1
- package/dist/commands/drift/payload.js +39 -8
- package/dist/commands/drift/payload.js.map +1 -1
- package/dist/commands/generate/command.d.ts.map +1 -1
- package/dist/commands/generate/command.js +20 -22
- package/dist/commands/generate/command.js.map +1 -1
- package/dist/commands/generate/dictionary-password-warnings.d.ts +3 -0
- package/dist/commands/generate/dictionary-password-warnings.d.ts.map +1 -0
- package/dist/commands/generate/dictionary-password-warnings.js +7 -0
- package/dist/commands/generate/dictionary-password-warnings.js.map +1 -0
- package/dist/commands/generate/output.d.ts +2 -2
- package/dist/commands/generate/output.d.ts.map +1 -1
- package/dist/commands/generate/output.js +8 -2
- package/dist/commands/generate/output.js.map +1 -1
- package/dist/commands/generate/plan-pipeline.d.ts +2 -1
- package/dist/commands/generate/plan-pipeline.d.ts.map +1 -1
- package/dist/commands/generate/plan-pipeline.js +69 -27
- package/dist/commands/generate/plan-pipeline.js.map +1 -1
- package/dist/commands/generate/rename-mappings.d.ts +14 -0
- package/dist/commands/generate/rename-mappings.d.ts.map +1 -1
- package/dist/commands/generate/rename-mappings.js +131 -19
- package/dist/commands/generate/rename-mappings.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate/abandon.d.ts +38 -0
- package/dist/commands/migrate/abandon.d.ts.map +1 -0
- package/dist/commands/migrate/abandon.js +75 -0
- package/dist/commands/migrate/abandon.js.map +1 -0
- package/dist/commands/migrate/apply.d.ts +7 -0
- package/dist/commands/migrate/apply.d.ts.map +1 -1
- package/dist/commands/migrate/apply.js +45 -6
- package/dist/commands/migrate/apply.js.map +1 -1
- package/dist/commands/migrate/async-apply.d.ts.map +1 -1
- package/dist/commands/migrate/async-apply.js +78 -16
- package/dist/commands/migrate/async-apply.js.map +1 -1
- package/dist/commands/migrate/command.d.ts +44 -1
- package/dist/commands/migrate/command.d.ts.map +1 -1
- package/dist/commands/migrate/command.js +148 -34
- package/dist/commands/migrate/command.js.map +1 -1
- package/dist/commands/migrate/empty.d.ts +8 -0
- package/dist/commands/migrate/empty.d.ts.map +1 -0
- package/dist/commands/migrate/empty.js +17 -0
- package/dist/commands/migrate/empty.js.map +1 -0
- package/dist/commands/migrate/errors.d.ts +22 -0
- package/dist/commands/migrate/errors.d.ts.map +1 -0
- package/dist/commands/migrate/errors.js +31 -0
- package/dist/commands/migrate/errors.js.map +1 -0
- package/dist/commands/migrate/output.d.ts +31 -0
- package/dist/commands/migrate/output.d.ts.map +1 -1
- package/dist/commands/migrate/output.js +120 -9
- package/dist/commands/migrate/output.js.map +1 -1
- package/dist/commands/migrate/prompts.d.ts +1 -0
- package/dist/commands/migrate/prompts.d.ts.map +1 -1
- package/dist/commands/migrate/prompts.js +3 -0
- package/dist/commands/migrate/prompts.js.map +1 -1
- package/dist/commands/migrate/recovery.d.ts +90 -0
- package/dist/commands/migrate/recovery.d.ts.map +1 -0
- package/dist/commands/migrate/recovery.js +163 -0
- package/dist/commands/migrate/recovery.js.map +1 -0
- package/dist/commands/migrate/retry.d.ts +37 -0
- package/dist/commands/migrate/retry.d.ts.map +1 -0
- package/dist/commands/migrate/retry.js +46 -0
- package/dist/commands/migrate/retry.js.map +1 -0
- package/dist/commands/plugin.js +3 -1
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/registry.d.ts +2 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +228 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/snapshot/command.d.ts +3 -0
- package/dist/commands/snapshot/command.d.ts.map +1 -0
- package/dist/commands/snapshot/command.js +32 -0
- package/dist/commands/snapshot/command.js.map +1 -0
- package/dist/commands/snapshot/output.d.ts +24 -0
- package/dist/commands/snapshot/output.d.ts.map +1 -0
- package/dist/commands/snapshot/output.js +86 -0
- package/dist/commands/snapshot/output.js.map +1 -0
- package/dist/commands/snapshot/rebuild.d.ts +19 -0
- package/dist/commands/snapshot/rebuild.d.ts.map +1 -0
- package/dist/commands/snapshot/rebuild.js +77 -0
- package/dist/commands/snapshot/rebuild.js.map +1 -0
- package/dist/internal-plugins/core/plugin.d.ts.map +1 -1
- package/dist/internal-plugins/core/plugin.js +2 -0
- package/dist/internal-plugins/core/plugin.js.map +1 -1
- package/dist/registry/build.d.ts +17 -0
- package/dist/registry/build.d.ts.map +1 -0
- package/dist/registry/build.js +94 -0
- package/dist/registry/build.js.map +1 -0
- package/dist/registry/dependencies.d.ts +19 -0
- package/dist/registry/dependencies.d.ts.map +1 -0
- package/dist/registry/dependencies.js +105 -0
- package/dist/registry/dependencies.js.map +1 -0
- package/dist/registry/files.d.ts +4 -0
- package/dist/registry/files.d.ts.map +1 -0
- package/dist/registry/files.js +33 -0
- package/dist/registry/files.js.map +1 -0
- package/dist/registry/install.d.ts +55 -0
- package/dist/registry/install.d.ts.map +1 -0
- package/dist/registry/install.js +175 -0
- package/dist/registry/install.js.map +1 -0
- package/dist/registry/model.d.ts +172 -0
- package/dist/registry/model.d.ts.map +1 -0
- package/dist/registry/model.js +161 -0
- package/dist/registry/model.js.map +1 -0
- package/dist/registry/project-config.d.ts +18 -0
- package/dist/registry/project-config.d.ts.map +1 -0
- package/dist/registry/project-config.js +337 -0
- package/dist/registry/project-config.js.map +1 -0
- package/dist/registry/resolve.d.ts +7 -0
- package/dist/registry/resolve.d.ts.map +1 -0
- package/dist/registry/resolve.js +129 -0
- package/dist/registry/resolve.js.map +1 -0
- package/dist/runtime/argv.d.ts +3 -0
- package/dist/runtime/argv.d.ts.map +1 -0
- package/dist/runtime/argv.js +29 -0
- package/dist/runtime/argv.js.map +1 -0
- package/dist/runtime/command-dispatch.d.ts.map +1 -1
- package/dist/runtime/command-dispatch.js +5 -0
- package/dist/runtime/command-dispatch.js.map +1 -1
- package/dist/runtime/config-merge.d.ts.map +1 -1
- package/dist/runtime/config-merge.js +2 -1
- package/dist/runtime/config-merge.js.map +1 -1
- package/dist/runtime/global-flags.d.ts +4 -0
- package/dist/runtime/global-flags.d.ts.map +1 -1
- package/dist/runtime/global-flags.js +1 -0
- package/dist/runtime/global-flags.js.map +1 -1
- package/dist/runtime/help.d.ts.map +1 -1
- package/dist/runtime/help.js +3 -0
- package/dist/runtime/help.js.map +1 -1
- package/dist/runtime/journal-store.d.ts.map +1 -1
- package/dist/runtime/journal-store.js +55 -26
- package/dist/runtime/journal-store.js.map +1 -1
- package/dist/runtime/json-output.d.ts +1 -1
- package/dist/runtime/json-output.d.ts.map +1 -1
- package/dist/runtime/json-output.js.map +1 -1
- package/dist/runtime/migration-store.d.ts +1 -1
- package/dist/runtime/migration-store.d.ts.map +1 -1
- package/dist/runtime/migration-store.js +17 -16
- package/dist/runtime/migration-store.js.map +1 -1
- package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
- package/dist/runtime/plugin-runtime/executor-debug.js +2 -0
- package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
- package/dist/runtime/plugin-runtime/loader.js +1 -1
- package/dist/runtime/plugin-runtime/loader.js.map +1 -1
- package/dist/runtime/safety-markers.d.ts.map +1 -1
- package/dist/runtime/safety-markers.js +13 -2
- package/dist/runtime/safety-markers.js.map +1 -1
- package/dist/runtime/schema-loader.d.ts +20 -1
- package/dist/runtime/schema-loader.d.ts.map +1 -1
- package/dist/runtime/schema-loader.js +26 -0
- package/dist/runtime/schema-loader.js.map +1 -1
- package/dist/runtime/snapshot-document.d.ts +33 -0
- package/dist/runtime/snapshot-document.d.ts.map +1 -0
- package/dist/runtime/snapshot-document.js +65 -0
- package/dist/runtime/snapshot-document.js.map +1 -0
- package/package.json +17 -7
- package/dist/bin/clickhouse-resource.d.ts +0 -4
- package/dist/bin/clickhouse-resource.d.ts.map +0 -1
- package/dist/bin/clickhouse-resource.js +0 -11
- package/dist/bin/clickhouse-resource.js.map +0 -1
- package/dist/bin/command-dispatch.d.ts +0 -13
- package/dist/bin/command-dispatch.d.ts.map +0 -1
- package/dist/bin/command-dispatch.js +0 -186
- package/dist/bin/command-dispatch.js.map +0 -1
- package/dist/bin/command-registry.d.ts +0 -34
- package/dist/bin/command-registry.d.ts.map +0 -1
- package/dist/bin/command-registry.js +0 -87
- package/dist/bin/command-registry.js.map +0 -1
- package/dist/bin/commands/check.d.ts +0 -3
- package/dist/bin/commands/check.d.ts.map +0 -1
- package/dist/bin/commands/check.js +0 -181
- package/dist/bin/commands/check.js.map +0 -1
- package/dist/bin/commands/codegen.d.ts +0 -2
- package/dist/bin/commands/codegen.d.ts.map +0 -1
- package/dist/bin/commands/codegen.js +0 -25
- package/dist/bin/commands/codegen.js.map +0 -1
- package/dist/bin/commands/drift.d.ts +0 -27
- package/dist/bin/commands/drift.d.ts.map +0 -1
- package/dist/bin/commands/drift.js +0 -220
- package/dist/bin/commands/drift.js.map +0 -1
- package/dist/bin/commands/generate/output.d.ts +0 -8
- package/dist/bin/commands/generate/output.d.ts.map +0 -1
- package/dist/bin/commands/generate/output.js +0 -58
- package/dist/bin/commands/generate/output.js.map +0 -1
- package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
- package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
- package/dist/bin/commands/generate/plan-pipeline.js +0 -143
- package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
- package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
- package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
- package/dist/bin/commands/generate/rename-mappings.js +0 -195
- package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
- package/dist/bin/commands/generate.d.ts +0 -3
- package/dist/bin/commands/generate.d.ts.map +0 -1
- package/dist/bin/commands/generate.js +0 -158
- package/dist/bin/commands/generate.js.map +0 -1
- package/dist/bin/commands/init.d.ts +0 -2
- package/dist/bin/commands/init.d.ts.map +0 -1
- package/dist/bin/commands/init.js +0 -12
- package/dist/bin/commands/init.js.map +0 -1
- package/dist/bin/commands/migrate.d.ts +0 -3
- package/dist/bin/commands/migrate.d.ts.map +0 -1
- package/dist/bin/commands/migrate.js +0 -288
- package/dist/bin/commands/migrate.js.map +0 -1
- package/dist/bin/commands/plugin-like.d.ts +0 -38
- package/dist/bin/commands/plugin-like.d.ts.map +0 -1
- package/dist/bin/commands/plugin-like.js +0 -101
- package/dist/bin/commands/plugin-like.js.map +0 -1
- package/dist/bin/commands/plugin.d.ts +0 -3
- package/dist/bin/commands/plugin.d.ts.map +0 -1
- package/dist/bin/commands/plugin.js +0 -148
- package/dist/bin/commands/plugin.js.map +0 -1
- package/dist/bin/commands/pull.d.ts +0 -2
- package/dist/bin/commands/pull.d.ts.map +0 -1
- package/dist/bin/commands/pull.js +0 -25
- package/dist/bin/commands/pull.js.map +0 -1
- package/dist/bin/commands/status.d.ts +0 -3
- package/dist/bin/commands/status.d.ts.map +0 -1
- package/dist/bin/commands/status.js +0 -63
- package/dist/bin/commands/status.js.map +0 -1
- package/dist/bin/commands/typegen.d.ts +0 -2
- package/dist/bin/commands/typegen.d.ts.map +0 -1
- package/dist/bin/commands/typegen.js +0 -25
- package/dist/bin/commands/typegen.js.map +0 -1
- package/dist/bin/config.d.ts +0 -13
- package/dist/bin/config.d.ts.map +0 -1
- package/dist/bin/config.js +0 -48
- package/dist/bin/config.js.map +0 -1
- package/dist/bin/debug.d.ts +0 -3
- package/dist/bin/debug.d.ts.map +0 -1
- package/dist/bin/debug.js +0 -14
- package/dist/bin/debug.js.map +0 -1
- package/dist/bin/global-flags.d.ts +0 -16
- package/dist/bin/global-flags.d.ts.map +0 -1
- package/dist/bin/global-flags.js +0 -7
- package/dist/bin/global-flags.js.map +0 -1
- package/dist/bin/help.d.ts +0 -5
- package/dist/bin/help.d.ts.map +0 -1
- package/dist/bin/help.js +0 -84
- package/dist/bin/help.js.map +0 -1
- package/dist/bin/internal-plugins/index.d.ts +0 -3
- package/dist/bin/internal-plugins/index.d.ts.map +0 -1
- package/dist/bin/internal-plugins/index.js +0 -5
- package/dist/bin/internal-plugins/index.js.map +0 -1
- package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
- package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
- package/dist/bin/internal-plugins/skill-hint.js +0 -172
- package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
- package/dist/bin/journal-store.d.ts +0 -10
- package/dist/bin/journal-store.d.ts.map +0 -1
- package/dist/bin/journal-store.js +0 -137
- package/dist/bin/journal-store.js.map +0 -1
- package/dist/bin/json-output.d.ts +0 -5
- package/dist/bin/json-output.d.ts.map +0 -1
- package/dist/bin/json-output.js +0 -21
- package/dist/bin/json-output.js.map +0 -1
- package/dist/bin/lib.d.ts +0 -5
- package/dist/bin/lib.d.ts.map +0 -1
- package/dist/bin/lib.js +0 -5
- package/dist/bin/lib.js.map +0 -1
- package/dist/bin/logging.d.ts +0 -3
- package/dist/bin/logging.d.ts.map +0 -1
- package/dist/bin/logging.js +0 -31
- package/dist/bin/logging.js.map +0 -1
- package/dist/bin/migration-store.d.ts +0 -22
- package/dist/bin/migration-store.d.ts.map +0 -1
- package/dist/bin/migration-store.js +0 -60
- package/dist/bin/migration-store.js.map +0 -1
- package/dist/bin/plugin-runtime.d.ts +0 -45
- package/dist/bin/plugin-runtime.d.ts.map +0 -1
- package/dist/bin/plugin-runtime.js +0 -513
- package/dist/bin/plugin-runtime.js.map +0 -1
- package/dist/bin/safety-markers.d.ts +0 -23
- package/dist/bin/safety-markers.d.ts.map +0 -1
- package/dist/bin/safety-markers.js +0 -85
- package/dist/bin/safety-markers.js.map +0 -1
- package/dist/bin/schema-loader.d.ts +0 -3
- package/dist/bin/schema-loader.d.ts.map +0 -1
- package/dist/bin/schema-loader.js +0 -11
- package/dist/bin/schema-loader.js.map +0 -1
- package/dist/bin/table-scope.d.ts +0 -38
- package/dist/bin/table-scope.d.ts.map +0 -1
- package/dist/bin/table-scope.js +0 -167
- package/dist/bin/table-scope.js.map +0 -1
- package/dist/bin/version.d.ts +0 -2
- package/dist/bin/version.d.ts.map +0 -1
- package/dist/bin/version.js +0 -5
- package/dist/bin/version.js.map +0 -1
- package/dist/drift-diff.d.ts +0 -8
- package/dist/drift-diff.d.ts.map +0 -1
- package/dist/drift-diff.js +0 -46
- package/dist/drift-diff.js.map +0 -1
- package/dist/drift.d.ts +0 -66
- package/dist/drift.d.ts.map +0 -1
- package/dist/drift.js +0 -220
- package/dist/drift.js.map +0 -1
package/dist/commands/init.js
CHANGED
|
@@ -2,13 +2,29 @@ import process from 'node:process';
|
|
|
2
2
|
import { relative, resolve } from 'node:path';
|
|
3
3
|
import { DEFAULT_CONFIG_FILE, writeIfMissing } from '../runtime/config.js';
|
|
4
4
|
import { ensureProjectDependencies } from '../runtime/deps.js';
|
|
5
|
+
/** The example schema `init` writes to src/db/schema/example.ts. */
|
|
6
|
+
export const INIT_SCHEMA_TEMPLATE = `import { schema, table } from '@chkit/core'\n\n// Offline generation still needs the real schema namespace.\nconst database = process.env.CLICKHOUSE_DB\nif (!database?.trim()) {\n throw new Error('Set CLICKHOUSE_DB to the intended database before generating migrations.')\n}\n\nconst events = table({\n database,\n name: 'events',\n engine: 'MergeTree',\n columns: [\n { name: 'id', type: 'UInt64' },\n { name: 'source', type: 'String' },\n { name: 'ingested_at', type: 'DateTime64(3)', default: { expression: 'now64(3)' } },\n ],\n primaryKey: ['id'],\n orderBy: ['id'],\n partitionBy: 'toYYYYMM(ingested_at)',\n})\n\nexport default schema(events)\n`;
|
|
5
7
|
export async function cmdInit(argv = []) {
|
|
8
|
+
if (argv.includes('--help') || argv.includes('-h')) {
|
|
9
|
+
console.log(`chkit init [options]
|
|
10
|
+
|
|
11
|
+
Create a TypeScript config and example schema; install project dependencies.
|
|
12
|
+
|
|
13
|
+
-y, --yes Skip interactive onboarding
|
|
14
|
+
--connect <choice> claim, account, clickhouse, or later
|
|
15
|
+
--email <email> Email for account onboarding
|
|
16
|
+
--code <code> Verification code
|
|
17
|
+
--org-name <name> Organization name
|
|
18
|
+
-h, --help Show help without creating files or connecting
|
|
19
|
+
`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
6
22
|
const cwd = process.cwd();
|
|
7
23
|
const configPath = resolve(cwd, DEFAULT_CONFIG_FILE);
|
|
8
24
|
const schemaPath = resolve(cwd, 'src/db/schema/example.ts');
|
|
9
25
|
const options = parseInitOptions(argv);
|
|
10
|
-
const wroteConfig = await writeIfMissing(configPath, `import { defineConfig } from '@chkit/core'\n\nexport default defineConfig({\n schema: './src/db/schema/**/*.ts',\n outDir: './chkit',\n migrationsDir: './chkit/migrations',\n metaDir: './chkit/meta',\n plugins: [\n // Register plugins inline. Example:\n // import { codegen } from '@chkit/plugin-codegen'\n // codegen({ emitZod: true }),\n ],\n
|
|
11
|
-
const wroteSchema = await writeIfMissing(schemaPath,
|
|
26
|
+
const wroteConfig = await writeIfMissing(configPath, `import { defineConfig } from '@chkit/core'\n\nfunction requiredEnv(name: string): string {\n const value = process.env[name]\n if (value === undefined || (name !== 'CLICKHOUSE_PASSWORD' && value.trim() === '')) {\n throw new Error(\`Set \${name} explicitly before connecting to ClickHouse (an empty password is allowed).\`)\n }\n return value\n}\n\nexport default defineConfig({\n schema: './src/db/schema/**/*.ts',\n outDir: './chkit',\n migrationsDir: './chkit/migrations',\n metaDir: './chkit/meta',\n plugins: [\n // Register plugins inline. Example:\n // import { codegen } from '@chkit/plugin-codegen'\n // codegen({ emitZod: true }),\n ],\n // Preserve an explicitly supplied target for offline generation as well.\n // Without a URL, a registered provider plugin may supply the connection.\n clickhouse: process.env.CLICKHOUSE_URL ? {\n url: requiredEnv('CLICKHOUSE_URL'),\n username: requiredEnv('CLICKHOUSE_USER'),\n password: requiredEnv('CLICKHOUSE_PASSWORD'),\n database: requiredEnv('CLICKHOUSE_DB'),\n cluster: process.env.CLICKHOUSE_CLUSTER,\n } : undefined,\n})\n`);
|
|
27
|
+
const wroteSchema = await writeIfMissing(schemaPath, INIT_SCHEMA_TEMPLATE);
|
|
12
28
|
if (wroteConfig)
|
|
13
29
|
console.log(`Created ${relative(cwd, configPath)}`);
|
|
14
30
|
if (wroteSchema)
|
|
@@ -24,10 +40,11 @@ export async function cmdInit(argv = []) {
|
|
|
24
40
|
if (wroteConfig || wroteSchema) {
|
|
25
41
|
console.log('');
|
|
26
42
|
console.log('Next steps:');
|
|
27
|
-
console.log(' 1. Set
|
|
43
|
+
console.log(' 1. Set CLICKHOUSE_DB to the intended database before generating migrations.');
|
|
28
44
|
console.log(' 2. Edit src/db/schema/example.ts to match your data.');
|
|
29
45
|
console.log(' 3. Run: npx chkit generate --name init');
|
|
30
|
-
console.log(' 4.
|
|
46
|
+
console.log(' 4. Set CLICKHOUSE_URL, CLICKHOUSE_USER, and CLICKHOUSE_PASSWORD explicitly before connecting.');
|
|
47
|
+
console.log(' 5. Run: npx chkit migrate --apply');
|
|
31
48
|
console.log('');
|
|
32
49
|
console.log('Docs: https://chkit.obsessiondb.com/getting-started/add-to-existing-project/');
|
|
33
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE7C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { JournalStore, MigrationRowState, OperationState, OperationStatus } from '../../runtime/journal-store.js';
|
|
2
|
+
/** What --abandon reports, before and after it resets the journal state. */
|
|
3
|
+
export interface AbandonReport {
|
|
4
|
+
migration: string;
|
|
5
|
+
/** Checksum recorded for the failed attempt. */
|
|
6
|
+
checksum: string;
|
|
7
|
+
/** Statements that completed, including those an earlier --abandon marked failed. */
|
|
8
|
+
completedStatements: number;
|
|
9
|
+
/** The recorded per-statement progress, sorted by statement index. */
|
|
10
|
+
operations: OperationState[];
|
|
11
|
+
}
|
|
12
|
+
/** Read the in-progress state --abandon <migration> resets; throws when there is none. */
|
|
13
|
+
export declare function readAbandonableState(input: {
|
|
14
|
+
migration: string;
|
|
15
|
+
appliedNames: ReadonlySet<string>;
|
|
16
|
+
}, deps: {
|
|
17
|
+
journalStore: JournalStore;
|
|
18
|
+
}): Promise<MigrationRowState>;
|
|
19
|
+
/**
|
|
20
|
+
* Supersede an in-progress state with a version in which every recorded
|
|
21
|
+
* statement failed. The next apply runs the file from statement 1: sync
|
|
22
|
+
* statements run again, and async statements keep their query ids, so they
|
|
23
|
+
* take the retry path (`-- before-retry:` compensation, then a resubmit).
|
|
24
|
+
* Like every journal write this is an INSERT of a newer row version, so it
|
|
25
|
+
* needs no DELETE privilege and leaves no mutation behind.
|
|
26
|
+
*/
|
|
27
|
+
export declare function abandonMigrationState(state: MigrationRowState, deps: {
|
|
28
|
+
journalStore: JournalStore;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
export declare function abandonReport(state: MigrationRowState): AbandonReport;
|
|
32
|
+
/**
|
|
33
|
+
* The status a statement had before --abandon marked it failed, or its
|
|
34
|
+
* recorded status when no abandon touched it. A statement that completed
|
|
35
|
+
* before an abandon stays applied in ClickHouse.
|
|
36
|
+
*/
|
|
37
|
+
export declare function statusBeforeAbandon(op: OperationState): OperationStatus;
|
|
38
|
+
//# sourceMappingURL=abandon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abandon.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/abandon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,EAChB,MAAM,gCAAgC,CAAA;AAIvC,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,qFAAqF;IACrF,mBAAmB,EAAE,MAAM,CAAA;IAC3B,sEAAsE;IACtE,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B;AAID,0FAA0F;AAC1F,wBAAsB,oBAAoB,CACxC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,EAC/D,IAAI,EAAE;IAAE,YAAY,EAAE,YAAY,CAAA;CAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAY5B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,aAAa,CAQrE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,eAAe,CAEvE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { isoWithoutZone } from './async-apply.js';
|
|
2
|
+
import { MigrateError } from './errors.js';
|
|
3
|
+
const OPERATION_STATUSES = ['completed', 'failed', 'started'];
|
|
4
|
+
/** Read the in-progress state --abandon <migration> resets; throws when there is none. */
|
|
5
|
+
export async function readAbandonableState(input, deps) {
|
|
6
|
+
const { migration } = input;
|
|
7
|
+
if (input.appliedNames.has(migration))
|
|
8
|
+
throw alreadyAppliedError(migration);
|
|
9
|
+
const state = await deps.journalStore.readMigrationState(migration);
|
|
10
|
+
if (state === null) {
|
|
11
|
+
throw new MigrateError('migration_not_in_progress', `Cannot abandon ${migration}: the journal has no in-progress state for it.`);
|
|
12
|
+
}
|
|
13
|
+
if (state.migrationCompleted)
|
|
14
|
+
throw alreadyAppliedError(migration);
|
|
15
|
+
return state;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Supersede an in-progress state with a version in which every recorded
|
|
19
|
+
* statement failed. The next apply runs the file from statement 1: sync
|
|
20
|
+
* statements run again, and async statements keep their query ids, so they
|
|
21
|
+
* take the retry path (`-- before-retry:` compensation, then a resubmit).
|
|
22
|
+
* Like every journal write this is an INSERT of a newer row version, so it
|
|
23
|
+
* needs no DELETE privilege and leaves no mutation behind.
|
|
24
|
+
*/
|
|
25
|
+
export async function abandonMigrationState(state, deps) {
|
|
26
|
+
const now = isoWithoutZone(new Date((deps.now ?? Date.now)()));
|
|
27
|
+
await deps.journalStore.writeMigrationState(abandonedState(state, now));
|
|
28
|
+
}
|
|
29
|
+
export function abandonReport(state) {
|
|
30
|
+
const operations = [...state.operations].sort((a, b) => a.operationIndex - b.operationIndex);
|
|
31
|
+
return {
|
|
32
|
+
migration: state.name,
|
|
33
|
+
checksum: state.checksum,
|
|
34
|
+
completedStatements: operations.filter((op) => statusBeforeAbandon(op) === 'completed').length,
|
|
35
|
+
operations,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The status a statement had before --abandon marked it failed, or its
|
|
40
|
+
* recorded status when no abandon touched it. A statement that completed
|
|
41
|
+
* before an abandon stays applied in ClickHouse.
|
|
42
|
+
*/
|
|
43
|
+
export function statusBeforeAbandon(op) {
|
|
44
|
+
return abandonedFrom(op) ?? op.status;
|
|
45
|
+
}
|
|
46
|
+
// A statement an earlier --abandon already marked failed keeps that record,
|
|
47
|
+
// so abandoning again does not lose which statements had completed.
|
|
48
|
+
function abandonedState(state, now) {
|
|
49
|
+
return {
|
|
50
|
+
...state,
|
|
51
|
+
appliedAt: now,
|
|
52
|
+
migrationCompleted: false,
|
|
53
|
+
operations: state.operations.map((op) => abandonedFrom(op) !== undefined
|
|
54
|
+
? op
|
|
55
|
+
: {
|
|
56
|
+
...op,
|
|
57
|
+
status: 'failed',
|
|
58
|
+
finishedAt: op.finishedAt ?? now,
|
|
59
|
+
lastError: abandonedError(op.status),
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** The status before an earlier --abandon, or undefined when no abandon marked this statement. */
|
|
64
|
+
function abandonedFrom(op) {
|
|
65
|
+
if (op.status !== 'failed')
|
|
66
|
+
return undefined;
|
|
67
|
+
return OPERATION_STATUSES.find((status) => op.lastError === abandonedError(status));
|
|
68
|
+
}
|
|
69
|
+
function abandonedError(previous) {
|
|
70
|
+
return `abandoned via chkit migrate --abandon (was ${previous})`;
|
|
71
|
+
}
|
|
72
|
+
function alreadyAppliedError(migration) {
|
|
73
|
+
return new MigrateError('migration_already_applied', `Cannot abandon ${migration}: it is already applied. --abandon only resets a migration that failed part-way; to undo an applied migration, write a new migration.`);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=abandon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abandon.js","sourceRoot":"","sources":["../../../src/commands/migrate/abandon.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,13 @@ export declare function applyMigration(input: {
|
|
|
28
28
|
flags: ParsedFlags;
|
|
29
29
|
migrationsDir: string;
|
|
30
30
|
file: string;
|
|
31
|
+
/** Set when --retry verified an edit of this in-progress migration before the run (#233). */
|
|
32
|
+
retry?: {
|
|
33
|
+
previousChecksum: string;
|
|
34
|
+
checksum: string;
|
|
35
|
+
};
|
|
36
|
+
/** Progress lines; the command sends them to stderr in --json mode. */
|
|
37
|
+
log?: (line: string) => void;
|
|
31
38
|
}): Promise<MigrationJournalEntry>;
|
|
32
39
|
export {};
|
|
33
40
|
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAe,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAsB1F,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAYzD,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACf,GAAG,KAAK,CAQR;AAsBD,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,EAAE,EAAE,kBAAkB,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,aAAa,EAAE,aAAa,CAAA;IAC5B,MAAM,EAAE,iBAAiB,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,WAAW,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,6FAA6F;IAC7F,KAAK,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,uEAAuE;IACvE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA0HjC"}
|
|
@@ -5,6 +5,8 @@ import { debug } from '../../runtime/debug.js';
|
|
|
5
5
|
import { checksumSQL } from '../../runtime/migration-store.js';
|
|
6
6
|
import { extractExecutableStatements, extractMigrationOperationSummaries, } from '../../runtime/safety-markers.js';
|
|
7
7
|
import { applyAsyncStatement, freshMigrationState, isoWithoutZone, upsertOperation, } from './async-apply.js';
|
|
8
|
+
import { inProgressChecksumMismatchError } from './errors.js';
|
|
9
|
+
import { hasStatementProgress, rebaseInProgressState, retryMismatchError, statementIdentities, statementIdentity, verifyRetryEdit, } from './recovery.js';
|
|
8
10
|
function operationIsCompleted(state, index) {
|
|
9
11
|
return (state?.operations.some((op) => op.operationIndex === index && op.status === 'completed') ?? false);
|
|
10
12
|
}
|
|
@@ -44,7 +46,8 @@ function syncOperationState(index, operationType, operationKey, status, lastErro
|
|
|
44
46
|
};
|
|
45
47
|
}
|
|
46
48
|
export async function applyMigration(input) {
|
|
47
|
-
const { db, journalStore, pluginRuntime, config, tableScope, flags, migrationsDir, file } = input;
|
|
49
|
+
const { db, journalStore, pluginRuntime, config, tableScope, flags, migrationsDir, file, retry } = input;
|
|
50
|
+
const log = input.log ?? ((line) => console.log(line));
|
|
48
51
|
debug('migrate', `applying ${file}`);
|
|
49
52
|
const sql = await readFile(join(migrationsDir, file), 'utf8');
|
|
50
53
|
const parsedStatements = extractExecutableStatements(sql);
|
|
@@ -63,12 +66,20 @@ export async function applyMigration(input) {
|
|
|
63
66
|
// Resume support (#6): if a prior run left per-statement journal state for
|
|
64
67
|
// this migration, statements already marked completed are skipped instead of
|
|
65
68
|
// replayed — so a partial failure no longer bricks the migration on re-run
|
|
66
|
-
// with "column already exists".
|
|
69
|
+
// with "column already exists". Resuming across a file edit needs care (#233).
|
|
67
70
|
const initialState = await journalStore.readMigrationState(file);
|
|
68
71
|
if (initialState !== null &&
|
|
69
72
|
!initialState.migrationCompleted &&
|
|
70
73
|
initialState.checksum !== migrationChecksum) {
|
|
71
|
-
|
|
74
|
+
await acceptEditedMigration({
|
|
75
|
+
file,
|
|
76
|
+
state: initialState,
|
|
77
|
+
checksum: migrationChecksum,
|
|
78
|
+
identities: statementIdentities(operationSummaries, statements.length),
|
|
79
|
+
retry,
|
|
80
|
+
journalStore,
|
|
81
|
+
log,
|
|
82
|
+
});
|
|
72
83
|
}
|
|
73
84
|
for (let i = 0; i < statements.length; i++) {
|
|
74
85
|
const statement = statements[i];
|
|
@@ -85,7 +96,7 @@ export async function applyMigration(input) {
|
|
|
85
96
|
operationType: operation.type,
|
|
86
97
|
operationKey: operation.key,
|
|
87
98
|
beforeRetry: operation.beforeRetry,
|
|
88
|
-
log
|
|
99
|
+
log,
|
|
89
100
|
});
|
|
90
101
|
}
|
|
91
102
|
catch (error) {
|
|
@@ -101,8 +112,7 @@ export async function applyMigration(input) {
|
|
|
101
112
|
debug('migrate', `${file}#${i}: already completed in a prior run — skipping`);
|
|
102
113
|
continue;
|
|
103
114
|
}
|
|
104
|
-
const opType =
|
|
105
|
-
const opKey = operation?.key ?? `statement:${i}`;
|
|
115
|
+
const { type: opType, key: opKey } = statementIdentity(operationSummaries, i);
|
|
106
116
|
const baseState = stateBefore ?? freshMigrationState(file, migrationChecksum);
|
|
107
117
|
await journalStore.writeMigrationState(upsertOperation(baseState, syncOperationState(i, opType, opKey, 'started'), Date.now));
|
|
108
118
|
try {
|
|
@@ -140,4 +150,33 @@ export async function applyMigration(input) {
|
|
|
140
150
|
});
|
|
141
151
|
return entry;
|
|
142
152
|
}
|
|
153
|
+
// An in-progress migration whose file changed resumes when this run's --retry
|
|
154
|
+
// verified the edit, or when no statement is recorded as completed or started
|
|
155
|
+
// (the first statement failed, or --abandon marked every statement failed):
|
|
156
|
+
// the file then runs again from statement 1. The state is re-keyed to the new
|
|
157
|
+
// checksum before anything runs, so a later failure resumes without --retry.
|
|
158
|
+
async function acceptEditedMigration(input) {
|
|
159
|
+
const { file, state, checksum, identities, retry, journalStore } = input;
|
|
160
|
+
const retryVerified = retry !== undefined && retry.previousChecksum === state.checksum && retry.checksum === checksum;
|
|
161
|
+
if (retryVerified) {
|
|
162
|
+
// --retry checked the file's statements; apply indexes the statements the
|
|
163
|
+
// plugins returned, so check those too.
|
|
164
|
+
const check = verifyRetryEdit(state.operations, identities);
|
|
165
|
+
if (!check.ok)
|
|
166
|
+
throw retryMismatchError(file, check);
|
|
167
|
+
debug('migrate', `${file}: --retry accepted checksum ${state.checksum} → ${checksum}`);
|
|
168
|
+
}
|
|
169
|
+
else if (hasStatementProgress(state)) {
|
|
170
|
+
throw inProgressChecksumMismatchError({
|
|
171
|
+
migration: file,
|
|
172
|
+
journalChecksum: state.checksum,
|
|
173
|
+
fileChecksum: checksum,
|
|
174
|
+
async: false,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
input.log(`${file} changed since its last failed attempt; no statement is recorded as completed, so it runs again from statement 1.`);
|
|
179
|
+
}
|
|
180
|
+
await journalStore.writeMigrationState(rebaseInProgressState(state, { checksum, identities, appliedAt: isoWithoutZone(new Date()) }));
|
|
181
|
+
}
|
|
143
182
|
//# sourceMappingURL=apply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/commands/migrate/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,qBAAqB,EAA2B,MAAM,mBAAmB,CAAA;AAIlF,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAO9C,OAAO,EAAE,WAAW,EAA8B,MAAM,kCAAkC,CAAA;AAC1F,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,GACnC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/commands/migrate/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-apply.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/async-apply.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"async-apply.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/async-apply.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,mBAAmB,CAAA;AAGxE,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,gCAAgC,CAAA;AA4BvC,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,kBAAkB,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,CAAA;AAElD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwI3F;AA+MD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,iBAAiB,EACxB,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,MAAM,MAAM,GAChB,iBAAiB,CAcnB;AAED,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,iBAAiB,CASnB;AAED,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM,CAWR;AA2BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEjD"}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
|
+
import { setTimeout as defaultSleep } from 'node:timers/promises';
|
|
2
3
|
import { debug } from '../../runtime/debug.js';
|
|
4
|
+
import { inProgressChecksumMismatchError } from './errors.js';
|
|
5
|
+
import { hasStatementProgress } from './recovery.js';
|
|
3
6
|
const POLL_INTERVAL_MS = 5_000;
|
|
7
|
+
// The query id is deterministic, so system.query_log can still hold entries of
|
|
8
|
+
// an earlier attempt of the same statement (one that was abandoned, or retried
|
|
9
|
+
// after an edit). A new submission only trusts entries of queries that started
|
|
10
|
+
// after it, and an attach only those of queries that started no earlier than
|
|
11
|
+
// the attempt it attaches to: query_log is flushed on a timer, so right after
|
|
12
|
+
// that attempt ends the newest flushed entry can still be an earlier
|
|
13
|
+
// attempt's. The bound comes from the server clock, which also stamps
|
|
14
|
+
// query_log, minus a margin for clock skew between replicas. queryStatus
|
|
15
|
+
// compares whole seconds, so the margin stays more than a second below
|
|
16
|
+
// POLL_INTERVAL_MS: an earlier attempt that a previous run polled to its end
|
|
17
|
+
// started at least one poll interval ago and always falls before the bound.
|
|
18
|
+
const QUERY_LOG_SKEW_MARGIN_MS = 2_000;
|
|
19
|
+
// queryStatus's own default: every query_log entry for the id counts.
|
|
20
|
+
const UNBOUNDED_POLL_AFTER_TIME = '1970-01-01 00:00:00';
|
|
4
21
|
// A poll request can fail transiently (gateway 504/524, network blip) while the
|
|
5
22
|
// server-side async query keeps running. Tolerate a bounded number of these so a
|
|
6
23
|
// momentary timeout doesn't abort a long-running load; only give up after the budget.
|
|
@@ -12,19 +29,17 @@ export async function applyAsyncStatement(input) {
|
|
|
12
29
|
const { db, journalStore, sql, migrationName, migrationChecksum, statementIndex, operationType, operationKey, beforeRetry, log, pollIntervalMs = POLL_INTERVAL_MS, sleep = defaultSleep, now = Date.now, } = input;
|
|
13
30
|
const queryId = makeDeterministicQueryId(migrationName, statementIndex);
|
|
14
31
|
debug('migrate:async', `${migrationName}#${statementIndex} query_id=${queryId} type=${operationType}`);
|
|
15
|
-
const initialMigrationState = await journalStore.readMigrationState(migrationName);
|
|
16
|
-
if (initialMigrationState !== null &&
|
|
17
|
-
!initialMigrationState.migrationCompleted &&
|
|
18
|
-
initialMigrationState.checksum !== migrationChecksum) {
|
|
19
|
-
throw new Error(`Migration ${migrationName} has in-progress async journal state for checksum ${initialMigrationState.checksum}, but the current file checksum is ${migrationChecksum}. Restore the original migration file or clear the in-progress journal state before retrying.`);
|
|
20
|
-
}
|
|
32
|
+
const initialMigrationState = acceptChangedChecksum(await journalStore.readMigrationState(migrationName), migrationName, migrationChecksum);
|
|
21
33
|
const priorOpState = initialMigrationState?.operations.find((op) => op.operationIndex === statementIndex);
|
|
22
34
|
// 1. Already completed → skip entirely
|
|
23
35
|
if (priorOpState?.status === 'completed') {
|
|
24
36
|
log(` ${operationType}: query_id=${queryId} already completed in prior run — skipping`);
|
|
25
37
|
return { kind: 'skipped', operation: priorOpState };
|
|
26
38
|
}
|
|
27
|
-
// 2. Currently in flight on the server → attach
|
|
39
|
+
// 2. Currently in flight on the server → attach. The server clock is read
|
|
40
|
+
// before the check, so the start derived from it and the attempt's elapsed
|
|
41
|
+
// time never falls after the start that query_log records for the attempt.
|
|
42
|
+
const serverNowMs = await readServerNowMs(db);
|
|
28
43
|
const inFlight = await db.queryStatus(queryId);
|
|
29
44
|
if (inFlight.status === 'running') {
|
|
30
45
|
log(` ${operationType}: query_id=${queryId} already running on server — attaching to in-flight query`);
|
|
@@ -38,7 +53,7 @@ export async function applyAsyncStatement(input) {
|
|
|
38
53
|
operationType,
|
|
39
54
|
operationKey,
|
|
40
55
|
queryId,
|
|
41
|
-
pollAfterTime:
|
|
56
|
+
pollAfterTime: attachLowerBound(serverNowMs, inFlight.elapsedMs),
|
|
42
57
|
log,
|
|
43
58
|
pollIntervalMs,
|
|
44
59
|
sleep,
|
|
@@ -66,7 +81,6 @@ export async function applyAsyncStatement(input) {
|
|
|
66
81
|
else {
|
|
67
82
|
log(` ${operationType}: submitting async (query_id=${queryId})`);
|
|
68
83
|
}
|
|
69
|
-
const submitAfterTime = priorOpState === undefined ? undefined : isoWithoutZone(new Date(now() - 60_000));
|
|
70
84
|
const startedAt = isoWithoutZone(new Date(now()));
|
|
71
85
|
// Persist the "started" intent BEFORE submitting, so a crash between here
|
|
72
86
|
// and the next event still leaves chkit able to detect "this op was tried."
|
|
@@ -83,6 +97,7 @@ export async function applyAsyncStatement(input) {
|
|
|
83
97
|
// Re-read so we have the row's actual stored applied_at (matters for
|
|
84
98
|
// subsequent ReplacingMergeTree writes during polling).
|
|
85
99
|
const stateAfterStart = await journalStore.readMigrationState(migrationName);
|
|
100
|
+
const pollAfterTime = await readSubmissionLowerBound(db);
|
|
86
101
|
const submitPromise = db.submit(sql, queryId);
|
|
87
102
|
return await pollUntilTerminal({
|
|
88
103
|
db,
|
|
@@ -94,7 +109,7 @@ export async function applyAsyncStatement(input) {
|
|
|
94
109
|
operationType,
|
|
95
110
|
operationKey,
|
|
96
111
|
queryId,
|
|
97
|
-
pollAfterTime
|
|
112
|
+
pollAfterTime,
|
|
98
113
|
log,
|
|
99
114
|
pollIntervalMs,
|
|
100
115
|
sleep,
|
|
@@ -120,7 +135,7 @@ async function pollUntilTerminal(input) {
|
|
|
120
135
|
await sleep(pollIntervalMs);
|
|
121
136
|
let status;
|
|
122
137
|
try {
|
|
123
|
-
status = await db.queryStatus(queryId,
|
|
138
|
+
status = await db.queryStatus(queryId, { afterTime: pollAfterTime });
|
|
124
139
|
transientPollErrors = 0;
|
|
125
140
|
}
|
|
126
141
|
catch (pollError) {
|
|
@@ -174,9 +189,21 @@ async function pollUntilTerminal(input) {
|
|
|
174
189
|
}
|
|
175
190
|
// status === 'unknown'
|
|
176
191
|
// If submit has already rejected, the query never made it server-side
|
|
177
|
-
// (e.g. SQL parse error) —
|
|
178
|
-
// transient gap (just-submitted or just-finished); loop.
|
|
192
|
+
// (e.g. SQL parse error) — record the attempt as failed and surface that
|
|
193
|
+
// error. Otherwise it's a transient gap (just-submitted or just-finished); loop.
|
|
179
194
|
if (submitError) {
|
|
195
|
+
const failedOp = {
|
|
196
|
+
operationIndex: statementIndex,
|
|
197
|
+
operationKey,
|
|
198
|
+
operationType,
|
|
199
|
+
queryId,
|
|
200
|
+
status: 'failed',
|
|
201
|
+
startedAt,
|
|
202
|
+
finishedAt: isoWithoutZone(new Date(now())),
|
|
203
|
+
lastError: describeError(submitError),
|
|
204
|
+
};
|
|
205
|
+
const baseState = migrationState ?? freshMigrationState(migrationName, migrationChecksum);
|
|
206
|
+
await journalStore.writeMigrationState(upsertOperation(baseState, failedOp, now));
|
|
180
207
|
throw submitError;
|
|
181
208
|
}
|
|
182
209
|
log(` ${operationType}: status unknown — still polling (elapsed ${elapsedSec}s)`);
|
|
@@ -188,6 +215,44 @@ async function pollUntilTerminal(input) {
|
|
|
188
215
|
}
|
|
189
216
|
}
|
|
190
217
|
}
|
|
218
|
+
// applyMigration re-keys an edited in-progress state before any statement
|
|
219
|
+
// runs; this is defense in depth. A state whose checksum still differs is
|
|
220
|
+
// accepted only when no statement is recorded as completed or started (#233),
|
|
221
|
+
// and the writes that follow carry the new checksum.
|
|
222
|
+
function acceptChangedChecksum(state, migrationName, migrationChecksum) {
|
|
223
|
+
if (state === null || state.migrationCompleted || state.checksum === migrationChecksum)
|
|
224
|
+
return state;
|
|
225
|
+
if (hasStatementProgress(state)) {
|
|
226
|
+
throw inProgressChecksumMismatchError({
|
|
227
|
+
migration: migrationName,
|
|
228
|
+
journalChecksum: state.checksum,
|
|
229
|
+
fileChecksum: migrationChecksum,
|
|
230
|
+
async: true,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return { ...state, checksum: migrationChecksum };
|
|
234
|
+
}
|
|
235
|
+
// Read just before a submission, as an ISO UTC string for queryStatus.
|
|
236
|
+
async function readSubmissionLowerBound(db) {
|
|
237
|
+
return queryLogLowerBound(await readServerNowMs(db), 0);
|
|
238
|
+
}
|
|
239
|
+
// The attached attempt had run for elapsedMs when the in-flight check, which
|
|
240
|
+
// followed the serverNowMs reading, saw it. Without an elapsed time its start
|
|
241
|
+
// is unknown, and only the unbounded lookup still finds its entry.
|
|
242
|
+
function attachLowerBound(serverNowMs, elapsedMs) {
|
|
243
|
+
return elapsedMs === undefined ? UNBOUNDED_POLL_AFTER_TIME : queryLogLowerBound(serverNowMs, elapsedMs);
|
|
244
|
+
}
|
|
245
|
+
function queryLogLowerBound(serverNowMs, startedMsAgo) {
|
|
246
|
+
return new Date(serverNowMs - startedMsAgo - QUERY_LOG_SKEW_MARGIN_MS).toISOString();
|
|
247
|
+
}
|
|
248
|
+
async function readServerNowMs(db) {
|
|
249
|
+
const [row] = await db.query('SELECT toUnixTimestamp64Milli(now64(3)) AS now_ms');
|
|
250
|
+
const serverNowMs = Number(row?.now_ms);
|
|
251
|
+
if (!Number.isFinite(serverNowMs)) {
|
|
252
|
+
throw new Error('Could not read the ClickHouse server time for an async statement.');
|
|
253
|
+
}
|
|
254
|
+
return serverNowMs;
|
|
255
|
+
}
|
|
191
256
|
export function upsertOperation(state, op, now) {
|
|
192
257
|
const others = state.operations.filter((existing) => existing.operationIndex !== op.operationIndex);
|
|
193
258
|
const operations = [...others, op].sort((a, b) => a.operationIndex - b.operationIndex);
|
|
@@ -252,7 +317,4 @@ export function isoWithoutZone(date) {
|
|
|
252
317
|
function firstLine(value) {
|
|
253
318
|
return value.split('\n')[0] ?? value;
|
|
254
319
|
}
|
|
255
|
-
function defaultSleep(ms) {
|
|
256
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
257
|
-
}
|
|
258
320
|
//# sourceMappingURL=async-apply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-apply.js","sourceRoot":"","sources":["../../../src/commands/migrate/async-apply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"async-apply.js","sourceRoot":"","sources":["../../../src/commands/migrate/async-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ClickHouseExecutor } from '@chkit/clickhouse';
|
|
2
|
+
import type { ResolvedChxConfig } from '@chkit/core';
|
|
3
|
+
import { type ChxPluginCommand, type ParsedFlags, type PluginRuntime, type TableScope } from '../../plugins.js';
|
|
4
|
+
import { createJournalStore } from '../../runtime/journal-store.js';
|
|
5
|
+
import { type MigrationJournal } from '../../runtime/migration-store.js';
|
|
6
|
+
import { type MigrateMode } from './output.js';
|
|
2
7
|
export declare const migrateCommand: ChxPluginCommand;
|
|
8
|
+
type JournalStore = ReturnType<typeof createJournalStore>;
|
|
9
|
+
/** Shared state resolved once by prepareMigration and threaded through the phases. */
|
|
10
|
+
interface MigrateContext {
|
|
11
|
+
jsonMode: boolean;
|
|
12
|
+
executeRequested: boolean;
|
|
13
|
+
allowDestructive: boolean;
|
|
14
|
+
mode: MigrateMode;
|
|
15
|
+
migrationsDir: string;
|
|
16
|
+
metaDir: string;
|
|
17
|
+
db: ClickHouseExecutor;
|
|
18
|
+
journalStore: JournalStore;
|
|
19
|
+
config: ResolvedChxConfig;
|
|
20
|
+
flags: ParsedFlags;
|
|
21
|
+
pluginRuntime: PluginRuntime;
|
|
22
|
+
tableScope: TableScope;
|
|
23
|
+
journal: MigrationJournal;
|
|
24
|
+
files: string[];
|
|
25
|
+
appliedNames: ReadonlySet<string>;
|
|
26
|
+
pendingAll: string[];
|
|
27
|
+
retryTarget: string | undefined;
|
|
28
|
+
abandonTarget: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
/** The parts of the migrate context that --abandon reads. */
|
|
31
|
+
type AbandonContext = Pick<MigrateContext, 'jsonMode' | 'executeRequested' | 'journalStore' | 'tableScope' | 'appliedNames' | 'files' | 'metaDir'>;
|
|
32
|
+
/** How --abandon asks before it changes the journal without --apply. */
|
|
33
|
+
interface AbandonPrompt {
|
|
34
|
+
/** Whether someone can answer a prompt: a TTY outside CI. */
|
|
35
|
+
isInteractive: () => boolean;
|
|
36
|
+
confirm: (migration: string) => Promise<boolean>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* --abandon <migration>: reset the journal state of a failed migration so the
|
|
40
|
+
* next apply runs it from statement 1. Without --apply it only previews, like
|
|
41
|
+
* the rest of migrate, or asks first in an interactive terminal. Runs before
|
|
42
|
+
* every other gate and applies nothing.
|
|
43
|
+
*/
|
|
44
|
+
export declare function runAbandon(ctx: AbandonContext, migration: string, prompt?: AbandonPrompt): Promise<number>;
|
|
45
|
+
export {};
|
|
3
46
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/command.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAGL,KAAK,gBAAgB,EAErB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAA;AAQzC,OAAO,EAgBL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAA;AA8BpB,eAAO,MAAM,cAAc,EAAE,gBAK5B,CAAA;AAED,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEzD,sFAAsF;AACtF,UAAU,cAAc;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;IACzB,IAAI,EAAE,WAAW,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,kBAAkB,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,iBAAiB,CAAA;IACzB,KAAK,EAAE,WAAW,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;IACzB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAeD,6DAA6D;AAC7D,KAAK,cAAc,GAAG,IAAI,CACxB,cAAc,EACd,UAAU,GAAG,kBAAkB,GAAG,cAAc,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,GAAG,SAAS,CACvG,CAAA;AAED,wEAAwE;AACxE,UAAU,aAAa;IACrB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,OAAO,CAAA;IAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACjD;AAuGD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,cAAc,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,aAA+B,GACtC,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|