chkit 0.1.2-beta.7 → 0.2.0-beta.12

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.
Files changed (322) hide show
  1. package/README.md +69 -56
  2. package/dist/bin/chkit.js +82 -31
  3. package/dist/bin/chkit.js.map +1 -1
  4. package/dist/commands/check/output.js +1 -1
  5. package/dist/commands/check/output.js.map +1 -1
  6. package/dist/commands/drift/command.d.ts.map +1 -1
  7. package/dist/commands/drift/command.js +9 -0
  8. package/dist/commands/drift/command.js.map +1 -1
  9. package/dist/commands/drift/compare.d.ts +52 -4
  10. package/dist/commands/drift/compare.d.ts.map +1 -1
  11. package/dist/commands/drift/compare.js +258 -49
  12. package/dist/commands/drift/compare.js.map +1 -1
  13. package/dist/commands/drift/payload.d.ts +1 -0
  14. package/dist/commands/drift/payload.d.ts.map +1 -1
  15. package/dist/commands/drift/payload.js +59 -10
  16. package/dist/commands/drift/payload.js.map +1 -1
  17. package/dist/commands/generate/command.d.ts.map +1 -1
  18. package/dist/commands/generate/command.js +73 -33
  19. package/dist/commands/generate/command.js.map +1 -1
  20. package/dist/commands/generate/cutover.d.ts +56 -0
  21. package/dist/commands/generate/cutover.d.ts.map +1 -0
  22. package/dist/commands/generate/cutover.js +138 -0
  23. package/dist/commands/generate/cutover.js.map +1 -0
  24. package/dist/commands/generate/output.d.ts +3 -2
  25. package/dist/commands/generate/output.d.ts.map +1 -1
  26. package/dist/commands/generate/output.js +17 -2
  27. package/dist/commands/generate/output.js.map +1 -1
  28. package/dist/commands/generate/plan-pipeline.d.ts.map +1 -1
  29. package/dist/commands/generate/plan-pipeline.js +35 -36
  30. package/dist/commands/generate/plan-pipeline.js.map +1 -1
  31. package/dist/commands/init.d.ts +2 -0
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +21 -4
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/migrate/abandon.d.ts +39 -0
  36. package/dist/commands/migrate/abandon.d.ts.map +1 -0
  37. package/dist/commands/migrate/abandon.js +76 -0
  38. package/dist/commands/migrate/abandon.js.map +1 -0
  39. package/dist/commands/migrate/apply.d.ts +10 -1
  40. package/dist/commands/migrate/apply.d.ts.map +1 -1
  41. package/dist/commands/migrate/apply.js +108 -10
  42. package/dist/commands/migrate/apply.js.map +1 -1
  43. package/dist/commands/migrate/async-apply.d.ts +11 -3
  44. package/dist/commands/migrate/async-apply.d.ts.map +1 -1
  45. package/dist/commands/migrate/async-apply.js +113 -27
  46. package/dist/commands/migrate/async-apply.js.map +1 -1
  47. package/dist/commands/migrate/command.d.ts +46 -1
  48. package/dist/commands/migrate/command.d.ts.map +1 -1
  49. package/dist/commands/migrate/command.js +159 -35
  50. package/dist/commands/migrate/command.js.map +1 -1
  51. package/dist/commands/migrate/empty.d.ts +8 -0
  52. package/dist/commands/migrate/empty.d.ts.map +1 -0
  53. package/dist/commands/migrate/empty.js +17 -0
  54. package/dist/commands/migrate/empty.js.map +1 -0
  55. package/dist/commands/migrate/errors.d.ts +22 -0
  56. package/dist/commands/migrate/errors.d.ts.map +1 -0
  57. package/dist/commands/migrate/errors.js +31 -0
  58. package/dist/commands/migrate/errors.js.map +1 -0
  59. package/dist/commands/migrate/output.d.ts +31 -0
  60. package/dist/commands/migrate/output.d.ts.map +1 -1
  61. package/dist/commands/migrate/output.js +120 -9
  62. package/dist/commands/migrate/output.js.map +1 -1
  63. package/dist/commands/migrate/prompts.d.ts +1 -0
  64. package/dist/commands/migrate/prompts.d.ts.map +1 -1
  65. package/dist/commands/migrate/prompts.js +3 -0
  66. package/dist/commands/migrate/prompts.js.map +1 -1
  67. package/dist/commands/migrate/recovery.d.ts +90 -0
  68. package/dist/commands/migrate/recovery.d.ts.map +1 -0
  69. package/dist/commands/migrate/recovery.js +163 -0
  70. package/dist/commands/migrate/recovery.js.map +1 -0
  71. package/dist/commands/migrate/retry.d.ts +37 -0
  72. package/dist/commands/migrate/retry.d.ts.map +1 -0
  73. package/dist/commands/migrate/retry.js +46 -0
  74. package/dist/commands/migrate/retry.js.map +1 -0
  75. package/dist/commands/migrate/settings.d.ts +8 -0
  76. package/dist/commands/migrate/settings.d.ts.map +1 -0
  77. package/dist/commands/migrate/settings.js +40 -0
  78. package/dist/commands/migrate/settings.js.map +1 -0
  79. package/dist/commands/plugin.d.ts.map +1 -1
  80. package/dist/commands/plugin.js +28 -4
  81. package/dist/commands/plugin.js.map +1 -1
  82. package/dist/commands/query.d.ts.map +1 -1
  83. package/dist/commands/query.js +11 -15
  84. package/dist/commands/query.js.map +1 -1
  85. package/dist/commands/registry.d.ts +2 -0
  86. package/dist/commands/registry.d.ts.map +1 -0
  87. package/dist/commands/registry.js +228 -0
  88. package/dist/commands/registry.js.map +1 -0
  89. package/dist/commands/snapshot/command.d.ts +3 -0
  90. package/dist/commands/snapshot/command.d.ts.map +1 -0
  91. package/dist/commands/snapshot/command.js +32 -0
  92. package/dist/commands/snapshot/command.js.map +1 -0
  93. package/dist/commands/snapshot/output.d.ts +24 -0
  94. package/dist/commands/snapshot/output.d.ts.map +1 -0
  95. package/dist/commands/snapshot/output.js +86 -0
  96. package/dist/commands/snapshot/output.js.map +1 -0
  97. package/dist/commands/snapshot/rebuild.d.ts +19 -0
  98. package/dist/commands/snapshot/rebuild.d.ts.map +1 -0
  99. package/dist/commands/snapshot/rebuild.js +94 -0
  100. package/dist/commands/snapshot/rebuild.js.map +1 -0
  101. package/dist/internal-plugins/core/plugin.d.ts.map +1 -1
  102. package/dist/internal-plugins/core/plugin.js +2 -0
  103. package/dist/internal-plugins/core/plugin.js.map +1 -1
  104. package/dist/registry/build.d.ts +17 -0
  105. package/dist/registry/build.d.ts.map +1 -0
  106. package/dist/registry/build.js +94 -0
  107. package/dist/registry/build.js.map +1 -0
  108. package/dist/registry/dependencies.d.ts +19 -0
  109. package/dist/registry/dependencies.d.ts.map +1 -0
  110. package/dist/registry/dependencies.js +105 -0
  111. package/dist/registry/dependencies.js.map +1 -0
  112. package/dist/registry/files.d.ts +4 -0
  113. package/dist/registry/files.d.ts.map +1 -0
  114. package/dist/registry/files.js +33 -0
  115. package/dist/registry/files.js.map +1 -0
  116. package/dist/registry/install.d.ts +55 -0
  117. package/dist/registry/install.d.ts.map +1 -0
  118. package/dist/registry/install.js +175 -0
  119. package/dist/registry/install.js.map +1 -0
  120. package/dist/registry/model.d.ts +172 -0
  121. package/dist/registry/model.d.ts.map +1 -0
  122. package/dist/registry/model.js +161 -0
  123. package/dist/registry/model.js.map +1 -0
  124. package/dist/registry/project-config.d.ts +18 -0
  125. package/dist/registry/project-config.d.ts.map +1 -0
  126. package/dist/registry/project-config.js +337 -0
  127. package/dist/registry/project-config.js.map +1 -0
  128. package/dist/registry/resolve.d.ts +7 -0
  129. package/dist/registry/resolve.d.ts.map +1 -0
  130. package/dist/registry/resolve.js +136 -0
  131. package/dist/registry/resolve.js.map +1 -0
  132. package/dist/runtime/argv.d.ts +3 -0
  133. package/dist/runtime/argv.d.ts.map +1 -0
  134. package/dist/runtime/argv.js +29 -0
  135. package/dist/runtime/argv.js.map +1 -0
  136. package/dist/runtime/command-dispatch.d.ts +2 -1
  137. package/dist/runtime/command-dispatch.d.ts.map +1 -1
  138. package/dist/runtime/command-dispatch.js +15 -7
  139. package/dist/runtime/command-dispatch.js.map +1 -1
  140. package/dist/runtime/config-merge.d.ts.map +1 -1
  141. package/dist/runtime/config-merge.js +2 -1
  142. package/dist/runtime/config-merge.js.map +1 -1
  143. package/dist/runtime/config.d.ts.map +1 -1
  144. package/dist/runtime/config.js +2 -1
  145. package/dist/runtime/config.js.map +1 -1
  146. package/dist/runtime/global-flags.d.ts +4 -0
  147. package/dist/runtime/global-flags.d.ts.map +1 -1
  148. package/dist/runtime/global-flags.js +1 -0
  149. package/dist/runtime/global-flags.js.map +1 -1
  150. package/dist/runtime/help.d.ts +1 -1
  151. package/dist/runtime/help.d.ts.map +1 -1
  152. package/dist/runtime/help.js +13 -4
  153. package/dist/runtime/help.js.map +1 -1
  154. package/dist/runtime/journal-store.d.ts.map +1 -1
  155. package/dist/runtime/journal-store.js +178 -42
  156. package/dist/runtime/journal-store.js.map +1 -1
  157. package/dist/runtime/json-output.d.ts +15 -1
  158. package/dist/runtime/json-output.d.ts.map +1 -1
  159. package/dist/runtime/json-output.js +43 -2
  160. package/dist/runtime/json-output.js.map +1 -1
  161. package/dist/runtime/migration-store.d.ts +1 -1
  162. package/dist/runtime/migration-store.d.ts.map +1 -1
  163. package/dist/runtime/migration-store.js +17 -16
  164. package/dist/runtime/migration-store.js.map +1 -1
  165. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
  166. package/dist/runtime/plugin-runtime/executor-debug.js +10 -8
  167. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
  168. package/dist/runtime/plugin-runtime/loader.js +1 -1
  169. package/dist/runtime/plugin-runtime/loader.js.map +1 -1
  170. package/dist/runtime/safety-markers.d.ts +4 -2
  171. package/dist/runtime/safety-markers.d.ts.map +1 -1
  172. package/dist/runtime/safety-markers.js +4 -2
  173. package/dist/runtime/safety-markers.js.map +1 -1
  174. package/dist/runtime/schema-loader.d.ts +20 -1
  175. package/dist/runtime/schema-loader.d.ts.map +1 -1
  176. package/dist/runtime/schema-loader.js +26 -0
  177. package/dist/runtime/schema-loader.js.map +1 -1
  178. package/dist/runtime/snapshot-document.d.ts +33 -0
  179. package/dist/runtime/snapshot-document.d.ts.map +1 -0
  180. package/dist/runtime/snapshot-document.js +65 -0
  181. package/dist/runtime/snapshot-document.js.map +1 -0
  182. package/package.json +20 -7
  183. package/dist/bin/clickhouse-resource.d.ts +0 -4
  184. package/dist/bin/clickhouse-resource.d.ts.map +0 -1
  185. package/dist/bin/clickhouse-resource.js +0 -11
  186. package/dist/bin/clickhouse-resource.js.map +0 -1
  187. package/dist/bin/command-dispatch.d.ts +0 -13
  188. package/dist/bin/command-dispatch.d.ts.map +0 -1
  189. package/dist/bin/command-dispatch.js +0 -186
  190. package/dist/bin/command-dispatch.js.map +0 -1
  191. package/dist/bin/command-registry.d.ts +0 -34
  192. package/dist/bin/command-registry.d.ts.map +0 -1
  193. package/dist/bin/command-registry.js +0 -87
  194. package/dist/bin/command-registry.js.map +0 -1
  195. package/dist/bin/commands/check.d.ts +0 -3
  196. package/dist/bin/commands/check.d.ts.map +0 -1
  197. package/dist/bin/commands/check.js +0 -181
  198. package/dist/bin/commands/check.js.map +0 -1
  199. package/dist/bin/commands/codegen.d.ts +0 -2
  200. package/dist/bin/commands/codegen.d.ts.map +0 -1
  201. package/dist/bin/commands/codegen.js +0 -25
  202. package/dist/bin/commands/codegen.js.map +0 -1
  203. package/dist/bin/commands/drift.d.ts +0 -27
  204. package/dist/bin/commands/drift.d.ts.map +0 -1
  205. package/dist/bin/commands/drift.js +0 -220
  206. package/dist/bin/commands/drift.js.map +0 -1
  207. package/dist/bin/commands/generate/output.d.ts +0 -8
  208. package/dist/bin/commands/generate/output.d.ts.map +0 -1
  209. package/dist/bin/commands/generate/output.js +0 -58
  210. package/dist/bin/commands/generate/output.js.map +0 -1
  211. package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
  212. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
  213. package/dist/bin/commands/generate/plan-pipeline.js +0 -143
  214. package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
  215. package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
  216. package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
  217. package/dist/bin/commands/generate/rename-mappings.js +0 -195
  218. package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
  219. package/dist/bin/commands/generate.d.ts +0 -3
  220. package/dist/bin/commands/generate.d.ts.map +0 -1
  221. package/dist/bin/commands/generate.js +0 -158
  222. package/dist/bin/commands/generate.js.map +0 -1
  223. package/dist/bin/commands/init.d.ts +0 -2
  224. package/dist/bin/commands/init.d.ts.map +0 -1
  225. package/dist/bin/commands/init.js +0 -12
  226. package/dist/bin/commands/init.js.map +0 -1
  227. package/dist/bin/commands/migrate.d.ts +0 -3
  228. package/dist/bin/commands/migrate.d.ts.map +0 -1
  229. package/dist/bin/commands/migrate.js +0 -288
  230. package/dist/bin/commands/migrate.js.map +0 -1
  231. package/dist/bin/commands/plugin-like.d.ts +0 -38
  232. package/dist/bin/commands/plugin-like.d.ts.map +0 -1
  233. package/dist/bin/commands/plugin-like.js +0 -101
  234. package/dist/bin/commands/plugin-like.js.map +0 -1
  235. package/dist/bin/commands/plugin.d.ts +0 -3
  236. package/dist/bin/commands/plugin.d.ts.map +0 -1
  237. package/dist/bin/commands/plugin.js +0 -148
  238. package/dist/bin/commands/plugin.js.map +0 -1
  239. package/dist/bin/commands/pull.d.ts +0 -2
  240. package/dist/bin/commands/pull.d.ts.map +0 -1
  241. package/dist/bin/commands/pull.js +0 -25
  242. package/dist/bin/commands/pull.js.map +0 -1
  243. package/dist/bin/commands/status.d.ts +0 -3
  244. package/dist/bin/commands/status.d.ts.map +0 -1
  245. package/dist/bin/commands/status.js +0 -63
  246. package/dist/bin/commands/status.js.map +0 -1
  247. package/dist/bin/commands/typegen.d.ts +0 -2
  248. package/dist/bin/commands/typegen.d.ts.map +0 -1
  249. package/dist/bin/commands/typegen.js +0 -25
  250. package/dist/bin/commands/typegen.js.map +0 -1
  251. package/dist/bin/config.d.ts +0 -13
  252. package/dist/bin/config.d.ts.map +0 -1
  253. package/dist/bin/config.js +0 -48
  254. package/dist/bin/config.js.map +0 -1
  255. package/dist/bin/debug.d.ts +0 -3
  256. package/dist/bin/debug.d.ts.map +0 -1
  257. package/dist/bin/debug.js +0 -14
  258. package/dist/bin/debug.js.map +0 -1
  259. package/dist/bin/global-flags.d.ts +0 -16
  260. package/dist/bin/global-flags.d.ts.map +0 -1
  261. package/dist/bin/global-flags.js +0 -7
  262. package/dist/bin/global-flags.js.map +0 -1
  263. package/dist/bin/help.d.ts +0 -5
  264. package/dist/bin/help.d.ts.map +0 -1
  265. package/dist/bin/help.js +0 -84
  266. package/dist/bin/help.js.map +0 -1
  267. package/dist/bin/internal-plugins/index.d.ts +0 -3
  268. package/dist/bin/internal-plugins/index.d.ts.map +0 -1
  269. package/dist/bin/internal-plugins/index.js +0 -5
  270. package/dist/bin/internal-plugins/index.js.map +0 -1
  271. package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
  272. package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
  273. package/dist/bin/internal-plugins/skill-hint.js +0 -172
  274. package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
  275. package/dist/bin/journal-store.d.ts +0 -10
  276. package/dist/bin/journal-store.d.ts.map +0 -1
  277. package/dist/bin/journal-store.js +0 -137
  278. package/dist/bin/journal-store.js.map +0 -1
  279. package/dist/bin/json-output.d.ts +0 -5
  280. package/dist/bin/json-output.d.ts.map +0 -1
  281. package/dist/bin/json-output.js +0 -21
  282. package/dist/bin/json-output.js.map +0 -1
  283. package/dist/bin/lib.d.ts +0 -5
  284. package/dist/bin/lib.d.ts.map +0 -1
  285. package/dist/bin/lib.js +0 -5
  286. package/dist/bin/lib.js.map +0 -1
  287. package/dist/bin/logging.d.ts +0 -3
  288. package/dist/bin/logging.d.ts.map +0 -1
  289. package/dist/bin/logging.js +0 -31
  290. package/dist/bin/logging.js.map +0 -1
  291. package/dist/bin/migration-store.d.ts +0 -22
  292. package/dist/bin/migration-store.d.ts.map +0 -1
  293. package/dist/bin/migration-store.js +0 -60
  294. package/dist/bin/migration-store.js.map +0 -1
  295. package/dist/bin/plugin-runtime.d.ts +0 -45
  296. package/dist/bin/plugin-runtime.d.ts.map +0 -1
  297. package/dist/bin/plugin-runtime.js +0 -513
  298. package/dist/bin/plugin-runtime.js.map +0 -1
  299. package/dist/bin/safety-markers.d.ts +0 -23
  300. package/dist/bin/safety-markers.d.ts.map +0 -1
  301. package/dist/bin/safety-markers.js +0 -85
  302. package/dist/bin/safety-markers.js.map +0 -1
  303. package/dist/bin/schema-loader.d.ts +0 -3
  304. package/dist/bin/schema-loader.d.ts.map +0 -1
  305. package/dist/bin/schema-loader.js +0 -11
  306. package/dist/bin/schema-loader.js.map +0 -1
  307. package/dist/bin/table-scope.d.ts +0 -38
  308. package/dist/bin/table-scope.d.ts.map +0 -1
  309. package/dist/bin/table-scope.js +0 -167
  310. package/dist/bin/table-scope.js.map +0 -1
  311. package/dist/bin/version.d.ts +0 -2
  312. package/dist/bin/version.d.ts.map +0 -1
  313. package/dist/bin/version.js +0 -5
  314. package/dist/bin/version.js.map +0 -1
  315. package/dist/drift-diff.d.ts +0 -8
  316. package/dist/drift-diff.d.ts.map +0 -1
  317. package/dist/drift-diff.js +0 -46
  318. package/dist/drift-diff.js.map +0 -1
  319. package/dist/drift.d.ts +0 -66
  320. package/dist/drift.d.ts.map +0 -1
  321. package/dist/drift.js +0 -220
  322. package/dist/drift.js.map +0 -1
