@intentius/chant-lexicon-sql 0.0.0-stage → 0.112.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -2
- package/dist/clickhouse/apply/apply.d.ts +82 -0
- package/dist/clickhouse/apply/apply.d.ts.map +1 -0
- package/dist/clickhouse/apply/mutations.d.ts +46 -0
- package/dist/clickhouse/apply/mutations.d.ts.map +1 -0
- package/dist/clickhouse/apply/statements.d.ts +99 -0
- package/dist/clickhouse/apply/statements.d.ts.map +1 -0
- package/dist/clickhouse/catalog-types.d.ts +76 -0
- package/dist/clickhouse/catalog-types.d.ts.map +1 -0
- package/dist/clickhouse/container.d.ts +63 -0
- package/dist/clickhouse/container.d.ts.map +1 -0
- package/dist/clickhouse/engine-syntax.d.ts +43 -0
- package/dist/clickhouse/engine-syntax.d.ts.map +1 -0
- package/dist/clickhouse/entities.d.ts +183 -0
- package/dist/clickhouse/entities.d.ts.map +1 -0
- package/dist/clickhouse/http.d.ts +40 -0
- package/dist/clickhouse/http.d.ts.map +1 -0
- package/dist/clickhouse/import/generator.d.ts +16 -0
- package/dist/clickhouse/import/generator.d.ts.map +1 -0
- package/dist/clickhouse/import/ir.d.ts +52 -0
- package/dist/clickhouse/import/ir.d.ts.map +1 -0
- package/dist/clickhouse/import/live-export.d.ts +28 -0
- package/dist/clickhouse/import/live-export.d.ts.map +1 -0
- package/dist/clickhouse/import/parser.d.ts +10 -0
- package/dist/clickhouse/import/parser.d.ts.map +1 -0
- package/dist/clickhouse/live/bind.d.ts +56 -0
- package/dist/clickhouse/live/bind.d.ts.map +1 -0
- package/dist/clickhouse/live/catalog.d.ts +39 -0
- package/dist/clickhouse/live/catalog.d.ts.map +1 -0
- package/dist/clickhouse/live/describe-resources.d.ts +34 -0
- package/dist/clickhouse/live/describe-resources.d.ts.map +1 -0
- package/dist/clickhouse/overlays/codecs.d.ts +28 -0
- package/dist/clickhouse/overlays/codecs.d.ts.map +1 -0
- package/dist/clickhouse/overlays/engines.d.ts +20 -0
- package/dist/clickhouse/overlays/engines.d.ts.map +1 -0
- package/dist/clickhouse/overlays/kinds.d.ts +38 -0
- package/dist/clickhouse/overlays/kinds.d.ts.map +1 -0
- package/dist/clickhouse/overlays/projections.d.ts +27 -0
- package/dist/clickhouse/overlays/projections.d.ts.map +1 -0
- package/dist/clickhouse/overlays/skip-indexes.d.ts +10 -0
- package/dist/clickhouse/overlays/skip-indexes.d.ts.map +1 -0
- package/dist/clickhouse/overlays/ttl.d.ts +35 -0
- package/dist/clickhouse/overlays/ttl.d.ts.map +1 -0
- package/dist/clickhouse/overlays/types.d.ts +21 -0
- package/dist/clickhouse/overlays/types.d.ts.map +1 -0
- package/dist/clickhouse/ownership.d.ts +71 -0
- package/dist/clickhouse/ownership.d.ts.map +1 -0
- package/dist/clickhouse/parser.d.ts +130 -0
- package/dist/clickhouse/parser.d.ts.map +1 -0
- package/dist/clickhouse/plan/commands.d.ts +26 -0
- package/dist/clickhouse/plan/commands.d.ts.map +1 -0
- package/dist/clickhouse/plan/deep.d.ts +32 -0
- package/dist/clickhouse/plan/deep.d.ts.map +1 -0
- package/dist/clickhouse/plan/diff.d.ts +37 -0
- package/dist/clickhouse/plan/diff.d.ts.map +1 -0
- package/dist/clickhouse/plan/disruption.d.ts +17 -0
- package/dist/clickhouse/plan/disruption.d.ts.map +1 -0
- package/dist/clickhouse/plan/normalize.d.ts +97 -0
- package/dist/clickhouse/plan/normalize.d.ts.map +1 -0
- package/dist/clickhouse/plan/rebuild-handoff.d.ts +38 -0
- package/dist/clickhouse/plan/rebuild-handoff.d.ts.map +1 -0
- package/dist/clickhouse/plan/report.d.ts +6 -0
- package/dist/clickhouse/plan/report.d.ts.map +1 -0
- package/dist/clickhouse/plan/rules.d.ts +60 -0
- package/dist/clickhouse/plan/rules.d.ts.map +1 -0
- package/dist/clickhouse/plan/schema.d.ts +23 -0
- package/dist/clickhouse/plan/schema.d.ts.map +1 -0
- package/dist/clickhouse/plan/server-format.d.ts +12 -0
- package/dist/clickhouse/plan/server-format.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/backfill.d.ts +70 -0
- package/dist/clickhouse/rebuild/backfill.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/observe.d.ts +157 -0
- package/dist/clickhouse/rebuild/observe.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/op.d.ts +108 -0
- package/dist/clickhouse/rebuild/op.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/partitions.d.ts +24 -0
- package/dist/clickhouse/rebuild/partitions.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/receipts.d.ts +76 -0
- package/dist/clickhouse/rebuild/receipts.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/replicas.d.ts +78 -0
- package/dist/clickhouse/rebuild/replicas.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/steps.d.ts +151 -0
- package/dist/clickhouse/rebuild/steps.d.ts.map +1 -0
- package/dist/clickhouse/rebuild/verify.d.ts +51 -0
- package/dist/clickhouse/rebuild/verify.d.ts.map +1 -0
- package/dist/clickhouse/testing/fake-server.d.ts +27 -0
- package/dist/clickhouse/testing/fake-server.d.ts.map +1 -0
- package/dist/clickhouse/testing/roundtrip-schema.d.ts +3 -0
- package/dist/clickhouse/testing/roundtrip-schema.d.ts.map +1 -0
- package/dist/clickhouse/testing/writable-server.d.ts +35 -0
- package/dist/clickhouse/testing/writable-server.d.ts.map +1 -0
- package/dist/clickhouse/tokens.d.ts +15 -0
- package/dist/clickhouse/tokens.d.ts.map +1 -0
- package/dist/clickhouse.d.ts +24 -0
- package/dist/clickhouse.d.ts.map +1 -0
- package/dist/codegen/classifier-page.d.ts +6 -0
- package/dist/codegen/classifier-page.d.ts.map +1 -0
- package/dist/codegen/clickhouse-module.d.ts +23 -0
- package/dist/codegen/clickhouse-module.d.ts.map +1 -0
- package/dist/codegen/docs-cli.d.ts +3 -0
- package/dist/codegen/docs-cli.d.ts.map +1 -0
- package/dist/codegen/docs.d.ts +8 -0
- package/dist/codegen/docs.d.ts.map +1 -0
- package/dist/codegen/generate-cli.d.ts +3 -0
- package/dist/codegen/generate-cli.d.ts.map +1 -0
- package/dist/codegen/generate.d.ts +40 -0
- package/dist/codegen/generate.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +7 -0
- package/dist/codegen/package.d.ts.map +1 -0
- package/dist/codegen/postgres-classifier-page.d.ts +7 -0
- package/dist/codegen/postgres-classifier-page.d.ts.map +1 -0
- package/dist/codegen/postgres-module.d.ts +30 -0
- package/dist/codegen/postgres-module.d.ts.map +1 -0
- package/dist/codegen/registry.d.ts +12 -0
- package/dist/codegen/registry.d.ts.map +1 -0
- package/dist/composites/audit-log-table.d.ts +31 -0
- package/dist/composites/audit-log-table.d.ts.map +1 -0
- package/dist/composites/catalog.d.ts +3 -0
- package/dist/composites/catalog.d.ts.map +1 -0
- package/dist/composites/cdc-mirror.d.ts +32 -0
- package/dist/composites/cdc-mirror.d.ts.map +1 -0
- package/dist/composites/clickhouse.d.ts +7 -0
- package/dist/composites/clickhouse.d.ts.map +1 -0
- package/dist/composites/events-table.d.ts +32 -0
- package/dist/composites/events-table.d.ts.map +1 -0
- package/dist/composites/index.d.ts +9 -0
- package/dist/composites/index.d.ts.map +1 -0
- package/dist/composites/join-table.d.ts +41 -0
- package/dist/composites/join-table.d.ts.map +1 -0
- package/dist/composites/postgres.d.ts +7 -0
- package/dist/composites/postgres.d.ts.map +1 -0
- package/dist/composites/refreshed-view.d.ts +32 -0
- package/dist/composites/refreshed-view.d.ts.map +1 -0
- package/dist/composites/replacing-table.d.ts +34 -0
- package/dist/composites/replacing-table.d.ts.map +1 -0
- package/dist/composites/rollup-view.d.ts +39 -0
- package/dist/composites/rollup-view.d.ts.map +1 -0
- package/dist/composites/sharded-table.d.ts +35 -0
- package/dist/composites/sharded-table.d.ts.map +1 -0
- package/dist/composites/soft-delete-table.d.ts +40 -0
- package/dist/composites/soft-delete-table.d.ts.map +1 -0
- package/dist/composites/tenant-table.d.ts +34 -0
- package/dist/composites/tenant-table.d.ts.map +1 -0
- package/dist/config.d.ts +213 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/apply.d.ts +89 -0
- package/dist/core/apply.d.ts.map +1 -0
- package/dist/core/classifier.d.ts +88 -0
- package/dist/core/classifier.d.ts.map +1 -0
- package/dist/core/container.d.ts +45 -0
- package/dist/core/container.d.ts.map +1 -0
- package/dist/core/cursor.d.ts +67 -0
- package/dist/core/cursor.d.ts.map +1 -0
- package/dist/core/diff.d.ts +49 -0
- package/dist/core/diff.d.ts.map +1 -0
- package/dist/core/entity.d.ts +41 -0
- package/dist/core/entity.d.ts.map +1 -0
- package/dist/core/find-templates.d.ts +69 -0
- package/dist/core/find-templates.d.ts.map +1 -0
- package/dist/core/handoff.d.ts +36 -0
- package/dist/core/handoff.d.ts.map +1 -0
- package/dist/core/index.d.ts +61 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/interpolation.d.ts +88 -0
- package/dist/core/interpolation.d.ts.map +1 -0
- package/dist/core/normalize.d.ts +18 -0
- package/dist/core/normalize.d.ts.map +1 -0
- package/dist/core/ownership.d.ts +60 -0
- package/dist/core/ownership.d.ts.map +1 -0
- package/dist/core/receipts.d.ts +28 -0
- package/dist/core/receipts.d.ts.map +1 -0
- package/dist/core/references.d.ts +37 -0
- package/dist/core/references.d.ts.map +1 -0
- package/dist/core/template.d.ts +41 -0
- package/dist/core/template.d.ts.map +1 -0
- package/dist/core/testing/http-stub.d.ts +17 -0
- package/dist/core/testing/http-stub.d.ts.map +1 -0
- package/dist/core/tokens.d.ts +102 -0
- package/dist/core/tokens.d.ts.map +1 -0
- package/dist/coverage.d.ts +25 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/detect.d.ts +15 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/dialects.d.ts +20 -0
- package/dist/dialects.d.ts.map +1 -0
- package/dist/generated/clickhouse-types.d.ts +4380 -0
- package/dist/generated/clickhouse-types.d.ts.map +1 -0
- package/dist/generated/clickhouse.d.ts +11 -0
- package/dist/generated/clickhouse.d.ts.map +1 -0
- package/dist/generated/postgres-types.d.ts +1579 -0
- package/dist/generated/postgres-types.d.ts.map +1 -0
- package/dist/generated/postgres.d.ts +9 -0
- package/dist/generated/postgres.d.ts.map +1 -0
- package/dist/import-generator.d.ts +8 -0
- package/dist/import-generator.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/init-templates.d.ts +20 -0
- package/dist/init-templates.d.ts.map +1 -0
- package/dist/integrity.json +61 -0
- package/dist/lint/audit-catalog.d.ts +10 -0
- package/dist/lint/audit-catalog.d.ts.map +1 -0
- package/dist/lint/audit-lineage.d.ts +25 -0
- package/dist/lint/audit-lineage.d.ts.map +1 -0
- package/dist/lint/post-synth/audit-entries.d.ts +8 -0
- package/dist/lint/post-synth/audit-entries.d.ts.map +1 -0
- package/dist/lint/post-synth/clickhouse-helpers.d.ts +85 -0
- package/dist/lint/post-synth/clickhouse-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts +3 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -0
- package/dist/lint/post-synth/postgres-audit-entries.d.ts +9 -0
- package/dist/lint/post-synth/postgres-audit-entries.d.ts.map +1 -0
- package/dist/lint/post-synth/postgres-helpers.d.ts +89 -0
- package/dist/lint/post-synth/postgres-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/sql-helpers.d.ts +27 -0
- package/dist/lint/post-synth/sql-helpers.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch101.d.ts +12 -0
- package/dist/lint/post-synth/sqlch101.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch102.d.ts +9 -0
- package/dist/lint/post-synth/sqlch102.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch103.d.ts +10 -0
- package/dist/lint/post-synth/sqlch103.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch104.d.ts +9 -0
- package/dist/lint/post-synth/sqlch104.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch105.d.ts +10 -0
- package/dist/lint/post-synth/sqlch105.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch106.d.ts +11 -0
- package/dist/lint/post-synth/sqlch106.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch107.d.ts +10 -0
- package/dist/lint/post-synth/sqlch107.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch108.d.ts +11 -0
- package/dist/lint/post-synth/sqlch108.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch109.d.ts +10 -0
- package/dist/lint/post-synth/sqlch109.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch110.d.ts +12 -0
- package/dist/lint/post-synth/sqlch110.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch111.d.ts +11 -0
- package/dist/lint/post-synth/sqlch111.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch112.d.ts +12 -0
- package/dist/lint/post-synth/sqlch112.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch113.d.ts +9 -0
- package/dist/lint/post-synth/sqlch113.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch114.d.ts +8 -0
- package/dist/lint/post-synth/sqlch114.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch115.d.ts +13 -0
- package/dist/lint/post-synth/sqlch115.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch116.d.ts +10 -0
- package/dist/lint/post-synth/sqlch116.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch117.d.ts +9 -0
- package/dist/lint/post-synth/sqlch117.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch118.d.ts +10 -0
- package/dist/lint/post-synth/sqlch118.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch119.d.ts +11 -0
- package/dist/lint/post-synth/sqlch119.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlch120.d.ts +10 -0
- package/dist/lint/post-synth/sqlch120.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg101.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg101.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg102.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg102.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg103.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg103.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg104.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg104.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg105.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg105.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg106.d.ts +9 -0
- package/dist/lint/post-synth/sqlpg106.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg107.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg107.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg108.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg108.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg109.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg109.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg110.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg110.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg111.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg111.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg112.d.ts +10 -0
- package/dist/lint/post-synth/sqlpg112.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg113.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg113.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg114.d.ts +13 -0
- package/dist/lint/post-synth/sqlpg114.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg115.d.ts +13 -0
- package/dist/lint/post-synth/sqlpg115.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg116.d.ts +11 -0
- package/dist/lint/post-synth/sqlpg116.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg117.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg117.d.ts.map +1 -0
- package/dist/lint/post-synth/sqlpg118.d.ts +12 -0
- package/dist/lint/post-synth/sqlpg118.d.ts.map +1 -0
- package/dist/lint/rules/index.d.ts +12 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/postgres-templates.d.ts +18 -0
- package/dist/lint/rules/postgres-templates.d.ts.map +1 -0
- package/dist/lint/rules/sqlch001.d.ts +12 -0
- package/dist/lint/rules/sqlch001.d.ts.map +1 -0
- package/dist/lint/rules/sqlch002.d.ts +11 -0
- package/dist/lint/rules/sqlch002.d.ts.map +1 -0
- package/dist/lint/rules/sqlch003.d.ts +12 -0
- package/dist/lint/rules/sqlch003.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg001.d.ts +16 -0
- package/dist/lint/rules/sqlpg001.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg002.d.ts +12 -0
- package/dist/lint/rules/sqlpg002.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg003.d.ts +16 -0
- package/dist/lint/rules/sqlpg003.d.ts.map +1 -0
- package/dist/lint/rules/sqlpg004.d.ts +21 -0
- package/dist/lint/rules/sqlpg004.d.ts.map +1 -0
- package/dist/lint/rules/templates.d.ts +23 -0
- package/dist/lint/rules/templates.d.ts.map +1 -0
- package/dist/live-dialect.d.ts +25 -0
- package/dist/live-dialect.d.ts.map +1 -0
- package/dist/lsp/catalog.d.ts +22 -0
- package/dist/lsp/catalog.d.ts.map +1 -0
- package/dist/lsp/completions.d.ts +13 -0
- package/dist/lsp/completions.d.ts.map +1 -0
- package/dist/lsp/hover.d.ts +12 -0
- package/dist/lsp/hover.d.ts.map +1 -0
- package/dist/lsp/postgres-catalog.d.ts +85 -0
- package/dist/lsp/postgres-catalog.d.ts.map +1 -0
- package/dist/lsp/postgres-template.d.ts +35 -0
- package/dist/lsp/postgres-template.d.ts.map +1 -0
- package/dist/lsp/postgres.d.ts +20 -0
- package/dist/lsp/postgres.d.ts.map +1 -0
- package/dist/lsp/refs.d.ts +8 -0
- package/dist/lsp/refs.d.ts.map +1 -0
- package/dist/lsp/registry.d.ts +4 -0
- package/dist/lsp/registry.d.ts.map +1 -0
- package/dist/lsp/template.d.ts +34 -0
- package/dist/lsp/template.d.ts.map +1 -0
- package/dist/manifest.json +8 -0
- package/dist/mcp/index.d.ts +13 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/postgres.d.ts +32 -0
- package/dist/mcp/postgres.d.ts.map +1 -0
- package/dist/meta.json +67 -0
- package/dist/okf/index.md +67 -0
- package/dist/okf/rules/SQLCH001.md +11 -0
- package/dist/okf/rules/SQLCH002.md +11 -0
- package/dist/okf/rules/SQLCH003.md +11 -0
- package/dist/okf/rules/SQLCH101.md +15 -0
- package/dist/okf/rules/SQLCH102.md +11 -0
- package/dist/okf/rules/SQLCH103.md +11 -0
- package/dist/okf/rules/SQLCH104.md +11 -0
- package/dist/okf/rules/SQLCH105.md +11 -0
- package/dist/okf/rules/SQLCH106.md +11 -0
- package/dist/okf/rules/SQLCH107.md +11 -0
- package/dist/okf/rules/SQLCH108.md +15 -0
- package/dist/okf/rules/SQLCH109.md +11 -0
- package/dist/okf/rules/SQLCH110.md +11 -0
- package/dist/okf/rules/SQLCH111.md +11 -0
- package/dist/okf/rules/SQLCH112.md +11 -0
- package/dist/okf/rules/SQLCH113.md +11 -0
- package/dist/okf/rules/SQLCH114.md +11 -0
- package/dist/okf/rules/SQLCH115.md +11 -0
- package/dist/okf/rules/SQLCH116.md +11 -0
- package/dist/okf/rules/SQLCH117.md +15 -0
- package/dist/okf/rules/SQLCH118.md +15 -0
- package/dist/okf/rules/SQLCH119.md +15 -0
- package/dist/okf/rules/SQLCH120.md +15 -0
- package/dist/okf/rules/SQLPG001.md +11 -0
- package/dist/okf/rules/SQLPG002.md +11 -0
- package/dist/okf/rules/SQLPG003.md +11 -0
- package/dist/okf/rules/SQLPG004.md +11 -0
- package/dist/okf/rules/SQLPG101.md +11 -0
- package/dist/okf/rules/SQLPG102.md +11 -0
- package/dist/okf/rules/SQLPG103.md +11 -0
- package/dist/okf/rules/SQLPG104.md +11 -0
- package/dist/okf/rules/SQLPG105.md +11 -0
- package/dist/okf/rules/SQLPG106.md +11 -0
- package/dist/okf/rules/SQLPG107.md +11 -0
- package/dist/okf/rules/SQLPG108.md +11 -0
- package/dist/okf/rules/SQLPG109.md +11 -0
- package/dist/okf/rules/SQLPG110.md +11 -0
- package/dist/okf/rules/SQLPG111.md +11 -0
- package/dist/okf/rules/SQLPG112.md +11 -0
- package/dist/okf/rules/SQLPG113.md +24 -0
- package/dist/okf/rules/SQLPG114.md +11 -0
- package/dist/okf/rules/SQLPG115.md +11 -0
- package/dist/okf/rules/SQLPG116.md +15 -0
- package/dist/okf/rules/SQLPG117.md +11 -0
- package/dist/okf/rules/SQLPG118.md +11 -0
- package/dist/okf/types/Database.md +15 -0
- package/dist/okf/types/MaterializedView.md +14 -0
- package/dist/okf/types/PostgresDomain.md +13 -0
- package/dist/okf/types/PostgresEnum.md +13 -0
- package/dist/okf/types/PostgresExtension.md +13 -0
- package/dist/okf/types/PostgresIndex.md +9 -0
- package/dist/okf/types/PostgresMaterializedView.md +13 -0
- package/dist/okf/types/PostgresSchema.md +13 -0
- package/dist/okf/types/PostgresSequence.md +13 -0
- package/dist/okf/types/PostgresTable.md +13 -0
- package/dist/okf/types/PostgresView.md +13 -0
- package/dist/okf/types/Table.md +15 -0
- package/dist/okf/types/View.md +13 -0
- package/dist/op/activities/clickhouse-apply.d.ts +56 -0
- package/dist/op/activities/clickhouse-apply.d.ts.map +1 -0
- package/dist/op/activities/clickhouse-emulator.d.ts +26 -0
- package/dist/op/activities/clickhouse-emulator.d.ts.map +1 -0
- package/dist/op/activities/clickhouse-rebuild.d.ts +43 -0
- package/dist/op/activities/clickhouse-rebuild.d.ts.map +1 -0
- package/dist/op/activities/index.d.ts +19 -0
- package/dist/op/activities/index.d.ts.map +1 -0
- package/dist/op/activities/postgres-apply.d.ts +69 -0
- package/dist/op/activities/postgres-apply.d.ts.map +1 -0
- package/dist/op/activities/postgres-emulator.d.ts +33 -0
- package/dist/op/activities/postgres-emulator.d.ts.map +1 -0
- package/dist/op/activities/postgres-migration.d.ts +48 -0
- package/dist/op/activities/postgres-migration.d.ts.map +1 -0
- package/dist/op/activity-contracts.d.ts +464 -0
- package/dist/op/activity-contracts.d.ts.map +1 -0
- package/dist/package-cli.d.ts +3 -0
- package/dist/package-cli.d.ts.map +1 -0
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/postgres/apply/apply.d.ts +163 -0
- package/dist/postgres/apply/apply.d.ts.map +1 -0
- package/dist/postgres/apply/statements.d.ts +138 -0
- package/dist/postgres/apply/statements.d.ts.map +1 -0
- package/dist/postgres/catalog-types.d.ts +50 -0
- package/dist/postgres/catalog-types.d.ts.map +1 -0
- package/dist/postgres/container.d.ts +23 -0
- package/dist/postgres/container.d.ts.map +1 -0
- package/dist/postgres/entities.d.ts +322 -0
- package/dist/postgres/entities.d.ts.map +1 -0
- package/dist/postgres/entity-types.d.ts +17 -0
- package/dist/postgres/entity-types.d.ts.map +1 -0
- package/dist/postgres/import/generator.d.ts +28 -0
- package/dist/postgres/import/generator.d.ts.map +1 -0
- package/dist/postgres/import/ir.d.ts +24 -0
- package/dist/postgres/import/ir.d.ts.map +1 -0
- package/dist/postgres/import/live-export.d.ts +26 -0
- package/dist/postgres/import/live-export.d.ts.map +1 -0
- package/dist/postgres/keywords.d.ts +22 -0
- package/dist/postgres/keywords.d.ts.map +1 -0
- package/dist/postgres/live/bind.d.ts +76 -0
- package/dist/postgres/live/bind.d.ts.map +1 -0
- package/dist/postgres/live/catalog.d.ts +98 -0
- package/dist/postgres/live/catalog.d.ts.map +1 -0
- package/dist/postgres/live/client.d.ts +32 -0
- package/dist/postgres/live/client.d.ts.map +1 -0
- package/dist/postgres/live/describe-resources.d.ts +41 -0
- package/dist/postgres/live/describe-resources.d.ts.map +1 -0
- package/dist/postgres/migrate/backfill.d.ts +103 -0
- package/dist/postgres/migrate/backfill.d.ts.map +1 -0
- package/dist/postgres/migrate/batches.d.ts +90 -0
- package/dist/postgres/migrate/batches.d.ts.map +1 -0
- package/dist/postgres/migrate/carry.d.ts +196 -0
- package/dist/postgres/migrate/carry.d.ts.map +1 -0
- package/dist/postgres/migrate/handoff.d.ts +46 -0
- package/dist/postgres/migrate/handoff.d.ts.map +1 -0
- package/dist/postgres/migrate/names.d.ts +55 -0
- package/dist/postgres/migrate/names.d.ts.map +1 -0
- package/dist/postgres/migrate/observe.d.ts +139 -0
- package/dist/postgres/migrate/observe.d.ts.map +1 -0
- package/dist/postgres/migrate/op.d.ts +128 -0
- package/dist/postgres/migrate/op.d.ts.map +1 -0
- package/dist/postgres/migrate/receipts.d.ts +63 -0
- package/dist/postgres/migrate/receipts.d.ts.map +1 -0
- package/dist/postgres/migrate/replication.d.ts +80 -0
- package/dist/postgres/migrate/replication.d.ts.map +1 -0
- package/dist/postgres/migrate/steps.d.ts +225 -0
- package/dist/postgres/migrate/steps.d.ts.map +1 -0
- package/dist/postgres/overlays/columns.d.ts +6 -0
- package/dist/postgres/overlays/columns.d.ts.map +1 -0
- package/dist/postgres/overlays/constraints.d.ts +8 -0
- package/dist/postgres/overlays/constraints.d.ts.map +1 -0
- package/dist/postgres/overlays/indexes.d.ts +8 -0
- package/dist/postgres/overlays/indexes.d.ts.map +1 -0
- package/dist/postgres/overlays/kinds.d.ts +48 -0
- package/dist/postgres/overlays/kinds.d.ts.map +1 -0
- package/dist/postgres/overlays/partitioning.d.ts +5 -0
- package/dist/postgres/overlays/partitioning.d.ts.map +1 -0
- package/dist/postgres/overlays/relations.d.ts +6 -0
- package/dist/postgres/overlays/relations.d.ts.map +1 -0
- package/dist/postgres/overlays/storage.d.ts +28 -0
- package/dist/postgres/overlays/storage.d.ts.map +1 -0
- package/dist/postgres/overlays/type-ddl.d.ts +7 -0
- package/dist/postgres/overlays/type-ddl.d.ts.map +1 -0
- package/dist/postgres/overlays/types.d.ts +24 -0
- package/dist/postgres/overlays/types.d.ts.map +1 -0
- package/dist/postgres/parser.d.ts +216 -0
- package/dist/postgres/parser.d.ts.map +1 -0
- package/dist/postgres/plan/commands.d.ts +61 -0
- package/dist/postgres/plan/commands.d.ts.map +1 -0
- package/dist/postgres/plan/deep.d.ts +33 -0
- package/dist/postgres/plan/deep.d.ts.map +1 -0
- package/dist/postgres/plan/diff.d.ts +45 -0
- package/dist/postgres/plan/diff.d.ts.map +1 -0
- package/dist/postgres/plan/disruption.d.ts +14 -0
- package/dist/postgres/plan/disruption.d.ts.map +1 -0
- package/dist/postgres/plan/normalize.d.ts +108 -0
- package/dist/postgres/plan/normalize.d.ts.map +1 -0
- package/dist/postgres/plan/report.d.ts +6 -0
- package/dist/postgres/plan/report.d.ts.map +1 -0
- package/dist/postgres/plan/rules.d.ts +84 -0
- package/dist/postgres/plan/rules.d.ts.map +1 -0
- package/dist/postgres/plan/schema.d.ts +50 -0
- package/dist/postgres/plan/schema.d.ts.map +1 -0
- package/dist/postgres/plan/server-normalize.d.ts +26 -0
- package/dist/postgres/plan/server-normalize.d.ts.map +1 -0
- package/dist/postgres/providers/aurora.d.ts +12 -0
- package/dist/postgres/providers/aurora.d.ts.map +1 -0
- package/dist/postgres/providers/azure.d.ts +14 -0
- package/dist/postgres/providers/azure.d.ts.map +1 -0
- package/dist/postgres/providers/cloud-sql.d.ts +11 -0
- package/dist/postgres/providers/cloud-sql.d.ts.map +1 -0
- package/dist/postgres/providers/index.d.ts +35 -0
- package/dist/postgres/providers/index.d.ts.map +1 -0
- package/dist/postgres/providers/neon.d.ts +13 -0
- package/dist/postgres/providers/neon.d.ts.map +1 -0
- package/dist/postgres/providers/rds.d.ts +10 -0
- package/dist/postgres/providers/rds.d.ts.map +1 -0
- package/dist/postgres/providers/supabase.d.ts +12 -0
- package/dist/postgres/providers/supabase.d.ts.map +1 -0
- package/dist/postgres/providers/types.d.ts +59 -0
- package/dist/postgres/providers/types.d.ts.map +1 -0
- package/dist/postgres/testing/fake-client.d.ts +38 -0
- package/dist/postgres/testing/fake-client.d.ts.map +1 -0
- package/dist/postgres/testing/migration.d.ts +25 -0
- package/dist/postgres/testing/migration.d.ts.map +1 -0
- package/dist/postgres/testing/roundtrip-schema.d.ts +11 -0
- package/dist/postgres/testing/roundtrip-schema.d.ts.map +1 -0
- package/dist/postgres/testing/server.d.ts +17 -0
- package/dist/postgres/testing/server.d.ts.map +1 -0
- package/dist/postgres/testing/writable-server.d.ts +45 -0
- package/dist/postgres/testing/writable-server.d.ts.map +1 -0
- package/dist/postgres/tokens.d.ts +26 -0
- package/dist/postgres/tokens.d.ts.map +1 -0
- package/dist/postgres.d.ts +13 -0
- package/dist/postgres.d.ts.map +1 -0
- package/dist/rules/audit-entries.ts +29 -0
- package/dist/rules/clickhouse-helpers.ts +206 -0
- package/dist/rules/postgres-audit-entries.ts +29 -0
- package/dist/rules/postgres-helpers.ts +126 -0
- package/dist/rules/postgres-templates.ts +36 -0
- package/dist/rules/sql-helpers.ts +53 -0
- package/dist/rules/sqlch001.ts +53 -0
- package/dist/rules/sqlch002.ts +115 -0
- package/dist/rules/sqlch003.ts +68 -0
- package/dist/rules/sqlch101.ts +35 -0
- package/dist/rules/sqlch102.ts +23 -0
- package/dist/rules/sqlch103.ts +45 -0
- package/dist/rules/sqlch104.ts +42 -0
- package/dist/rules/sqlch105.ts +35 -0
- package/dist/rules/sqlch106.ts +27 -0
- package/dist/rules/sqlch107.ts +35 -0
- package/dist/rules/sqlch108.ts +27 -0
- package/dist/rules/sqlch109.ts +21 -0
- package/dist/rules/sqlch110.ts +29 -0
- package/dist/rules/sqlch111.ts +40 -0
- package/dist/rules/sqlch112.ts +30 -0
- package/dist/rules/sqlch113.ts +20 -0
- package/dist/rules/sqlch114.ts +26 -0
- package/dist/rules/sqlch115.ts +31 -0
- package/dist/rules/sqlch116.ts +22 -0
- package/dist/rules/sqlch117.ts +25 -0
- package/dist/rules/sqlch118.ts +26 -0
- package/dist/rules/sqlch119.ts +31 -0
- package/dist/rules/sqlch120.ts +21 -0
- package/dist/rules/sqlpg001.ts +88 -0
- package/dist/rules/sqlpg002.ts +68 -0
- package/dist/rules/sqlpg003.ts +59 -0
- package/dist/rules/sqlpg004.ts +73 -0
- package/dist/rules/sqlpg101.ts +24 -0
- package/dist/rules/sqlpg102.ts +30 -0
- package/dist/rules/sqlpg103.ts +23 -0
- package/dist/rules/sqlpg104.ts +23 -0
- package/dist/rules/sqlpg105.ts +22 -0
- package/dist/rules/sqlpg106.ts +22 -0
- package/dist/rules/sqlpg107.ts +22 -0
- package/dist/rules/sqlpg108.ts +27 -0
- package/dist/rules/sqlpg109.ts +37 -0
- package/dist/rules/sqlpg110.ts +33 -0
- package/dist/rules/sqlpg111.ts +23 -0
- package/dist/rules/sqlpg112.ts +25 -0
- package/dist/rules/sqlpg113.ts +28 -0
- package/dist/rules/sqlpg114.ts +37 -0
- package/dist/rules/sqlpg115.ts +38 -0
- package/dist/rules/sqlpg116.ts +25 -0
- package/dist/rules/sqlpg117.ts +24 -0
- package/dist/rules/sqlpg118.ts +22 -0
- package/dist/rules/templates.ts +35 -0
- package/dist/serializer.d.ts +37 -0
- package/dist/serializer.d.ts.map +1 -0
- package/dist/skill-defs.d.ts +3 -0
- package/dist/skill-defs.d.ts.map +1 -0
- package/dist/spec/catalog.d.ts +125 -0
- package/dist/spec/catalog.d.ts.map +1 -0
- package/dist/spec/fetch.d.ts +43 -0
- package/dist/spec/fetch.d.ts.map +1 -0
- package/dist/spec/pin.d.ts +39 -0
- package/dist/spec/pin.d.ts.map +1 -0
- package/dist/spec/postgres-catalog.d.ts +108 -0
- package/dist/spec/postgres-catalog.d.ts.map +1 -0
- package/dist/spec/postgres-fetch.d.ts +46 -0
- package/dist/spec/postgres-fetch.d.ts.map +1 -0
- package/dist/spec/postgres-pin.d.ts +67 -0
- package/dist/spec/postgres-pin.d.ts.map +1 -0
- package/dist/types/index.d.ts +4386 -0
- package/dist/validate-cli.d.ts +3 -0
- package/dist/validate-cli.d.ts.map +1 -0
- package/dist/validate.d.ts +15 -0
- package/dist/validate.d.ts.map +1 -0
- package/package.json +74 -4
- package/src/clickhouse/apply/apply.ts +288 -0
- package/src/clickhouse/apply/mutations.ts +90 -0
- package/src/clickhouse/apply/statements.ts +393 -0
- package/src/clickhouse/catalog-types.ts +84 -0
- package/src/clickhouse/container.ts +176 -0
- package/src/clickhouse/engine-syntax.test.ts +53 -0
- package/src/clickhouse/engine-syntax.ts +173 -0
- package/src/clickhouse/entities.test.ts +188 -0
- package/src/clickhouse/entities.ts +425 -0
- package/src/clickhouse/http.ts +76 -0
- package/src/clickhouse/import/generator.ts +153 -0
- package/src/clickhouse/import/import.test.ts +157 -0
- package/src/clickhouse/import/ir.ts +171 -0
- package/src/clickhouse/import/live-export.ts +53 -0
- package/src/clickhouse/import/parser.ts +27 -0
- package/src/clickhouse/import/roundtrip.test.ts +90 -0
- package/src/clickhouse/live/bind.ts +126 -0
- package/src/clickhouse/live/catalog.ts +96 -0
- package/src/clickhouse/live/describe-resources.ts +98 -0
- package/src/clickhouse/live/live.test.ts +143 -0
- package/src/clickhouse/live/roundtrip.e2e.test.ts +93 -0
- package/src/clickhouse/overlays/codecs.ts +68 -0
- package/src/clickhouse/overlays/engines.ts +108 -0
- package/src/clickhouse/overlays/kinds.ts +38 -0
- package/src/clickhouse/overlays/projections.ts +36 -0
- package/src/clickhouse/overlays/skip-indexes.ts +44 -0
- package/src/clickhouse/overlays/ttl.ts +55 -0
- package/src/clickhouse/overlays/types.ts +58 -0
- package/src/clickhouse/ownership.test.ts +20 -0
- package/src/clickhouse/ownership.ts +103 -0
- package/src/clickhouse/parser.test.ts +166 -0
- package/src/clickhouse/parser.ts +459 -0
- package/src/clickhouse/plan/commands.ts +101 -0
- package/src/clickhouse/plan/deep.ts +124 -0
- package/src/clickhouse/plan/diff.ts +203 -0
- package/src/clickhouse/plan/disruption.ts +61 -0
- package/src/clickhouse/plan/normalize.ts +352 -0
- package/src/clickhouse/plan/plan-wiring.test.ts +77 -0
- package/src/clickhouse/plan/plan.e2e.test.ts +77 -0
- package/src/clickhouse/plan/plan.test.ts +201 -0
- package/src/clickhouse/plan/rebuild-handoff.ts +59 -0
- package/src/clickhouse/plan/report.ts +19 -0
- package/src/clickhouse/plan/rules.ts +241 -0
- package/src/clickhouse/plan/schema.ts +56 -0
- package/src/clickhouse/plan/server-format.ts +39 -0
- package/src/clickhouse/rebuild/backfill.ts +186 -0
- package/src/clickhouse/rebuild/observe.ts +380 -0
- package/src/clickhouse/rebuild/op.ts +206 -0
- package/src/clickhouse/rebuild/partitions.ts +62 -0
- package/src/clickhouse/rebuild/rebuild-replicated.e2e.test.ts +513 -0
- package/src/clickhouse/rebuild/rebuild.e2e.test.ts +351 -0
- package/src/clickhouse/rebuild/rebuild.test.ts +190 -0
- package/src/clickhouse/rebuild/receipts.ts +143 -0
- package/src/clickhouse/rebuild/replicas.test.ts +70 -0
- package/src/clickhouse/rebuild/replicas.ts +148 -0
- package/src/clickhouse/rebuild/steps.ts +382 -0
- package/src/clickhouse/rebuild/verify.ts +124 -0
- package/src/clickhouse/testdata/NOTICE +5 -0
- package/src/clickhouse/testdata/clickhouse-tests-corpus.json +302 -0
- package/src/clickhouse/testing/fake-server.ts +65 -0
- package/src/clickhouse/testing/roundtrip-schema.ts +25 -0
- package/src/clickhouse/testing/writable-server.ts +141 -0
- package/src/clickhouse/tokens.ts +28 -0
- package/src/clickhouse.ts +63 -0
- package/src/codegen/classifier-page.test.ts +16 -0
- package/src/codegen/classifier-page.ts +76 -0
- package/src/codegen/clickhouse-module.test.ts +63 -0
- package/src/codegen/clickhouse-module.ts +269 -0
- package/src/codegen/docs-cli.ts +4 -0
- package/src/codegen/docs.ts +225 -0
- package/src/codegen/generate-cli.ts +13 -0
- package/src/codegen/generate.ts +126 -0
- package/src/codegen/package.ts +36 -0
- package/src/codegen/postgres-classifier-page.ts +81 -0
- package/src/codegen/postgres-module.test.ts +77 -0
- package/src/codegen/postgres-module.ts +434 -0
- package/src/codegen/registry.ts +36 -0
- package/src/composites/audit-log-table.ts +54 -0
- package/src/composites/catalog.test.ts +61 -0
- package/src/composites/catalog.ts +529 -0
- package/src/composites/cdc-mirror.ts +54 -0
- package/src/composites/clickhouse.ts +7 -0
- package/src/composites/composites.test.ts +758 -0
- package/src/composites/events-table.ts +49 -0
- package/src/composites/index.ts +9 -0
- package/src/composites/join-table.ts +57 -0
- package/src/composites/postgres.ts +7 -0
- package/src/composites/refreshed-view.ts +46 -0
- package/src/composites/replacing-table.ts +49 -0
- package/src/composites/rollup-view.ts +55 -0
- package/src/composites/sharded-table.ts +49 -0
- package/src/composites/soft-delete-table.ts +61 -0
- package/src/composites/tenant-table.ts +50 -0
- package/src/config.ts +157 -0
- package/src/core/apply.ts +153 -0
- package/src/core/classifier.ts +186 -0
- package/src/core/container.ts +93 -0
- package/src/core/core.test.ts +254 -0
- package/src/core/cursor.ts +189 -0
- package/src/core/diff.ts +72 -0
- package/src/core/entity.ts +85 -0
- package/src/core/find-templates.ts +158 -0
- package/src/core/handoff.ts +44 -0
- package/src/core/index.ts +61 -0
- package/src/core/interpolation.ts +225 -0
- package/src/core/normalize.ts +39 -0
- package/src/core/ownership.test.ts +36 -0
- package/src/core/ownership.ts +133 -0
- package/src/core/receipts.ts +29 -0
- package/src/core/references.ts +74 -0
- package/src/core/template.ts +83 -0
- package/src/core/testing/http-stub.ts +33 -0
- package/src/core/tokens.ts +252 -0
- package/src/coverage.ts +64 -0
- package/src/detect.ts +32 -0
- package/src/dialects.ts +21 -0
- package/src/generated/clickhouse-types.ts +4386 -0
- package/src/generated/clickhouse.ts +2476 -0
- package/src/generated/index.d.ts +4386 -0
- package/src/generated/lexicon-sql.json +67 -0
- package/src/generated/postgres-types.ts +1190 -0
- package/src/generated/postgres.ts +1039 -0
- package/src/import-generator.ts +18 -0
- package/src/index.ts +21 -0
- package/src/init-templates.test.ts +108 -0
- package/src/init-templates.ts +327 -0
- package/src/lint/audit-catalog.ts +73 -0
- package/src/lint/audit-lineage.ts +47 -0
- package/src/lint/post-synth/audit-entries.ts +29 -0
- package/src/lint/post-synth/clickhouse-checks.test.ts +278 -0
- package/src/lint/post-synth/clickhouse-helpers.ts +206 -0
- package/src/lint/post-synth/index.ts +81 -0
- package/src/lint/post-synth/post-synth.test.ts +33 -0
- package/src/lint/post-synth/postgres-audit-entries.ts +29 -0
- package/src/lint/post-synth/postgres-checks.test.ts +257 -0
- package/src/lint/post-synth/postgres-helpers.ts +126 -0
- package/src/lint/post-synth/sql-helpers.ts +53 -0
- package/src/lint/post-synth/sqlch101.ts +35 -0
- package/src/lint/post-synth/sqlch102.ts +23 -0
- package/src/lint/post-synth/sqlch103.ts +45 -0
- package/src/lint/post-synth/sqlch104.ts +42 -0
- package/src/lint/post-synth/sqlch105.ts +35 -0
- package/src/lint/post-synth/sqlch106.ts +27 -0
- package/src/lint/post-synth/sqlch107.ts +35 -0
- package/src/lint/post-synth/sqlch108.ts +27 -0
- package/src/lint/post-synth/sqlch109.ts +21 -0
- package/src/lint/post-synth/sqlch110.ts +29 -0
- package/src/lint/post-synth/sqlch111.ts +40 -0
- package/src/lint/post-synth/sqlch112.ts +30 -0
- package/src/lint/post-synth/sqlch113.ts +20 -0
- package/src/lint/post-synth/sqlch114.ts +26 -0
- package/src/lint/post-synth/sqlch115.ts +31 -0
- package/src/lint/post-synth/sqlch116.ts +22 -0
- package/src/lint/post-synth/sqlch117.ts +25 -0
- package/src/lint/post-synth/sqlch118.ts +26 -0
- package/src/lint/post-synth/sqlch119.ts +31 -0
- package/src/lint/post-synth/sqlch120.ts +21 -0
- package/src/lint/post-synth/sqlpg101.ts +24 -0
- package/src/lint/post-synth/sqlpg102.ts +30 -0
- package/src/lint/post-synth/sqlpg103.ts +23 -0
- package/src/lint/post-synth/sqlpg104.ts +23 -0
- package/src/lint/post-synth/sqlpg105.ts +22 -0
- package/src/lint/post-synth/sqlpg106.ts +22 -0
- package/src/lint/post-synth/sqlpg107.ts +22 -0
- package/src/lint/post-synth/sqlpg108.ts +27 -0
- package/src/lint/post-synth/sqlpg109.ts +37 -0
- package/src/lint/post-synth/sqlpg110.ts +33 -0
- package/src/lint/post-synth/sqlpg111.ts +23 -0
- package/src/lint/post-synth/sqlpg112.ts +25 -0
- package/src/lint/post-synth/sqlpg113.ts +28 -0
- package/src/lint/post-synth/sqlpg114.ts +37 -0
- package/src/lint/post-synth/sqlpg115.ts +38 -0
- package/src/lint/post-synth/sqlpg116.ts +25 -0
- package/src/lint/post-synth/sqlpg117.ts +24 -0
- package/src/lint/post-synth/sqlpg118.ts +22 -0
- package/src/lint/rules/index.ts +13 -0
- package/src/lint/rules/postgres-templates.ts +36 -0
- package/src/lint/rules/rules.test.ts +228 -0
- package/src/lint/rules/sqlch001.ts +53 -0
- package/src/lint/rules/sqlch002.ts +115 -0
- package/src/lint/rules/sqlch003.ts +68 -0
- package/src/lint/rules/sqlpg001.ts +88 -0
- package/src/lint/rules/sqlpg002.ts +68 -0
- package/src/lint/rules/sqlpg003.ts +59 -0
- package/src/lint/rules/sqlpg004.ts +73 -0
- package/src/lint/rules/templates.ts +35 -0
- package/src/live-dialect.ts +37 -0
- package/src/lsp/catalog.ts +60 -0
- package/src/lsp/completions.test.ts +111 -0
- package/src/lsp/completions.ts +128 -0
- package/src/lsp/diagnostics.test.ts +26 -0
- package/src/lsp/hover.test.ts +90 -0
- package/src/lsp/hover.ts +113 -0
- package/src/lsp/postgres-catalog.ts +234 -0
- package/src/lsp/postgres-template.ts +161 -0
- package/src/lsp/postgres.test.ts +150 -0
- package/src/lsp/postgres.ts +270 -0
- package/src/lsp/refs.ts +53 -0
- package/src/lsp/registry.ts +19 -0
- package/src/lsp/template.ts +166 -0
- package/src/mcp/index.ts +304 -0
- package/src/mcp/mcp.test.ts +184 -0
- package/src/mcp/postgres.ts +125 -0
- package/src/op/activities/clickhouse-apply.e2e.test.ts +150 -0
- package/src/op/activities/clickhouse-apply.test.ts +265 -0
- package/src/op/activities/clickhouse-apply.ts +113 -0
- package/src/op/activities/clickhouse-emulator.test.ts +23 -0
- package/src/op/activities/clickhouse-emulator.ts +37 -0
- package/src/op/activities/clickhouse-rebuild.ts +136 -0
- package/src/op/activities/index.ts +50 -0
- package/src/op/activities/postgres-apply.e2e.test.ts +184 -0
- package/src/op/activities/postgres-apply.test.ts +304 -0
- package/src/op/activities/postgres-apply.ts +170 -0
- package/src/op/activities/postgres-emulator.test.ts +26 -0
- package/src/op/activities/postgres-emulator.ts +44 -0
- package/src/op/activities/postgres-migration.ts +182 -0
- package/src/op/activity-contracts.ts +210 -0
- package/src/package-cli.ts +17 -0
- package/src/plugin.test.ts +74 -0
- package/src/plugin.ts +242 -0
- package/src/postgres/apply/apply.ts +582 -0
- package/src/postgres/apply/statements.test.ts +155 -0
- package/src/postgres/apply/statements.ts +603 -0
- package/src/postgres/catalog-types.ts +59 -0
- package/src/postgres/container.ts +72 -0
- package/src/postgres/entities.test.ts +170 -0
- package/src/postgres/entities.ts +1016 -0
- package/src/postgres/entity-types.ts +18 -0
- package/src/postgres/import/generator.ts +176 -0
- package/src/postgres/import/import.test.ts +71 -0
- package/src/postgres/import/ir.ts +67 -0
- package/src/postgres/import/live-export.ts +53 -0
- package/src/postgres/import/live-warnings.test.ts +45 -0
- package/src/postgres/keywords.ts +40 -0
- package/src/postgres/live/bind.ts +146 -0
- package/src/postgres/live/catalog.ts +581 -0
- package/src/postgres/live/client.ts +84 -0
- package/src/postgres/live/describe-resources.ts +111 -0
- package/src/postgres/live/live.test.ts +198 -0
- package/src/postgres/live/roundtrip.e2e.test.ts +111 -0
- package/src/postgres/migrate/backfill.ts +233 -0
- package/src/postgres/migrate/batches.e2e.test.ts +163 -0
- package/src/postgres/migrate/batches.test.ts +36 -0
- package/src/postgres/migrate/batches.ts +159 -0
- package/src/postgres/migrate/carry.e2e.test.ts +335 -0
- package/src/postgres/migrate/carry.test.ts +103 -0
- package/src/postgres/migrate/carry.ts +653 -0
- package/src/postgres/migrate/handoff.ts +73 -0
- package/src/postgres/migrate/kinds.e2e.test.ts +204 -0
- package/src/postgres/migrate/migrate.e2e.test.ts +362 -0
- package/src/postgres/migrate/migrate.test.ts +322 -0
- package/src/postgres/migrate/names.ts +93 -0
- package/src/postgres/migrate/observe.ts +521 -0
- package/src/postgres/migrate/op.ts +242 -0
- package/src/postgres/migrate/receipts.ts +135 -0
- package/src/postgres/migrate/replication.ts +151 -0
- package/src/postgres/migrate/steps.ts +657 -0
- package/src/postgres/overlays/columns.ts +34 -0
- package/src/postgres/overlays/constraints.ts +56 -0
- package/src/postgres/overlays/indexes.ts +27 -0
- package/src/postgres/overlays/kinds.ts +53 -0
- package/src/postgres/overlays/partitioning.ts +26 -0
- package/src/postgres/overlays/relations.ts +29 -0
- package/src/postgres/overlays/storage.ts +75 -0
- package/src/postgres/overlays/type-ddl.ts +38 -0
- package/src/postgres/overlays/types.ts +56 -0
- package/src/postgres/parser.test.ts +214 -0
- package/src/postgres/parser.ts +1062 -0
- package/src/postgres/plan/commands.ts +124 -0
- package/src/postgres/plan/deep.ts +177 -0
- package/src/postgres/plan/diff.ts +323 -0
- package/src/postgres/plan/disruption.ts +52 -0
- package/src/postgres/plan/normalize.test.ts +148 -0
- package/src/postgres/plan/normalize.ts +542 -0
- package/src/postgres/plan/plan.e2e.test.ts +117 -0
- package/src/postgres/plan/plan.test.ts +244 -0
- package/src/postgres/plan/report.ts +24 -0
- package/src/postgres/plan/rules.ts +276 -0
- package/src/postgres/plan/schema.ts +114 -0
- package/src/postgres/plan/server-normalize.ts +123 -0
- package/src/postgres/providers/aurora.ts +45 -0
- package/src/postgres/providers/azure.ts +54 -0
- package/src/postgres/providers/cloud-sql.ts +42 -0
- package/src/postgres/providers/index.ts +90 -0
- package/src/postgres/providers/neon.ts +45 -0
- package/src/postgres/providers/providers.test.ts +136 -0
- package/src/postgres/providers/rds.ts +48 -0
- package/src/postgres/providers/supabase.ts +46 -0
- package/src/postgres/providers/types.ts +70 -0
- package/src/postgres/testdata/NOTICE +31 -0
- package/src/postgres/testdata/postgres-regress-corpus.json +460 -0
- package/src/postgres/testing/fake-client.ts +42 -0
- package/src/postgres/testing/migration.ts +52 -0
- package/src/postgres/testing/roundtrip-schema.ts +46 -0
- package/src/postgres/testing/server.ts +58 -0
- package/src/postgres/testing/writable-server.ts +188 -0
- package/src/postgres/tokens.ts +46 -0
- package/src/postgres.ts +75 -0
- package/src/serializer.test.ts +128 -0
- package/src/serializer.ts +148 -0
- package/src/skill-defs.test.ts +81 -0
- package/src/skill-defs.ts +102 -0
- package/src/skills/chant-sql-plan.md +123 -0
- package/src/skills/chant-sql-postgres-migration.md +126 -0
- package/src/skills/chant-sql-postgres-plan.md +194 -0
- package/src/skills/chant-sql-postgres.md +165 -0
- package/src/skills/chant-sql-rebuild.md +68 -0
- package/src/skills/chant-sql.md +123 -0
- package/src/spec/catalog.e2e.test.ts +29 -0
- package/src/spec/catalog.test.ts +56 -0
- package/src/spec/catalog.ts +311 -0
- package/src/spec/clickhouse-catalog.snapshot.json +5246 -0
- package/src/spec/fetch.test.ts +77 -0
- package/src/spec/fetch.ts +112 -0
- package/src/spec/pin.ts +47 -0
- package/src/spec/postgres-catalog-14.snapshot.json +3494 -0
- package/src/spec/postgres-catalog-15.snapshot.json +3529 -0
- package/src/spec/postgres-catalog-16.snapshot.json +3597 -0
- package/src/spec/postgres-catalog-17.snapshot.json +3656 -0
- package/src/spec/postgres-catalog-18.snapshot.json +3747 -0
- package/src/spec/postgres-catalog.test.ts +43 -0
- package/src/spec/postgres-catalog.ts +301 -0
- package/src/spec/postgres-fetch.test.ts +75 -0
- package/src/spec/postgres-fetch.ts +112 -0
- package/src/spec/postgres-pin.test.ts +64 -0
- package/src/spec/postgres-pin.ts +101 -0
- package/src/typecheck.test.ts +104 -0
- package/src/validate-cli.ts +6 -0
- package/src/validate.ts +149 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The change classifier's rules (#3046 question 3): every way a declared
|
|
3
|
+
* ClickHouse object can change, the class of change it is on the server, and
|
|
4
|
+
* the `ALTER` restriction behind the class, cited.
|
|
5
|
+
*
|
|
6
|
+
* Three classes:
|
|
7
|
+
*
|
|
8
|
+
* - `metadata`: the server records the change and touches no existing data
|
|
9
|
+
* (a new column reads its default from old parts; a new index covers new
|
|
10
|
+
* parts until `MATERIALIZE INDEX`).
|
|
11
|
+
* - `rewrite`: the change is a mutation that rewrites existing parts in the
|
|
12
|
+
* background (`system.mutations`), with no rollback.
|
|
13
|
+
* - `rebuild`: ClickHouse cannot make the change to the table it has; the data
|
|
14
|
+
* has to be copied into a new table. A plan refuses to make one in place.
|
|
15
|
+
*
|
|
16
|
+
* Creating and dropping whole objects are classed `create` and `drop`.
|
|
17
|
+
*/
|
|
18
|
+
import { type ChangeClasses, type ClassifierRule as SqlClassifierRule } from "../../core/classifier.js";
|
|
19
|
+
export type ChangeClass = "metadata" | "rewrite" | "rebuild" | "create" | "drop";
|
|
20
|
+
/** A ClickHouse rule: the shared core's rule shape over these classes, citing a clickhouse.com page. */
|
|
21
|
+
export type ClassifierRule = SqlClassifierRule<ChangeClass>;
|
|
22
|
+
/** The classes as data: report order and labels, and what each costs for `classifyDisruption()`. */
|
|
23
|
+
export declare const CHANGE_CLASSES: ChangeClasses<ChangeClass>;
|
|
24
|
+
export declare const CLASSIFIER_RULES: {
|
|
25
|
+
readonly SQLCH200: ClassifierRule;
|
|
26
|
+
readonly SQLCH201: ClassifierRule;
|
|
27
|
+
readonly SQLCH202: ClassifierRule;
|
|
28
|
+
readonly SQLCH203: ClassifierRule;
|
|
29
|
+
readonly SQLCH204: ClassifierRule;
|
|
30
|
+
readonly SQLCH205: ClassifierRule;
|
|
31
|
+
readonly SQLCH206: ClassifierRule;
|
|
32
|
+
readonly SQLCH207: ClassifierRule;
|
|
33
|
+
readonly SQLCH208: ClassifierRule;
|
|
34
|
+
readonly SQLCH209: ClassifierRule;
|
|
35
|
+
readonly SQLCH210: ClassifierRule;
|
|
36
|
+
readonly SQLCH211: ClassifierRule;
|
|
37
|
+
readonly SQLCH212: ClassifierRule;
|
|
38
|
+
readonly SQLCH213: ClassifierRule;
|
|
39
|
+
readonly SQLCH214: ClassifierRule;
|
|
40
|
+
readonly SQLCH215: ClassifierRule;
|
|
41
|
+
readonly SQLCH216: ClassifierRule;
|
|
42
|
+
readonly SQLCH217: ClassifierRule;
|
|
43
|
+
readonly SQLCH218: ClassifierRule;
|
|
44
|
+
readonly SQLCH220: ClassifierRule;
|
|
45
|
+
readonly SQLCH221: ClassifierRule;
|
|
46
|
+
readonly SQLCH222: ClassifierRule;
|
|
47
|
+
readonly SQLCH223: ClassifierRule;
|
|
48
|
+
readonly SQLCH224: ClassifierRule;
|
|
49
|
+
readonly SQLCH230: ClassifierRule;
|
|
50
|
+
readonly SQLCH231: ClassifierRule;
|
|
51
|
+
readonly SQLCH232: ClassifierRule;
|
|
52
|
+
readonly SQLCH240: ClassifierRule;
|
|
53
|
+
readonly SQLCH241: ClassifierRule;
|
|
54
|
+
readonly SQLCH242: ClassifierRule;
|
|
55
|
+
readonly SQLCH243: ClassifierRule;
|
|
56
|
+
readonly SQLCH244: ClassifierRule;
|
|
57
|
+
readonly SQLCH250: ClassifierRule;
|
|
58
|
+
};
|
|
59
|
+
export type ClassifierRuleId = keyof typeof CLASSIFIER_RULES;
|
|
60
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/plan/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,cAAc,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAErH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjF,wGAAwG;AACxG,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAE5D,oGAAoG;AACpG,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,WAAW,CAIrD,CAAC;AAMF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0MsB,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two sides a diff compares: a build's output (the declarations), or what
|
|
3
|
+
* a live server reports.
|
|
4
|
+
*/
|
|
5
|
+
import type { SchemaObject } from "./diff.js";
|
|
6
|
+
import type { ClickHouseTarget } from "../live/bind.js";
|
|
7
|
+
/** The objects a `chant build` output holds, keyed by export name. */
|
|
8
|
+
export declare function schemaFromBuildOutput(json: string, defaultDatabase?: string): SchemaObject[];
|
|
9
|
+
export declare function schemaFromBuildFile(path: string, defaultDatabase?: string): SchemaObject[];
|
|
10
|
+
/**
|
|
11
|
+
* The declared objects re-keyed by `database.name`, the only identity a live
|
|
12
|
+
* server has. The export name is kept for the report.
|
|
13
|
+
*/
|
|
14
|
+
export declare function keyedByQualifiedName(objects: readonly SchemaObject[]): Array<SchemaObject & {
|
|
15
|
+
exportName: string;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* What the server holds, keyed by `database.name`, limited to the databases
|
|
19
|
+
* the declarations use (and the target's scope). The `default` database is
|
|
20
|
+
* left out, as import leaves it out.
|
|
21
|
+
*/
|
|
22
|
+
export declare function schemaFromServer(target: ClickHouseTarget, databases?: ReadonlySet<string>): Promise<SchemaObject[]>;
|
|
23
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/plan/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQrD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,SAAY,GAAG,YAAY,EAAE,CAM/F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,SAAY,GAAG,YAAY,EAAE,CAE7F;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,KAAK,CAAC,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAMnH;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CASzH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The backstop for normalization against a live server: for each changed
|
|
3
|
+
* expression the rules leave different, ask the server to format both sides
|
|
4
|
+
* (`formatQuerySingleLine`, which parses and prints and touches nothing) and
|
|
5
|
+
* drop the change when they print the same. `a+b*2` and `a + (b * 2)` are one
|
|
6
|
+
* expression to the server.
|
|
7
|
+
*/
|
|
8
|
+
import { type ClickHouseEndpoint } from "../http.js";
|
|
9
|
+
import type { Change } from "./diff.js";
|
|
10
|
+
/** The changes that remain once the server's formatter has had its say. */
|
|
11
|
+
export declare function dropFormattingOnly(endpoint: ClickHouseEndpoint, changes: Change[]): Promise<Change[]>;
|
|
12
|
+
//# sourceMappingURL=server-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-format.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/plan/server-format.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYrC,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB3G"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The backfill (#3198): copy the old table into the new one with
|
|
3
|
+
* `INSERT ... SELECT`, one partition at a time, each partition an effect
|
|
4
|
+
* with its own receipt.
|
|
5
|
+
*
|
|
6
|
+
* Per partition, the cycle core's `effect()` step runs
|
|
7
|
+
* (concepts/effect-receipts.mdx): read the receipt, skip the copy when it
|
|
8
|
+
* matches, otherwise copy and write the receipt last, on success only.
|
|
9
|
+
* `effect()` itself wraps steps declared at build time around one receipt
|
|
10
|
+
* declared at build time; the partitions are only known when the run reads
|
|
11
|
+
* the old table, so the cycle runs here, once per partition, over the same
|
|
12
|
+
* `ReceiptStore` seam (`./receipts.ts`).
|
|
13
|
+
*
|
|
14
|
+
* A receipt's expectation is a hash of what the copy is: the table, the new
|
|
15
|
+
* table's UUID, the partition, the columns copied and the cut-over. A new
|
|
16
|
+
* table made again, or a new cut-over, makes every receipt stale and the
|
|
17
|
+
* partitions are copied again into the new table.
|
|
18
|
+
*
|
|
19
|
+
* At-least-once is the receipt model's guarantee, and a partition copied
|
|
20
|
+
* twice would be in the new table twice, so a copy that may have run before
|
|
21
|
+
* is undone first. A partition with no matching receipt is a partition whose
|
|
22
|
+
* copy never finished as far as anything recorded; if the new table holds
|
|
23
|
+
* any of its rows (a run killed between the INSERT and the receipt), they are
|
|
24
|
+
* deleted, the delete is waited on in `system.mutations`, and the partition
|
|
25
|
+
* is copied once more. Each copy runs under a query id derived from the new
|
|
26
|
+
* table and the partition, and any query still running under it (the server
|
|
27
|
+
* goes on with an INSERT whose client went away) is killed before the
|
|
28
|
+
* partition is cleared. A backfill interrupted halfway therefore resumes at
|
|
29
|
+
* the first partition without a receipt, and no row is copied twice.
|
|
30
|
+
*
|
|
31
|
+
* In a Replicated database (#3249) a resumed backfill may run on another
|
|
32
|
+
* replica than the one the copy ran on. The kill is `KILL QUERY ON CLUSTER`
|
|
33
|
+
* the database's own cluster, so it reaches the replica still running the
|
|
34
|
+
* copy; before the old table's partitions are listed, and before the new
|
|
35
|
+
* table's rows are counted, this replica fetches what the others wrote
|
|
36
|
+
* (`SYSTEM SYNC REPLICA`); and the receipts replicate with the tables
|
|
37
|
+
* (`./receipts.ts`). Each copy runs with `insert_deduplicate = 0`: a
|
|
38
|
+
* replicated table remembers the blocks it was given, and a partition copied
|
|
39
|
+
* again after its rows were cleared would otherwise be dropped as a repeat.
|
|
40
|
+
*
|
|
41
|
+
* With a replica down (#3270) the kill goes on without it, and each sync
|
|
42
|
+
* either finds nothing that replica alone has and returns, or stops the step
|
|
43
|
+
* naming it (`./replicas.ts`).
|
|
44
|
+
*/
|
|
45
|
+
import { type ClickHouseReceiptStore } from "./receipts.js";
|
|
46
|
+
import { type RebuildObservation } from "./observe.js";
|
|
47
|
+
import { type RebuildRun } from "./steps.js";
|
|
48
|
+
export interface BackfillResult {
|
|
49
|
+
state: RebuildObservation["state"];
|
|
50
|
+
/** Partitions of the old table. */
|
|
51
|
+
partitions: number;
|
|
52
|
+
/** Copied in this run. */
|
|
53
|
+
copied: number;
|
|
54
|
+
/** Skipped: their receipt matched. */
|
|
55
|
+
skipped: number;
|
|
56
|
+
/** Partitions this run found partly copied and cleared before copying again. */
|
|
57
|
+
cleared: number;
|
|
58
|
+
}
|
|
59
|
+
/** The effect a partition's copy is, and its receipt's address suffix. */
|
|
60
|
+
export declare const partitionEffect: (key: string, partition: string) => string;
|
|
61
|
+
/** The receipt's expected value for one partition's copy. */
|
|
62
|
+
export declare function partitionExpectation(o: RebuildObservation, partition: string, cutover: number | undefined): string;
|
|
63
|
+
export interface BackfillDeps {
|
|
64
|
+
/** The receipt store. Default: the receipts table on the target server. */
|
|
65
|
+
receipts?: ClickHouseReceiptStore;
|
|
66
|
+
/** Called after each partition is copied and its receipt written; a test interrupts the backfill here. */
|
|
67
|
+
afterPartition?: (partition: string) => void | Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
export declare function backfill(run: RebuildRun, deps?: BackfillDeps): Promise<BackfillResult>;
|
|
70
|
+
//# sourceMappingURL=backfill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/rebuild/backfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAKH,OAAO,EAA0C,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EAAkE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1G,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,KAAG,MAAuC,CAAC;AAEzG,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CASlH;AAED,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,0GAA0G;IAC1G,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CAmFhG"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rebuild migration's view of the server (#3198): which table is being
|
|
3
|
+
* rebuilt, how far the rebuild has got, and what it will do.
|
|
4
|
+
*
|
|
5
|
+
* Every step of the Op re-observes from here rather than trusting what an
|
|
6
|
+
* earlier run or step said, so the Op converges: run it again after a crash,
|
|
7
|
+
* a gate or an approval, and each step finds its work done or still to do.
|
|
8
|
+
* The progress is read off the server's own objects:
|
|
9
|
+
*
|
|
10
|
+
* - the table being rebuilt, `db.t`, as declared and as the server has it;
|
|
11
|
+
* - `db.t__chant_new`, the new table being filled (`role=new` in its comment);
|
|
12
|
+
* - `db.t__chant_dual`, the dual-write materialized view (`role=dual`);
|
|
13
|
+
* - `db.t__chant_old`, the old table kept after the swap (`role=old`, with
|
|
14
|
+
* `retain-until`).
|
|
15
|
+
*
|
|
16
|
+
* Each working object carries chant's ownership trailer plus
|
|
17
|
+
* `rebuild=<db.t>` and its role (`../ownership.ts`), so it is chant's and
|
|
18
|
+
* this rebuild's, and schema reads leave it out.
|
|
19
|
+
*
|
|
20
|
+
* States:
|
|
21
|
+
*
|
|
22
|
+
* - `rebuild`: the declaration differs from the server by at least one
|
|
23
|
+
* rebuild-class change, and the old table has not been swapped out yet.
|
|
24
|
+
* - `swapped`: the swap ran; the old table is retained until its date.
|
|
25
|
+
* - `done`: the server holds the declaration and nothing of the rebuild is
|
|
26
|
+
* left.
|
|
27
|
+
*
|
|
28
|
+
* Anything else is refused with a {@link RebuildRefusal}: a database that is
|
|
29
|
+
* neither Atomic nor Replicated, a table that is not there, a change that is
|
|
30
|
+
* not a rebuild, a working object chant did not make.
|
|
31
|
+
*
|
|
32
|
+
* A Replicated database (#3249) is Atomic on every replica, with its DDL run
|
|
33
|
+
* on each through Keeper, so the same EXCHANGE swaps the table everywhere.
|
|
34
|
+
* Its tables have to be `Replicated*MergeTree` on both sides of the rebuild:
|
|
35
|
+
* a plain MergeTree there keeps a different set of rows on each replica, and
|
|
36
|
+
* a copy run on one replica would fill the new table with that replica's rows
|
|
37
|
+
* alone.
|
|
38
|
+
*/
|
|
39
|
+
import type { OwnershipMarker } from "@intentius/chant/ownership";
|
|
40
|
+
import type { ClickHouseTarget } from "../live/bind.js";
|
|
41
|
+
import { type CanonicalObject } from "../plan/normalize.js";
|
|
42
|
+
import { type Change } from "../plan/diff.js";
|
|
43
|
+
import { ident, type DeclaredObject } from "../apply/statements.js";
|
|
44
|
+
/** How the new table keeps up with writes to the old one while it is filled. */
|
|
45
|
+
export type DualWrite = {
|
|
46
|
+
/**
|
|
47
|
+
* A materialized view on the old table writes every row whose
|
|
48
|
+
* `cutoverColumn` is at or after the cut-over into the new table; the
|
|
49
|
+
* backfill copies the rows before it. The cut-over is the server's time
|
|
50
|
+
* when the view is made plus `cutoverDelay` (default `1m`), and the
|
|
51
|
+
* backfill starts once it has passed. The column must be a time
|
|
52
|
+
* (`Date`, `DateTime`, `DateTime64`) that rows arrive in order of, give
|
|
53
|
+
* or take the delay; a row that arrives later than that is caught by
|
|
54
|
+
* the verification, which then fails the run.
|
|
55
|
+
*/
|
|
56
|
+
mode: "materialized-view";
|
|
57
|
+
cutoverColumn: string;
|
|
58
|
+
cutoverDelay?: string;
|
|
59
|
+
} | {
|
|
60
|
+
/**
|
|
61
|
+
* The application stops writing to the old table (pauses, or buffers)
|
|
62
|
+
* and a person says so at a gate before the backfill. The backfill then
|
|
63
|
+
* copies every row, and writes resume against the table's own name
|
|
64
|
+
* after the swap.
|
|
65
|
+
*/
|
|
66
|
+
mode: "app";
|
|
67
|
+
};
|
|
68
|
+
/** A refusal: the rebuild cannot start, or cannot go on, for a reason a person has to act on. */
|
|
69
|
+
export declare class RebuildRefusal extends Error {
|
|
70
|
+
constructor(message: string);
|
|
71
|
+
}
|
|
72
|
+
/** The table's name and its working objects' names. */
|
|
73
|
+
export interface RebuildNames {
|
|
74
|
+
/** `db.t`, the rebuild's identity. */
|
|
75
|
+
key: string;
|
|
76
|
+
database: string;
|
|
77
|
+
name: string;
|
|
78
|
+
newName: string;
|
|
79
|
+
dualName: string;
|
|
80
|
+
oldName: string;
|
|
81
|
+
/** Quoted, qualified: `` `db`.`t` `` and so on. */
|
|
82
|
+
table: string;
|
|
83
|
+
newTable: string;
|
|
84
|
+
dualView: string;
|
|
85
|
+
oldTable: string;
|
|
86
|
+
}
|
|
87
|
+
export declare function rebuildNames(database: string, name: string): RebuildNames;
|
|
88
|
+
/** One object on the server, as `system.tables` reports it. */
|
|
89
|
+
export interface ServerObject {
|
|
90
|
+
name: string;
|
|
91
|
+
uuid: string;
|
|
92
|
+
engine: string;
|
|
93
|
+
comment: string;
|
|
94
|
+
partitionKey: string;
|
|
95
|
+
/** The working-object pairs in its comment's trailer, if any. */
|
|
96
|
+
pairs?: Map<string, string>;
|
|
97
|
+
}
|
|
98
|
+
/** A column copied from the old table into the new one. */
|
|
99
|
+
export interface CopiedColumn {
|
|
100
|
+
/** Its name in the new table. */
|
|
101
|
+
name: string;
|
|
102
|
+
/** Its name in the old table: the same, or the `-- previously:` name. */
|
|
103
|
+
source: string;
|
|
104
|
+
}
|
|
105
|
+
export interface RebuildObservation {
|
|
106
|
+
state: "rebuild" | "swapped" | "done";
|
|
107
|
+
names: RebuildNames;
|
|
108
|
+
declared: DeclaredObject;
|
|
109
|
+
/** The table under its own name. */
|
|
110
|
+
live: ServerObject;
|
|
111
|
+
/** Its definition on the server, as the classifier compares it. */
|
|
112
|
+
liveCanonical: CanonicalObject;
|
|
113
|
+
/** The classified changes from the server's table to the declaration. */
|
|
114
|
+
changes: Change[];
|
|
115
|
+
newTable?: ServerObject;
|
|
116
|
+
dual?: ServerObject;
|
|
117
|
+
old?: ServerObject;
|
|
118
|
+
/** After the EXCHANGE and before the swap finished: the old table, still under the new table's name. */
|
|
119
|
+
exchangedOld?: ServerObject;
|
|
120
|
+
/** The swap's EXCHANGE ran and the swap has not finished: the table's own name holds the new table. */
|
|
121
|
+
exchanged: boolean;
|
|
122
|
+
/** The columns the backfill copies, and the verification compares. */
|
|
123
|
+
copied: CopiedColumn[];
|
|
124
|
+
/**
|
|
125
|
+
* The database is Replicated: every replica runs its DDL, the tables'
|
|
126
|
+
* rows replicate through Keeper, and a step reading rows first waits for
|
|
127
|
+
* this replica to catch up (`SYSTEM SYNC REPLICA`).
|
|
128
|
+
*/
|
|
129
|
+
replicated: boolean;
|
|
130
|
+
}
|
|
131
|
+
/** The declared table with the given key (`db.t`), or a refusal naming what is declared. */
|
|
132
|
+
export declare function declaredTable(declared: readonly DeclaredObject[], key: string): DeclaredObject;
|
|
133
|
+
/**
|
|
134
|
+
* The columns the backfill copies: every declared column the old table has
|
|
135
|
+
* under its name or its `-- previously:` name, except a `MATERIALIZED`,
|
|
136
|
+
* `ALIAS` or `EPHEMERAL` one, which the new table computes itself.
|
|
137
|
+
*/
|
|
138
|
+
export declare function copiedColumns(declared: CanonicalObject, live: CanonicalObject): CopiedColumn[];
|
|
139
|
+
/** A canonical definition without what names it, for comparing and digesting by role. */
|
|
140
|
+
export declare function anonymous(c: CanonicalObject): Record<string, unknown>;
|
|
141
|
+
/** The definition `SHOW CREATE` prints, less chant's trailer, canonical. */
|
|
142
|
+
export declare function showCreate(target: ClickHouseTarget, qualified: string): Promise<CanonicalObject>;
|
|
143
|
+
/** The classified changes from one definition to another, compared by role, with server formatting differences dropped. */
|
|
144
|
+
export declare function changesBetween(target: ClickHouseTarget, key: string, from: CanonicalObject, to: CanonicalObject): Promise<Change[]>;
|
|
145
|
+
/** Observe the rebuild of the declared table on the server. */
|
|
146
|
+
export declare function observeRebuild(target: ClickHouseTarget, declared: DeclaredObject, marker: OwnershipMarker | undefined): Promise<RebuildObservation>;
|
|
147
|
+
/**
|
|
148
|
+
* What the rebuild will do, independent of how far it has got: the changes,
|
|
149
|
+
* the definitions on both sides, the columns copied and how writes are kept
|
|
150
|
+
* up. The Plan phase publishes its digest; the gate binds a digest of this
|
|
151
|
+
* plus the verification.
|
|
152
|
+
*/
|
|
153
|
+
export declare function rebuildPlanSubject(o: RebuildObservation, dualWrite: DualWrite): Record<string, unknown>;
|
|
154
|
+
export declare const rebuildPlanDigest: (o: RebuildObservation, dualWrite: DualWrite) => string;
|
|
155
|
+
/** `ident` re-exported for the steps, which quote column names. */
|
|
156
|
+
export { ident };
|
|
157
|
+
//# sourceMappingURL=observe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/rebuild/observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAKxD,OAAO,EAAE,KAAK,EAAwC,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEvG,gFAAgF;AAChF,MAAM,MAAM,SAAS,GACjB;IACE;;;;;;;;;OASG;IACH,IAAI,EAAE,mBAAmB,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;;;;OAKG;IACH,IAAI,EAAE,KAAK,CAAC;CACb,CAAC;AAEN,iGAAiG;AACjG,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAgBzE;AAED,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,oCAAoC;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,mEAAmE;IACnE,aAAa,EAAE,eAAe,CAAC;IAC/B,yEAAyE;IACzE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,wGAAwG;IACxG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uGAAuG;IACvG,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAID,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAO9F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY,EAAE,CAS9F;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOrE;AAgBD,4EAA4E;AAC5E,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAGtG;AAED,2HAA2H;AAC3H,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGzI;AAmBD,+DAA+D;AAC/D,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2EzJ;AAoCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASvG;AAED,eAAO,MAAM,iBAAiB,GAAI,GAAG,kBAAkB,EAAE,WAAW,SAAS,KAAG,MAAmF,CAAC;AAEpK,mEAAmE;AACnE,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ClickHouseRebuildOp` (#3198): the change ClickHouse cannot make with
|
|
3
|
+
* `ALTER` (a sorting key, a primary key, a partition key, an engine, a key
|
|
4
|
+
* column's type), run as a gated composite Op.
|
|
5
|
+
*
|
|
6
|
+
* export const { op } = ClickHouseRebuildOp({
|
|
7
|
+
* name: "rebuild-shop-events",
|
|
8
|
+
* env: "prod",
|
|
9
|
+
* table: "shop.events",
|
|
10
|
+
* dualWrite: { mode: "materialized-view", cutoverColumn: "ts" },
|
|
11
|
+
* });
|
|
12
|
+
*
|
|
13
|
+
* | Phase | Step |
|
|
14
|
+
* |---|---|
|
|
15
|
+
* | Build | `chant build` (`build: false` skips it) |
|
|
16
|
+
* | Plan | classify the table's change against the server; refuse what is not a rebuild |
|
|
17
|
+
* | Create | the new table, `t__chant_new`, from the declaration |
|
|
18
|
+
* | Dual write | a materialized view from the old table to the new one, or a gate for the app to stop writing |
|
|
19
|
+
* | Backfill | `INSERT ... SELECT` per partition, each with a receipt |
|
|
20
|
+
* | Verify | row counts and checksums per partition |
|
|
21
|
+
* | Approve | a gate bound to the plan and the verification |
|
|
22
|
+
* | Swap | `EXCHANGE TABLES`, then recreate the materialized views that read the table |
|
|
23
|
+
* | Retain | the old table, `t__chant_old`, until `retain` has passed |
|
|
24
|
+
* | Approve drop | a gate bound to that old table |
|
|
25
|
+
* | Drop | the old table, once its date has passed |
|
|
26
|
+
* | onFailure | drop the new table and the dual-write view |
|
|
27
|
+
*
|
|
28
|
+
* Run it until it is done: each run goes as far as the next gate. Every step
|
|
29
|
+
* re-reads the server, so a run after a gate, a crash or an approval picks up
|
|
30
|
+
* where the last stopped. A run killed during the backfill (Ctrl-C, a lost
|
|
31
|
+
* machine) is not a failure, runs no onFailure, and the next run resumes the
|
|
32
|
+
* backfill from its receipts; a step that fails runs onFailure, and the next
|
|
33
|
+
* run starts again from a new table.
|
|
34
|
+
*/
|
|
35
|
+
import { type GateApproval } from "@intentius/chant/op";
|
|
36
|
+
import type { OpResource } from "@intentius/chant/op";
|
|
37
|
+
import type { DualWrite } from "./observe.js";
|
|
38
|
+
export interface ClickHouseRebuildOpConfig {
|
|
39
|
+
/** Op name (kebab-case). */
|
|
40
|
+
name: string;
|
|
41
|
+
/** The chant environment: selects `sql.profiles.<env>`. */
|
|
42
|
+
env: string;
|
|
43
|
+
/** The table to rebuild, `database.name` as the server knows it (or its export name). */
|
|
44
|
+
table: string;
|
|
45
|
+
/** How writes reach the new table while it is filled. */
|
|
46
|
+
dualWrite: DualWrite;
|
|
47
|
+
/** The build output the declaration is read from. Default: `dist/schema.json`. */
|
|
48
|
+
output?: string;
|
|
49
|
+
/** Project directory to build. Default: `.`. */
|
|
50
|
+
path?: string;
|
|
51
|
+
/** Run `chant build` first (the project's `build` script). Default: true. */
|
|
52
|
+
build?: boolean;
|
|
53
|
+
/** How long the old table is kept after the swap, as a duration (`7d`, `36h`). Default: `7d`. */
|
|
54
|
+
retain?: string;
|
|
55
|
+
/** The gate before the swap. Default name `approve-<name>`. */
|
|
56
|
+
gate?: {
|
|
57
|
+
gate?: string;
|
|
58
|
+
timeout?: string;
|
|
59
|
+
description?: string;
|
|
60
|
+
/** Quorum, roles and a policy (#2508). With a policy, the verification's counts are added to its context. */
|
|
61
|
+
approval?: GateApproval;
|
|
62
|
+
};
|
|
63
|
+
/** The gate before the old table is dropped. Default name `approve-<name>-drop`. */
|
|
64
|
+
dropGate?: {
|
|
65
|
+
gate?: string;
|
|
66
|
+
timeout?: string;
|
|
67
|
+
description?: string;
|
|
68
|
+
};
|
|
69
|
+
/** App mode: the gate the application's write stop is confirmed at. Default name `<name>-writes-stopped`. */
|
|
70
|
+
writesGate?: {
|
|
71
|
+
gate?: string;
|
|
72
|
+
timeout?: string;
|
|
73
|
+
description?: string;
|
|
74
|
+
};
|
|
75
|
+
/** One attempt of the backfill step. Default: `6h`, the longest a step may run. */
|
|
76
|
+
backfillTimeout?: string;
|
|
77
|
+
/** How long to wait for one table's mutations. Default: `10m`. */
|
|
78
|
+
mutationTimeout?: string;
|
|
79
|
+
/**
|
|
80
|
+
* In a Replicated database, how long a step that reads rows waits for the
|
|
81
|
+
* replica it talks to to fetch what the others wrote, before it stops
|
|
82
|
+
* naming a replica that is down and holds parts no other has. Each attempt
|
|
83
|
+
* of the step waits this long. Default: `2m`.
|
|
84
|
+
*/
|
|
85
|
+
replicaTimeout?: string;
|
|
86
|
+
/** Ownership stack. Default: `ownership.stack` in `chant.config.ts`. */
|
|
87
|
+
stack?: string;
|
|
88
|
+
/** Ownership env. Default: `ownership.env` in `chant.config.ts`. */
|
|
89
|
+
ownershipEnv?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface ClickHouseRebuildOpResources {
|
|
92
|
+
op: InstanceType<typeof OpResource>;
|
|
93
|
+
}
|
|
94
|
+
/** The arguments every rebuild activity takes. */
|
|
95
|
+
export interface ClickHouseRebuildArgs {
|
|
96
|
+
table: string;
|
|
97
|
+
buildPath: string;
|
|
98
|
+
environment?: string;
|
|
99
|
+
dualWrite: DualWrite;
|
|
100
|
+
retain?: string;
|
|
101
|
+
mutationTimeout?: string;
|
|
102
|
+
replicaTimeout?: string;
|
|
103
|
+
stack?: string;
|
|
104
|
+
ownershipEnv?: string;
|
|
105
|
+
cwd?: string;
|
|
106
|
+
}
|
|
107
|
+
export declare function ClickHouseRebuildOp(config: ClickHouseRebuildOpConfig): ClickHouseRebuildOpResources;
|
|
108
|
+
//# sourceMappingURL=op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/rebuild/op.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,WAAW,yBAAyB;IACxC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,SAAS,CAAC;IACrB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,6GAA6G;QAC7G,QAAQ,CAAC,EAAE,YAAY,CAAC;KACzB,CAAC;IACF,oFAAoF;IACpF,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,6GAA6G;IAC7G,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;CACrC;AAED,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,4BAA4B,CAqGnG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Partitions, as the backfill copies them and the verification counts them.
|
|
3
|
+
*
|
|
4
|
+
* The unit of work is a partition of the old table. Its rows can land in
|
|
5
|
+
* other partitions of the new table when the rebuild changes the partition
|
|
6
|
+
* key, so "the rows of old partition p" is found on the new table by
|
|
7
|
+
* computing the old partition key over the new table's columns:
|
|
8
|
+
* `partitionID(<old key>)`, which the server computes the same way it named
|
|
9
|
+
* the old partition (`_partition_id`). When the key is unchanged that is the
|
|
10
|
+
* new table's own `_partition_id`; when the old table has no partition key
|
|
11
|
+
* every row is in partition `all`.
|
|
12
|
+
*/
|
|
13
|
+
import type { ClickHouseTarget } from "../live/bind.js";
|
|
14
|
+
import type { CopiedColumn, RebuildNames } from "./observe.js";
|
|
15
|
+
/** The old table's active partitions, by id. */
|
|
16
|
+
export declare function sourcePartitions(target: ClickHouseTarget, names: RebuildNames): Promise<string[]>;
|
|
17
|
+
/** Rename the columns an expression names, old name to new, leaving function names and qualified names alone. */
|
|
18
|
+
export declare function renameColumns(expr: string, copied: readonly CopiedColumn[]): string;
|
|
19
|
+
/**
|
|
20
|
+
* The expression that gives, for a row of the new table, the id of the old
|
|
21
|
+
* table's partition the row came from.
|
|
22
|
+
*/
|
|
23
|
+
export declare function sourcePartitionExpression(oldKey: string, newKey: string, copied: readonly CopiedColumn[]): string;
|
|
24
|
+
//# sourceMappingURL=partitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partitions.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/rebuild/partitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,gDAAgD;AAChD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOvG;AAED,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAQnF;AAeD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAKjH"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect receipts kept in ClickHouse (#3198): where the rebuild migration's
|
|
3
|
+
* backfill records which partitions it has copied.
|
|
4
|
+
*
|
|
5
|
+
* A receipt is the proof that one effect ran, kept where the effect happened
|
|
6
|
+
* (concepts/effect-receipts.mdx). The backfill's effect is "this partition of
|
|
7
|
+
* the old table is in the new table", and both tables are on the server, so
|
|
8
|
+
* the receipt is a row on the same server:
|
|
9
|
+
*
|
|
10
|
+
* SELECT * FROM chant_receipts.receipts
|
|
11
|
+
*
|
|
12
|
+
* Why not git (core's lifecycle receipt store, `chant/lifecycle`): the
|
|
13
|
+
* receipt has to die with the data it witnesses. The rebuild's `onFailure`
|
|
14
|
+
* drops the new table; a receipt kept in git would go on saying partitions
|
|
15
|
+
* were copied into a table that no longer exists, and a resumed backfill
|
|
16
|
+
* would skip them. Here every receipt's expectation is bound to the new
|
|
17
|
+
* table's UUID, so a new table made again reads every old receipt as stale,
|
|
18
|
+
* and the receipts are read and written over the connection the copy already
|
|
19
|
+
* uses, with no commit and push per partition. Readable with nothing but a
|
|
20
|
+
* ClickHouse client, which is the walk-away property the other rows have.
|
|
21
|
+
*
|
|
22
|
+
* The store implements core's `ReceiptStore` seam
|
|
23
|
+
* (`@intentius/chant/op/receipt-store`), as the sql lexicon's shared
|
|
24
|
+
* `SqlReceiptStore` (`../../core/receipts.ts`). It is not exported as the
|
|
25
|
+
* `receiptRead` / `receiptWrite` activities: those names are global to a
|
|
26
|
+
* run, and a project that also configures aws or k8s would have its
|
|
27
|
+
* `effect()` steps read ClickHouse instead of SSM or a ConfigMap. The backfill
|
|
28
|
+
* activity reaches the store directly, the way the fly lexicon's release
|
|
29
|
+
* component reaches its own.
|
|
30
|
+
*
|
|
31
|
+
* Write discipline: the backfill writes a partition's receipt after the
|
|
32
|
+
* partition's copy succeeded, last, and nothing else writes one.
|
|
33
|
+
*
|
|
34
|
+
* In a Replicated database (#3249) the receipts sit beside the tables they
|
|
35
|
+
* witness, in `<db>.__chant_receipts`, a `ReplicatedReplacingMergeTree`: the
|
|
36
|
+
* database runs its CREATE on every replica and the table replicates its
|
|
37
|
+
* rows, so a receipt written by a copy on one replica is read by a resumed
|
|
38
|
+
* backfill on another. Each read first waits for this replica to fetch what
|
|
39
|
+
* the others wrote (`SYSTEM SYNC REPLICA ... LIGHTWEIGHT`). A separate
|
|
40
|
+
* `chant_receipts` database would exist on the one replica the backfill
|
|
41
|
+
* first ran on. With a replica down (#3270) the CREATE goes on without it,
|
|
42
|
+
* and a read that cannot fetch a receipt only that replica has stops the
|
|
43
|
+
* backfill, naming it (`./replicas.ts`).
|
|
44
|
+
*/
|
|
45
|
+
import { type SqlReceiptStore } from "../../core/receipts.js";
|
|
46
|
+
import { type ClickHouseEndpoint } from "../http.js";
|
|
47
|
+
/** The database the receipts live in. Its comment marks it as chant's, so schema reads leave it out. */
|
|
48
|
+
export declare const RECEIPTS_DATABASE = "chant_receipts";
|
|
49
|
+
/** The table, one row per receipt write. */
|
|
50
|
+
export declare const RECEIPTS_TABLE = "receipts";
|
|
51
|
+
/** The table in a Replicated database that holds the receipts of the rebuilds in it. */
|
|
52
|
+
export declare const REPLICATED_RECEIPTS_TABLE = "__chant_receipts";
|
|
53
|
+
/** Where the receipts are kept: `chant_receipts.receipts`, or `<db>.__chant_receipts` for a Replicated database. */
|
|
54
|
+
export declare function receiptsTable(replicatedIn?: string): {
|
|
55
|
+
database: string;
|
|
56
|
+
name: string;
|
|
57
|
+
};
|
|
58
|
+
export { receiptAddress } from "../../core/receipts.js";
|
|
59
|
+
/** The shared core's receipt store, kept on a ClickHouse server. */
|
|
60
|
+
export type ClickHouseReceiptStore = SqlReceiptStore;
|
|
61
|
+
/**
|
|
62
|
+
* A receipt store on the server at `endpoint`. Creates the receipts database
|
|
63
|
+
* and table on first write if they are not there. `identity` is the
|
|
64
|
+
* project's ownership stack and env, which every address starts with.
|
|
65
|
+
* `replicatedIn` names a Replicated database to keep them in instead, and
|
|
66
|
+
* `replicaTimeoutMs` how long a read waits for this replica to catch up there.
|
|
67
|
+
*/
|
|
68
|
+
export declare function clickhouseReceiptStore(endpoint: ClickHouseEndpoint, identity: {
|
|
69
|
+
stack?: string;
|
|
70
|
+
env?: string;
|
|
71
|
+
}, opts?: {
|
|
72
|
+
runId?: string;
|
|
73
|
+
replicatedIn?: string;
|
|
74
|
+
replicaTimeoutMs?: number;
|
|
75
|
+
}): ClickHouseReceiptStore;
|
|
76
|
+
//# sourceMappingURL=receipts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../../src/clickhouse/rebuild/receipts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAIH,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKnE,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,4CAA4C;AAC5C,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAE5D,oHAAoH;AACpH,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEvF;AAMD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,oEAAoE;AACpE,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1C,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9E,sBAAsB,CAwDxB"}
|