@intentius/chant-lexicon-sql 0.124.46 → 0.124.48

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 (360) hide show
  1. package/dist/change-set.d.ts +1 -1
  2. package/dist/change-set.d.ts.map +1 -1
  3. package/dist/change-set.js +2 -1
  4. package/dist/clickhouse/apply/statements.d.ts +9 -0
  5. package/dist/clickhouse/apply/statements.d.ts.map +1 -1
  6. package/dist/clickhouse/apply/statements.js +24 -0
  7. package/dist/clickhouse/import/live-export.d.ts +7 -3
  8. package/dist/clickhouse/import/live-export.d.ts.map +1 -1
  9. package/dist/clickhouse/import/live-export.js +21 -5
  10. package/dist/clickhouse/live/named-collections.d.ts +27 -0
  11. package/dist/clickhouse/live/named-collections.d.ts.map +1 -0
  12. package/dist/clickhouse/live/named-collections.js +53 -0
  13. package/dist/clickhouse/live/undeclarable.d.ts +15 -3
  14. package/dist/clickhouse/live/undeclarable.d.ts.map +1 -1
  15. package/dist/clickhouse/live/undeclarable.js +18 -4
  16. package/dist/clickhouse/named-collections.d.ts +83 -0
  17. package/dist/clickhouse/named-collections.d.ts.map +1 -0
  18. package/dist/clickhouse/named-collections.js +203 -0
  19. package/dist/clickhouse/parser.d.ts.map +1 -1
  20. package/dist/clickhouse/parser.js +1 -1
  21. package/dist/clickhouse/plan/commands.d.ts +2 -1
  22. package/dist/clickhouse/plan/commands.d.ts.map +1 -1
  23. package/dist/clickhouse/plan/commands.js +17 -2
  24. package/dist/clickhouse/plan/diff.d.ts +15 -0
  25. package/dist/clickhouse/plan/diff.d.ts.map +1 -1
  26. package/dist/clickhouse/plan/diff.js +43 -1
  27. package/dist/clickhouse/plan/disruption.d.ts.map +1 -1
  28. package/dist/clickhouse/plan/disruption.js +5 -0
  29. package/dist/clickhouse/plan/rebuild-handoff.d.ts.map +1 -1
  30. package/dist/clickhouse/plan/rebuild-handoff.js +4 -0
  31. package/dist/clickhouse/plan/report.d.ts.map +1 -1
  32. package/dist/clickhouse/plan/report.js +6 -1
  33. package/dist/clickhouse/plan/rules.d.ts +5 -1
  34. package/dist/clickhouse/plan/rules.d.ts.map +1 -1
  35. package/dist/clickhouse/plan/rules.js +7 -3
  36. package/dist/clickhouse/plan/stream.d.ts +40 -0
  37. package/dist/clickhouse/plan/stream.d.ts.map +1 -0
  38. package/dist/clickhouse/plan/stream.js +107 -0
  39. package/dist/clickhouse/rebuild/observe.d.ts +3 -1
  40. package/dist/clickhouse/rebuild/observe.d.ts.map +1 -1
  41. package/dist/clickhouse/rebuild/observe.js +14 -1
  42. package/dist/clickhouse/review-catalog.d.ts +213 -0
  43. package/dist/clickhouse/review-catalog.d.ts.map +1 -0
  44. package/dist/clickhouse/review-catalog.js +330 -0
  45. package/dist/codegen/classifier-page.d.ts.map +1 -1
  46. package/dist/codegen/classifier-page.js +21 -4
  47. package/dist/codegen/clickhouse-module.d.ts.map +1 -1
  48. package/dist/codegen/clickhouse-module.js +3 -0
  49. package/dist/codegen/coverage-page.d.ts.map +1 -1
  50. package/dist/codegen/coverage-page.js +5 -3
  51. package/dist/codegen/docs.js +1 -1
  52. package/dist/codegen/postgres-classifier-page.js +1 -1
  53. package/dist/codegen/registry.d.ts.map +1 -1
  54. package/dist/codegen/registry.js +5 -0
  55. package/dist/composites/catalog.d.ts.map +1 -1
  56. package/dist/composites/catalog.js +100 -0
  57. package/dist/composites/clickhouse.d.ts +2 -0
  58. package/dist/composites/clickhouse.d.ts.map +1 -1
  59. package/dist/composites/clickhouse.js +2 -0
  60. package/dist/composites/otel-tables.d.ts +100 -0
  61. package/dist/composites/otel-tables.d.ts.map +1 -0
  62. package/dist/composites/otel-tables.js +282 -0
  63. package/dist/composites/stream-ingest.d.ts +63 -0
  64. package/dist/composites/stream-ingest.d.ts.map +1 -0
  65. package/dist/composites/stream-ingest.js +39 -0
  66. package/dist/coverage/clickhouse.json +1 -1
  67. package/dist/coverage/postgres.json +7 -7
  68. package/dist/coverage.d.ts +16 -6
  69. package/dist/coverage.d.ts.map +1 -1
  70. package/dist/coverage.js +10 -5
  71. package/dist/drizzle-command.d.ts +17 -0
  72. package/dist/drizzle-command.d.ts.map +1 -0
  73. package/dist/drizzle-command.js +91 -0
  74. package/dist/drizzle.d.ts +70 -0
  75. package/dist/drizzle.d.ts.map +1 -0
  76. package/dist/drizzle.js +684 -0
  77. package/dist/files/clickhouse.d.ts.map +1 -1
  78. package/dist/files/clickhouse.js +8 -1
  79. package/dist/files/common.d.ts +13 -0
  80. package/dist/files/common.d.ts.map +1 -1
  81. package/dist/files/common.js +5 -0
  82. package/dist/files/postgres.js +12 -2
  83. package/dist/generated/clickhouse.d.ts +2 -0
  84. package/dist/generated/clickhouse.d.ts.map +1 -1
  85. package/dist/generated/clickhouse.js +2 -0
  86. package/dist/import-parser.d.ts +21 -1
  87. package/dist/import-parser.d.ts.map +1 -1
  88. package/dist/import-parser.js +79 -5
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +1 -1
  92. package/dist/integrity.json +6 -5
  93. package/dist/lint/post-synth/audit-entries.d.ts.map +1 -1
  94. package/dist/lint/post-synth/audit-entries.js +1 -0
  95. package/dist/lint/post-synth/index.d.ts.map +1 -1
  96. package/dist/lint/post-synth/index.js +2 -0
  97. package/dist/lint/post-synth/sqlch128.d.ts +18 -0
  98. package/dist/lint/post-synth/sqlch128.d.ts.map +1 -0
  99. package/dist/lint/post-synth/sqlch128.js +222 -0
  100. package/dist/lint/rules/postgres-templates.js +2 -2
  101. package/dist/lsp/postgres-template.d.ts.map +1 -1
  102. package/dist/lsp/postgres-template.js +11 -0
  103. package/dist/manifest.json +1 -1
  104. package/dist/mcp/postgres.js +1 -1
  105. package/dist/meta.json +25 -0
  106. package/dist/migrate/from-postgres/detect.d.ts +4 -0
  107. package/dist/migrate/from-postgres/detect.d.ts.map +1 -0
  108. package/dist/migrate/from-postgres/detect.js +7 -0
  109. package/dist/migrate/from-postgres/emit.d.ts +26 -0
  110. package/dist/migrate/from-postgres/emit.d.ts.map +1 -0
  111. package/dist/migrate/from-postgres/emit.js +86 -0
  112. package/dist/migrate/from-postgres/index.d.ts +51 -0
  113. package/dist/migrate/from-postgres/index.d.ts.map +1 -0
  114. package/dist/migrate/from-postgres/index.js +115 -0
  115. package/dist/migrate/from-postgres/translate.d.ts +73 -0
  116. package/dist/migrate/from-postgres/translate.d.ts.map +1 -0
  117. package/dist/migrate/from-postgres/translate.js +261 -0
  118. package/dist/migrate/from-postgres/types.d.ts +51 -0
  119. package/dist/migrate/from-postgres/types.d.ts.map +1 -0
  120. package/dist/migrate/from-postgres/types.js +211 -0
  121. package/dist/migration-replay.d.ts +73 -0
  122. package/dist/migration-replay.d.ts.map +1 -0
  123. package/dist/migration-replay.js +294 -0
  124. package/dist/okf/index.md +6 -0
  125. package/dist/okf/rules/SQLCH128.md +11 -0
  126. package/dist/okf/types/PostgresForeignDataWrapper.md +9 -0
  127. package/dist/okf/types/PostgresForeignServer.md +9 -0
  128. package/dist/okf/types/PostgresOperator.md +9 -0
  129. package/dist/okf/types/PostgresPublication.md +9 -0
  130. package/dist/okf/types/PostgresStatistics.md +9 -0
  131. package/dist/op/activities/postgres-migration.d.ts.map +1 -1
  132. package/dist/op/activities/postgres-migration.js +4 -0
  133. package/dist/op/activity-contracts.d.ts +20 -0
  134. package/dist/op/activity-contracts.d.ts.map +1 -1
  135. package/dist/op/activity-contracts.js +2 -0
  136. package/dist/plugin.d.ts.map +1 -1
  137. package/dist/plugin.js +36 -2
  138. package/dist/postgres/apply/apply.js +8 -1
  139. package/dist/postgres/apply/statements.d.ts.map +1 -1
  140. package/dist/postgres/apply/statements.js +87 -2
  141. package/dist/postgres/constraint-names.d.ts +30 -0
  142. package/dist/postgres/constraint-names.d.ts.map +1 -0
  143. package/dist/postgres/constraint-names.js +72 -0
  144. package/dist/postgres/entities.d.ts +110 -1
  145. package/dist/postgres/entities.d.ts.map +1 -1
  146. package/dist/postgres/entities.js +146 -0
  147. package/dist/postgres/entity-types.d.ts +5 -0
  148. package/dist/postgres/entity-types.d.ts.map +1 -1
  149. package/dist/postgres/entity-types.js +5 -0
  150. package/dist/postgres/import/generator.d.ts.map +1 -1
  151. package/dist/postgres/import/generator.js +50 -2
  152. package/dist/postgres/import/live-export.d.ts.map +1 -1
  153. package/dist/postgres/import/live-export.js +2 -0
  154. package/dist/postgres/live/catalog-kinds.d.ts +14 -0
  155. package/dist/postgres/live/catalog-kinds.d.ts.map +1 -1
  156. package/dist/postgres/live/catalog-kinds.js +206 -0
  157. package/dist/postgres/live/catalog.d.ts +2 -0
  158. package/dist/postgres/live/catalog.d.ts.map +1 -1
  159. package/dist/postgres/live/catalog.js +3 -1
  160. package/dist/postgres/live/describe-resources.d.ts.map +1 -1
  161. package/dist/postgres/live/describe-resources.js +10 -2
  162. package/dist/postgres/migrate/backfill.d.ts +2 -0
  163. package/dist/postgres/migrate/backfill.d.ts.map +1 -1
  164. package/dist/postgres/migrate/backfill.js +7 -1
  165. package/dist/postgres/migrate/carry.d.ts +45 -1
  166. package/dist/postgres/migrate/carry.d.ts.map +1 -1
  167. package/dist/postgres/migrate/carry.js +72 -8
  168. package/dist/postgres/migrate/observe.d.ts +28 -4
  169. package/dist/postgres/migrate/observe.d.ts.map +1 -1
  170. package/dist/postgres/migrate/observe.js +41 -12
  171. package/dist/postgres/migrate/op.d.ts +26 -1
  172. package/dist/postgres/migrate/op.d.ts.map +1 -1
  173. package/dist/postgres/migrate/op.js +3 -1
  174. package/dist/postgres/migrate/steps.d.ts +35 -2
  175. package/dist/postgres/migrate/steps.d.ts.map +1 -1
  176. package/dist/postgres/migrate/steps.js +158 -12
  177. package/dist/postgres/parser.d.ts +72 -1
  178. package/dist/postgres/parser.d.ts.map +1 -1
  179. package/dist/postgres/parser.js +194 -2
  180. package/dist/postgres/plan/deep.d.ts.map +1 -1
  181. package/dist/postgres/plan/deep.js +29 -1
  182. package/dist/postgres/plan/diff.d.ts.map +1 -1
  183. package/dist/postgres/plan/diff.js +39 -1
  184. package/dist/postgres/plan/normalize.d.ts +17 -2
  185. package/dist/postgres/plan/normalize.d.ts.map +1 -1
  186. package/dist/postgres/plan/normalize.js +109 -1
  187. package/dist/postgres/plan/rules.d.ts +1 -0
  188. package/dist/postgres/plan/rules.d.ts.map +1 -1
  189. package/dist/postgres/plan/rules.js +3 -2
  190. package/dist/postgres/plan/schema.js +1 -1
  191. package/dist/postgres/secret-options.d.ts +10 -0
  192. package/dist/postgres/secret-options.d.ts.map +1 -0
  193. package/dist/postgres/secret-options.js +9 -0
  194. package/dist/postgres/testing/roundtrip-schema.d.ts +3 -2
  195. package/dist/postgres/testing/roundtrip-schema.d.ts.map +1 -1
  196. package/dist/postgres/testing/roundtrip-schema.js +13 -1
  197. package/dist/postgres.d.ts +1 -1
  198. package/dist/postgres.d.ts.map +1 -1
  199. package/dist/postgres.js +1 -1
  200. package/dist/rules/audit-entries.ts +1 -0
  201. package/dist/rules/postgres-templates.ts +2 -2
  202. package/dist/rules/sqlch128.ts +230 -0
  203. package/dist/serializer.d.ts +5 -0
  204. package/dist/serializer.d.ts.map +1 -1
  205. package/dist/serializer.js +13 -2
  206. package/dist/sql-types-command.d.ts +13 -0
  207. package/dist/sql-types-command.d.ts.map +1 -1
  208. package/dist/sql-types-command.js +31 -16
  209. package/dist/sql-types.d.ts +22 -0
  210. package/dist/sql-types.d.ts.map +1 -1
  211. package/dist/sql-types.js +10 -6
  212. package/dist/sqlserver/lexer.d.ts +37 -0
  213. package/dist/sqlserver/lexer.d.ts.map +1 -0
  214. package/dist/sqlserver/lexer.js +254 -0
  215. package/dist/sqlserver/parse.d.ts +185 -0
  216. package/dist/sqlserver/parse.d.ts.map +1 -0
  217. package/dist/sqlserver/parse.js +767 -0
  218. package/dist/sqlserver/translate.d.ts +34 -0
  219. package/dist/sqlserver/translate.d.ts.map +1 -0
  220. package/dist/sqlserver/translate.js +495 -0
  221. package/dist/sqlserver/types.d.ts +44 -0
  222. package/dist/sqlserver/types.d.ts.map +1 -0
  223. package/dist/sqlserver/types.js +133 -0
  224. package/dist/sqlserver/validate.d.ts +31 -0
  225. package/dist/sqlserver/validate.d.ts.map +1 -0
  226. package/dist/sqlserver/validate.js +67 -0
  227. package/dist/validate.d.ts.map +1 -1
  228. package/dist/validate.js +5 -0
  229. package/package.json +2 -2
  230. package/src/change-set.ts +2 -1
  231. package/src/clickhouse/apply/statements.ts +25 -0
  232. package/src/clickhouse/import/live-export.ts +20 -5
  233. package/src/clickhouse/live/named-collections.e2e.test.ts +88 -0
  234. package/src/clickhouse/live/named-collections.ts +61 -0
  235. package/src/clickhouse/live/undeclarable.e2e.test.ts +5 -3
  236. package/src/clickhouse/live/undeclarable.ts +20 -4
  237. package/src/clickhouse/named-collections.test.ts +187 -0
  238. package/src/clickhouse/named-collections.ts +224 -0
  239. package/src/clickhouse/parser.ts +2 -1
  240. package/src/clickhouse/plan/commands.ts +17 -2
  241. package/src/clickhouse/plan/diff.ts +57 -1
  242. package/src/clickhouse/plan/disruption.ts +5 -0
  243. package/src/clickhouse/plan/rebuild-handoff.ts +3 -0
  244. package/src/clickhouse/plan/report.ts +6 -1
  245. package/src/clickhouse/plan/rules.ts +14 -4
  246. package/src/clickhouse/plan/stream-s3queue.e2e.test.ts +148 -0
  247. package/src/clickhouse/plan/stream.test.ts +237 -0
  248. package/src/clickhouse/plan/stream.ts +111 -0
  249. package/src/clickhouse/rebuild/observe.ts +15 -1
  250. package/src/clickhouse/review-catalog.test.ts +181 -0
  251. package/src/clickhouse/review-catalog.ts +489 -0
  252. package/src/codegen/classifier-page.ts +21 -4
  253. package/src/codegen/clickhouse-module.ts +3 -0
  254. package/src/codegen/coverage-page.ts +5 -3
  255. package/src/codegen/docs.ts +1 -1
  256. package/src/codegen/postgres-classifier-page.ts +1 -1
  257. package/src/codegen/registry.ts +5 -0
  258. package/src/composites/catalog.test.ts +6 -1
  259. package/src/composites/catalog.ts +100 -0
  260. package/src/composites/clickhouse.ts +2 -0
  261. package/src/composites/composites.test.ts +1 -1
  262. package/src/composites/otel-tables.test.ts +118 -0
  263. package/src/composites/otel-tables.ts +339 -0
  264. package/src/composites/stream-ingest.test.ts +114 -0
  265. package/src/composites/stream-ingest.ts +82 -0
  266. package/src/core/undeclarable.test.ts +6 -5
  267. package/src/coverage/clickhouse.json +1 -1
  268. package/src/coverage/postgres.json +7 -7
  269. package/src/coverage.test.ts +27 -2
  270. package/src/coverage.ts +18 -7
  271. package/src/drizzle-command.ts +94 -0
  272. package/src/drizzle-kit.e2e.test.ts +89 -0
  273. package/src/drizzle-types.e2e.test.ts +67 -0
  274. package/src/drizzle.test.ts +358 -0
  275. package/src/drizzle.ts +737 -0
  276. package/src/files/clickhouse.ts +8 -1
  277. package/src/files/common.ts +14 -1
  278. package/src/files/postgres.ts +12 -2
  279. package/src/generated/clickhouse.ts +3 -0
  280. package/src/generated/lexicon-sql.json +25 -0
  281. package/src/import-parser.sqlserver.test.ts +92 -0
  282. package/src/import-parser.ts +79 -5
  283. package/src/index.ts +1 -1
  284. package/src/lint/post-synth/audit-entries.ts +1 -0
  285. package/src/lint/post-synth/index.ts +2 -0
  286. package/src/lint/post-synth/sqlch128.test.ts +107 -0
  287. package/src/lint/post-synth/sqlch128.ts +230 -0
  288. package/src/lint/rules/postgres-templates.ts +2 -2
  289. package/src/lsp/postgres-template.ts +11 -0
  290. package/src/mcp/postgres.ts +1 -1
  291. package/src/migrate/from-postgres/cli.test.ts +165 -0
  292. package/src/migrate/from-postgres/detect.ts +7 -0
  293. package/src/migrate/from-postgres/emit.ts +96 -0
  294. package/src/migrate/from-postgres/example.test.ts +205 -0
  295. package/src/migrate/from-postgres/index.ts +122 -0
  296. package/src/migrate/from-postgres/translate.test.ts +242 -0
  297. package/src/migrate/from-postgres/translate.ts +359 -0
  298. package/src/migrate/from-postgres/types.test.ts +116 -0
  299. package/src/migrate/from-postgres/types.ts +236 -0
  300. package/src/migrate/from-postgres/validate.e2e.test.ts +44 -0
  301. package/src/migrate/from-postgres/workspace.e2e.test.ts +114 -0
  302. package/src/migration-replay.e2e.test.ts +155 -0
  303. package/src/migration-replay.test.ts +173 -0
  304. package/src/migration-replay.ts +289 -0
  305. package/src/op/__snapshots__/watch-pipeline.test.ts.snap +2 -2
  306. package/src/op/activities/postgres-migration.ts +4 -0
  307. package/src/op/activity-contracts.ts +2 -0
  308. package/src/plugin.ts +37 -2
  309. package/src/postgres/apply/apply.ts +9 -1
  310. package/src/postgres/apply/statements.ts +74 -1
  311. package/src/postgres/constraint-names.ts +71 -0
  312. package/src/postgres/database-kinds.test.ts +384 -0
  313. package/src/postgres/entities.ts +266 -1
  314. package/src/postgres/entity-types.ts +5 -0
  315. package/src/postgres/import/generator.ts +42 -2
  316. package/src/postgres/import/live-export.ts +1 -0
  317. package/src/postgres/live/catalog-kinds.ts +223 -0
  318. package/src/postgres/live/catalog.ts +6 -1
  319. package/src/postgres/live/database-kinds.e2e.test.ts +164 -0
  320. package/src/postgres/live/describe-resources.ts +11 -2
  321. package/src/postgres/live/undeclarable.e2e.test.ts +13 -6
  322. package/src/postgres/migrate/backfill.ts +13 -1
  323. package/src/postgres/migrate/carry.ts +103 -8
  324. package/src/postgres/migrate/followups.e2e.test.ts +218 -0
  325. package/src/postgres/migrate/followups.test.ts +199 -0
  326. package/src/postgres/migrate/kinds.e2e.test.ts +5 -5
  327. package/src/postgres/migrate/observe.ts +53 -14
  328. package/src/postgres/migrate/op.ts +28 -1
  329. package/src/postgres/migrate/partition.e2e.test.ts +129 -0
  330. package/src/postgres/migrate/partition.test.ts +206 -0
  331. package/src/postgres/migrate/steps.ts +157 -12
  332. package/src/postgres/parser.ts +234 -2
  333. package/src/postgres/plan/deep.ts +28 -1
  334. package/src/postgres/plan/diff.ts +36 -1
  335. package/src/postgres/plan/normalize.ts +122 -1
  336. package/src/postgres/plan/rules.ts +10 -3
  337. package/src/postgres/plan/schema.ts +1 -1
  338. package/src/postgres/secret-options.ts +10 -0
  339. package/src/postgres/testing/roundtrip-schema.ts +13 -1
  340. package/src/postgres.ts +16 -0
  341. package/src/serializer.ts +13 -2
  342. package/src/skills/chant-sql-postgres-migration.md +3 -3
  343. package/src/skills/chant-sql-postgres.md +6 -1
  344. package/src/skills/chant-sql.md +2 -1
  345. package/src/sql-types-command.ts +38 -16
  346. package/src/sql-types.ts +11 -6
  347. package/src/sqlserver/fixture.test.ts +186 -0
  348. package/src/sqlserver/import-cli.test.ts +61 -0
  349. package/src/sqlserver/lexer.ts +260 -0
  350. package/src/sqlserver/parse.ts +865 -0
  351. package/src/sqlserver/translate.test.ts +396 -0
  352. package/src/sqlserver/translate.ts +558 -0
  353. package/src/sqlserver/types.test.ts +102 -0
  354. package/src/sqlserver/types.ts +154 -0
  355. package/src/sqlserver/validate.e2e.test.ts +32 -0
  356. package/src/sqlserver/validate.test.ts +49 -0
  357. package/src/sqlserver/validate.ts +76 -0
  358. package/src/validate.ts +5 -0
  359. package/src/workspace-kinds.test.ts +11 -0
  360. package/workspace-kinds.json +100 -2
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../src/files/clickhouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAO9D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAA8F,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvJ,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,UAAU,CAAC;AA2D/E,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAG3D;AAED,sHAAsH;AACtH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC,CAwCtH"}
1
+ {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../src/files/clickhouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAO9D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAmH,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5K,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,UAAU,CAAC;AA2D/E,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAG3D;AAED,sHAAsH;AACtH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC,CA8CtH"}
@@ -18,7 +18,8 @@ import { CLICKHOUSE_ENTITY_TYPES, database, dictionary, func, grant, policy, quo
18
18
  import { isAccessStatement, parseAccess } from "../clickhouse/access.js";
19
19
  import { CLICKHOUSE_TAG_OF } from "../clickhouse/import/generator.js";
20
20
  import { describeStatement } from "../clickhouse/import/ir.js";
21
- import { fileUnparsed, firstLine, lineAt, quoteBare, splitTokens, tokensText, undeclarableStatement } from "./common.js";
21
+ import { fileUnparsed, firstLine, lineAt, quoteBare, referencedStatement, splitTokens, tokensText, undeclarableStatement } from "./common.js";
22
+ import { createdCollectionName } from "../clickhouse/named-collections.js";
22
23
  import { templateSafe, templateStrings } from "./postgres.js";
23
24
  const TAGS = { database, table, view, dictionary, func, user, role, policy, quota, settingsProfile, grant };
24
25
  /** The tag an access statement's words name: `CREATE USER`, `CREATE SETTINGS PROFILE`, `GRANT`. */
@@ -96,6 +97,12 @@ export function readClickHouse(ddl, options, problems) {
96
97
  for (const stmt of splitTokens(tokenizeText(ddl, 0), isTrivia)) {
97
98
  let sql = tokensText(stmt);
98
99
  const line = lineAt(ddl, stmt[0].start);
100
+ const referenced = options.prerequisites ? referencedStatement("clickhouse", sql) : undefined;
101
+ const collection = referenced ? createdCollectionName(sql) : undefined;
102
+ if (referenced && collection !== undefined) {
103
+ options.prerequisites.push({ kind: referenced.kind, name: collection });
104
+ continue;
105
+ }
99
106
  const undeclarable = undeclarableStatement("clickhouse", sql);
100
107
  if (undeclarable) {
101
108
  (options.undeclarable ?? problems).push(undeclarable);
@@ -2,6 +2,7 @@
2
2
  import type { Token } from "../core/tokens.js";
3
3
  import type { UnknownClause } from "../core/cursor.js";
4
4
  import type { SqlDialect } from "../dialects.js";
5
+ import { type KindRow } from "../coverage.js";
5
6
  export interface ReadOptions {
6
7
  /** Names the DDL in errors: a file's path, a command. */
7
8
  origin: string;
@@ -16,7 +17,19 @@ export interface ReadOptions {
16
17
  * --parser-option skipUndeclarable` lists them as warnings.
17
18
  */
18
19
  undeclarable?: string[];
20
+ /**
21
+ * Where a statement of a referenced kind goes (#4395), as the name it
22
+ * creates: `chant import` lists a named collection's `CREATE` as an
23
+ * environment prerequisite. Without it, such a statement is a problem, as
24
+ * in a build's `.sql` file, which never declares one.
25
+ */
26
+ prerequisites?: Array<{
27
+ kind: string;
28
+ name: string;
29
+ }>;
19
30
  }
31
+ /** The coverage row of a `CREATE` of a referenced kind (#4395), or undefined for any other statement. */
32
+ export declare function referencedStatement(dialect: SqlDialect, sql: string): KindRow | undefined;
20
33
  /**
21
34
  * A `CREATE` of a kind the coverage table does not mark declared, as the line
22
35
  * that names it with why, or undefined for any other statement.
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/files/common.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1F;AAED,2GAA2G;AAC3G,qBAAa,YAAa,SAAQ,KAAK;IAEnC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;gBAD3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE;CAOvC;AAED,sHAAsH;AACtH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,GAAG,KAAK,EAAE,EAAE,CAiBhG;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,MAA4C,CAAC;AAEnG,yGAAyG;AACzG,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,kIAAkI;AAClI,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC7C,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,QAAQ,CAAC,UAAU,CAAC,CAGtB;AAED,0DAA0D;AAC1D,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,MAA8C,CAAC;AAEjG,+CAA+C;AAC/C,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,MAAgD,CAAC;AAEvF,6FAA6F;AAC7F,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAoF,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/files/common.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAGzF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1F;AAED,2GAA2G;AAC3G,qBAAa,YAAa,SAAQ,KAAK;IAEnC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE;gBAD3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,MAAM,EAAE;CAOvC;AAED,sHAAsH;AACtH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,GAAG,KAAK,EAAE,EAAE,CAiBhG;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,MAA4C,CAAC;AAEnG,yGAAyG;AACzG,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,kIAAkI;AAClI,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC7C,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,QAAQ,CAAC,UAAU,CAAC,CAGtB;AAED,0DAA0D;AAC1D,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,MAA8C,CAAC;AAEjG,+CAA+C;AAC/C,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,MAAgD,CAAC;AAEvF,6FAA6F;AAC7F,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAoF,CAAC"}
@@ -1,5 +1,10 @@
1
1
  /** What reading a file of DDL shares across dialects. */
2
2
  import { statementKind } from "../coverage.js";
3
+ /** The coverage row of a `CREATE` of a referenced kind (#4395), or undefined for any other statement. */
4
+ export function referencedStatement(dialect, sql) {
5
+ const row = statementKind(dialect, sql);
6
+ return row?.status === "referenced" ? row : undefined;
7
+ }
3
8
  /**
4
9
  * A `CREATE` of a kind the coverage table does not mark declared, as the line
5
10
  * that names it with why, or undefined for any other statement.
@@ -118,7 +118,7 @@ export function readPostgres(ddl, options, problems) {
118
118
  };
119
119
  switch (node.statement) {
120
120
  case "comment":
121
- if (!["SCHEMA", "EXTENSION", "ROLE", "TRIGGER", "POLICY", "CONSTRAINT", "COLUMN", "CAST", "EVENT TRIGGER"].includes(node.objectType))
121
+ if (!["SCHEMA", "EXTENSION", "ROLE", "TRIGGER", "POLICY", "CONSTRAINT", "COLUMN", "CAST", "EVENT TRIGGER", "FOREIGN DATA WRAPPER", "SERVER", "PUBLICATION"].includes(node.objectType))
122
122
  mark(node.target);
123
123
  if (node.objectType === "COLUMN" && nameOf(tokens, node.target).length === 2 && options.schema) {
124
124
  const first = tokens.slice(node.target.span.from, node.target.span.to).find((t) => !isTrivia(t));
@@ -162,7 +162,7 @@ export function readPostgres(ddl, options, problems) {
162
162
  problems.push(`an index with no name (its declaration needs one): ${firstLine(tokensText(tokens))}`);
163
163
  continue;
164
164
  }
165
- const ownName = !["schema", "extension", "index", "trigger", "policy", "role", "grant", "cast", "eventTrigger"].includes(node.statement);
165
+ const ownName = !["schema", "extension", "index", "trigger", "policy", "role", "grant", "cast", "eventTrigger", "foreignDataWrapper", "foreignServer", "publication"].includes(node.statement);
166
166
  if (ownName && "name" in node)
167
167
  mark(node.name);
168
168
  const object = { node, statements: [rewrite(tokens, inserts, options.schema)], constraints: [], line, unparsed: fileUnparsed("unknown" in node ? node.unknown : undefined, tokens, tokensText(tokens), line) };
@@ -260,6 +260,10 @@ function ownerKey(node, tokens, nameOf, qualify) {
260
260
  return `${node.statement} ${nameOf(tokens, node.name).at(-1) ?? ""} ON ${qkey(qualify(nameOf(tokens, node.table)))}`;
261
261
  case "eventTrigger":
262
262
  return `eventTrigger ${nameOf(tokens, node.name).at(-1) ?? ""}`;
263
+ case "foreignDataWrapper":
264
+ case "foreignServer":
265
+ case "publication":
266
+ return `${node.statement} ${nameOf(tokens, node.name).at(-1) ?? ""}`;
263
267
  case "cast":
264
268
  return `cast ${castKey(tokens, node.source, node.target)}`;
265
269
  case "grant":
@@ -293,6 +297,12 @@ function followOnOwner(node, tokens, nameOf, qualify) {
293
297
  return node.on ? `${node.objectType.toLowerCase()} ${target.at(-1) ?? ""} ON ${qkey(qualify(nameOf(tokens, node.on)))}` : undefined;
294
298
  case "EVENT TRIGGER":
295
299
  return `eventTrigger ${target.at(-1) ?? ""}`;
300
+ case "FOREIGN DATA WRAPPER":
301
+ return `foreignDataWrapper ${target.at(-1) ?? ""}`;
302
+ case "SERVER":
303
+ return `foreignServer ${target.at(-1) ?? ""}`;
304
+ case "PUBLICATION":
305
+ return `publication ${target.at(-1) ?? ""}`;
296
306
  case "CAST":
297
307
  return node.cast ? `cast ${castKey(tokens, node.cast.source, node.cast.target)}` : undefined;
298
308
  case "CONSTRAINT":
@@ -11,6 +11,8 @@ export declare const FUNCTIONS: Readonly<Record<string, FunctionSpec>>;
11
11
  export declare const AGGREGATE_COMBINATORS: readonly string[];
12
12
  /** The table functions (`system.table_functions`): `numbers`, `remote`, `s3`. */
13
13
  export declare const TABLE_FUNCTIONS: readonly string[];
14
+ /** The input and output formats (`system.formats`): `Parquet`, `JSONEachRow`. */
15
+ export declare const FORMATS: readonly string[];
14
16
  export declare const SKIP_INDEX_TYPES: Readonly<Record<SkipIndexType, SkipIndexSpec>>;
15
17
  export declare const MERGE_TREE_SETTINGS: Readonly<Record<keyof MergeTreeSettings, SettingSpec>>;
16
18
  export declare const QUERY_SETTINGS: Readonly<Record<keyof QuerySettings, SettingSpec>>;
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../src/generated/clickhouse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5J,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1J,cAAc,oBAAoB,CAAC;AAEnC,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAqF5E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAkBrF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CA8I1E,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAkBzD,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAk2D5D,CAAC;AAEF,2HAA2H;AAC3H,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAA6I,CAAC;AAEjM,iFAAiF;AACjF,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAizC,CAAC;AAE/1C,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAU3E,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,WAAW,CAAC,CA4WtF,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,WAAW,CAAC,CAyxD7E,CAAC"}
1
+ {"version":3,"file":"clickhouse.d.ts","sourceRoot":"","sources":["../../src/generated/clickhouse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5J,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1J,cAAc,oBAAoB,CAAC;AAEnC,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAqF5E,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAkBrF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CA8I1E,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAkBzD,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAk2D5D,CAAC;AAEF,2HAA2H;AAC3H,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAA6I,CAAC;AAEjM,iFAAiF;AACjF,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAizC,CAAC;AAE/1C,iFAAiF;AACjF,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAAmhE,CAAC;AAEzjE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAU3E,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,WAAW,CAAC,CA4WtF,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,WAAW,CAAC,CAyxD7E,CAAC"}
@@ -2165,6 +2165,8 @@ export const FUNCTIONS = {
2165
2165
  export const AGGREGATE_COMBINATORS = ["ArgMax", "ArgMin", "Array", "Distinct", "ForEach", "If", "Map", "Merge", "Null", "OrDefault", "OrNull", "Resample", "SimpleState", "State", "Tuple"];
2166
2166
  /** The table functions (`system.table_functions`): `numbers`, `remote`, `s3`. */
2167
2167
  export const TABLE_FUNCTIONS = ["SQLStandardValues", "arrowFlight", "arrowflight", "azureBlobStorage", "azureBlobStorageCluster", "bigquery", "cluster", "clusterAllReplicas", "cosn", "deltaLake", "deltaLakeAzure", "deltaLakeAzureCluster", "deltaLakeCluster", "deltaLakeLocal", "deltaLakeS3", "deltaLakeS3Cluster", "dictionary", "eval", "executable", "file", "fileCluster", "filesystem", "format", "fuzzJSON", "fuzzQuery", "gcs", "generateRandom", "generateSeries", "generate_series", "hdfs", "hdfsCluster", "hive", "hudi", "hudiCluster", "iceberg", "icebergAzure", "icebergAzureCluster", "icebergCluster", "icebergHDFS", "icebergHDFSCluster", "icebergLocal", "icebergLocalCluster", "icebergS3", "icebergS3Cluster", "input", "jdbc", "loop", "merge", "mergeTreeAnalyzeIndexes", "mergeTreeAnalyzeIndexesUUID", "mergeTreeCodecBlockCounts", "mergeTreeIndex", "mergeTreeProjection", "mergeTreeTextIndex", "mongodb", "mysql", "null", "numbers", "numbers_mt", "odbc", "oss", "paimon", "paimonAzure", "paimonAzureCluster", "paimonCluster", "paimonHDFS", "paimonHDFSCluster", "paimonLocal", "paimonS3", "paimonS3Cluster", "postgresql", "primes", "prometheusQuery", "prometheusQueryRange", "redis", "remote", "remoteSecure", "s3", "s3Cluster", "sqlite", "timeSeriesData", "timeSeriesMetrics", "timeSeriesSamples", "timeSeriesSelector", "timeSeriesTags", "url", "urlCluster", "values", "view", "viewExplain", "viewIfPermitted", "ytsaurus", "zeros", "zeros_mt"];
2168
+ /** The input and output formats (`system.formats`): `Parquet`, `JSONEachRow`. */
2169
+ export const FORMATS = ["Arrow", "ArrowStream", "Avro", "AvroConfluent", "BSONEachRow", "Buffers", "CSV", "CSVWithNames", "CSVWithNamesAndTypes", "CapnProto", "CustomSeparated", "CustomSeparatedIgnoreSpaces", "CustomSeparatedIgnoreSpacesWithNames", "CustomSeparatedIgnoreSpacesWithNamesAndTypes", "CustomSeparatedWithNames", "CustomSeparatedWithNamesAndTypes", "DWARF", "Form", "GeoJSON", "Hash", "HiveText", "JSON", "JSONAsObject", "JSONAsString", "JSONColumns", "JSONColumnsWithMetadata", "JSONCompact", "JSONCompactColumns", "JSONCompactEachRow", "JSONCompactEachRowWithNames", "JSONCompactEachRowWithNamesAndTypes", "JSONCompactEachRowWithProgress", "JSONCompactStrings", "JSONCompactStringsEachRow", "JSONCompactStringsEachRowWithNames", "JSONCompactStringsEachRowWithNamesAndTypes", "JSONCompactStringsEachRowWithProgress", "JSONEachRow", "JSONEachRowWithProgress", "JSONL", "JSONLines", "JSONObjectEachRow", "JSONStrings", "JSONStringsEachRow", "JSONStringsEachRowWithProgress", "LineAsString", "LineAsStringWithNames", "LineAsStringWithNamesAndTypes", "MD", "Markdown", "MsgPack", "MySQLDump", "MySQLWire", "NDJSON", "Native", "Npy", "Null", "ODBCDriver2", "ORC", "One", "PNG", "Parquet", "ParquetMetadata", "PostgreSQLWire", "Pretty", "PrettyCompact", "PrettyCompactMonoBlock", "PrettyCompactNoEscapes", "PrettyCompactNoEscapesMonoBlock", "PrettyJSONEachRow", "PrettyJSONLines", "PrettyMonoBlock", "PrettyNDJSON", "PrettyNoEscapes", "PrettyNoEscapesMonoBlock", "PrettySpace", "PrettySpaceMonoBlock", "PrettySpaceNoEscapes", "PrettySpaceNoEscapesMonoBlock", "Prometheus", "Protobuf", "ProtobufList", "ProtobufSingle", "Puffin", "PuffinMetadata", "Raw", "RawBLOB", "RawWithNames", "RawWithNamesAndTypes", "Regexp", "RowBinary", "RowBinaryWithDefaults", "RowBinaryWithNames", "RowBinaryWithNamesAndTypes", "RowBinaryWithNamesAndTypesAndDefaults", "SQLInsert", "TSKV", "TSV", "TSVRaw", "TSVRawWithNames", "TSVRawWithNamesAndTypes", "TSVWithNames", "TSVWithNamesAndTypes", "TabSeparated", "TabSeparatedRaw", "TabSeparatedRawWithNames", "TabSeparatedRawWithNamesAndTypes", "TabSeparatedWithNames", "TabSeparatedWithNamesAndTypes", "Template", "TemplateIgnoreSpaces", "Values", "Vertical", "XML"];
2168
2170
  export const SKIP_INDEX_TYPES = {
2169
2171
  bloom_filter: { "syntax": "INDEX name expr TYPE bloom_filter([false_positive_rate]) GRANULARITY g", "args": [{ "name": "false_positive_rate", "position": 0, "optional": true, "repeated": false, "named": false, "kind": "number", "range": [0, 1], "note": "Exclusive of 0 and 1; 0.025 when omitted." }], "summary": "A Bloom filter over the values of the index expression, for speeding up equality and IN conditions on columns, including Array and Map elements." },
2170
2172
  hypothesis: { "syntax": "INDEX name expr TYPE hypothesis GRANULARITY g", "args": [], "summary": "Deprecated and no longer supported. It is retained only so that tables which still reference it can be attached." },
@@ -1,6 +1,16 @@
1
1
  /**
2
2
  * `chant import schema.sql`: a file of DDL into the import IR, in either
3
- * dialect. `--parser-option dialect=postgres` (or `clickhouse`) names it;
3
+ * dialect, or a SQL Server (T-SQL) schema into ClickHouse declarations.
4
+ *
5
+ * `--parser-option from=sqlserver` (#4398) reads the file as T-SQL and
6
+ * translates it to ClickHouse (`./sqlserver/translate.ts`). SQL Server is an
7
+ * import source, not a dialect: nothing is declared in it, and a build never
8
+ * holds one. A file with T-SQL's own markers (`[bracketed]` names, a `GO`
9
+ * line, `CLUSTERED` or `COLUMNSTORE`, `nvarchar`, `IDENTITY(1,1)`) is read
10
+ * the same way without the option, so it is not taken for Postgres.
11
+ * `from=sqlserver` with `dialect=...` is refused: the target is ClickHouse.
12
+ *
13
+ * `--parser-option dialect=postgres` (or `clickhouse`) names the dialect;
4
14
  * without one it is read off the statements: an `ENGINE =` clause, a
5
15
  * `CREATE DATABASE`, a `CREATE DICTIONARY` or a lambda `CREATE FUNCTION f AS
6
16
  * (x) -> ...` is ClickHouse, a statement
@@ -16,16 +26,26 @@
16
26
  */
17
27
  import type { ParserOptions, TemplateIR, TemplateParser } from "@intentius/chant/import/parser";
18
28
  import { type SqlDialect } from "./dialects.js";
29
+ /** True when the DDL has a marker only T-SQL has and no ClickHouse-only clause. */
30
+ export declare function looksLikeTSql(content: string): boolean;
19
31
  /** The dialect a file of DDL is written in, read off its statements. */
20
32
  export declare function guessDialect(content: string): SqlDialect;
21
33
  /** The `dialect` parser option, checked. */
22
34
  export declare function dialectOption(options: ParserOptions | undefined): SqlDialect | undefined;
35
+ /** Sources other than a dialect that `--parser-option from=` names. */
36
+ export declare const IMPORT_SOURCES: readonly ["sqlserver"];
37
+ export type ImportSource = (typeof IMPORT_SOURCES)[number];
38
+ /** The `from` parser option, checked. */
39
+ export declare function sourceOption(options: ParserOptions | undefined): ImportSource | undefined;
23
40
  export declare class SqlFileParser implements TemplateParser {
24
41
  private readonly dialect?;
25
42
  private readonly options;
26
43
  constructor(dialect?: SqlDialect | undefined, options?: {
27
44
  skipUndeclarable?: boolean;
45
+ from?: ImportSource;
28
46
  });
29
47
  parse(content: string): TemplateIR;
48
+ /** A T-SQL schema as ClickHouse objects, with a finding for each judgment call (#4398). */
49
+ private parseSqlServer;
30
50
  }
31
51
  //# sourceMappingURL=import-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-parser.d.ts","sourceRoot":"","sources":["../src/import-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAqB3D,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAKxF;AAED,qBAAa,aAAc,YAAW,cAAc;IAEhD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,CAAC,EAAE,UAAU,YAAA,EACpB,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO;IAG/D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;CAUnC"}
1
+ {"version":3,"file":"import-parser.d.ts","sourceRoot":"","sources":["../src/import-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AA0C3D,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAKxF;AAED,uEAAuE;AACvE,eAAO,MAAM,cAAc,wBAAyB,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAMzF;AAED,qBAAa,aAAc,YAAW,cAAc;IAEhD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,CAAC,EAAE,UAAU,YAAA,EACpB,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,YAAY,CAAA;KAAO;IAGpF,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAoBlC,2FAA2F;IAC3F,OAAO,CAAC,cAAc;CAYvB"}
@@ -1,6 +1,16 @@
1
1
  /**
2
2
  * `chant import schema.sql`: a file of DDL into the import IR, in either
3
- * dialect. `--parser-option dialect=postgres` (or `clickhouse`) names it;
3
+ * dialect, or a SQL Server (T-SQL) schema into ClickHouse declarations.
4
+ *
5
+ * `--parser-option from=sqlserver` (#4398) reads the file as T-SQL and
6
+ * translates it to ClickHouse (`./sqlserver/translate.ts`). SQL Server is an
7
+ * import source, not a dialect: nothing is declared in it, and a build never
8
+ * holds one. A file with T-SQL's own markers (`[bracketed]` names, a `GO`
9
+ * line, `CLUSTERED` or `COLUMNSTORE`, `nvarchar`, `IDENTITY(1,1)`) is read
10
+ * the same way without the option, so it is not taken for Postgres.
11
+ * `from=sqlserver` with `dialect=...` is refused: the target is ClickHouse.
12
+ *
13
+ * `--parser-option dialect=postgres` (or `clickhouse`) names the dialect;
4
14
  * without one it is read off the statements: an `ENGINE =` clause, a
5
15
  * `CREATE DATABASE`, a `CREATE DICTIONARY` or a lambda `CREATE FUNCTION f AS
6
16
  * (x) -> ...` is ClickHouse, a statement
@@ -20,6 +30,9 @@ import { readPostgres } from "./files/postgres.js";
20
30
  import { SqlFileError } from "./files/common.js";
21
31
  import { objectsToIR as chObjectsToIR } from "./clickhouse/import/ir.js";
22
32
  import { objectsToIR as pgObjectsToIR } from "./postgres/import/ir.js";
33
+ import { namedCollectionPrerequisites } from "./clickhouse/named-collections.js";
34
+ import { translateSqlServer } from "./sqlserver/translate.js";
35
+ import { TsqlLexError } from "./sqlserver/lexer.js";
23
36
  const CLICKHOUSE_ONLY = [
24
37
  /\bENGINE\s*=/i,
25
38
  /^\s*CREATE\s+(?:DATABASE|(?:OR\s+REPLACE\s+)?DICTIONARY)\b/im,
@@ -33,6 +46,30 @@ const POSTGRES_ONLY = [
33
46
  /^\s*(?:COMMENT\s+ON|ALTER\s+TABLE|ALTER\s+DEFAULT\s+PRIVILEGES|GRANT|REVOKE|BEGIN)\b/im,
34
47
  /^\s*CREATE\s+TABLE\b/im,
35
48
  ];
49
+ /**
50
+ * Markers only T-SQL has. Each is rare enough in Postgres and ClickHouse DDL
51
+ * that one is enough: a bracketed name after CREATE TABLE or ON, a `GO`
52
+ * batch line, `CLUSTERED`/`COLUMNSTORE`, T-SQL type names, `IDENTITY(n, n)`,
53
+ * the `SET ANSI_NULLS` preamble of an SSMS script.
54
+ */
55
+ const TSQL_MARKERS = [
56
+ /^\s*GO\s*$/im,
57
+ /\bCREATE\s+(?:UNIQUE\s+)?(?:NONCLUSTERED\s+|CLUSTERED\s+)(?:COLUMNSTORE\s+)?INDEX\b/i,
58
+ /\bCREATE\s+(?:NONCLUSTERED\s+|CLUSTERED\s+)?COLUMNSTORE\s+INDEX\b/i,
59
+ /\bPRIMARY\s+KEY\s+(?:NON)?CLUSTERED\b/i,
60
+ /\b(?:CREATE\s+TABLE|ALTER\s+TABLE|\bON|REFERENCES)\s+\[[^\]\n]+\]/i,
61
+ /\b(?:NVARCHAR|NCHAR|UNIQUEIDENTIFIER|DATETIME2|DATETIMEOFFSET|SMALLDATETIME|SMALLMONEY|ROWVERSION)\b/i,
62
+ /\bIDENTITY\s*\(\s*\d+\s*,\s*\d+\s*\)/i,
63
+ /^\s*SET\s+(?:ANSI_NULLS|QUOTED_IDENTIFIER|NOCOUNT|ANSI_PADDING)\b/im,
64
+ /\bEXEC(?:UTE)?\s+sp_addextendedproperty\b/i,
65
+ ];
66
+ /** True when the DDL has a marker only T-SQL has and no ClickHouse-only clause. */
67
+ export function looksLikeTSql(content) {
68
+ const text = content.replace(/--[^\n]*/g, "");
69
+ if (CLICKHOUSE_ONLY.some((re) => re.test(text)))
70
+ return false;
71
+ return TSQL_MARKERS.some((re) => re.test(text));
72
+ }
36
73
  /** The dialect a file of DDL is written in, read off its statements. */
37
74
  export function guessDialect(content) {
38
75
  const text = content.replace(/--[^\n]*/g, "");
@@ -51,21 +88,58 @@ export function dialectOption(options) {
51
88
  throw new Error(`--parser-option dialect: expected ${SQL_DIALECTS.join(" or ")}, got ${String(d)}`);
52
89
  return d;
53
90
  }
91
+ /** Sources other than a dialect that `--parser-option from=` names. */
92
+ export const IMPORT_SOURCES = ["sqlserver"];
93
+ /** The `from` parser option, checked. */
94
+ export function sourceOption(options) {
95
+ const f = options?.from;
96
+ if (f === undefined)
97
+ return undefined;
98
+ if (typeof f !== "string" || !IMPORT_SOURCES.includes(f))
99
+ throw new Error(`--parser-option from: expected ${IMPORT_SOURCES.join(" or ")}, got ${String(f)}`);
100
+ if (options?.dialect !== undefined)
101
+ throw new Error(`--parser-option from=${f} cannot be combined with dialect: a ${f} schema is translated to ClickHouse`);
102
+ return f;
103
+ }
54
104
  export class SqlFileParser {
55
105
  constructor(dialect, options = {}) {
56
106
  this.dialect = dialect;
57
107
  this.options = options;
58
108
  }
59
109
  parse(content) {
110
+ if (this.options.from === "sqlserver" || (this.dialect === undefined && looksLikeTSql(content)))
111
+ return this.parseSqlServer(content);
60
112
  const dialect = this.dialect ?? guessDialect(content);
61
113
  const problems = [];
62
114
  const skipped = [];
63
- const read = { origin: "the DDL", ...(this.options.skipUndeclarable ? { undeclarable: skipped } : {}) };
115
+ const prerequisites = [];
116
+ const read = { origin: "the DDL", prerequisites, ...(this.options.skipUndeclarable ? { undeclarable: skipped } : {}) };
64
117
  const ir = dialect === "postgres" ? pgObjectsToIR(readPostgres(content, read, problems)) : chObjectsToIR(readClickHouse(content, read, problems));
65
118
  if (problems.length > 0)
66
119
  throw new SqlFileError(`the ${dialect === "postgres" ? "Postgres" : "ClickHouse"} DDL`, problems);
67
- if (skipped.length === 0)
68
- return ir;
69
- return { ...ir, warnings: [...(ir.warnings ?? []), ...skipped.map((s) => `left out (skipUndeclarable): ${s}`)] };
120
+ // A named collection is the environment's (#4395): its CREATE, or a declaration naming one, is a prerequisite, its values never imported.
121
+ const objects = ir.resources.map((r) => r.properties);
122
+ const prereq = dialect === "clickhouse"
123
+ ? namedCollectionPrerequisites(prerequisites, objects, { found: "the DDL creates it", unseen: "the DDL does not create it" })
124
+ : { prerequisites: [], warnings: [] };
125
+ const warnings = [...(ir.warnings ?? []), ...prereq.warnings, ...skipped.map((s) => `left out (skipUndeclarable): ${s}`)];
126
+ const out = prereq.prerequisites.length > 0 ? { ...ir, metadata: { ...ir.metadata, prerequisites: prereq.prerequisites } } : ir;
127
+ return warnings.length > 0 ? { ...out, warnings } : out;
128
+ }
129
+ /** A T-SQL schema as ClickHouse objects, with a finding for each judgment call (#4398). */
130
+ parseSqlServer(content) {
131
+ let t;
132
+ try {
133
+ t = translateSqlServer(content, { skipUnreadable: this.options.skipUndeclarable === true });
134
+ }
135
+ catch (e) {
136
+ if (e instanceof TsqlLexError)
137
+ throw new SqlFileError("the SQL Server DDL", [e.message]);
138
+ throw e;
139
+ }
140
+ if (t.problems.length > 0)
141
+ throw new SqlFileError("the SQL Server DDL", t.problems);
142
+ const ir = chObjectsToIR(t.objects);
143
+ return { ...ir, diagnostics: t.diagnostics, metadata: { ...ir.metadata, source: "sqlserver" } };
70
144
  }
71
145
  }
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { sqlSerializer } from "./serializer.js";
3
3
  export { SQL_DIALECTS, type SqlDialect } from "./dialects.js";
4
4
  export { sqlConfigSchema, type SqlConfig } from "./config.js";
5
5
  export { database, table, view, dictionary, user, role, policy, quota, settingsProfile, grant, literal } from "./clickhouse/entities.js";
6
- export { schema, index, sequence, type, domain, extension, func, procedure, aggregate, trigger, eventTrigger, collation, cast } from "./postgres/entities.js";
6
+ export { schema, index, sequence, type, domain, extension, func, procedure, aggregate, trigger, eventTrigger, operator, statistics, foreignDataWrapper, foreignServer, publication, collation, cast } from "./postgres/entities.js";
7
7
  export { diffStatements, renderStatements, type DiffStatementsOptions, type ManualStep, type MigrationStep, type OpStep, type SchemaStatements, type StatementChange, type StatementStep, type StepObject, } from "./migration-statements.js";
8
8
  export { readSqlFile, sqlFileDeclarations, sqlFileEntities, sqlFileOf, SqlFileError, type SqlFileObject, type SqlFileOptions, type SqlFileSource, } from "./sql-files.js";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAM3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMtI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAI3J,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAM3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMtI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAIjO,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ export { database, table, view, dictionary, user, role, policy, quota, settingsP
15
15
  // A tag folds as the function its file imports, so `table` imported from
16
16
  // `@intentius/chant-lexicon-sql/postgres` is Postgres's. Declarations import
17
17
  // them from the dialect subpath.
18
- export { schema, index, sequence, type, domain, extension, func, procedure, aggregate, trigger, eventTrigger, collation, cast } from "./postgres/entities.js";
18
+ export { schema, index, sequence, type, domain, extension, func, procedure, aggregate, trigger, eventTrigger, operator, statistics, foreignDataWrapper, foreignServer, publication, collation, cast } from "./postgres/entities.js";
19
19
  // A schema change's statements between two builds, rendered offline for a
20
20
  // migration file (#3644); also at `@intentius/chant-lexicon-sql/migration-statements`.
21
21
  export { diffStatements, renderStatements, } from "./migration-statements.js";
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "bab0f261aafde7e3fc8037cbd3a540f500e2b9fe0f7f9d7bdb2914dbfa57024f",
5
- "meta.json": "59ca03876cce0d293e15a7f0a90ef7f250d133e46773c73fedede4a2ec792119",
4
+ "manifest.json": "9fbab4e3775f48283cd88868c6b6024ba92b772c551ad0c8780be3d9384ada66",
5
+ "meta.json": "3416000aad1e97176b6ae1d15b6c675961a5bf8f1f9344000dd31887032e20a1",
6
6
  "types/index.d.ts": "0286ebb367773e84c76818b0f69cb14cff8328fd2f8c65ed87563c8d5815458c",
7
- "rules/postgres-templates.ts": "082da542239ab9f9627026972281102a61ca269cb79e2514f402dfc400ccdcde",
7
+ "rules/postgres-templates.ts": "2885d98ff41b988a9cfe27f17d4531ca713237b3cefb2e1de76411f13f144404",
8
8
  "rules/sqlch001.ts": "b6dcf779edc596a953e3b4eb2dda5f6e70c1ac56b262f7499f9cb6876ecc1cf9",
9
9
  "rules/sqlch002.ts": "d866298167d3f2f7b39bddd28cfbb4a761281a2816d6c21db19b86b32434737a",
10
10
  "rules/sqlch003.ts": "955bd6331af0cf7b4f7cd1656d809b9697a8cc91bb179c38a4bbd086c232354e",
@@ -16,7 +16,7 @@
16
16
  "rules/sqlpg005.ts": "14bdd081d73826f94e358e52e672776aae81533b98fe09ce7ee4cbb86e241df9",
17
17
  "rules/templates.ts": "9e6b434694231c3275ca23b491bfdc207b8dbc80b30ffe119fe89d1fb6b12389",
18
18
  "rules/typed-names.ts": "fbd5037dc10987611ad4dfb71ae97102b2bb8916c693033b923c6c0201280419",
19
- "rules/audit-entries.ts": "2339bc445687a4037652ffd300e3a230866b8abfd91f08a2ba831179cf646424",
19
+ "rules/audit-entries.ts": "210817495b072b2b42908085ae282901537f097127d06d0932b8761b3b951606",
20
20
  "rules/clickhouse-helpers.ts": "7c635d10cd2049b72a88596a60e5ba188eab69e233fb74f77dde100f08fba1ca",
21
21
  "rules/clickhouse-type-check.ts": "75396cd5aef4ae09d6f7dea92924b0867e5c9182bbf918ade4d9b42823e54538",
22
22
  "rules/postgres-audit-entries.ts": "30887efb76971b6db629807e583576e875d939c906eada0f260b90a5eec646b8",
@@ -52,6 +52,7 @@
52
52
  "rules/sqlch125.ts": "d5cb80e2daa00a92364fe73bf2b9f8b75da8efd3c4f665af278357e63047806d",
53
53
  "rules/sqlch126.ts": "58f45e5bd29f445d30b45876fed5a4a53a2de0cf63eaa5472202b36d0bcf7b2e",
54
54
  "rules/sqlch127.ts": "6662ecaa0f0c45538e9461c27c00d4f20438dc0355ca485d41d8b5fb9451c6a9",
55
+ "rules/sqlch128.ts": "6fe99d2477e0fa31b777db2ecad795884eebfe46f1d5d3dda5949bad3a94b995",
55
56
  "rules/sqlpg101.ts": "34bd3032af0a1054f2ee90b6e66dd2c159406196e86159545b1d18874fb3ce4b",
56
57
  "rules/sqlpg102.ts": "0a4f30a46fc1af3a251fd60ba8fee28f853605629cc93a2881c5bf8664dfd68e",
57
58
  "rules/sqlpg103.ts": "d172dbb711917a50dcb4e894d554730386cfdc056c10338733083dbf344f6f86",
@@ -79,5 +80,5 @@
79
80
  "rules/sqlpg125.ts": "cc7411c57c525613dc720ba00e986bbc4e5a84b8b0bcfa7a6ce0d058f039f025",
80
81
  "rules/sqlpg126.ts": "d57b82a5842273876510131d67bf4418cbd61eff821e245edebc644dafd502bb"
81
82
  },
82
- "composite": "8017b55c88371db99ad588d80a20bc182bd453a8831a2ef49365938faf1ca1ab"
83
+ "composite": "7d9781849f6ea626980de010d38ea14c60d9737604d164c4ec960e65ff002173"
83
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audit-entries.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/audit-entries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA2B7D,CAAC"}
1
+ {"version":3,"file":"audit-entries.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/audit-entries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CA4B7D,CAAC"}
@@ -31,4 +31,5 @@ export const sqlPostSynthAuditEntries = {
31
31
  SQLCH125: auditRule("SQLCH125", "merge-worthy", "guidance", "A codec parameter is outside what the codec takes", "Give the codec a parameter within its range or set, or drop the parameter for the default.", { category: "correctness" }),
32
32
  SQLCH126: auditRule("SQLCH126", "merge-worthy", "guidance", "A GRANT column list names a column the table does not declare", "Fix the column name, or declare the column on the table.", { category: "correctness" }),
33
33
  SQLCH127: auditRule("SQLCH127", "merge-worthy", "guidance", "An expression calls a function the pinned server does not have", "Fix the function name, use one from the pinned server's system.functions, or declare it with func.", { category: "correctness" }),
34
+ SQLCH128: auditRule("SQLCH128", "merge-worthy", "guidance", "An integration engine or table function argument holds a literal credential", "Create a named collection with the credentials on the server and name it in place of the arguments: ENGINE = S3(lake_creds, format = 'Parquet').", { category: "security" }),
34
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAyDvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAwD3C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AA0DvE,eAAO,MAAM,eAAe,EAAE,cAAc,EAyD3C,CAAC"}
@@ -27,6 +27,7 @@ import { sqlch124 } from "./sqlch124.js";
27
27
  import { sqlch125 } from "./sqlch125.js";
28
28
  import { sqlch126 } from "./sqlch126.js";
29
29
  import { sqlch127 } from "./sqlch127.js";
30
+ import { sqlch128 } from "./sqlch128.js";
30
31
  import { sqlpg101 } from "./sqlpg101.js";
31
32
  import { sqlpg102 } from "./sqlpg102.js";
32
33
  import { sqlpg103 } from "./sqlpg103.js";
@@ -83,6 +84,7 @@ export const postSynthChecks = [
83
84
  sqlch125,
84
85
  sqlch126,
85
86
  sqlch127,
87
+ sqlch128,
86
88
  sqlpg101,
87
89
  sqlpg102,
88
90
  sqlpg103,
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SQLCH128: an integration engine's or table function's argument holds a
3
+ * literal credential (#4395): `ENGINE = S3('https://...', 'AKIA...', 'secret')`,
4
+ * `mysql('db:3306', 'shop', 'orders', 'app', 'secret')`, a Kafka table's
5
+ * `kafka_sasl_password` setting, a dictionary source's `PASSWORD`.
6
+ *
7
+ * A credential is the environment's, so it does not belong in a declaration,
8
+ * the build output or `clickhouse.sql`, as `IDENTIFIED BY` does not on a
9
+ * user (`../../clickhouse/access.ts`). The secret arguments are found by name
10
+ * from each engine's syntax line in the pinned catalog (`password`,
11
+ * `secret_access_key`, `account_key`, `session_token`, `oauth_token`), as
12
+ * `key = value` overrides and settings by the same names, and inside a URL
13
+ * (`user:password@`) or an Azure connection string (`AccountKey=`). The fix
14
+ * is a named collection the environment creates, named in place of the
15
+ * arguments: `ENGINE = S3(lake_creds, format = 'Parquet')`.
16
+ */
17
+ export declare const sqlch128: import("@intentius/chant").PostSynthCheck;
18
+ //# sourceMappingURL=sqlch128.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlch128.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/sqlch128.ts"],"names":[],"mappings":"AAiMA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ,2CAoBnB,CAAC"}