@@ -1,3 +1,8 @@
1
+ import { quoteIdentifier, renderQualifiedName } from '@chkit/core';
2
+ // Drops and object creates keep the order planDiff gave them, which is
3
+ // dependency-aware (#231); the classes this pipeline adds to sort by key.
4
+ const DROP_RANK = 0;
5
+ const CREATE_RANK = 4;
1
6
  export function applySelectedRenameSuggestions(plan, selectedSuggestions) {
2
7
  if (selectedSuggestions.length === 0)
3
8
  return plan;
@@ -13,15 +18,7 @@ export function applySelectedRenameSuggestions(plan, selectedSuggestions) {
13
18
  sql: suggestion.confirmationSQL,
14
19
  });
15
20
  }
16
- const operations = [
17
- ...plan.operations.filter((operation) => !operationKeysToRemove.has(operation.key)),
18
- ...renameOperations,
19
- ].sort((a, b) => {
20
- const rankOrder = rankOperation(a) - rankOperation(b);
21
- if (rankOrder !== 0)
22
- return rankOrder;
23
- return a.key.localeCompare(b.key);
24
- });
21
+ const operations = mergeOperations(plan.operations.filter((operation) => !operationKeysToRemove.has(operation.key)), renameOperations);
25
22
  return {
26
23
  operations,
27
24
  riskSummary: summarizeRisk(operations),
@@ -56,18 +53,10 @@ export function applyExplicitTableRenames(plan, mappings) {
56
53
  type: 'alter_table_rename_table',
57
54
  key: `table:${mapping.newDatabase}.${mapping.newName}:rename_table`,
58
55
  risk: 'caution',
59
- sql: `RENAME TABLE IF EXISTS ${mapping.oldDatabase}.${mapping.oldName} TO ${mapping.newDatabase}.${mapping.newName};`,
56
+ sql: `RENAME TABLE IF EXISTS ${renderQualifiedName(mapping.oldDatabase, mapping.oldName)} TO ${renderQualifiedName(mapping.newDatabase, mapping.newName)};`,
60
57
  });
