@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,25 @@
|
|
|
1
|
+
import { checkOf, tablesOf } from "./postgres-helpers";
|
|
2
|
+
|
|
3
|
+
const SENSITIVE = /(^|_)(password|passwd|pwd|secret|token|api_?key|ssn|social_security|tax_id|credit_card|card_number|cvv|iban|passport|date_of_birth|dob|email|phone|address)(_|$)/i;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* SQLPG112: a secret- or PII-named column in a table with no comment.
|
|
7
|
+
*
|
|
8
|
+
* Doc: https://www.postgresql.org/docs/18/sql-comment.html. A COMMENT on the
|
|
9
|
+
* table or the column is where the retention, encryption or masking rule is
|
|
10
|
+
* written down, and where pg_dump, anonymizers and catalog scanners read it.
|
|
11
|
+
* A column or a table comment satisfies the check.
|
|
12
|
+
*/
|
|
13
|
+
export const sqlpg112 = checkOf({ id: "SQLPG112", description: "A secret- or PII-named column with no comment on it or its table" }, (ctx, report) => {
|
|
14
|
+
for (const t of tablesOf(ctx)) {
|
|
15
|
+
if (t.comment) continue;
|
|
16
|
+
for (const c of t.columns) {
|
|
17
|
+
if (c.comment || !SENSITIVE.test(c.name)) continue;
|
|
18
|
+
report({
|
|
19
|
+
severity: "warning",
|
|
20
|
+
message: `${t.export}.${c.name} looks like a secret or personal data and neither it nor ${t.sqlName} has a COMMENT; say what it holds and how it is protected`,
|
|
21
|
+
entity: t.export,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { checkOf } from "./postgres-helpers";
|
|
2
|
+
import { postgresObjects } from "./sql-helpers";
|
|
3
|
+
|
|
4
|
+
const PLACED = new Set(["Postgres::Table", "Postgres::View", "Postgres::MaterializedView", "Postgres::Sequence", "Postgres::Enum", "Postgres::Domain"]);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* SQLPG113: an object in the public schema while the project declares schemas.
|
|
8
|
+
*
|
|
9
|
+
* Doc: https://www.postgresql.org/docs/18/ddl-schemas.html#DDL-SCHEMAS-PUBLIC
|
|
10
|
+
* and https://www.postgresql.org/docs/18/ddl-schemas.html#DDL-SCHEMAS-PATTERNS
|
|
11
|
+
* (the usage patterns recommend that applications not share `public`). An
|
|
12
|
+
* unqualified name is created in the first schema of search_path, usually
|
|
13
|
+
* public. Silent for a project that declares no schema.
|
|
14
|
+
*/
|
|
15
|
+
export const sqlpg113 = checkOf({ id: "SQLPG113", description: "An object is in the public schema though the project declares schemas" }, (ctx, report) => {
|
|
16
|
+
const objects = postgresObjects(ctx);
|
|
17
|
+
if (!objects.some((o) => o.type === "Postgres::Schema")) return;
|
|
18
|
+
for (const o of objects) {
|
|
19
|
+
if (!PLACED.has(o.type)) continue;
|
|
20
|
+
const schema = (o.schema as string | undefined) ?? "public";
|
|
21
|
+
if (schema !== "public") continue;
|
|
22
|
+
report({
|
|
23
|
+
severity: "warning",
|
|
24
|
+
message: `${o.export} (${o.sqlName}) is in the public schema; qualify it with one of the declared schemas`,
|
|
25
|
+
entity: o.export,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { STORAGE_PARAMETERS } from "../../generated/postgres";
|
|
2
|
+
import { checkOf, rangeOf, storageParams, storageTarget, targetMajor } from "./postgres-helpers";
|
|
3
|
+
import { postgresObjects } from "./sql-helpers";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* SQLPG114: a storage parameter the object's kind does not accept at the
|
|
7
|
+
* target major (`postgresMajor` in the output).
|
|
8
|
+
*
|
|
9
|
+
* Doc: https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS
|
|
10
|
+
* (and the CREATE INDEX, CREATE VIEW and CREATE MATERIALIZED VIEW pages). The
|
|
11
|
+
* server refuses an unrecognized parameter at CREATE. The accepted names and
|
|
12
|
+
* the relation kinds they apply to come from the generated catalog, whose
|
|
13
|
+
* since/until data says which majors have each one: a parameter removed
|
|
14
|
+
* before the target major is reported as removed.
|
|
15
|
+
*/
|
|
16
|
+
export const sqlpg114 = checkOf({ id: "SQLPG114", description: "A storage parameter the object's kind or the target major does not accept" }, (ctx, report) => {
|
|
17
|
+
const major = targetMajor(ctx);
|
|
18
|
+
const specs = STORAGE_PARAMETERS as Record<string, { targets: readonly string[] } | undefined>;
|
|
19
|
+
for (const o of postgresObjects(ctx)) {
|
|
20
|
+
const target = storageTarget(o);
|
|
21
|
+
if (!target) continue;
|
|
22
|
+
for (const raw of storageParams(o.with as string | undefined).keys()) {
|
|
23
|
+
if (raw.startsWith("toast.")) continue;
|
|
24
|
+
const spec = specs[raw];
|
|
25
|
+
if (!spec) {
|
|
26
|
+
report({ severity: "error", message: `${o.export} (${o.sqlName}) sets ${raw}, which is not a Postgres ${major} storage parameter`, entity: o.export });
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const range = rangeOf("storageParameters", `${target}.${raw}`);
|
|
30
|
+
if (!spec.targets.includes(target)) {
|
|
31
|
+
report({ severity: "error", message: `${o.export} (${o.sqlName}) sets ${raw}, which applies to ${spec.targets.join(", ")} and not to a ${target}`, entity: o.export });
|
|
32
|
+
} else if (range?.until !== undefined && range.until < major) {
|
|
33
|
+
report({ severity: "error", message: `${o.export} (${o.sqlName}) sets ${raw}, which Postgres removed after ${range.until}`, entity: o.export });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { checkOf, rangeOf, storageParams, storageTarget, tablesOf, targetMajor } from "./postgres-helpers";
|
|
2
|
+
import { indexesOf } from "./postgres-helpers";
|
|
3
|
+
import { postgresObjects } from "./sql-helpers";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* SQLPG115: a feature newer than the target major.
|
|
7
|
+
*
|
|
8
|
+
* Doc: https://www.postgresql.org/docs/18/release-18.html (NOT ENFORCED
|
|
9
|
+
* constraints and virtual generated columns arrive in 18),
|
|
10
|
+
* https://www.postgresql.org/docs/15/release-15.html (NULLS NOT DISTINCT). Storage parameters read the generated catalog's
|
|
11
|
+
* `since` data. The target is `sql.postgresMajor`
|
|
12
|
+
* (recorded as `postgresMajor` in the output), else the newest pinned major;
|
|
13
|
+
* a feature is reported as a warning only when it is newer than the target,
|
|
14
|
+
* naming the first major that has it.
|
|
15
|
+
*/
|
|
16
|
+
export const sqlpg115 = checkOf({ id: "SQLPG115", description: "A feature newer than the target major" }, (ctx, report) => {
|
|
17
|
+
const major = targetMajor(ctx);
|
|
18
|
+
const note = (entity: string, what: string, since: number) =>
|
|
19
|
+
report({ severity: "warning", message: `${entity} uses ${what}, which needs Postgres ${since}; Postgres ${major} refuses it`, entity });
|
|
20
|
+
for (const o of postgresObjects(ctx)) {
|
|
21
|
+
const target = storageTarget(o);
|
|
22
|
+
if (!target) continue;
|
|
23
|
+
for (const name of storageParams(o.with as string | undefined).keys()) {
|
|
24
|
+
// SQLPG117 asks every view for security_invoker (15), so it is not also a portability finding.
|
|
25
|
+
if (name === "security_invoker") continue;
|
|
26
|
+
const since = rangeOf("storageParameters", `${target}.${name}`)?.since;
|
|
27
|
+
if (since !== undefined && since > major) note(o.export, `the storage parameter ${name}`, since);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
for (const t of tablesOf(ctx)) {
|
|
31
|
+
for (const c of t.checks) if (c.notEnforced !== undefined && major < 18) note(t.export, `a NOT ENFORCED / ENFORCED constraint${c.name ? ` ${c.name}` : ""}`, 18);
|
|
32
|
+
for (const fk of t.foreignKeys as Array<{ notEnforced?: boolean; name?: string }>) if (fk.notEnforced !== undefined && major < 18) note(t.export, `a NOT ENFORCED / ENFORCED foreign key${fk.name ? ` ${fk.name}` : ""}`, 18);
|
|
33
|
+
for (const c of t.columns) if (c.generated?.kind === "virtual" && major < 18) note(t.export, `the virtual generated column ${c.name}`, 18);
|
|
34
|
+
const nulls = [...t.uniques, ...(t.primaryKey ? [t.primaryKey] : [])].some((k) => k.nullsNotDistinct);
|
|
35
|
+
if (nulls && major < 15) note(t.export, "NULLS NOT DISTINCT", 15);
|
|
36
|
+
}
|
|
37
|
+
for (const i of indexesOf(ctx)) if ((i as { nullsNotDistinct?: boolean }).nullsNotDistinct && major < 15) note(i.export, "NULLS NOT DISTINCT", 15);
|
|
38
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { checkOf, rangeOf, targetMajor } from "./postgres-helpers";
|
|
2
|
+
import { postgresObjects } from "./sql-helpers";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* SQLPG116: an extension the target major no longer ships.
|
|
6
|
+
*
|
|
7
|
+
* Doc: https://www.postgresql.org/docs/18/contrib.html and the release notes
|
|
8
|
+
* of the major that dropped it (adminpack and old_snapshot are gone after 16,
|
|
9
|
+
* https://www.postgresql.org/docs/17/release-17.html). The target is `postgresMajor` in the output. The extension names
|
|
10
|
+
* and their since/until majors come from the generated catalog, read from
|
|
11
|
+
* pg_available_extensions of each major's server image.
|
|
12
|
+
*/
|
|
13
|
+
export const sqlpg116 = checkOf({ id: "SQLPG116", description: "An extension the target major no longer ships" }, (ctx, report) => {
|
|
14
|
+
const major = targetMajor(ctx);
|
|
15
|
+
for (const o of postgresObjects(ctx)) {
|
|
16
|
+
if (o.type !== "Postgres::Extension") continue;
|
|
17
|
+
const until = rangeOf("extensions", o.name)?.until;
|
|
18
|
+
if (until === undefined || until >= major) continue;
|
|
19
|
+
report({
|
|
20
|
+
severity: "error",
|
|
21
|
+
message: `${o.export} installs the ${o.name} extension, which Postgres ${major} does not ship (last in ${until})`,
|
|
22
|
+
entity: o.export,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { checkOf, isView, storageParams } from "./postgres-helpers";
|
|
2
|
+
import { postgresObjects } from "./sql-helpers";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* SQLPG117: a view that runs with its owner's privileges.
|
|
6
|
+
*
|
|
7
|
+
* Doc: https://www.postgresql.org/docs/18/sql-createview.html ("by default,
|
|
8
|
+
* access to the underlying base relations referenced in the view is determined
|
|
9
|
+
* by the permissions of the view owner"; with security_invoker = true it is the
|
|
10
|
+
* caller's, and the base tables' row-level security applies to the caller).
|
|
11
|
+
* A view over tables with RLS otherwise hands the owner's view of the rows to
|
|
12
|
+
* every role that can select from it.
|
|
13
|
+
*/
|
|
14
|
+
export const sqlpg117 = checkOf({ id: "SQLPG117", description: "A view without security_invoker runs with its owner's privileges" }, (ctx, report) => {
|
|
15
|
+
for (const v of postgresObjects(ctx).filter(isView)) {
|
|
16
|
+
const flag = storageParams(v.with).get("security_invoker");
|
|
17
|
+
if (flag === "true" || flag === "on" || flag === "1" || flag === "'true'" || flag === "'on'") continue;
|
|
18
|
+
report({
|
|
19
|
+
severity: "warning",
|
|
20
|
+
message: `${v.export} (${v.sqlName}) does not set security_invoker = true, so it reads its tables as its owner and skips the caller's row-level security`,
|
|
21
|
+
entity: v.export,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { checkOf, tablesOf } from "./postgres-helpers";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* SQLPG118: a table that uses INHERITS.
|
|
5
|
+
*
|
|
6
|
+
* Doc: https://www.postgresql.org/docs/18/ddl-partitioning.html#DDL-PARTITIONING-DECLARATIVE-BEST-PRACTICES
|
|
7
|
+
* and https://www.postgresql.org/docs/18/ddl-inherit.html#DDL-INHERIT-CAVEATS
|
|
8
|
+
* (indexes, unique constraints and foreign keys are not inherited, so a
|
|
9
|
+
* constraint on the parent does not cover the children). Declarative
|
|
10
|
+
* partitioning (PARTITION BY ... / PARTITION OF) replaced inheritance for
|
|
11
|
+
* splitting a table; INHERITS is kept for its other uses.
|
|
12
|
+
*/
|
|
13
|
+
export const sqlpg118 = checkOf({ id: "SQLPG118", description: "A table uses INHERITS where declarative partitioning replaced it" }, (ctx, report) => {
|
|
14
|
+
for (const t of tablesOf(ctx)) {
|
|
15
|
+
if (t.inherits.length === 0) continue;
|
|
16
|
+
report({
|
|
17
|
+
severity: "warning",
|
|
18
|
+
message: `${t.export} (${t.sqlName}) uses INHERITS; its parent's unique and foreign keys do not cover it, so use PARTITION OF for a split table`,
|
|
19
|
+
entity: t.export,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finding the ClickHouse tags in a source file, for the source-level rules
|
|
3
|
+
* (and the editor). A rule reads the template's raw parts straight from the
|
|
4
|
+
* TypeScript AST and parses them the way the tag does, with every
|
|
5
|
+
* interpolation left a reference: lint cannot know the values. The finder is
|
|
6
|
+
* the shared core's (`../../core/find-templates.ts`); a tag is ClickHouse's
|
|
7
|
+
* because of the module it is imported from.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type * as ts from "typescript";
|
|
11
|
+
import { tokenize, type Token } from "../../clickhouse/tokens";
|
|
12
|
+
import { findSqlTemplates, type FoundTemplate as SqlFoundTemplate, type TemplateSource } from "../../core/find-templates";
|
|
13
|
+
|
|
14
|
+
export { templatePosition, tokenPosition } from "../../core/find-templates";
|
|
15
|
+
|
|
16
|
+
export type SqlTag = "database" | "table" | "view";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The ClickHouse tags, by the modules they are imported from. The package
|
|
20
|
+
* root still exports them, so it counts as ClickHouse too.
|
|
21
|
+
*/
|
|
22
|
+
export const CLICKHOUSE_TEMPLATE_SOURCE: TemplateSource<SqlTag> = {
|
|
23
|
+
dialect: "clickhouse",
|
|
24
|
+
modules: ["@intentius/chant-lexicon-sql", "@intentius/chant-lexicon-sql/clickhouse"],
|
|
25
|
+
tags: ["database", "table", "view"],
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type FoundTemplate = SqlFoundTemplate<SqlTag>;
|
|
29
|
+
|
|
30
|
+
/** Every ClickHouse template in the file (the shared core's finder). */
|
|
31
|
+
export function findTemplates(source: ts.SourceFile): FoundTemplate[] {
|
|
32
|
+
return findSqlTemplates(source, [CLICKHOUSE_TEMPLATE_SOURCE]);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const tokensOf = (found: FoundTemplate): Token[] => tokenize(found.parts);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sql serializer.
|
|
3
|
+
*
|
|
4
|
+
* A build writes two things:
|
|
5
|
+
*
|
|
6
|
+
* - The primary output, one JSON document: the dialect, the order objects
|
|
7
|
+
* must be created in, and each object filed under its export name (its
|
|
8
|
+
* identity in chant) with its type, its parsed definition, the references it
|
|
9
|
+
* makes and its DDL. Post-synth checks, planning and the applier read this.
|
|
10
|
+
* - `clickhouse.sql` (or `postgres.sql`) beside it: every statement, in that
|
|
11
|
+
* order, as it will be sent. Written verbatim.
|
|
12
|
+
*
|
|
13
|
+
* The order is the dependency order of the references: a view after the
|
|
14
|
+
* tables it reads, a materialized view after its target, a table after its
|
|
15
|
+
* database. Ties break by export name, so the output is the same however the
|
|
16
|
+
* files were discovered. A reference cycle is an error naming the cycle.
|
|
17
|
+
*
|
|
18
|
+
* One build holds one dialect: the dialect is the document's, and a project
|
|
19
|
+
* whose declarations are ClickHouse and Postgres both is refused, naming one
|
|
20
|
+
* of each. Two databases of different dialects are two projects (two
|
|
21
|
+
* workspace members, #3047 question 1).
|
|
22
|
+
*
|
|
23
|
+
* A Postgres document also carries `postgresMajor`, the major the project
|
|
24
|
+
* targets (`sql.postgresMajor`, else the newest pinned major). Post-synth
|
|
25
|
+
* checks and the lock classifier read it; ClickHouse output has no such field.
|
|
26
|
+
*
|
|
27
|
+
* Rule ids: `SQL` for rules that hold in every dialect, `SQLCH` for the
|
|
28
|
+
* ClickHouse dialect's (#3199), `SQLPG` for Postgres's (#3289).
|
|
29
|
+
*/
|
|
30
|
+
import type { Serializer } from "@intentius/chant";
|
|
31
|
+
export { applyOrder } from "./core/references.js";
|
|
32
|
+
/** The file the statements are written to, beside the primary output. */
|
|
33
|
+
export declare const CLICKHOUSE_DDL_FILE = "clickhouse.sql";
|
|
34
|
+
/** The Postgres statements' file, beside the primary output. */
|
|
35
|
+
export declare const POSTGRES_DDL_FILE = "postgres.sql";
|
|
36
|
+
export declare const sqlSerializer: Serializer;
|
|
37
|
+
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAc,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAQjF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAiEhD,eAAO,MAAM,aAAa,EAAE,UAsC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-defs.d.ts","sourceRoot":"","sources":["../src/skill-defs.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,eAAO,MAAM,SAAS,oDAkGpB,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ClickHouse catalog: what generation reads from a pinned server's
|
|
3
|
+
* `system.*` tables, in the shape the committed snapshot stores.
|
|
4
|
+
*
|
|
5
|
+
* Every section is sorted by name, and the snapshot is written one entry per
|
|
6
|
+
* line, so a pin move is a line diff a reviewer can read. Nothing here depends
|
|
7
|
+
* on the host: the columns that reflect server config (`value`, `changed`) are
|
|
8
|
+
* never read, every query orders its rows, and `auto(<cores>)` defaults are
|
|
9
|
+
* written as `auto`.
|
|
10
|
+
*/
|
|
11
|
+
import { type ClickHouseEndpoint } from "../clickhouse/http.js";
|
|
12
|
+
export interface EngineCapabilities {
|
|
13
|
+
settings: boolean;
|
|
14
|
+
skippingIndices: boolean;
|
|
15
|
+
projections: boolean;
|
|
16
|
+
sortOrder: boolean;
|
|
17
|
+
ttl: boolean;
|
|
18
|
+
replication: boolean;
|
|
19
|
+
deduplication: boolean;
|
|
20
|
+
parallelInsert: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface TableEngineRow {
|
|
23
|
+
name: string;
|
|
24
|
+
/** The server's one-line usage, e.g. `ENGINE = ReplacingMergeTree([ver [, is_deleted]]) ORDER BY expr`. */
|
|
25
|
+
syntax: string;
|
|
26
|
+
summary: string;
|
|
27
|
+
capabilities: EngineCapabilities;
|
|
28
|
+
}
|
|
29
|
+
export interface DatabaseEngineRow {
|
|
30
|
+
name: string;
|
|
31
|
+
syntax: string;
|
|
32
|
+
summary: string;
|
|
33
|
+
}
|
|
34
|
+
export interface TypeFamilyRow {
|
|
35
|
+
name: string;
|
|
36
|
+
caseInsensitive: boolean;
|
|
37
|
+
/** Set when the name is an alias (`BIGINT` for `Int64`). */
|
|
38
|
+
aliasOf?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface CodecRow {
|
|
41
|
+
name: string;
|
|
42
|
+
compression: boolean;
|
|
43
|
+
generic: boolean;
|
|
44
|
+
encryption: boolean;
|
|
45
|
+
timeseries: boolean;
|
|
46
|
+
experimental: boolean;
|
|
47
|
+
summary: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SkipIndexTypeRow {
|
|
50
|
+
name: string;
|
|
51
|
+
syntax: string;
|
|
52
|
+
summary: string;
|
|
53
|
+
}
|
|
54
|
+
export interface CombinatorRow {
|
|
55
|
+
name: string;
|
|
56
|
+
internal: boolean;
|
|
57
|
+
}
|
|
58
|
+
export interface FormatRow {
|
|
59
|
+
name: string;
|
|
60
|
+
input: boolean;
|
|
61
|
+
output: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface FunctionRow {
|
|
64
|
+
name: string;
|
|
65
|
+
aggregate: boolean;
|
|
66
|
+
caseInsensitive: boolean;
|
|
67
|
+
aliasOf?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface SettingRow {
|
|
70
|
+
name: string;
|
|
71
|
+
/** The server's setting type, e.g. `UInt64`, `Bool`, `MergeSelectorAlgorithm`. */
|
|
72
|
+
type: string;
|
|
73
|
+
default: string;
|
|
74
|
+
min?: string;
|
|
75
|
+
max?: string;
|
|
76
|
+
/** `Production`, `Beta`, `Experimental` or `Obsolete`. */
|
|
77
|
+
tier: string;
|
|
78
|
+
obsolete: boolean;
|
|
79
|
+
readonly: boolean;
|
|
80
|
+
aliasFor?: string;
|
|
81
|
+
summary: string;
|
|
82
|
+
}
|
|
83
|
+
export interface ClickHouseCatalog {
|
|
84
|
+
dialect: "clickhouse";
|
|
85
|
+
/** `SELECT version()` on the server it was read from. */
|
|
86
|
+
version: string;
|
|
87
|
+
/** The image reference that server ran. */
|
|
88
|
+
image: string;
|
|
89
|
+
tableEngines: TableEngineRow[];
|
|
90
|
+
databaseEngines: DatabaseEngineRow[];
|
|
91
|
+
typeFamilies: TypeFamilyRow[];
|
|
92
|
+
codecs: CodecRow[];
|
|
93
|
+
skipIndexTypes: SkipIndexTypeRow[];
|
|
94
|
+
aggregateCombinators: CombinatorRow[];
|
|
95
|
+
tableFunctions: string[];
|
|
96
|
+
formats: FormatRow[];
|
|
97
|
+
functions: FunctionRow[];
|
|
98
|
+
keywords: string[];
|
|
99
|
+
mergeTreeSettings: SettingRow[];
|
|
100
|
+
querySettings: SettingRow[];
|
|
101
|
+
}
|
|
102
|
+
/** The section names, in the order the snapshot writes them. */
|
|
103
|
+
export declare const CATALOG_SECTIONS: readonly ["tableEngines", "databaseEngines", "typeFamilies", "codecs", "skipIndexTypes", "aggregateCombinators", "tableFunctions", "formats", "functions", "keywords", "mergeTreeSettings", "querySettings"];
|
|
104
|
+
/** `max_threads` and a few others default to `auto(<cores>)`; the core count is the host's, not the pin's. */
|
|
105
|
+
export declare function normalizeDefault(value: unknown): string;
|
|
106
|
+
/**
|
|
107
|
+
* The first prose line of a markdown description, at most 200 characters.
|
|
108
|
+
* Descriptions are multi-line markdown with headings and fenced examples; a
|
|
109
|
+
* summary is what a hover or a JSDoc line can carry.
|
|
110
|
+
*/
|
|
111
|
+
export declare function summaryOf(description: unknown): string;
|
|
112
|
+
/**
|
|
113
|
+
* Read the catalog from a running server. Every query has an explicit
|
|
114
|
+
* `ORDER BY`: system tables have no stable row order.
|
|
115
|
+
*/
|
|
116
|
+
export declare function readCatalog(endpoint: ClickHouseEndpoint, image: string): Promise<ClickHouseCatalog>;
|
|
117
|
+
/**
|
|
118
|
+
* Write the catalog with one array entry per line. A pretty-printed tree would
|
|
119
|
+
* spread one engine over a dozen lines; this keeps a pin move to one changed
|
|
120
|
+
* line per changed entry.
|
|
121
|
+
*/
|
|
122
|
+
export declare function stringifyCatalog(catalog: ClickHouseCatalog): string;
|
|
123
|
+
/** Parse and shape-check a snapshot. Throws naming the first section that is missing or not a list. */
|
|
124
|
+
export declare function parseCatalog(text: string): ClickHouseCatalog;
|
|
125
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/spec/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where generation gets the ClickHouse catalog.
|
|
3
|
+
*
|
|
4
|
+
* The committed snapshot, `clickhouse-catalog.snapshot.json`, is the source
|
|
5
|
+
* every ordinary run reads: a fresh clone, CI and `npm run prepack` generate
|
|
6
|
+
* from it with no Docker and no network. A server is read only when the
|
|
7
|
+
* snapshot cannot serve the pin:
|
|
8
|
+
*
|
|
9
|
+
* - the pin moved (`CLICKHOUSE_VERSION` differs from the snapshot's version),
|
|
10
|
+
* - `force` is set, or
|
|
11
|
+
* - `CHANT_SQL_CLICKHOUSE_URL` names a server to read instead of starting one.
|
|
12
|
+
*
|
|
13
|
+
* Reading a server means starting the pinned image in a throwaway container
|
|
14
|
+
* (or using the named one), checking that its `version()` is the pin, reading
|
|
15
|
+
* `system.*`, and rewriting the snapshot. A server at any other version is
|
|
16
|
+
* refused: a snapshot labelled with one pin and holding another's surface is
|
|
17
|
+
* the failure the pin exists to prevent.
|
|
18
|
+
*/
|
|
19
|
+
import { type ClickHouseCatalog } from "./catalog.js";
|
|
20
|
+
import type { ClickHouseEndpoint } from "../clickhouse/http.js";
|
|
21
|
+
export declare const SNAPSHOT_FILE: string;
|
|
22
|
+
/** The key the single catalog document is filed under in the pipeline's schema map. */
|
|
23
|
+
export declare const CATALOG_KEY = "ClickHouse::Catalog";
|
|
24
|
+
export interface FetchCatalogOptions {
|
|
25
|
+
/** Read a server even when the snapshot matches the pin. */
|
|
26
|
+
force?: boolean;
|
|
27
|
+
/** A running server to read instead of starting the pinned image. Defaults to `CHANT_SQL_CLICKHOUSE_URL`. */
|
|
28
|
+
serverUrl?: string;
|
|
29
|
+
/** The snapshot to read and rewrite. Tests point it elsewhere. */
|
|
30
|
+
snapshotFile?: string;
|
|
31
|
+
/** Log a line saying which route was taken. */
|
|
32
|
+
log?: (line: string) => void;
|
|
33
|
+
}
|
|
34
|
+
/** Read the pinned catalog from a server and refuse any other version. */
|
|
35
|
+
export declare function catalogFromServer(endpoint: ClickHouseEndpoint, image: string): Promise<ClickHouseCatalog>;
|
|
36
|
+
/**
|
|
37
|
+
* The catalog for the current pin: the snapshot when it matches, otherwise a
|
|
38
|
+
* fresh read that also rewrites the snapshot.
|
|
39
|
+
*/
|
|
40
|
+
export declare function fetchCatalog(options?: FetchCatalogOptions): Promise<ClickHouseCatalog>;
|
|
41
|
+
/** The pipeline's `fetchSchemas`: one document, the catalog, keyed {@link CATALOG_KEY}. */
|
|
42
|
+
export declare function fetchSchemas(options?: FetchCatalogOptions): Promise<Map<string, Buffer>>;
|
|
43
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/spec/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEhG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,eAAO,MAAM,aAAa,QAAoF,CAAC;AAE/G,uFAAuF;AACvF,eAAO,MAAM,WAAW,wBAAwB,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6GAA6G;IAC7G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAUD,0EAA0E;AAC1E,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU/G;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAqChG;AAED,2FAA2F;AAC3F,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAGlG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pinned ClickHouse server the ClickHouse dialect's types come from.
|
|
3
|
+
*
|
|
4
|
+
* ClickHouse publishes no schema for its DDL. The engine names, column type
|
|
5
|
+
* families, codecs, skip index types and both settings surfaces are read from a
|
|
6
|
+
* running server's `system.*` tables (chant #3195), so the pin is a server
|
|
7
|
+
* image, not a document.
|
|
8
|
+
*
|
|
9
|
+
* Pinned to an exact patch of the 26.8 LTS line. 26.3 LTS lacks the `syntax`
|
|
10
|
+
* column on `system.table_engines` and the `system.data_skipping_index_types`
|
|
11
|
+
* table the engine-argument and skip-index types are built from, and two
|
|
12
|
+
* patches of one line differ (26.8.5.13 and 26.8.15.10 differ by nine query
|
|
13
|
+
* settings), so a floating `26.8` tag would change generated output with no
|
|
14
|
+
* commit. The digest sits beside the tag so a re-pushed tag cannot change it
|
|
15
|
+
* unseen either: generation runs `image@digest` and refuses a server whose
|
|
16
|
+
* `version()` is not {@link CLICKHOUSE_VERSION}.
|
|
17
|
+
*
|
|
18
|
+
* Moving the pin: change both constants, then `chant dev generate` (or
|
|
19
|
+
* `npm run generate`). The committed snapshot no longer matches the pin, so
|
|
20
|
+
* generation starts the pinned server, rewrites
|
|
21
|
+
* `src/spec/clickhouse-catalog.snapshot.json`, and the pull request's diff of
|
|
22
|
+
* that file is the surface change. Read its `-` lines: a removed engine or
|
|
23
|
+
* function is what breaks a user's declarations.
|
|
24
|
+
*/
|
|
25
|
+
/** The pinned `clickhouse-server` release, as `SELECT version()` reports it. */
|
|
26
|
+
export declare const CLICKHOUSE_VERSION = "26.8.15.10";
|
|
27
|
+
/** The image digest of `clickhouse/clickhouse-server:<CLICKHOUSE_VERSION>`. Move it with the version. */
|
|
28
|
+
export declare const CLICKHOUSE_IMAGE_DIGEST = "sha256:9716a352d25f538bd19d868b001141e7a60e4d035bc9b823658c6a071660aa61";
|
|
29
|
+
/** The official server image. */
|
|
30
|
+
export declare const CLICKHOUSE_IMAGE_REPOSITORY = "clickhouse/clickhouse-server";
|
|
31
|
+
/** The full image reference generation runs: tag for the reader, digest for the runtime. */
|
|
32
|
+
export declare function clickhouseImage(): string;
|
|
33
|
+
/**
|
|
34
|
+
* ClickHouse tags its LTS releases `v<version>-lts` on GitHub. The upgrade
|
|
35
|
+
* tooling hands `replace` the raw tag; the constant holds the bare version,
|
|
36
|
+
* which is also the docker tag.
|
|
37
|
+
*/
|
|
38
|
+
export declare function versionFromReleaseTag(tag: string): string;
|
|
39
|
+
//# sourceMappingURL=pin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../src/spec/pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,4EAA4E,CAAC;AAEjH,iCAAiC;AACjC,eAAO,MAAM,2BAA2B,iCAAiC,CAAC;AAE1E,4FAA4F;AAC5F,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Postgres catalog: what generation reads from one pinned server's
|
|
3
|
+
* catalog, in the shape the committed snapshot stores (one snapshot per major).
|
|
4
|
+
*
|
|
5
|
+
* Every section is sorted with an explicit `COLLATE "C"`, and the snapshot is
|
|
6
|
+
* written one entry per line, so a pin move is a line diff a reviewer can
|
|
7
|
+
* read. Nothing here depends on the host: `pg_settings.setting` and
|
|
8
|
+
* `reset_val` reflect the scratch server's configuration and are never read
|
|
9
|
+
* (`boot_val` is the compiled default), the Debian build suffix is stripped
|
|
10
|
+
* from `server_version`, and nothing is timestamped.
|
|
11
|
+
*/
|
|
12
|
+
/** Runs a SQL script whose last statement returns one JSON value. A server, or a stub in a test. */
|
|
13
|
+
export interface PostgresReader {
|
|
14
|
+
query(sql: string): Promise<unknown>;
|
|
15
|
+
}
|
|
16
|
+
export interface TypeRow {
|
|
17
|
+
/** `pg_type.typname`: `int4`. */
|
|
18
|
+
name: string;
|
|
19
|
+
/** `format_type()`: `integer`. */
|
|
20
|
+
sqlName: string;
|
|
21
|
+
/** `typtype`: base `b`, domain `d`, enum `e`, multirange `m`, pseudo `p`, range `r`. */
|
|
22
|
+
kind: string;
|
|
23
|
+
category: string;
|
|
24
|
+
len: number;
|
|
25
|
+
byval: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface AccessMethodRow {
|
|
28
|
+
name: string;
|
|
29
|
+
/** `i` for an index access method, `t` for a table access method. */
|
|
30
|
+
type: string;
|
|
31
|
+
/** What `pg_indexam_has_property` reports for the method (`can_unique`, `can_include`...); index methods only. */
|
|
32
|
+
properties: string[] | null;
|
|
33
|
+
}
|
|
34
|
+
export interface OpClassRow {
|
|
35
|
+
am: string;
|
|
36
|
+
name: string;
|
|
37
|
+
inputType: string;
|
|
38
|
+
default: boolean;
|
|
39
|
+
family: string;
|
|
40
|
+
}
|
|
41
|
+
export interface FunctionRow {
|
|
42
|
+
name: string;
|
|
43
|
+
/** `prokind`s over the overloads, sorted: `f` function, `a` aggregate, `p` procedure, `w` window. */
|
|
44
|
+
kinds: string;
|
|
45
|
+
overloads: number;
|
|
46
|
+
/** `pg_*`, `binary_upgrade*`, `*support`, or only ever an aggregate's support function: not for a user to call. */
|
|
47
|
+
internal: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface OperatorRow {
|
|
50
|
+
name: string;
|
|
51
|
+
kinds: string;
|
|
52
|
+
overloads: number;
|
|
53
|
+
}
|
|
54
|
+
export interface SettingRow {
|
|
55
|
+
name: string;
|
|
56
|
+
/** `bool`, `integer`, `real`, `string` or `enum`. */
|
|
57
|
+
type: string;
|
|
58
|
+
context: string;
|
|
59
|
+
category: string;
|
|
60
|
+
unit: string | null;
|
|
61
|
+
/** The compiled default (`boot_val`). */
|
|
62
|
+
default: string | null;
|
|
63
|
+
min: string | null;
|
|
64
|
+
max: string | null;
|
|
65
|
+
enumvals: string[] | null;
|
|
66
|
+
}
|
|
67
|
+
export interface KeywordRow {
|
|
68
|
+
word: string;
|
|
69
|
+
/** `U` unreserved, `C` column name, `T` reserved as function or type name, `R` reserved. */
|
|
70
|
+
code: string;
|
|
71
|
+
description: string;
|
|
72
|
+
}
|
|
73
|
+
export interface ExtensionRow {
|
|
74
|
+
name: string;
|
|
75
|
+
defaultVersion: string;
|
|
76
|
+
description: string | null;
|
|
77
|
+
}
|
|
78
|
+
/** Storage parameter names the server accepts, by relation kind: `table`, `toast`, `view`, `materialized view`, `index:<method>`. */
|
|
79
|
+
export type StorageParameters = Record<string, string[]>;
|
|
80
|
+
export interface PostgresCatalog {
|
|
81
|
+
dialect: "postgres";
|
|
82
|
+
/** `server_version` without the build suffix: `18.6`. */
|
|
83
|
+
version: string;
|
|
84
|
+
/** `server_version_num`: `180006`. */
|
|
85
|
+
versionNum: number;
|
|
86
|
+
/** The image reference that server ran. */
|
|
87
|
+
image: string;
|
|
88
|
+
types: TypeRow[];
|
|
89
|
+
accessMethods: AccessMethodRow[];
|
|
90
|
+
opclasses: OpClassRow[];
|
|
91
|
+
functions: FunctionRow[];
|
|
92
|
+
operators: OperatorRow[];
|
|
93
|
+
settings: SettingRow[];
|
|
94
|
+
keywords: KeywordRow[];
|
|
95
|
+
extensions: ExtensionRow[];
|
|
96
|
+
storageParameters: StorageParameters;
|
|
97
|
+
}
|
|
98
|
+
/** The list sections, in the order the snapshot writes them; `storageParameters` follows. */
|
|
99
|
+
export declare const CATALOG_SECTIONS: readonly ["types", "accessMethods", "opclasses", "functions", "operators", "settings", "keywords", "extensions"];
|
|
100
|
+
/** The major of a version string: `18.6` is 18. */
|
|
101
|
+
export declare function majorOf(version: string): number;
|
|
102
|
+
/** Read the catalog from a server. The caller checks that its version is the pin. */
|
|
103
|
+
export declare function readCatalog(reader: PostgresReader, image: string): Promise<PostgresCatalog>;
|
|
104
|
+
/** Write the catalog with one array entry per line, so a pin move is one changed line per changed entry. */
|
|
105
|
+
export declare function stringifyCatalog(catalog: PostgresCatalog): string;
|
|
106
|
+
/** Parse and shape-check a snapshot. Throws naming the first section that is missing or not a list. */
|
|
107
|
+
export declare function parseCatalog(text: string): PostgresCatalog;
|
|
108
|
+
//# sourceMappingURL=postgres-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-catalog.d.ts","sourceRoot":"","sources":["../../src/spec/postgres-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,oGAAoG;AACpG,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,OAAO;IACtB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,kHAAkH;IAClH,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qGAAqG;IACrG,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,mHAAmH;IACnH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yCAAyC;IACzC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qIAAqI;AACrI,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,CAAC;IACpB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB,kHAS0B,CAAC;AAExD,mDAAmD;AACnD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/C;AA+GD,qFAAqF;AACrF,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAoBjG;AAID,4GAA4G;AAC5G,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAuBjE;AAED,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAW1D"}
|