61
58
  }
62
- const operations = [
63
- ...plan.operations.filter((operation) => !operationKeysToRemove.has(operation.key)),
64
- ...extraOperations,
65
- ].sort((a, b) => {
66
- const rankOrder = rankOperation(a) - rankOperation(b);
67
- if (rankOrder !== 0)
68
- return rankOrder;
69
- return a.key.localeCompare(b.key);
70
- });
59
+ const operations = mergeOperations(plan.operations.filter((operation) => !operationKeysToRemove.has(operation.key)), extraOperations);
71
60
  return {
72
61
  operations,
73
62
  riskSummary: summarizeRisk(operations),
@@ -99,18 +88,10 @@ export function applyExplicitDictionaryRenames(plan, mappings) {
99
88
  type: 'rename_dictionary',
100
89
  key: `dictionary:${mapping.newDatabase}.${mapping.newName}:rename_dictionary`,
101
90
  risk: 'caution',
102
- sql: `RENAME DICTIONARY IF EXISTS ${mapping.oldDatabase}.${mapping.oldName} TO ${mapping.newDatabase}.${mapping.newName};`,
91
+ sql: `RENAME DICTIONARY IF EXISTS ${renderQualifiedName(mapping.oldDatabase, mapping.oldName)} TO ${renderQualifiedName(mapping.newDatabase, mapping.newName)};`,
103
92
  });
104
93
  }
105
- const operations = [
106
- ...plan.operations.filter((operation) => !operationKeysToRemove.has(operation.key)),
107
- ...extraOperations,
108
- ].sort((a, b) => {
109
- const rankOrder = rankOperation(a) - rankOperation(b);
110
- if (rankOrder !== 0)
111
- return rankOrder;
112
- return a.key.localeCompare(b.key);
113
- });
94
+ const operations = mergeOperations(plan.operations.filter((operation) => !operationKeysToRemove.has(operation.key)), extraOperations);
114
95
  return {
115
96
  operations,
116
97
  riskSummary: summarizeRisk(operations),
@@ -139,7 +120,7 @@ export function buildExplicitColumnRenameSuggestions(plan, mappings) {
139
120
  : 'Explicitly confirmed by schema metadata (renamedFrom).',
140
121
  dropOperationKey,
141
122
  addOperationKey,
142
- confirmationSQL: `ALTER TABLE ${mapping.database}.${mapping.table} RENAME COLUMN IF EXISTS \`${mapping.from}\` TO \`${mapping.to}\`;`,
123
+ confirmationSQL: `ALTER TABLE ${renderQualifiedName(mapping.database, mapping.table)} RENAME COLUMN IF EXISTS ${quoteIdentifier(mapping.from)} TO ${quoteIdentifier(mapping.to)};`,
143
124
  });
144
125
  }
145
126
  return suggestions;
@@ -158,20 +139,38 @@ export function assertCliColumnMappingsResolvable(cliMappings, plan, nextDefinit
158
139
  throw new Error(`--rename-column mapping "${mapping.database}.${mapping.table}.${mapping.from}=${mapping.to}" is invalid: planner did not find both matching drop and add operations.`);
159
140
  }
160
141
  }
142
+ /**
143
+ * Combines the planner's operations (minus the ones a rename replaces) with the
144
+ * rename/create_database operations added here. Drops and object creates keep
145
+ * the planner's order, which is dependency-aware (#231); the classes this
146
+ * pipeline adds to are ordered by key, and operations that share a key keep
147
+ * the planner's order, so a column's `REMOVE DEFAULT` still runs before its
148
+ * `MODIFY COLUMN`.
149
+ */
150
+ function mergeOperations(kept, added) {
151
+ return [...kept, ...added]
152
+ .map((operation, index) => ({ operation, index }))
153
+ .sort((a, b) => {
154
+ const rank = rankOperation(a.operation);
155
+ const rankOrder = rank - rankOperation(b.operation);
156
+ if (rankOrder !== 0)
157
+ return rankOrder;
158
+ if (rank === DROP_RANK || rank === CREATE_RANK)
159
+ return a.index - b.index;
160
+ return a.operation.key.localeCompare(b.operation.key) || a.index - b.index;
161
+ })
162
+ .map(({ operation }) => operation);
163
+ }
161
164
  function rankOperation(op) {
162
165
  if (op.type.startsWith('drop_'))
163
- return 0;
166
+ return DROP_RANK;
164
167
  if (op.type === 'create_database')
165
168
  return 1;
166
169
  if (op.type === 'alter_table_rename_table' || op.type === 'rename_dictionary')
167
170
  return 2;
168
171
  if (op.type.startsWith('alter_'))
169
172
  return 3;
170
- if (op.type === 'create_table')
171
- return 4;
172
- if (op.type === 'create_view')
173
- return 5;
174
- return 6;
173
+ return CREATE_RANK;
175
174
  }
176
175
  function summarizeRisk(operations) {
177
176
  const riskSummary = { safe: 0, caution: 0, danger: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"plan-pipeline.js","sourceRoot":"","sources":["../../../src/commands/generate/plan-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-pipeline.js","sourceRoot":"","sources":["../../../src/commands/generate/plan-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
+ /** The example schema `init` writes to src/db/schema/example.ts. */
2
+ export declare 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";
1
3
  export declare function cmdInit(argv?: string[]): Promise<void>;
2
4
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAgBA,wBAAsB,OAAO,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,oEAAoE;AACpE,eAAO,MAAM,oBAAoB,iqBAAiqB,CAAA;AAUlsB,wBAAsB,OAAO,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhE"}
@@ -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 clickhouse: {\n url: process.env.CLICKHOUSE_URL ?? 'http://localhost:8123',\n username: process.env.CLICKHOUSE_USER ?? 'default',\n password: process.env.CLICKHOUSE_PASSWORD ?? '',\n database: process.env.CLICKHOUSE_DB ?? 'default',\n },\n})\n`);
11
- const wroteSchema = await writeIfMissing(schemaPath, `import { schema, table } from '@chkit/core'\n\nconst events = table({\n database: 'default',\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: 'fn:now64(3)' },\n ],\n primaryKey: ['id'],\n orderBy: ['id'],\n partitionBy: 'toYYYYMM(ingested_at)',\n})\n\nexport default schema(events)\n`);
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 CLICKHOUSE_URL (and CLICKHOUSE_USER / CLICKHOUSE_PASSWORD / CLICKHOUSE_DB if needed).');
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. Run: npx chkit migrate --apply');
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":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
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: every
22
+ * statement runs its `-- before-retry:` SQL first, sync statements run again,
23
+ * and async statements keep their query ids, so they take the retry path
24
+ * (compensation, then a resubmit).
25
+ * Like every journal write this is an INSERT of a newer row version, so it
26
+ * needs no DELETE privilege and leaves no mutation behind.
27
+ */
28
+ export declare function abandonMigrationState(state: MigrationRowState, deps: {
29
+ journalStore: JournalStore;
30
+ now?: () => number;
31
+ }): Promise<void>;
32
+ export declare function abandonReport(state: MigrationRowState): AbandonReport;
33
+ /**
34
+ * The status a statement had before --abandon marked it failed, or its
35
+ * recorded status when no abandon touched it. A statement that completed
36
+ * before an abandon stays applied in ClickHouse.
37
+ */
38
+ export declare function statusBeforeAbandon(op: OperationState): OperationStatus;
39
+ //# 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;;;;;;;;GAQG;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,76 @@
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: every
20
+ * statement runs its `-- before-retry:` SQL first, sync statements run again,
21
+ * and async statements keep their query ids, so they take the retry path
22
+ * (compensation, then a resubmit).
23
+ * Like every journal write this is an INSERT of a newer row version, so it
24
+ * needs no DELETE privilege and leaves no mutation behind.
25
+ */
26
+ export async function abandonMigrationState(state, deps) {
27
+ const now = isoWithoutZone(new Date((deps.now ?? Date.now)()));
28
+ await deps.journalStore.writeMigrationState(abandonedState(state, now));
29
+ }
30
+ export function abandonReport(state) {
31
+ const operations = [...state.operations].sort((a, b) => a.operationIndex - b.operationIndex);
32
+ return {
33
+ migration: state.name,
34
+ checksum: state.checksum,
35
+ completedStatements: operations.filter((op) => statusBeforeAbandon(op) === 'completed').length,
36
+ operations,
37
+ };
38
+ }
39
+ /**
40
+ * The status a statement had before --abandon marked it failed, or its
41
+ * recorded status when no abandon touched it. A statement that completed
42
+ * before an abandon stays applied in ClickHouse.
43
+ */
44
+ export function statusBeforeAbandon(op) {
45
+ return abandonedFrom(op) ?? op.status;
46
+ }
47
+ // A statement an earlier --abandon already marked failed keeps that record,
48
+ // so abandoning again does not lose which statements had completed.
49
+ function abandonedState(state, now) {
50
+ return {
51
+ ...state,
52
+ appliedAt: now,
53
+ migrationCompleted: false,
54
+ operations: state.operations.map((op) => abandonedFrom(op) !== undefined
55
+ ? op
56
+ : {
57
+ ...op,
58
+ status: 'failed',
59
+ finishedAt: op.finishedAt ?? now,
60
+ lastError: abandonedError(op.status),
61
+ }),
62
+ };
63
+ }
64
+ /** The status before an earlier --abandon, or undefined when no abandon marked this statement. */
65
+ function abandonedFrom(op) {
66
+ if (op.status !== 'failed')
67
+ return undefined;
68
+ return OPERATION_STATUSES.find((status) => op.lastError === abandonedError(status));
69
+ }
70
+ function abandonedError(previous) {
71
+ return `abandoned via chkit migrate --abandon (was ${previous})`;
72
+ }
73
+ function alreadyAppliedError(migration) {
74
+ 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.`);
75
+ }
76
+ //# 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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"}
@@ -1,4 +1,4 @@
1
- import { type ClickHouseExecutor } from '@chkit/clickhouse';
1
+ import { type ClickHouseExecutor, type ClickHouseSettings } from '@chkit/clickhouse';
2
2
  import type { ResolvedChxConfig } from '@chkit/core';
3
3
  import type { ParsedFlags, PluginRuntime, TableScope } from '../../plugins.js';
4
4
  import type { createJournalStore } from '../../runtime/journal-store.js';
@@ -28,6 +28,15 @@ export declare function applyMigration(input: {
28
28
  flags: ParsedFlags;
29
29
  migrationsDir: string;
30
30
  file: string;
31
+ /** --setting values, sent with every statement of the migration (sync, async, barrier, before-retry). */
32
+ settings?: ClickHouseSettings;
33
+ /** Set when --retry verified an edit of this in-progress migration before the run (#233). */
34
+ retry?: {
35
+ previousChecksum: string;
36
+ checksum: string;
37
+ };
38
+ /** Progress lines; the command sends them to stderr in --json mode. */
39
+ log?: (line: string) => void;
31
40
  }): Promise<MigrationJournalEntry>;
32
41
  export {};
33
42
  //# 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;AAY1F,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;CACb,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoHjC"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAExB,MAAM,mBAAmB,CAAA;AAC1B,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,yGAAyG;IACzG,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,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,CAoJjC"}
@@ -1,10 +1,12 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
- import { waitForDDLPropagation } from '@chkit/clickhouse';
3
+ import { assertNoFireAndForgetAsyncInserts, parseExchangeTables, waitForDDLPropagation, waitForExchange, waitForInsertBarrier, } from '@chkit/clickhouse';
4
4
  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, settings, 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". Guard against resuming across a file edit.
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
- throw new Error(`Migration ${file} has in-progress journal state for checksum ${initialState.checksum}, but the current file checksum is ${migrationChecksum}. Restore the original migration file or clear the in-progress journal state before retrying.`);
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,8 @@ export async function applyMigration(input) {
85
96
  operationType: operation.type,
86
97
  operationKey: operation.key,
87
98
  beforeRetry: operation.beforeRetry,
88
- log: (line) => console.log(line),
99
+ settings,
100
+ log,
89
101
  });
90
102
  }
91
103
  catch (error) {
@@ -101,12 +113,39 @@ export async function applyMigration(input) {
101
113
  debug('migrate', `${file}#${i}: already completed in a prior run — skipping`);
102
114
  continue;
103
115
  }
104
- const opType = operation?.type ?? 'sql_statement';
105
- const opKey = operation?.key ?? `statement:${i}`;
116
+ const { type: opType, key: opKey } = statementIdentity(operationSummaries, i);
117
+ const priorAttempt = stateBefore?.operations.find((op) => op.operationIndex === i);
118
+ if (priorAttempt !== undefined && operation?.beforeRetry) {
119
+ try {
120
+ await runBeforeRetry(db, operation.type, statement, operation.beforeRetry, {
121
+ cluster: config.clickhouse?.cluster,
122
+ settings,
123
+ log,
124
+ status: priorAttempt.status,
125
+ });
126
+ }
127
+ catch (error) {
128
+ throw statementError({ file, index: i, total: statements.length, statement, error });
129
+ }
130
+ }
131
+ const swapped = operation ? swappedTables(operation.type, operation.key, statement) : undefined;
132
+ if (swapped) {
133
+ try {
134
+ await assertNoFireAndForgetAsyncInserts(db, swapped, { cluster: config.clickhouse?.cluster, log });
135
+ }
136
+ catch (error) {
137
+ throw statementError({ file, index: i, total: statements.length, statement, error });
138
+ }
139
+ }
106
140
  const baseState = stateBefore ?? freshMigrationState(file, migrationChecksum);
107
141
  await journalStore.writeMigrationState(upsertOperation(baseState, syncOperationState(i, opType, opKey, 'started'), Date.now));
108
142
  try {
109
- await db.command(statement);
143
+ if (operation?.mode === 'barrier') {
144
+ await waitForInsertBarrier(db, statement, { cluster: config.clickhouse?.cluster, settings, log });
145
+ }
146
+ else {
147
+ await db.command(statement, settings);
148
+ }
110
149
  }
111
150
  catch (error) {
112
151
  const stateOnError = (await journalStore.readMigrationState(file)) ?? baseState;
@@ -119,8 +158,8 @@ export async function applyMigration(input) {
119
158
  // replay it into an "already exists" error (the brick this fix prevents).
120
159
  const stateAfter = (await journalStore.readMigrationState(file)) ?? baseState;
121
160
  await journalStore.writeMigrationState(upsertOperation(stateAfter, syncOperationState(i, opType, opKey, 'completed'), Date.now));
122
- if (operation) {
123
- await waitForDDLPropagation(db, operation.type, operation.key);
161
+ if (operation && operation.mode !== 'barrier') {
162
+ await waitForDDLPropagation(db, operation.type, operation.key, { cluster: config.clickhouse?.cluster, statement });
124
163
  }
125
164
  }
126
165
  const entry = {
@@ -140,4 +179,63 @@ export async function applyMigration(input) {
140
179
  });
141
180
  return entry;
142
181
  }
182
+ const CUTOVER_START_KEY = /^table:([^.]+)\.(.+):cutover:start$/;
183
+ /**
184
+ * The tables a statement is about to swap, whose fire-and-forget async inserts
185
+ * would be dropped: both tables of an EXCHANGE TABLES, and the table of a
186
+ * cutover at its first step, so that the cutover stops before its copy.
187
+ */
188
+ function swappedTables(operationType, operationKey, statement) {
189
+ if (operationType === 'exchange_tables')
190
+ return parseExchangeTables(statement);
191
+ if (operationType !== 'cutover_validate')
192
+ return undefined;
193
+ const match = CUTOVER_START_KEY.exec(operationKey);
194
+ if (!match?.[1] || !match[2])
195
+ return undefined;
196
+ return [{ database: match[1], name: match[2] }];
197
+ }
198
+ /**
199
+ * Runs a statement's `-- before-retry:` SQL before chkit attempts it again
200
+ * after an earlier attempt failed or was interrupted. Before an EXCHANGE
201
+ * TABLES the replicas first have to agree on both tables: a swap that ran but
202
+ * whose acknowledgement was lost may not have reached the replica the guard
203
+ * reads yet, and exchanging again would swap the tables back.
204
+ */
205
+ async function runBeforeRetry(db, operationType, statement, beforeRetry, options) {
206
+ if (operationType === 'exchange_tables') {
207
+ await waitForExchange(db, statement, { cluster: options.cluster });
208
+ }
209
+ options.log(` ${operationType}: an earlier attempt ${options.status === 'failed' ? 'failed' : 'was interrupted'} — running before-retry SQL`);
210
+ await db.command(beforeRetry, options.settings);
211
+ }
212
+ // An in-progress migration whose file changed resumes when this run's --retry
213
+ // verified the edit, or when no statement is recorded as completed or started
214
+ // (the first statement failed, or --abandon marked every statement failed):
215
+ // the file then runs again from statement 1. The state is re-keyed to the new
216
+ // checksum before anything runs, so a later failure resumes without --retry.
217
+ async function acceptEditedMigration(input) {
218
+ const { file, state, checksum, identities, retry, journalStore } = input;
219
+ const retryVerified = retry !== undefined && retry.previousChecksum === state.checksum && retry.checksum === checksum;
220
+ if (retryVerified) {
221
+ // --retry checked the file's statements; apply indexes the statements the
222
+ // plugins returned, so check those too.
223
+ const check = verifyRetryEdit(state.operations, identities);
224
+ if (!check.ok)
225
+ throw retryMismatchError(file, check);
226
+ debug('migrate', `${file}: --retry accepted checksum ${state.checksum} → ${checksum}`);
227
+ }
228
+ else if (hasStatementProgress(state)) {
229
+ throw inProgressChecksumMismatchError({
230
+ migration: file,
231
+ journalChecksum: state.checksum,
232
+ fileChecksum: checksum,
233
+ async: false,
234
+ });
235
+ }
236
+ else {
237
+ input.log(`${file} changed since its last failed attempt; no statement is recorded as completed, so it runs again from statement 1.`);
238
+ }
239
+ await journalStore.writeMigrationState(rebaseInProgressState(state, { checksum, identities, appliedAt: isoWithoutZone(new Date()) }));
240
+ }
143
241
  //# 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;AAIzB,SAAS,oBAAoB,CAAC,KAA+B,EAAE,KAAa;IAC1E,OAAO,CACL,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,KAAK,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,KAAK,CAClG,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,GAAG,GAAG,GAAG;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAA;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAM9B;IACC,MAAM,OAAO,GAAG,IAAI,KAAK,CACvB,aAAa,KAAK,CAAC,IAAI,wBAAwB,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK;QACnF,KAAK,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;QAC1C,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAC5B,CAAA;IACD,IAAI,KAAK,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAA;IACxF,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAa,EACb,aAAqB,EACrB,YAAoB,EACpB,MAAuB,EACvB,SAAS,GAAG,EAAE;IAEd,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC5C,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,YAAY;QACZ,aAAa;QACb,OAAO,EAAE,EAAE;QACX,MAAM;QACN,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACnD,SAAS;KACV,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KASpC;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAEjG,KAAK,CAAC,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC,CAAA;IACpC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAA;IACzD,MAAM,kBAAkB,GAAG,kCAAkC,CAAC,GAAG,CAAC,CAAA;IAClE,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,gBAAgB,CAAC,MAAM,gBAAgB,kBAAkB,CAAC,MAAM,aAAa,CAAC,CAAA;IAE3G,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC;QACtD,OAAO,EAAE,SAAS;QAClB,MAAM;QACN,UAAU;QACV,KAAK;QACL,SAAS,EAAE,IAAI;QACf,GAAG;QACH,UAAU,EAAE,gBAAgB;KAC7B,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAE1C,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAChE,IACE,YAAY,KAAK,IAAI;QACrB,CAAC,YAAY,CAAC,kBAAkB;QAChC,YAAY,CAAC,QAAQ,KAAK,iBAAiB,EAC3C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,+CAA+C,YAAY,CAAC,QAAQ,sCAAsC,iBAAiB,+FAA+F,CAC5O,CAAA;IACH,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAW,CAAA;QACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,SAAS,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,mBAAmB,CAAC;oBACxB,EAAE;oBACF,YAAY;oBACZ,GAAG,EAAE,SAAS;oBACd,aAAa,EAAE,IAAI;oBACnB,iBAAiB;oBACjB,cAAc,EAAE,CAAC;oBACjB,aAAa,EAAE,SAAS,CAAC,IAAI;oBAC7B,YAAY,EAAE,SAAS,CAAC,GAAG;oBAC3B,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;iBACjC,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;YACtF,CAAC;YACD,wEAAwE;YACxE,SAAQ;QACV,CAAC;QACD,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAC/D,IAAI,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC,+CAA+C,CAAC,CAAA;YAC7E,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,IAAI,eAAe,CAAA;QACjD,MAAM,KAAK,GAAG,SAAS,EAAE,GAAG,IAAI,aAAa,CAAC,EAAE,CAAA;QAChD,MAAM,SAAS,GAAG,WAAW,IAAI,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QAC7E,MAAM,YAAY,CAAC,mBAAmB,CACpC,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CACtF,CAAA;QACD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,CAAC,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAA;YAC/E,MAAM,YAAY,CAAC,mBAAmB,CACpC,eAAe,CACb,YAAY,EACZ,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EACnE,IAAI,CAAC,GAAG,CACT,CACF,CAAA;YACD,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,UAAU,GAAG,CAAC,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAA;QAC7E,MAAM,YAAY,CAAC,mBAAmB,CACpC,eAAe,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CACzF,CAAA;QACD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,qBAAqB,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAA0B;QACnC,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACpD,QAAQ,EAAE,iBAAiB;KAC5B,CAAA;IACD,MAAM,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAErC,MAAM,aAAa,CAAC,eAAe,CAAC;QAClC,OAAO,EAAE,SAAS;QAClB,MAAM;QACN,UAAU;QACV,KAAK;QACL,SAAS,EAAE,IAAI;QACf,UAAU;QACV,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/commands/migrate/apply.ts"],"names":[],"mappings":"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"}