@supabase/pg-delta 1.0.0-alpha.3 → 1.0.0-alpha.30
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 +48 -3
- package/dist/cli/app.js +26 -3
- package/dist/cli/bin/cli.js +13 -1
- package/dist/cli/commands/catalog-export.d.ts +5 -0
- package/dist/cli/commands/catalog-export.js +85 -0
- package/dist/cli/commands/declarative-apply.d.ts +6 -0
- package/dist/cli/commands/declarative-apply.js +288 -0
- package/dist/cli/commands/declarative-export.d.ts +5 -0
- package/dist/cli/commands/declarative-export.js +240 -0
- package/dist/cli/commands/plan.js +80 -17
- package/dist/cli/commands/sync.js +8 -12
- package/dist/cli/exit-code.d.ts +2 -0
- package/dist/cli/exit-code.js +7 -0
- package/dist/cli/formatters/tree/tree.js +3 -2
- package/dist/cli/utils/apply-display.d.ts +52 -0
- package/dist/cli/utils/apply-display.js +183 -0
- package/dist/cli/utils/export-display.d.ts +43 -0
- package/dist/cli/utils/export-display.js +202 -0
- package/dist/cli/utils/integrations.d.ts +30 -6
- package/dist/cli/utils/integrations.js +98 -6
- package/dist/cli/utils/resolve-input.d.ts +7 -0
- package/dist/cli/utils/resolve-input.js +13 -0
- package/dist/cli/utils.d.ts +5 -0
- package/dist/cli/utils.js +6 -3
- package/dist/core/catalog-export/index.d.ts +11 -0
- package/dist/core/catalog-export/index.js +10 -0
- package/dist/core/catalog.diff.d.ts +1 -0
- package/dist/core/catalog.diff.js +92 -51
- package/dist/core/catalog.filter.d.ts +17 -0
- package/dist/core/catalog.filter.js +75 -0
- package/dist/core/catalog.model.d.ts +24 -4
- package/dist/core/catalog.model.js +147 -30
- package/dist/core/catalog.snapshot.d.ts +66 -0
- package/dist/core/catalog.snapshot.js +206 -0
- package/dist/core/change-utils.d.ts +9 -0
- package/dist/core/change-utils.js +71 -0
- package/dist/core/change.types.d.ts +22 -0
- package/dist/core/change.types.js +37 -1
- package/dist/core/connection-url.d.ts +32 -0
- package/dist/core/connection-url.js +77 -0
- package/dist/core/declarative-apply/discover-sql.d.ts +18 -0
- package/dist/core/declarative-apply/discover-sql.js +86 -0
- package/dist/core/declarative-apply/extract-catalog-providers.d.ts +23 -0
- package/dist/core/declarative-apply/extract-catalog-providers.js +159 -0
- package/dist/core/declarative-apply/index.d.ts +49 -0
- package/dist/core/declarative-apply/index.js +134 -0
- package/dist/core/declarative-apply/round-apply.d.ts +100 -0
- package/dist/core/declarative-apply/round-apply.js +378 -0
- package/dist/core/depend.js +25 -0
- package/dist/core/expand-replace-dependencies.d.ts +11 -3
- package/dist/core/expand-replace-dependencies.js +255 -22
- package/dist/core/export/file-mapper.d.ts +71 -0
- package/dist/core/export/file-mapper.js +474 -0
- package/dist/core/export/grouper.d.ts +13 -0
- package/dist/core/export/grouper.js +76 -0
- package/dist/core/export/index.d.ts +45 -0
- package/dist/core/export/index.js +66 -0
- package/dist/core/export/types.d.ts +84 -0
- package/dist/core/export/types.js +25 -0
- package/dist/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
- package/dist/core/integrations/filter/dsl.d.ts +82 -41
- package/dist/core/integrations/filter/dsl.js +127 -61
- package/dist/core/integrations/filter/flatten.d.ts +51 -0
- package/dist/core/integrations/filter/flatten.js +129 -0
- package/dist/core/integrations/integration-dsl.d.ts +27 -1
- package/dist/core/integrations/integration.types.d.ts +26 -1
- package/dist/core/integrations/integration.types.js +31 -1
- package/dist/core/integrations/merge.d.ts +20 -0
- package/dist/core/integrations/merge.js +60 -0
- package/dist/core/integrations/serialize/dsl.d.ts +8 -12
- package/dist/core/integrations/serialize/dsl.js +2 -2
- package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
- package/dist/core/integrations/supabase.d.ts +8 -0
- package/dist/core/integrations/supabase.js +242 -8
- package/dist/core/objects/aggregate/aggregate.diff.d.ts +2 -8
- package/dist/core/objects/aggregate/aggregate.diff.js +32 -70
- package/dist/core/objects/aggregate/aggregate.model.d.ts +18 -8
- package/dist/core/objects/aggregate/aggregate.model.js +20 -2
- package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
- package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
- package/dist/core/objects/aggregate/changes/aggregate.base.d.ts +1 -1
- package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
- package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
- package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
- package/dist/core/objects/aggregate/changes/aggregate.create.js +2 -2
- package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
- package/dist/core/objects/aggregate/changes/aggregate.drop.js +2 -2
- package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
- package/dist/core/objects/aggregate/changes/aggregate.privilege.js +24 -12
- package/dist/core/objects/aggregate/changes/aggregate.security-label.d.ts +28 -0
- package/dist/core/objects/aggregate/changes/aggregate.security-label.js +64 -0
- package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +3 -1
- package/dist/core/objects/base.change.d.ts +63 -3
- package/dist/core/objects/base.change.js +56 -3
- package/dist/core/objects/base.model.d.ts +12 -1
- package/dist/core/objects/base.model.js +7 -2
- package/dist/core/objects/base.privilege-diff.d.ts +38 -13
- package/dist/core/objects/base.privilege-diff.js +104 -22
- package/dist/core/objects/base.privilege.d.ts +1 -0
- package/dist/core/objects/base.privilege.js +9 -2
- package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
- package/dist/core/objects/collation/changes/collation.alter.js +2 -2
- package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
- package/dist/core/objects/collation/changes/collation.comment.js +2 -2
- package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
- package/dist/core/objects/collation/changes/collation.create.js +1 -1
- package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
- package/dist/core/objects/collation/changes/collation.drop.js +1 -1
- package/dist/core/objects/collation/changes/collation.types.d.ts +1 -0
- package/dist/core/objects/collation/collation.diff.d.ts +2 -3
- package/dist/core/objects/diff-context.d.ts +15 -0
- package/dist/core/objects/diff-context.js +1 -0
- package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
- package/dist/core/objects/domain/changes/domain.alter.js +8 -8
- package/dist/core/objects/domain/changes/domain.base.d.ts +1 -1
- package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
- package/dist/core/objects/domain/changes/domain.comment.js +2 -2
- package/dist/core/objects/domain/changes/domain.create.d.ts +3 -2
- package/dist/core/objects/domain/changes/domain.create.js +12 -4
- package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
- package/dist/core/objects/domain/changes/domain.drop.js +1 -1
- package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
- package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
- package/dist/core/objects/domain/changes/domain.security-label.d.ts +28 -0
- package/dist/core/objects/domain/changes/domain.security-label.js +61 -0
- package/dist/core/objects/domain/changes/domain.types.d.ts +3 -1
- package/dist/core/objects/domain/domain.diff.d.ts +2 -8
- package/dist/core/objects/domain/domain.diff.js +32 -77
- package/dist/core/objects/domain/domain.model.d.ts +10 -0
- package/dist/core/objects/domain/domain.model.js +20 -2
- package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
- package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
- package/dist/core/objects/event-trigger/changes/event-trigger.base.d.ts +1 -1
- package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
- package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
- package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
- package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
- package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
- package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
- package/dist/core/objects/event-trigger/changes/event-trigger.security-label.d.ts +28 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.security-label.js +61 -0
- package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +3 -1
- package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +2 -3
- package/dist/core/objects/event-trigger/event-trigger.diff.js +16 -0
- package/dist/core/objects/event-trigger/event-trigger.model.d.ts +10 -0
- package/dist/core/objects/event-trigger/event-trigger.model.js +19 -1
- package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
- package/dist/core/objects/extension/changes/extension.alter.js +2 -2
- package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
- package/dist/core/objects/extension/changes/extension.comment.js +2 -2
- package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
- package/dist/core/objects/extension/changes/extension.create.js +4 -2
- package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
- package/dist/core/objects/extension/changes/extension.drop.js +1 -1
- package/dist/core/objects/extension/changes/extension.types.d.ts +1 -0
- package/dist/core/objects/extract-with-retry.d.ts +36 -0
- package/dist/core/objects/extract-with-retry.js +51 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +6 -3
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +7 -4
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +2 -8
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +13 -77
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.d.ts +11 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +13 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +13 -10
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.d.ts +1 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +7 -4
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.security-label.d.ts +28 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.security-label.js +61 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +3 -1
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +2 -8
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +32 -77
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.d.ts +37 -0
- package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +60 -4
- package/dist/core/objects/foreign-data-wrapper/sensitive-options.d.ts +32 -0
- package/dist/core/objects/foreign-data-wrapper/sensitive-options.js +129 -0
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +7 -4
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +7 -4
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
- package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +2 -8
- package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +13 -77
- package/dist/core/objects/foreign-data-wrapper/server/server.model.d.ts +14 -0
- package/dist/core/objects/foreign-data-wrapper/server/server.model.js +28 -1
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +5 -2
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +7 -4
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +1 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.d.ts +14 -0
- package/dist/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.js +28 -1
- package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
- package/dist/core/objects/index/changes/index.alter.js +3 -3
- package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
- package/dist/core/objects/index/changes/index.comment.js +2 -2
- package/dist/core/objects/index/changes/index.create.d.ts +2 -1
- package/dist/core/objects/index/changes/index.create.js +1 -1
- package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
- package/dist/core/objects/index/changes/index.drop.js +1 -1
- package/dist/core/objects/index/changes/index.types.d.ts +1 -0
- package/dist/core/objects/index/index.diff.js +0 -1
- package/dist/core/objects/index/index.model.d.ts +2 -3
- package/dist/core/objects/index/index.model.js +26 -5
- package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
- package/dist/core/objects/language/changes/language.alter.js +1 -1
- package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
- package/dist/core/objects/language/changes/language.comment.js +2 -2
- package/dist/core/objects/language/changes/language.create.d.ts +2 -1
- package/dist/core/objects/language/changes/language.create.js +1 -1
- package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
- package/dist/core/objects/language/changes/language.drop.js +1 -1
- package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
- package/dist/core/objects/language/changes/language.privilege.js +3 -3
- package/dist/core/objects/language/changes/language.types.d.ts +1 -0
- package/dist/core/objects/language/language.diff.d.ts +2 -5
- package/dist/core/objects/language/language.diff.js +7 -39
- package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
- package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
- package/dist/core/objects/materialized-view/changes/materialized-view.base.d.ts +1 -1
- package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
- package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
- package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
- package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
- package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
- package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
- package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
- package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
- package/dist/core/objects/materialized-view/changes/materialized-view.security-label.d.ts +28 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.security-label.js +61 -0
- package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +3 -1
- package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +3 -8
- package/dist/core/objects/materialized-view/materialized-view.diff.js +76 -200
- package/dist/core/objects/materialized-view/materialized-view.model.d.ts +27 -4
- package/dist/core/objects/materialized-view/materialized-view.model.js +41 -6
- package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
- package/dist/core/objects/procedure/changes/procedure.alter.js +19 -19
- package/dist/core/objects/procedure/changes/procedure.base.d.ts +1 -1
- package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
- package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
- package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
- package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
- package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
- package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
- package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
- package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
- package/dist/core/objects/procedure/changes/procedure.security-label.d.ts +28 -0
- package/dist/core/objects/procedure/changes/procedure.security-label.js +69 -0
- package/dist/core/objects/procedure/changes/procedure.types.d.ts +3 -1
- package/dist/core/objects/procedure/procedure.diff.d.ts +2 -8
- package/dist/core/objects/procedure/procedure.diff.js +73 -97
- package/dist/core/objects/procedure/procedure.model.d.ts +21 -10
- package/dist/core/objects/procedure/procedure.model.js +40 -6
- package/dist/core/objects/publication/changes/publication.alter.d.ts +10 -17
- package/dist/core/objects/publication/changes/publication.alter.js +12 -21
- package/dist/core/objects/publication/changes/publication.base.d.ts +1 -1
- package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
- package/dist/core/objects/publication/changes/publication.comment.js +2 -2
- package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
- package/dist/core/objects/publication/changes/publication.create.js +1 -1
- package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
- package/dist/core/objects/publication/changes/publication.drop.js +1 -1
- package/dist/core/objects/publication/changes/publication.security-label.d.ts +28 -0
- package/dist/core/objects/publication/changes/publication.security-label.js +61 -0
- package/dist/core/objects/publication/changes/publication.types.d.ts +4 -2
- package/dist/core/objects/publication/publication.diff.d.ts +2 -3
- package/dist/core/objects/publication/publication.diff.js +24 -13
- package/dist/core/objects/publication/publication.model.d.ts +14 -0
- package/dist/core/objects/publication/publication.model.js +20 -1
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
- package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +6 -6
- package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
- package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
- package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
- package/dist/core/objects/rls-policy/changes/rls-policy.create.js +24 -1
- package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
- package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
- package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +1 -0
- package/dist/core/objects/rls-policy/rls-policy.diff.js +13 -1
- package/dist/core/objects/rls-policy/rls-policy.model.d.ts +51 -2
- package/dist/core/objects/rls-policy/rls-policy.model.js +122 -1
- package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
- package/dist/core/objects/role/changes/role.alter.js +2 -2
- package/dist/core/objects/role/changes/role.base.d.ts +1 -1
- package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
- package/dist/core/objects/role/changes/role.comment.js +2 -2
- package/dist/core/objects/role/changes/role.create.d.ts +2 -1
- package/dist/core/objects/role/changes/role.create.js +1 -1
- package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
- package/dist/core/objects/role/changes/role.drop.js +1 -1
- package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
- package/dist/core/objects/role/changes/role.privilege.js +5 -5
- package/dist/core/objects/role/changes/role.security-label.d.ts +28 -0
- package/dist/core/objects/role/changes/role.security-label.js +61 -0
- package/dist/core/objects/role/changes/role.types.d.ts +3 -1
- package/dist/core/objects/role/role.diff.js +38 -1
- package/dist/core/objects/role/role.model.d.ts +14 -3
- package/dist/core/objects/role/role.model.js +147 -12
- package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
- package/dist/core/objects/rule/changes/rule.alter.js +2 -2
- package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
- package/dist/core/objects/rule/changes/rule.comment.js +2 -2
- package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
- package/dist/core/objects/rule/changes/rule.create.js +1 -1
- package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
- package/dist/core/objects/rule/changes/rule.drop.js +1 -1
- package/dist/core/objects/rule/changes/rule.types.d.ts +1 -0
- package/dist/core/objects/rule/rule.model.d.ts +3 -2
- package/dist/core/objects/rule/rule.model.js +20 -3
- package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
- package/dist/core/objects/schema/changes/schema.alter.js +1 -1
- package/dist/core/objects/schema/changes/schema.base.d.ts +1 -1
- package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
- package/dist/core/objects/schema/changes/schema.comment.js +2 -2
- package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
- package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
- package/dist/core/objects/schema/changes/schema.drop.js +1 -1
- package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
- package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
- package/dist/core/objects/schema/changes/schema.security-label.d.ts +28 -0
- package/dist/core/objects/schema/changes/schema.security-label.js +61 -0
- package/dist/core/objects/schema/changes/schema.types.d.ts +3 -1
- package/dist/core/objects/schema/schema.diff.d.ts +2 -8
- package/dist/core/objects/schema/schema.diff.js +40 -78
- package/dist/core/objects/schema/schema.model.d.ts +10 -0
- package/dist/core/objects/schema/schema.model.js +19 -2
- package/dist/core/objects/security-label.types.d.ts +20 -0
- package/dist/core/objects/security-label.types.js +46 -0
- package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
- package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
- package/dist/core/objects/sequence/changes/sequence.base.d.ts +1 -1
- package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
- package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
- package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
- package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
- package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
- package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
- package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
- package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
- package/dist/core/objects/sequence/changes/sequence.security-label.d.ts +28 -0
- package/dist/core/objects/sequence/changes/sequence.security-label.js +61 -0
- package/dist/core/objects/sequence/changes/sequence.types.d.ts +3 -1
- package/dist/core/objects/sequence/sequence.diff.d.ts +6 -8
- package/dist/core/objects/sequence/sequence.diff.js +99 -94
- package/dist/core/objects/sequence/sequence.model.d.ts +10 -0
- package/dist/core/objects/sequence/sequence.model.js +20 -2
- package/dist/core/objects/subscription/changes/subscription.alter.d.ts +8 -6
- package/dist/core/objects/subscription/changes/subscription.alter.js +11 -6
- package/dist/core/objects/subscription/changes/subscription.base.d.ts +1 -1
- package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
- package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
- package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
- package/dist/core/objects/subscription/changes/subscription.create.js +11 -2
- package/dist/core/objects/subscription/changes/subscription.drop.d.ts +3 -1
- package/dist/core/objects/subscription/changes/subscription.drop.js +6 -1
- package/dist/core/objects/subscription/changes/subscription.security-label.d.ts +28 -0
- package/dist/core/objects/subscription/changes/subscription.security-label.js +61 -0
- package/dist/core/objects/subscription/changes/subscription.types.d.ts +3 -1
- package/dist/core/objects/subscription/subscription.diff.d.ts +2 -3
- package/dist/core/objects/subscription/subscription.diff.js +16 -0
- package/dist/core/objects/subscription/subscription.model.d.ts +10 -0
- package/dist/core/objects/subscription/subscription.model.js +19 -1
- package/dist/core/objects/table/changes/table.alter.d.ts +82 -23
- package/dist/core/objects/table/changes/table.alter.js +158 -29
- package/dist/core/objects/table/changes/table.base.d.ts +1 -1
- package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
- package/dist/core/objects/table/changes/table.comment.js +6 -6
- package/dist/core/objects/table/changes/table.create.d.ts +2 -1
- package/dist/core/objects/table/changes/table.create.js +4 -1
- package/dist/core/objects/table/changes/table.drop.d.ts +16 -3
- package/dist/core/objects/table/changes/table.drop.js +24 -1
- package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
- package/dist/core/objects/table/changes/table.privilege.js +3 -3
- package/dist/core/objects/table/changes/table.security-label.d.ts +63 -0
- package/dist/core/objects/table/changes/table.security-label.js +134 -0
- package/dist/core/objects/table/changes/table.types.d.ts +3 -1
- package/dist/core/objects/table/table.diff.d.ts +2 -8
- package/dist/core/objects/table/table.diff.js +213 -198
- package/dist/core/objects/table/table.model.d.ts +65 -23
- package/dist/core/objects/table/table.model.js +97 -17
- package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
- package/dist/core/objects/trigger/changes/trigger.alter.js +24 -1
- package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
- package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
- package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
- package/dist/core/objects/trigger/changes/trigger.create.js +5 -6
- package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
- package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
- package/dist/core/objects/trigger/changes/trigger.types.d.ts +1 -0
- package/dist/core/objects/trigger/trigger.diff.js +7 -2
- package/dist/core/objects/trigger/trigger.model.d.ts +12 -2
- package/dist/core/objects/trigger/trigger.model.js +39 -5
- package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
- package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
- package/dist/core/objects/type/composite-type/changes/composite-type.base.d.ts +1 -1
- package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
- package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
- package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
- package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
- package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
- package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
- package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
- package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
- package/dist/core/objects/type/composite-type/changes/composite-type.security-label.d.ts +28 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.security-label.js +61 -0
- package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +3 -1
- package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +2 -8
- package/dist/core/objects/type/composite-type/composite-type.diff.js +32 -77
- package/dist/core/objects/type/composite-type/composite-type.model.d.ts +25 -3
- package/dist/core/objects/type/composite-type/composite-type.model.js +24 -3
- package/dist/core/objects/type/enum/changes/enum.alter.d.ts +4 -2
- package/dist/core/objects/type/enum/changes/enum.alter.js +6 -2
- package/dist/core/objects/type/enum/changes/enum.base.d.ts +1 -1
- package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
- package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
- package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
- package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
- package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
- package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
- package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
- package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
- package/dist/core/objects/type/enum/changes/enum.security-label.d.ts +28 -0
- package/dist/core/objects/type/enum/changes/enum.security-label.js +61 -0
- package/dist/core/objects/type/enum/changes/enum.types.d.ts +3 -1
- package/dist/core/objects/type/enum/enum.diff.d.ts +2 -8
- package/dist/core/objects/type/enum/enum.diff.js +41 -112
- package/dist/core/objects/type/enum/enum.model.d.ts +10 -0
- package/dist/core/objects/type/enum/enum.model.js +21 -2
- package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
- package/dist/core/objects/type/range/changes/range.alter.js +1 -1
- package/dist/core/objects/type/range/changes/range.base.d.ts +1 -1
- package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
- package/dist/core/objects/type/range/changes/range.comment.js +2 -2
- package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
- package/dist/core/objects/type/range/changes/range.create.js +7 -4
- package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
- package/dist/core/objects/type/range/changes/range.drop.js +1 -1
- package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
- package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
- package/dist/core/objects/type/range/changes/range.security-label.d.ts +28 -0
- package/dist/core/objects/type/range/changes/range.security-label.js +61 -0
- package/dist/core/objects/type/range/changes/range.types.d.ts +3 -1
- package/dist/core/objects/type/range/range.diff.d.ts +2 -8
- package/dist/core/objects/type/range/range.diff.js +32 -77
- package/dist/core/objects/type/range/range.model.d.ts +10 -0
- package/dist/core/objects/type/range/range.model.js +20 -2
- package/dist/core/objects/type/type.types.d.ts +1 -0
- package/dist/core/objects/utils.d.ts +2 -0
- package/dist/core/objects/utils.js +6 -0
- package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
- package/dist/core/objects/view/changes/view.alter.js +3 -3
- package/dist/core/objects/view/changes/view.base.d.ts +1 -1
- package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
- package/dist/core/objects/view/changes/view.comment.js +2 -2
- package/dist/core/objects/view/changes/view.create.d.ts +2 -1
- package/dist/core/objects/view/changes/view.create.js +1 -1
- package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
- package/dist/core/objects/view/changes/view.drop.js +1 -1
- package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
- package/dist/core/objects/view/changes/view.privilege.js +3 -3
- package/dist/core/objects/view/changes/view.security-label.d.ts +28 -0
- package/dist/core/objects/view/changes/view.security-label.js +61 -0
- package/dist/core/objects/view/changes/view.types.d.ts +3 -1
- package/dist/core/objects/view/view.diff.d.ts +3 -8
- package/dist/core/objects/view/view.diff.js +61 -178
- package/dist/core/objects/view/view.model.d.ts +46 -5
- package/dist/core/objects/view/view.model.js +43 -18
- package/dist/core/plan/apply.d.ts +10 -1
- package/dist/core/plan/apply.js +73 -55
- package/dist/core/plan/create.d.ts +19 -6
- package/dist/core/plan/create.js +160 -201
- package/dist/core/plan/execution.d.ts +21 -0
- package/dist/core/plan/execution.js +76 -0
- package/dist/core/plan/hierarchy.js +4 -4
- package/dist/core/plan/index.d.ts +1 -1
- package/dist/core/plan/index.js +1 -1
- package/dist/core/plan/io.d.ts +2 -1
- package/dist/core/plan/io.js +4 -2
- package/dist/core/plan/normalize.d.ts +11 -0
- package/dist/core/plan/normalize.js +33 -0
- package/dist/core/plan/render.d.ts +32 -0
- package/dist/core/plan/render.js +104 -0
- package/dist/core/plan/serialize.js +16 -4
- package/dist/core/plan/sql-format/constants.d.ts +2 -0
- package/dist/core/plan/sql-format/constants.js +11 -0
- package/dist/core/plan/sql-format/fixtures.d.ts +2 -0
- package/dist/core/plan/sql-format/fixtures.js +2456 -0
- package/dist/core/plan/sql-format/format-utils.d.ts +37 -0
- package/dist/core/plan/sql-format/format-utils.js +274 -0
- package/dist/core/plan/sql-format/formatters.d.ts +20 -0
- package/dist/core/plan/sql-format/formatters.js +737 -0
- package/dist/core/plan/sql-format/index.d.ts +2 -0
- package/dist/core/plan/sql-format/index.js +98 -0
- package/dist/core/plan/sql-format/keyword-case.d.ts +2 -0
- package/dist/core/plan/sql-format/keyword-case.js +893 -0
- package/dist/core/plan/sql-format/protect.d.ts +3 -0
- package/dist/core/plan/sql-format/protect.js +269 -0
- package/dist/core/plan/sql-format/sql-scanner.d.ts +59 -0
- package/dist/core/plan/sql-format/sql-scanner.js +202 -0
- package/dist/core/plan/sql-format/tokenizer.d.ts +22 -0
- package/dist/core/plan/sql-format/tokenizer.js +118 -0
- package/dist/core/plan/sql-format/types.d.ts +28 -0
- package/dist/core/plan/sql-format/types.js +1 -0
- package/dist/core/plan/sql-format/wrap.d.ts +2 -0
- package/dist/core/plan/sql-format/wrap.js +165 -0
- package/dist/core/plan/sql-format.d.ts +2 -0
- package/dist/core/plan/sql-format.js +1 -0
- package/dist/core/plan/ssl-config.d.ts +32 -0
- package/dist/core/plan/ssl-config.js +115 -0
- package/dist/core/plan/statements.d.ts +2 -1
- package/dist/core/plan/statements.js +6 -2
- package/dist/core/plan/types.d.ts +64 -9
- package/dist/core/plan/types.js +18 -1
- package/dist/core/post-diff-normalization.d.ts +43 -0
- package/dist/core/post-diff-normalization.js +231 -0
- package/dist/core/postgres-config.d.ts +96 -3
- package/dist/core/postgres-config.js +287 -4
- package/dist/core/sort/custom-constraints.js +65 -1
- package/dist/core/sort/cycle-breakers.d.ts +15 -0
- package/dist/core/sort/cycle-breakers.js +396 -0
- package/dist/core/sort/debug-visualization.js +1 -1
- package/dist/core/sort/graph-builder.js +16 -0
- package/dist/core/sort/logical-sort.js +34 -47
- package/dist/core/sort/sort-changes.js +99 -44
- package/dist/core/sort/topological-sort.js +2 -2
- package/dist/core/sort/unorderable-cycle-error.d.ts +18 -0
- package/dist/core/sort/unorderable-cycle-error.js +20 -0
- package/dist/core/sort/utils.d.ts +10 -0
- package/dist/core/sort/utils.js +28 -0
- package/dist/core/test-utils/assert-valid-sql.d.ts +10 -0
- package/dist/core/test-utils/assert-valid-sql.js +19 -0
- package/dist/index.d.ts +14 -1
- package/dist/index.js +10 -1
- package/package.json +76 -38
- package/src/cli/app.ts +52 -0
- package/src/cli/bin/cli.ts +23 -0
- package/src/cli/commands/apply.ts +101 -0
- package/src/cli/commands/catalog-export.ts +103 -0
- package/src/cli/commands/declarative-apply.diagnostics.test.ts +77 -0
- package/src/cli/commands/declarative-apply.ts +380 -0
- package/src/cli/commands/declarative-export.ts +322 -0
- package/src/cli/commands/plan.ts +256 -0
- package/src/cli/commands/sync.ts +178 -0
- package/src/cli/exit-code.test.ts +19 -0
- package/src/cli/exit-code.ts +7 -0
- package/src/cli/formatters/index.ts +5 -0
- package/src/cli/formatters/tree/tree-builder.ts +380 -0
- package/src/cli/formatters/tree/tree-renderer.ts +372 -0
- package/src/cli/formatters/tree/tree.ts +238 -0
- package/src/cli/utils/apply-display.test.ts +348 -0
- package/src/cli/utils/apply-display.ts +238 -0
- package/src/cli/utils/export-display.test.ts +103 -0
- package/src/cli/utils/export-display.ts +275 -0
- package/src/cli/utils/integrations.test.ts +251 -0
- package/src/cli/utils/integrations.ts +170 -0
- package/src/cli/utils/resolve-input.test.ts +38 -0
- package/src/cli/utils/resolve-input.ts +17 -0
- package/src/cli/utils.ts +247 -0
- package/src/core/catalog-export/index.ts +20 -0
- package/src/core/catalog.diff.test.ts +173 -0
- package/src/core/catalog.diff.ts +275 -0
- package/src/core/catalog.filter.ts +96 -0
- package/src/core/catalog.model.test.ts +122 -0
- package/src/core/catalog.model.ts +548 -0
- package/src/core/catalog.snapshot.test.ts +490 -0
- package/src/core/catalog.snapshot.ts +289 -0
- package/src/core/change-utils.test.ts +61 -0
- package/src/core/change-utils.ts +73 -0
- package/src/core/change.types.ts +94 -0
- package/src/core/connection-url.test.ts +142 -0
- package/src/core/connection-url.ts +82 -0
- package/src/core/context.ts +26 -0
- package/src/core/declarative-apply/discover-sql.test.ts +103 -0
- package/src/core/declarative-apply/discover-sql.ts +107 -0
- package/src/core/declarative-apply/extract-catalog-providers.ts +220 -0
- package/src/core/declarative-apply/index.test.ts +67 -0
- package/src/core/declarative-apply/index.ts +205 -0
- package/src/core/declarative-apply/round-apply.test.ts +504 -0
- package/src/core/declarative-apply/round-apply.ts +562 -0
- package/src/core/depend.ts +1895 -0
- package/src/core/expand-replace-dependencies.test.ts +980 -0
- package/src/core/expand-replace-dependencies.ts +707 -0
- package/src/core/export/file-mapper.test.ts +816 -0
- package/src/core/export/file-mapper.ts +579 -0
- package/src/core/export/grouper.ts +108 -0
- package/src/core/export/index.ts +138 -0
- package/src/core/export/types.ts +104 -0
- package/src/core/fingerprint.ts +204 -0
- package/src/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
- package/src/core/integrations/filter/dsl.test.ts +477 -0
- package/src/core/integrations/filter/dsl.ts +305 -0
- package/src/core/integrations/filter/filter.types.ts +3 -0
- package/src/core/integrations/filter/flatten.test.ts +282 -0
- package/src/core/integrations/filter/flatten.ts +166 -0
- package/src/core/integrations/integration-dsl.ts +50 -0
- package/src/core/integrations/integration.types.ts +65 -0
- package/src/core/integrations/merge.test.ts +128 -0
- package/src/core/integrations/merge.ts +72 -0
- package/src/core/integrations/serialize/dsl.test.ts +110 -0
- package/src/core/integrations/serialize/dsl.ts +71 -0
- package/src/core/integrations/serialize/serialize.types.ts +40 -0
- package/src/core/integrations/supabase.test.ts +533 -0
- package/src/core/integrations/supabase.ts +355 -0
- package/src/core/objects/aggregate/aggregate.diff.test.ts +215 -0
- package/src/core/objects/aggregate/aggregate.diff.ts +255 -0
- package/src/core/objects/aggregate/aggregate.model.ts +338 -0
- package/src/core/objects/aggregate/changes/aggregate.alter.test.ts +66 -0
- package/src/core/objects/aggregate/changes/aggregate.alter.ts +33 -0
- package/src/core/objects/aggregate/changes/aggregate.base.ts +24 -0
- package/src/core/objects/aggregate/changes/aggregate.comment.test.ts +89 -0
- package/src/core/objects/aggregate/changes/aggregate.comment.ts +63 -0
- package/src/core/objects/aggregate/changes/aggregate.create.test.ts +104 -0
- package/src/core/objects/aggregate/changes/aggregate.create.ts +330 -0
- package/src/core/objects/aggregate/changes/aggregate.drop.test.ts +82 -0
- package/src/core/objects/aggregate/changes/aggregate.drop.ts +33 -0
- package/src/core/objects/aggregate/changes/aggregate.privilege.test.ts +215 -0
- package/src/core/objects/aggregate/changes/aggregate.privilege.ts +160 -0
- package/src/core/objects/aggregate/changes/aggregate.security-label.ts +99 -0
- package/src/core/objects/aggregate/changes/aggregate.types.ts +15 -0
- package/src/core/objects/base.change.ts +130 -0
- package/src/core/objects/base.default-privileges.ts +204 -0
- package/src/core/objects/base.diff.ts +20 -0
- package/src/core/objects/base.model.test.ts +43 -0
- package/src/core/objects/base.model.ts +87 -0
- package/src/core/objects/base.privilege-diff.ts +447 -0
- package/src/core/objects/base.privilege.ts +191 -0
- package/src/core/objects/collation/changes/collation.alter.test.ts +68 -0
- package/src/core/objects/collation/changes/collation.alter.ts +80 -0
- package/src/core/objects/collation/changes/collation.base.ts +20 -0
- package/src/core/objects/collation/changes/collation.comment.ts +69 -0
- package/src/core/objects/collation/changes/collation.create.test.ts +56 -0
- package/src/core/objects/collation/changes/collation.create.ts +107 -0
- package/src/core/objects/collation/changes/collation.drop.test.ts +31 -0
- package/src/core/objects/collation/changes/collation.drop.ts +38 -0
- package/src/core/objects/collation/changes/collation.types.ts +11 -0
- package/src/core/objects/collation/collation.diff.test.ts +97 -0
- package/src/core/objects/collation/collation.diff.ts +127 -0
- package/src/core/objects/collation/collation.model.ts +224 -0
- package/src/core/objects/diff-context.ts +16 -0
- package/src/core/objects/domain/changes/domain.alter.test.ts +335 -0
- package/src/core/objects/domain/changes/domain.alter.ts +287 -0
- package/src/core/objects/domain/changes/domain.base.ts +24 -0
- package/src/core/objects/domain/changes/domain.comment.ts +60 -0
- package/src/core/objects/domain/changes/domain.create.test.ts +95 -0
- package/src/core/objects/domain/changes/domain.create.ts +141 -0
- package/src/core/objects/domain/changes/domain.drop.test.ts +33 -0
- package/src/core/objects/domain/changes/domain.drop.ts +35 -0
- package/src/core/objects/domain/changes/domain.privilege.ts +172 -0
- package/src/core/objects/domain/changes/domain.security-label.test.ts +56 -0
- package/src/core/objects/domain/changes/domain.security-label.ts +77 -0
- package/src/core/objects/domain/changes/domain.types.ts +15 -0
- package/src/core/objects/domain/domain.diff.test.ts +284 -0
- package/src/core/objects/domain/domain.diff.ts +328 -0
- package/src/core/objects/domain/domain.model.ts +211 -0
- package/src/core/objects/event-trigger/changes/event-trigger.alter.test.ts +57 -0
- package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +83 -0
- package/src/core/objects/event-trigger/changes/event-trigger.base.ts +20 -0
- package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +67 -0
- package/src/core/objects/event-trigger/changes/event-trigger.create.test.ts +27 -0
- package/src/core/objects/event-trigger/changes/event-trigger.create.ts +73 -0
- package/src/core/objects/event-trigger/changes/event-trigger.drop.test.ts +25 -0
- package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +35 -0
- package/src/core/objects/event-trigger/changes/event-trigger.security-label.ts +95 -0
- package/src/core/objects/event-trigger/changes/event-trigger.types.ts +13 -0
- package/src/core/objects/event-trigger/event-trigger.diff.test.ts +131 -0
- package/src/core/objects/event-trigger/event-trigger.diff.ts +160 -0
- package/src/core/objects/event-trigger/event-trigger.model.ts +127 -0
- package/src/core/objects/extension/changes/extension.alter.test.ts +63 -0
- package/src/core/objects/extension/changes/extension.alter.ts +79 -0
- package/src/core/objects/extension/changes/extension.base.ts +20 -0
- package/src/core/objects/extension/changes/extension.comment.ts +65 -0
- package/src/core/objects/extension/changes/extension.create.test.ts +50 -0
- package/src/core/objects/extension/changes/extension.create.ts +66 -0
- package/src/core/objects/extension/changes/extension.drop.test.ts +26 -0
- package/src/core/objects/extension/changes/extension.drop.ts +35 -0
- package/src/core/objects/extension/changes/extension.types.ts +11 -0
- package/src/core/objects/extension/extension.diff.test.ts +42 -0
- package/src/core/objects/extension/extension.diff.ts +90 -0
- package/src/core/objects/extension/extension.model.test.ts +98 -0
- package/src/core/objects/extension/extension.model.ts +280 -0
- package/src/core/objects/extract-with-retry.test.ts +143 -0
- package/src/core/objects/extract-with-retry.ts +87 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.test.ts +166 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +106 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +73 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.test.ts +194 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +98 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.test.ts +26 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +37 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +173 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +13 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.test.ts +286 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.ts +271 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.ts +160 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +11 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.test.ts +361 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +346 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.ts +24 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +73 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.test.ts +264 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +84 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.test.ts +46 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +38 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +182 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.security-label.ts +95 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +15 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.test.ts +813 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.ts +376 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.ts +302 -0
- package/src/core/objects/foreign-data-wrapper/sensitive-options.test.ts +98 -0
- package/src/core/objects/foreign-data-wrapper/sensitive-options.ts +133 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.test.ts +218 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +131 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +61 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.create.test.ts +180 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +84 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.test.ts +27 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +35 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +165 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +13 -0
- package/src/core/objects/foreign-data-wrapper/server/server.diff.test.ts +262 -0
- package/src/core/objects/foreign-data-wrapper/server/server.diff.ts +247 -0
- package/src/core/objects/foreign-data-wrapper/server/server.model.ts +160 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.test.ts +124 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +74 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.ts +20 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.test.ts +132 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +69 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.test.ts +60 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +41 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +9 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.test.ts +77 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.ts +107 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.ts +123 -0
- package/src/core/objects/index/changes/index.alter.test.ts +209 -0
- package/src/core/objects/index/changes/index.alter.ts +145 -0
- package/src/core/objects/index/changes/index.base.ts +20 -0
- package/src/core/objects/index/changes/index.comment.ts +64 -0
- package/src/core/objects/index/changes/index.create.test.ts +69 -0
- package/src/core/objects/index/changes/index.create.ts +69 -0
- package/src/core/objects/index/changes/index.drop.test.ts +47 -0
- package/src/core/objects/index/changes/index.drop.ts +35 -0
- package/src/core/objects/index/changes/index.types.ts +7 -0
- package/src/core/objects/index/changes/utils.ts +16 -0
- package/src/core/objects/index/index.diff.test.ts +153 -0
- package/src/core/objects/index/index.diff.ts +242 -0
- package/src/core/objects/index/index.model.test.ts +119 -0
- package/src/core/objects/index/index.model.ts +398 -0
- package/src/core/objects/language/changes/language.alter.test.ts +36 -0
- package/src/core/objects/language/changes/language.alter.ts +54 -0
- package/src/core/objects/language/changes/language.base.ts +20 -0
- package/src/core/objects/language/changes/language.comment.ts +59 -0
- package/src/core/objects/language/changes/language.create.test.ts +30 -0
- package/src/core/objects/language/changes/language.create.ts +105 -0
- package/src/core/objects/language/changes/language.drop.test.ts +28 -0
- package/src/core/objects/language/changes/language.drop.ts +40 -0
- package/src/core/objects/language/changes/language.privilege.ts +173 -0
- package/src/core/objects/language/changes/language.types.ts +13 -0
- package/src/core/objects/language/language.diff.test.ts +135 -0
- package/src/core/objects/language/language.diff.ts +144 -0
- package/src/core/objects/language/language.model.ts +150 -0
- package/src/core/objects/materialized-view/changes/materialized-view.alter.test.ts +130 -0
- package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +114 -0
- package/src/core/objects/materialized-view/changes/materialized-view.base.ts +24 -0
- package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +177 -0
- package/src/core/objects/materialized-view/changes/materialized-view.create.test.ts +69 -0
- package/src/core/objects/materialized-view/changes/materialized-view.create.ts +94 -0
- package/src/core/objects/materialized-view/changes/materialized-view.drop.test.ts +37 -0
- package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +61 -0
- package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +213 -0
- package/src/core/objects/materialized-view/changes/materialized-view.security-label.test.ts +63 -0
- package/src/core/objects/materialized-view/changes/materialized-view.security-label.ts +95 -0
- package/src/core/objects/materialized-view/changes/materialized-view.types.ts +15 -0
- package/src/core/objects/materialized-view/materialized-view.diff.test.ts +265 -0
- package/src/core/objects/materialized-view/materialized-view.diff.ts +345 -0
- package/src/core/objects/materialized-view/materialized-view.model.test.ts +93 -0
- package/src/core/objects/materialized-view/materialized-view.model.ts +302 -0
- package/src/core/objects/procedure/changes/procedure.alter.test.ts +1077 -0
- package/src/core/objects/procedure/changes/procedure.alter.ts +291 -0
- package/src/core/objects/procedure/changes/procedure.base.ts +24 -0
- package/src/core/objects/procedure/changes/procedure.comment.ts +71 -0
- package/src/core/objects/procedure/changes/procedure.create.test.ts +51 -0
- package/src/core/objects/procedure/changes/procedure.create.ts +93 -0
- package/src/core/objects/procedure/changes/procedure.drop.test.ts +90 -0
- package/src/core/objects/procedure/changes/procedure.drop.ts +50 -0
- package/src/core/objects/procedure/changes/procedure.privilege.ts +189 -0
- package/src/core/objects/procedure/changes/procedure.security-label.ts +105 -0
- package/src/core/objects/procedure/changes/procedure.types.ts +15 -0
- package/src/core/objects/procedure/procedure.diff.test.ts +284 -0
- package/src/core/objects/procedure/procedure.diff.ts +404 -0
- package/src/core/objects/procedure/procedure.model.test.ts +117 -0
- package/src/core/objects/procedure/procedure.model.ts +308 -0
- package/src/core/objects/procedure/utils.ts +58 -0
- package/src/core/objects/publication/changes/publication.alter.test.ts +221 -0
- package/src/core/objects/publication/changes/publication.alter.ts +232 -0
- package/src/core/objects/publication/changes/publication.base.ts +20 -0
- package/src/core/objects/publication/changes/publication.comment.test.ts +73 -0
- package/src/core/objects/publication/changes/publication.comment.ts +65 -0
- package/src/core/objects/publication/changes/publication.create.test.ts +90 -0
- package/src/core/objects/publication/changes/publication.create.ts +83 -0
- package/src/core/objects/publication/changes/publication.drop.test.ts +48 -0
- package/src/core/objects/publication/changes/publication.drop.ts +30 -0
- package/src/core/objects/publication/changes/publication.security-label.ts +95 -0
- package/src/core/objects/publication/changes/publication.types.ts +27 -0
- package/src/core/objects/publication/publication.diff.test.ts +297 -0
- package/src/core/objects/publication/publication.diff.ts +280 -0
- package/src/core/objects/publication/publication.model.ts +229 -0
- package/src/core/objects/publication/utils.ts +55 -0
- package/src/core/objects/rls-policy/changes/rls-policy.alter.test.ts +283 -0
- package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +129 -0
- package/src/core/objects/rls-policy/changes/rls-policy.base.ts +20 -0
- package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +70 -0
- package/src/core/objects/rls-policy/changes/rls-policy.create.test.ts +209 -0
- package/src/core/objects/rls-policy/changes/rls-policy.create.ts +128 -0
- package/src/core/objects/rls-policy/changes/rls-policy.drop.test.ts +33 -0
- package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +40 -0
- package/src/core/objects/rls-policy/changes/rls-policy.types.ts +11 -0
- package/src/core/objects/rls-policy/rls-policy.diff.test.ts +81 -0
- package/src/core/objects/rls-policy/rls-policy.diff.ts +139 -0
- package/src/core/objects/rls-policy/rls-policy.model.ts +273 -0
- package/src/core/objects/role/changes/role.alter.test.ts +362 -0
- package/src/core/objects/role/changes/role.alter.ts +111 -0
- package/src/core/objects/role/changes/role.base.ts +25 -0
- package/src/core/objects/role/changes/role.comment.ts +56 -0
- package/src/core/objects/role/changes/role.create.test.ts +56 -0
- package/src/core/objects/role/changes/role.create.ts +103 -0
- package/src/core/objects/role/changes/role.drop.test.ts +32 -0
- package/src/core/objects/role/changes/role.drop.ts +35 -0
- package/src/core/objects/role/changes/role.privilege.ts +377 -0
- package/src/core/objects/role/changes/role.security-label.ts +77 -0
- package/src/core/objects/role/changes/role.types.ts +15 -0
- package/src/core/objects/role/role.diff.test.ts +279 -0
- package/src/core/objects/role/role.diff.ts +532 -0
- package/src/core/objects/role/role.model.ts +484 -0
- package/src/core/objects/rule/changes/rule.alter.test.ts +82 -0
- package/src/core/objects/rule/changes/rule.alter.ts +73 -0
- package/src/core/objects/rule/changes/rule.base.ts +20 -0
- package/src/core/objects/rule/changes/rule.comment.test.ts +58 -0
- package/src/core/objects/rule/changes/rule.comment.ts +63 -0
- package/src/core/objects/rule/changes/rule.create.test.ts +63 -0
- package/src/core/objects/rule/changes/rule.create.ts +43 -0
- package/src/core/objects/rule/changes/rule.drop.test.ts +40 -0
- package/src/core/objects/rule/changes/rule.drop.ts +30 -0
- package/src/core/objects/rule/changes/rule.types.ts +13 -0
- package/src/core/objects/rule/rule.diff.test.ts +132 -0
- package/src/core/objects/rule/rule.diff.ts +79 -0
- package/src/core/objects/rule/rule.model.test.ts +99 -0
- package/src/core/objects/rule/rule.model.ts +197 -0
- package/src/core/objects/schema/changes/schema.alter.test.ts +32 -0
- package/src/core/objects/schema/changes/schema.alter.ts +46 -0
- package/src/core/objects/schema/changes/schema.base.ts +24 -0
- package/src/core/objects/schema/changes/schema.comment.ts +57 -0
- package/src/core/objects/schema/changes/schema.create.test.ts +26 -0
- package/src/core/objects/schema/changes/schema.create.ts +47 -0
- package/src/core/objects/schema/changes/schema.drop.test.ts +24 -0
- package/src/core/objects/schema/changes/schema.drop.ts +35 -0
- package/src/core/objects/schema/changes/schema.privilege.ts +176 -0
- package/src/core/objects/schema/changes/schema.security-label.test.ts +76 -0
- package/src/core/objects/schema/changes/schema.security-label.ts +77 -0
- package/src/core/objects/schema/changes/schema.types.ts +15 -0
- package/src/core/objects/schema/schema.diff.test.ts +43 -0
- package/src/core/objects/schema/schema.diff.ts +188 -0
- package/src/core/objects/schema/schema.model.ts +127 -0
- package/src/core/objects/security-label.types.test.ts +106 -0
- package/src/core/objects/security-label.types.ts +61 -0
- package/src/core/objects/sequence/changes/sequence.alter.test.ts +157 -0
- package/src/core/objects/sequence/changes/sequence.alter.ts +116 -0
- package/src/core/objects/sequence/changes/sequence.base.ts +24 -0
- package/src/core/objects/sequence/changes/sequence.comment.ts +61 -0
- package/src/core/objects/sequence/changes/sequence.create.test.ts +89 -0
- package/src/core/objects/sequence/changes/sequence.create.ts +112 -0
- package/src/core/objects/sequence/changes/sequence.drop.test.ts +35 -0
- package/src/core/objects/sequence/changes/sequence.drop.ts +50 -0
- package/src/core/objects/sequence/changes/sequence.privilege.ts +180 -0
- package/src/core/objects/sequence/changes/sequence.security-label.test.ts +58 -0
- package/src/core/objects/sequence/changes/sequence.security-label.ts +92 -0
- package/src/core/objects/sequence/changes/sequence.types.ts +15 -0
- package/src/core/objects/sequence/sequence.diff.test.ts +521 -0
- package/src/core/objects/sequence/sequence.diff.ts +392 -0
- package/src/core/objects/sequence/sequence.model.ts +206 -0
- package/src/core/objects/subscription/changes/subscription.alter.test.ts +134 -0
- package/src/core/objects/subscription/changes/subscription.alter.ts +117 -0
- package/src/core/objects/subscription/changes/subscription.base.ts +20 -0
- package/src/core/objects/subscription/changes/subscription.comment.test.ts +70 -0
- package/src/core/objects/subscription/changes/subscription.comment.ts +65 -0
- package/src/core/objects/subscription/changes/subscription.create.test.ts +83 -0
- package/src/core/objects/subscription/changes/subscription.create.ts +79 -0
- package/src/core/objects/subscription/changes/subscription.drop.test.ts +48 -0
- package/src/core/objects/subscription/changes/subscription.drop.ts +27 -0
- package/src/core/objects/subscription/changes/subscription.security-label.ts +95 -0
- package/src/core/objects/subscription/changes/subscription.traits.test.ts +83 -0
- package/src/core/objects/subscription/changes/subscription.types.ts +25 -0
- package/src/core/objects/subscription/subscription.diff.test.ts +237 -0
- package/src/core/objects/subscription/subscription.diff.ts +275 -0
- package/src/core/objects/subscription/subscription.model.ts +211 -0
- package/src/core/objects/subscription/utils.ts +156 -0
- package/src/core/objects/table/changes/table.alter.test.ts +902 -0
- package/src/core/objects/table/changes/table.alter.ts +975 -0
- package/src/core/objects/table/changes/table.base.ts +24 -0
- package/src/core/objects/table/changes/table.comment.ts +261 -0
- package/src/core/objects/table/changes/table.create.test.ts +188 -0
- package/src/core/objects/table/changes/table.create.ts +193 -0
- package/src/core/objects/table/changes/table.drop.test.ts +36 -0
- package/src/core/objects/table/changes/table.drop.ts +87 -0
- package/src/core/objects/table/changes/table.privilege.ts +201 -0
- package/src/core/objects/table/changes/table.security-label.test.ts +140 -0
- package/src/core/objects/table/changes/table.security-label.ts +183 -0
- package/src/core/objects/table/changes/table.types.ts +15 -0
- package/src/core/objects/table/table.diff.test.ts +1382 -0
- package/src/core/objects/table/table.diff.ts +1034 -0
- package/src/core/objects/table/table.model.test.ts +209 -0
- package/src/core/objects/table/table.model.ts +555 -0
- package/src/core/objects/trigger/changes/trigger.alter.test.ts +50 -0
- package/src/core/objects/trigger/changes/trigger.alter.ts +74 -0
- package/src/core/objects/trigger/changes/trigger.base.ts +20 -0
- package/src/core/objects/trigger/changes/trigger.comment.ts +65 -0
- package/src/core/objects/trigger/changes/trigger.create.test.ts +47 -0
- package/src/core/objects/trigger/changes/trigger.create.ts +89 -0
- package/src/core/objects/trigger/changes/trigger.drop.test.ts +47 -0
- package/src/core/objects/trigger/changes/trigger.drop.ts +40 -0
- package/src/core/objects/trigger/changes/trigger.types.ts +11 -0
- package/src/core/objects/trigger/trigger.diff.test.ts +84 -0
- package/src/core/objects/trigger/trigger.diff.ts +121 -0
- package/src/core/objects/trigger/trigger.model.test.ts +113 -0
- package/src/core/objects/trigger/trigger.model.ts +291 -0
- package/src/core/objects/type/composite-type/changes/composite-type.alter.test.ts +208 -0
- package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +175 -0
- package/src/core/objects/type/composite-type/changes/composite-type.base.ts +24 -0
- package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +146 -0
- package/src/core/objects/type/composite-type/changes/composite-type.create.test.ts +106 -0
- package/src/core/objects/type/composite-type/changes/composite-type.create.ts +96 -0
- package/src/core/objects/type/composite-type/changes/composite-type.drop.test.ts +36 -0
- package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +38 -0
- package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +176 -0
- package/src/core/objects/type/composite-type/changes/composite-type.security-label.ts +95 -0
- package/src/core/objects/type/composite-type/changes/composite-type.types.ts +15 -0
- package/src/core/objects/type/composite-type/composite-type.diff.test.ts +269 -0
- package/src/core/objects/type/composite-type/composite-type.diff.ts +343 -0
- package/src/core/objects/type/composite-type/composite-type.model.ts +277 -0
- package/src/core/objects/type/enum/changes/enum.alter.test.ts +113 -0
- package/src/core/objects/type/enum/changes/enum.alter.ts +97 -0
- package/src/core/objects/type/enum/changes/enum.base.ts +24 -0
- package/src/core/objects/type/enum/changes/enum.comment.ts +65 -0
- package/src/core/objects/type/enum/changes/enum.create.test.ts +31 -0
- package/src/core/objects/type/enum/changes/enum.create.ts +57 -0
- package/src/core/objects/type/enum/changes/enum.drop.test.ts +28 -0
- package/src/core/objects/type/enum/changes/enum.drop.ts +35 -0
- package/src/core/objects/type/enum/changes/enum.privilege.ts +176 -0
- package/src/core/objects/type/enum/changes/enum.security-label.ts +77 -0
- package/src/core/objects/type/enum/changes/enum.types.ts +15 -0
- package/src/core/objects/type/enum/enum.diff.test.ts +372 -0
- package/src/core/objects/type/enum/enum.diff.ts +341 -0
- package/src/core/objects/type/enum/enum.model.ts +218 -0
- package/src/core/objects/type/range/changes/range.alter.test.ts +29 -0
- package/src/core/objects/type/range/changes/range.alter.ts +52 -0
- package/src/core/objects/type/range/changes/range.base.ts +24 -0
- package/src/core/objects/type/range/changes/range.comment.ts +65 -0
- package/src/core/objects/type/range/changes/range.create.test.ts +54 -0
- package/src/core/objects/type/range/changes/range.create.ts +156 -0
- package/src/core/objects/type/range/changes/range.drop.test.ts +28 -0
- package/src/core/objects/type/range/changes/range.drop.ts +35 -0
- package/src/core/objects/type/range/changes/range.privilege.ts +176 -0
- package/src/core/objects/type/range/changes/range.security-label.ts +77 -0
- package/src/core/objects/type/range/changes/range.types.ts +15 -0
- package/src/core/objects/type/range/range.diff.test.ts +147 -0
- package/src/core/objects/type/range/range.diff.ts +230 -0
- package/src/core/objects/type/range/range.model.ts +208 -0
- package/src/core/objects/type/type.types.ts +6 -0
- package/src/core/objects/utils.ts +177 -0
- package/src/core/objects/view/changes/view.alter.test.ts +115 -0
- package/src/core/objects/view/changes/view.alter.ts +113 -0
- package/src/core/objects/view/changes/view.base.ts +24 -0
- package/src/core/objects/view/changes/view.comment.ts +60 -0
- package/src/core/objects/view/changes/view.create.test.ts +70 -0
- package/src/core/objects/view/changes/view.create.ts +74 -0
- package/src/core/objects/view/changes/view.drop.test.ts +37 -0
- package/src/core/objects/view/changes/view.drop.ts +41 -0
- package/src/core/objects/view/changes/view.privilege.ts +201 -0
- package/src/core/objects/view/changes/view.security-label.test.ts +64 -0
- package/src/core/objects/view/changes/view.security-label.ts +77 -0
- package/src/core/objects/view/changes/view.types.ts +15 -0
- package/src/core/objects/view/view.diff.test.ts +269 -0
- package/src/core/objects/view/view.diff.ts +268 -0
- package/src/core/objects/view/view.model.test.ts +90 -0
- package/src/core/objects/view/view.model.ts +308 -0
- package/src/core/plan/apply.ts +217 -0
- package/src/core/plan/create.ts +329 -0
- package/src/core/plan/execution.test.ts +231 -0
- package/src/core/plan/execution.ts +115 -0
- package/src/core/plan/hierarchy.ts +574 -0
- package/src/core/plan/index.ts +29 -0
- package/src/core/plan/io.ts +22 -0
- package/src/core/plan/normalize.test.ts +69 -0
- package/src/core/plan/normalize.ts +40 -0
- package/src/core/plan/render.test.ts +134 -0
- package/src/core/plan/render.ts +153 -0
- package/src/core/plan/risk.ts +48 -0
- package/src/core/plan/serialize.test.ts +317 -0
- package/src/core/plan/serialize.ts +209 -0
- package/src/core/plan/sql-format/constants.ts +13 -0
- package/src/core/plan/sql-format/fixtures.ts +2812 -0
- package/src/core/plan/sql-format/format-comment-literals.test.ts +96 -0
- package/src/core/plan/sql-format/format-functions.test.ts +127 -0
- package/src/core/plan/sql-format/format-lowercase-coverage.test.ts +119 -0
- package/src/core/plan/sql-format/format-off.test.ts +806 -0
- package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1062 -0
- package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1281 -0
- package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1058 -0
- package/src/core/plan/sql-format/format-pretty-upper.test.ts +1049 -0
- package/src/core/plan/sql-format/format-stress.test.ts +616 -0
- package/src/core/plan/sql-format/format-utils.test.ts +91 -0
- package/src/core/plan/sql-format/format-utils.ts +391 -0
- package/src/core/plan/sql-format/formatters.ts +921 -0
- package/src/core/plan/sql-format/index.ts +149 -0
- package/src/core/plan/sql-format/keyword-case.test.ts +118 -0
- package/src/core/plan/sql-format/keyword-case.ts +1120 -0
- package/src/core/plan/sql-format/protect.test.ts +127 -0
- package/src/core/plan/sql-format/protect.ts +337 -0
- package/src/core/plan/sql-format/sql-scanner.test.ts +240 -0
- package/src/core/plan/sql-format/sql-scanner.ts +252 -0
- package/src/core/plan/sql-format/tokenizer.test.ts +68 -0
- package/src/core/plan/sql-format/tokenizer.ts +152 -0
- package/src/core/plan/sql-format/types.ts +31 -0
- package/src/core/plan/sql-format/wrap.test.ts +119 -0
- package/src/core/plan/sql-format/wrap.ts +196 -0
- package/src/core/plan/sql-format.ts +2 -0
- package/src/core/plan/ssl-config.ts +172 -0
- package/src/core/plan/statements.ts +22 -0
- package/src/core/plan/types.ts +236 -0
- package/src/core/post-diff-normalization.test.ts +590 -0
- package/src/core/post-diff-normalization.ts +296 -0
- package/src/core/postgres-config.test.ts +374 -0
- package/src/core/postgres-config.ts +474 -0
- package/src/core/sort/custom-constraints.ts +235 -0
- package/src/core/sort/cycle-breakers.test.ts +836 -0
- package/src/core/sort/cycle-breakers.ts +481 -0
- package/src/core/sort/debug-visualization.ts +239 -0
- package/src/core/sort/dependency-filter.ts +224 -0
- package/src/core/sort/graph-builder.ts +241 -0
- package/src/core/sort/graph-utils.ts +51 -0
- package/src/core/sort/logical-sort.test.ts +371 -0
- package/src/core/sort/logical-sort.ts +573 -0
- package/src/core/sort/sort-changes.test.ts +390 -0
- package/src/core/sort/sort-changes.ts +324 -0
- package/src/core/sort/topological-sort.test.ts +275 -0
- package/src/core/sort/topological-sort.ts +184 -0
- package/src/core/sort/types.ts +112 -0
- package/src/core/sort/unorderable-cycle-error.test.ts +60 -0
- package/src/core/sort/unorderable-cycle-error.ts +23 -0
- package/src/core/sort/utils.ts +107 -0
- package/src/core/test-utils/assert-valid-sql.ts +20 -0
- package/src/index.ts +58 -0
- package/src/typedoc.ts +253 -0
- package/dist/core/integrations/filter/extractors.d.ts +0 -12
- package/dist/core/integrations/filter/extractors.js +0 -136
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { getSchema } from "../
|
|
1
|
+
import { getSchema } from "../change-utils.js";
|
|
2
2
|
import { GrantRoleDefaultPrivileges, RevokeRoleDefaultPrivileges, } from "../objects/role/changes/role.privilege.js";
|
|
3
|
+
import { AlterTableAlterColumnAddIdentity, AlterTableAlterColumnDropDefault, AlterTableAlterColumnDropIdentity, AlterTableAlterColumnSetDefault, } from "../objects/table/changes/table.alter.js";
|
|
3
4
|
/**
|
|
4
5
|
* Maps object type names to PostgreSQL default privilege objtype codes.
|
|
5
6
|
* This mirrors the mapping in base.default-privileges.ts.
|
|
@@ -116,11 +117,74 @@ function generateDefaultPrivilegeConstraints(changes) {
|
|
|
116
117
|
}
|
|
117
118
|
return constraints;
|
|
118
119
|
}
|
|
120
|
+
function generateIdentityTransitionConstraints(changes) {
|
|
121
|
+
const constraints = [];
|
|
122
|
+
const dropDefaultByColumn = new Map();
|
|
123
|
+
const dropIdentityByColumn = new Map();
|
|
124
|
+
const addIdentityByColumn = new Map();
|
|
125
|
+
const setDefaultByColumn = new Map();
|
|
126
|
+
for (let i = 0; i < changes.length; i++) {
|
|
127
|
+
const change = changes[i];
|
|
128
|
+
const columnKey = "table" in change && "column" in change
|
|
129
|
+
? `${change.table.schema}.${change.table.name}.${change.column.name}`
|
|
130
|
+
: null;
|
|
131
|
+
if (!columnKey)
|
|
132
|
+
continue;
|
|
133
|
+
if (change instanceof AlterTableAlterColumnDropDefault) {
|
|
134
|
+
const entries = dropDefaultByColumn.get(columnKey) ?? [];
|
|
135
|
+
entries.push(i);
|
|
136
|
+
dropDefaultByColumn.set(columnKey, entries);
|
|
137
|
+
}
|
|
138
|
+
else if (change instanceof AlterTableAlterColumnAddIdentity) {
|
|
139
|
+
const entries = addIdentityByColumn.get(columnKey) ?? [];
|
|
140
|
+
entries.push(i);
|
|
141
|
+
addIdentityByColumn.set(columnKey, entries);
|
|
142
|
+
}
|
|
143
|
+
else if (change instanceof AlterTableAlterColumnDropIdentity) {
|
|
144
|
+
const entries = dropIdentityByColumn.get(columnKey) ?? [];
|
|
145
|
+
entries.push(i);
|
|
146
|
+
dropIdentityByColumn.set(columnKey, entries);
|
|
147
|
+
}
|
|
148
|
+
else if (change instanceof AlterTableAlterColumnSetDefault) {
|
|
149
|
+
const entries = setDefaultByColumn.get(columnKey) ?? [];
|
|
150
|
+
entries.push(i);
|
|
151
|
+
setDefaultByColumn.set(columnKey, entries);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// These rules only order same-column ALTERs inside the create/alter phase.
|
|
155
|
+
// Sequence drops are handled separately in the earlier drop phase.
|
|
156
|
+
for (const [columnKey, dropDefaultIndexes] of dropDefaultByColumn) {
|
|
157
|
+
const addIdentityIndexes = addIdentityByColumn.get(columnKey) ?? [];
|
|
158
|
+
for (const sourceIndex of dropDefaultIndexes) {
|
|
159
|
+
for (const targetIndex of addIdentityIndexes) {
|
|
160
|
+
constraints.push({
|
|
161
|
+
sourceChangeIndex: sourceIndex,
|
|
162
|
+
targetChangeIndex: targetIndex,
|
|
163
|
+
source: "custom",
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
for (const [columnKey, dropIdentityIndexes] of dropIdentityByColumn) {
|
|
169
|
+
const setDefaultIndexes = setDefaultByColumn.get(columnKey) ?? [];
|
|
170
|
+
for (const sourceIndex of dropIdentityIndexes) {
|
|
171
|
+
for (const targetIndex of setDefaultIndexes) {
|
|
172
|
+
constraints.push({
|
|
173
|
+
sourceChangeIndex: sourceIndex,
|
|
174
|
+
targetChangeIndex: targetIndex,
|
|
175
|
+
source: "custom",
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return constraints;
|
|
181
|
+
}
|
|
119
182
|
/**
|
|
120
183
|
* All custom constraint generators.
|
|
121
184
|
*/
|
|
122
185
|
const customConstraintGenerators = [
|
|
123
186
|
generateDefaultPrivilegeConstraints,
|
|
187
|
+
generateIdentityTransitionConstraints,
|
|
124
188
|
];
|
|
125
189
|
/**
|
|
126
190
|
* Generate Constraints from custom constraint generators.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Change } from "../change.types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Try to break an unbreakable cycle by INJECTING NEW CHANGES or REWRITING
|
|
4
|
+
* existing ones (rather than removing graph edges).
|
|
5
|
+
*
|
|
6
|
+
* Called by `sortPhaseChanges` when its edge-removal cycle handler has seen
|
|
7
|
+
* the same cycle twice — i.e. weak-edge filtering exhausted itself but the
|
|
8
|
+
* cycle is still there. At that point we know the cycle is composed of
|
|
9
|
+
* "hard" edges (explicit `requires` or pg_depend rows) that can only be
|
|
10
|
+
* broken by changing the change list itself.
|
|
11
|
+
*
|
|
12
|
+
* Returns a rewritten `phaseChanges` array, or `null` if no breaker matches
|
|
13
|
+
* (in which case the caller throws the existing CycleError).
|
|
14
|
+
*/
|
|
15
|
+
export declare function tryBreakCycleByChangeInjection(cycleNodeIndexes: readonly number[], phaseChanges: readonly Change[]): Change[] | null;
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { AlterPublicationDropTables } from "../objects/publication/changes/publication.alter.js";
|
|
2
|
+
import { AlterTableDropColumn, AlterTableDropConstraint, } from "../objects/table/changes/table.alter.js";
|
|
3
|
+
import { DropTable } from "../objects/table/changes/table.drop.js";
|
|
4
|
+
import { stableId } from "../objects/utils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Try to break an unbreakable cycle by INJECTING NEW CHANGES or REWRITING
|
|
7
|
+
* existing ones (rather than removing graph edges).
|
|
8
|
+
*
|
|
9
|
+
* Called by `sortPhaseChanges` when its edge-removal cycle handler has seen
|
|
10
|
+
* the same cycle twice — i.e. weak-edge filtering exhausted itself but the
|
|
11
|
+
* cycle is still there. At that point we know the cycle is composed of
|
|
12
|
+
* "hard" edges (explicit `requires` or pg_depend rows) that can only be
|
|
13
|
+
* broken by changing the change list itself.
|
|
14
|
+
*
|
|
15
|
+
* Returns a rewritten `phaseChanges` array, or `null` if no breaker matches
|
|
16
|
+
* (in which case the caller throws the existing CycleError).
|
|
17
|
+
*/
|
|
18
|
+
export function tryBreakCycleByChangeInjection(cycleNodeIndexes, phaseChanges) {
|
|
19
|
+
// ─── Branch A: FK cycle among DropTable changes ──────────────────────
|
|
20
|
+
// Triggered when N≥2 dropped tables reference each other via foreign
|
|
21
|
+
// keys. With no surviving table on either side, every FK constraint
|
|
22
|
+
// stable-id ends up tied back to a DropTable node, and every
|
|
23
|
+
// pg_depend row produces a hard explicit edge between two DropTables.
|
|
24
|
+
// Edge filtering can't break it — the edges are not weak.
|
|
25
|
+
//
|
|
26
|
+
// Example (3-cycle):
|
|
27
|
+
// DROP TABLE a; DROP TABLE b; DROP TABLE c;
|
|
28
|
+
// where a.b_id REFERENCES b, b.c_id REFERENCES c, c.a_id REFERENCES a
|
|
29
|
+
//
|
|
30
|
+
// Fix: inject a dedicated `ALTER TABLE ... DROP CONSTRAINT fk` ahead of
|
|
31
|
+
// each DropTable in the cycle, and mark the constraint name on
|
|
32
|
+
// `DropTable.externallyDroppedConstraints` so the table drop won't try
|
|
33
|
+
// to re-claim the same constraint stable-id. The injected drops have
|
|
34
|
+
// their own stable-id ownership and run before any DropTable, breaking
|
|
35
|
+
// the cycle.
|
|
36
|
+
//
|
|
37
|
+
// This naturally handles any N (2-cycle, 3-cycle, …) because
|
|
38
|
+
// `findCycle` already gave us the full member list — no separate SCC
|
|
39
|
+
// enumeration needed.
|
|
40
|
+
const fkBroken = tryBreakFkCycle(cycleNodeIndexes, phaseChanges);
|
|
41
|
+
if (fkBroken)
|
|
42
|
+
return fkBroken;
|
|
43
|
+
// ─── Branch B: Publication ↔ Column on a surviving table ─────────────
|
|
44
|
+
// Triggered when a publication has an explicit column list and one of
|
|
45
|
+
// those columns is dropped on a table that itself is NOT being dropped
|
|
46
|
+
// (the table just loses one column).
|
|
47
|
+
//
|
|
48
|
+
// Example:
|
|
49
|
+
// CREATE PUBLICATION p FOR TABLE lab_results (id, flash_summary);
|
|
50
|
+
// ALTER TABLE lab_results DROP COLUMN flash_summary;
|
|
51
|
+
//
|
|
52
|
+
// Diff emits two drop-phase changes:
|
|
53
|
+
// AlterPublicationDropTables(p, [lab_results])
|
|
54
|
+
// AlterTableDropColumn(lab_results.flash_summary)
|
|
55
|
+
//
|
|
56
|
+
// The cycle:
|
|
57
|
+
// pub:p → col:lab_results.flash_summary (catalog, pg_depend)
|
|
58
|
+
// col:lab_results.flash_summary → table:lab_results
|
|
59
|
+
// (explicit, AlterTableDropColumn.requires)
|
|
60
|
+
//
|
|
61
|
+
// Fix: rebuild the AlterTableDropColumn with `omitTableRequirement=true`
|
|
62
|
+
// so it no longer requires `table:lab_results`. Safe because
|
|
63
|
+
// `lab_results` survives the migration; its lifetime trivially covers
|
|
64
|
+
// the column drop. The catalog edge `pub → col` correctly orders the
|
|
65
|
+
// publication drop before the column drop.
|
|
66
|
+
const pubColBroken = tryBreakPublicationColumnCycle(cycleNodeIndexes, phaseChanges);
|
|
67
|
+
if (pubColBroken)
|
|
68
|
+
return pubColBroken;
|
|
69
|
+
// ─── Branch C: Publication ↔ dropped FK chain ↔ constraint drop ──────
|
|
70
|
+
// Triggered when publication membership is being removed for tables in
|
|
71
|
+
// the same drop phase as a FK chain, and the chain ends at a separately
|
|
72
|
+
// emitted `AlterTableDropConstraint` on a table that is also being
|
|
73
|
+
// removed from the publication.
|
|
74
|
+
//
|
|
75
|
+
// Example (4-change cycle):
|
|
76
|
+
// AlterPublicationDropTables(p, [labs, posts, post_attachments])
|
|
77
|
+
// DropTable(post_attachments)
|
|
78
|
+
// DropTable(posts)
|
|
79
|
+
// AlterTableDropConstraint(labs.unique_lab_id)
|
|
80
|
+
//
|
|
81
|
+
// Cycle:
|
|
82
|
+
// publication:p → table:post_attachments
|
|
83
|
+
// post_attachments.post_id_fkey → column:posts.id
|
|
84
|
+
// posts.lab_id_fkey → constraint:labs.unique_lab_id
|
|
85
|
+
// constraint:labs.unique_lab_id → table:labs
|
|
86
|
+
//
|
|
87
|
+
// Fix: inject explicit FK drops for the FK constraints claimed by the
|
|
88
|
+
// DropTables in the cycle, including FKs that point at the terminal
|
|
89
|
+
// dropped constraint. The publication and terminal constraint changes
|
|
90
|
+
// stay unchanged; only the intermediate FK ownership is reassigned from
|
|
91
|
+
// DropTable to dedicated AlterTableDropConstraint changes.
|
|
92
|
+
const pubFkConstraintBroken = tryBreakPublicationFkConstraintDropCycle(cycleNodeIndexes, phaseChanges);
|
|
93
|
+
if (pubFkConstraintBroken)
|
|
94
|
+
return pubFkConstraintBroken;
|
|
95
|
+
// No known pattern. Returning null lets sortPhaseChanges throw the
|
|
96
|
+
// formatted CycleError with full diagnostic — better a clear bug
|
|
97
|
+
// report than silently shipping a broken plan.
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Branch A worker — inject `AlterTableDropConstraint` for every FK linking
|
|
102
|
+
* two DropTables in the cycle.
|
|
103
|
+
*
|
|
104
|
+
* Returns the rewritten changes array, or `null` if the cycle does not
|
|
105
|
+
* match (e.g. mixed types, or no cross-cycle FK exists).
|
|
106
|
+
*/
|
|
107
|
+
function tryBreakFkCycle(cycleNodeIndexes, phaseChanges) {
|
|
108
|
+
// Guard: every member of the cycle must be a DropTable. Mixed cycles
|
|
109
|
+
// (e.g. DropTable + DropView, or DropTable + DropMaterializedView) are
|
|
110
|
+
// out of scope — they need a different breaker.
|
|
111
|
+
const cycleDropTables = [];
|
|
112
|
+
for (const nodeIndex of cycleNodeIndexes) {
|
|
113
|
+
const change = phaseChanges[nodeIndex];
|
|
114
|
+
if (!(change instanceof DropTable))
|
|
115
|
+
return null;
|
|
116
|
+
cycleDropTables.push(change);
|
|
117
|
+
}
|
|
118
|
+
const cycleTableIds = new Set(cycleDropTables.map((change) => change.table.stableId));
|
|
119
|
+
return injectFkConstraintDropsForDropTables({
|
|
120
|
+
phaseChanges,
|
|
121
|
+
dropTables: cycleDropTables,
|
|
122
|
+
shouldInject: (fk, tableId) => isCrossCycleFkConstraint(fk, tableId, cycleTableIds),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Shared FK-drop injection used by Branch A and Branch C. The caller owns
|
|
127
|
+
* the cycle-specific matcher; this helper only handles the mechanical
|
|
128
|
+
* rewrite: add dedicated `AlterTableDropConstraint` changes and rebuild
|
|
129
|
+
* affected `DropTable`s with updated `externallyDroppedConstraints`.
|
|
130
|
+
*/
|
|
131
|
+
function injectFkConstraintDropsForDropTables({ phaseChanges, dropTables, shouldInject, }) {
|
|
132
|
+
// For each DropTable in the cycle, find every FK whose referenced table
|
|
133
|
+
// is also in the cycle. Each such FK becomes one injected
|
|
134
|
+
// `AlterTableDropConstraint` and one entry on the source table's
|
|
135
|
+
// `externallyDroppedConstraints`.
|
|
136
|
+
//
|
|
137
|
+
// 2-cycle example: { A→B, B→A } — two FKs, two injected drops.
|
|
138
|
+
// 3-cycle example: { A→B, B→C, C→A } — three FKs, three injected drops.
|
|
139
|
+
const injectedDropsByTableId = new Map();
|
|
140
|
+
const updatedExternalsByTableId = new Map();
|
|
141
|
+
let didMutate = false;
|
|
142
|
+
for (const dropTable of dropTables) {
|
|
143
|
+
const tableId = dropTable.table.stableId;
|
|
144
|
+
const existingExternals = new Set(dropTable.externallyDroppedConstraints);
|
|
145
|
+
let tableMutated = false;
|
|
146
|
+
for (const fk of iterFkConstraints(dropTable.table.constraints)) {
|
|
147
|
+
if (!shouldInject(fk, tableId))
|
|
148
|
+
continue;
|
|
149
|
+
// Skip if a same-table `AlterTableDropConstraint` is already in the
|
|
150
|
+
// change list — could happen if a previous breaker iteration
|
|
151
|
+
// injected one, or the diff layer emitted one explicitly.
|
|
152
|
+
if (existingExternals.has(fk.name))
|
|
153
|
+
continue;
|
|
154
|
+
if (alreadyHasExplicitDrop(phaseChanges, tableId, fk.name))
|
|
155
|
+
continue;
|
|
156
|
+
const injected = new AlterTableDropConstraint({
|
|
157
|
+
table: dropTable.table,
|
|
158
|
+
constraint: fk,
|
|
159
|
+
});
|
|
160
|
+
const list = injectedDropsByTableId.get(tableId) ?? [];
|
|
161
|
+
list.push(injected);
|
|
162
|
+
injectedDropsByTableId.set(tableId, list);
|
|
163
|
+
existingExternals.add(fk.name);
|
|
164
|
+
tableMutated = true;
|
|
165
|
+
didMutate = true;
|
|
166
|
+
}
|
|
167
|
+
if (tableMutated) {
|
|
168
|
+
updatedExternalsByTableId.set(tableId, existingExternals);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (!didMutate)
|
|
172
|
+
return null;
|
|
173
|
+
// Rebuild phaseChanges: keep all non-DropTable changes in place. For
|
|
174
|
+
// each DropTable in the cycle that gained injected drops, emit the
|
|
175
|
+
// injected drops first, then a fresh DropTable carrying the updated
|
|
176
|
+
// `externallyDroppedConstraints` so it stops claiming the FK
|
|
177
|
+
// stable-ids.
|
|
178
|
+
const rewritten = [];
|
|
179
|
+
for (const change of phaseChanges) {
|
|
180
|
+
if (!(change instanceof DropTable)) {
|
|
181
|
+
rewritten.push(change);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const tableId = change.table.stableId;
|
|
185
|
+
const injected = injectedDropsByTableId.get(tableId);
|
|
186
|
+
if (injected) {
|
|
187
|
+
rewritten.push(...injected);
|
|
188
|
+
}
|
|
189
|
+
const updatedExternals = updatedExternalsByTableId.get(tableId);
|
|
190
|
+
if (updatedExternals) {
|
|
191
|
+
rewritten.push(new DropTable({
|
|
192
|
+
table: change.table,
|
|
193
|
+
externallyDroppedConstraints: updatedExternals,
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
rewritten.push(change);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return rewritten;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Yield FK constraints on `constraints`.
|
|
204
|
+
*
|
|
205
|
+
* Partition clones are skipped because PostgreSQL drops them when the
|
|
206
|
+
* parent constraint is dropped.
|
|
207
|
+
*/
|
|
208
|
+
function* iterFkConstraints(constraints) {
|
|
209
|
+
for (const constraint of constraints) {
|
|
210
|
+
if (constraint.constraint_type !== "f")
|
|
211
|
+
continue;
|
|
212
|
+
if (constraint.is_partition_clone)
|
|
213
|
+
continue;
|
|
214
|
+
yield constraint;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* True when `constraint` references another DropTable in the cycle.
|
|
219
|
+
*
|
|
220
|
+
* Self-referencing FKs are skipped — they create a self-loop in the
|
|
221
|
+
* dependency graph which the existing sort-phase handler resolves on its
|
|
222
|
+
* own; injecting an `AlterTableDropConstraint` for a self-FK would just
|
|
223
|
+
* add noise.
|
|
224
|
+
*/
|
|
225
|
+
function isCrossCycleFkConstraint(constraint, ownTableId, cycleTableIds) {
|
|
226
|
+
if (!constraint.foreign_key_schema || !constraint.foreign_key_table) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
const referencedId = stableId.table(constraint.foreign_key_schema, constraint.foreign_key_table);
|
|
230
|
+
if (referencedId === ownTableId)
|
|
231
|
+
return false;
|
|
232
|
+
return cycleTableIds.has(referencedId);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* True iff `phaseChanges` already contains an explicit
|
|
236
|
+
* `AlterTableDropConstraint(table, constraint)` for the given pair —
|
|
237
|
+
* either emitted by the diff layer or by a previous breaker iteration.
|
|
238
|
+
* Avoids duplicate constraint drops.
|
|
239
|
+
*/
|
|
240
|
+
function alreadyHasExplicitDrop(phaseChanges, tableId, constraintName) {
|
|
241
|
+
for (const change of phaseChanges) {
|
|
242
|
+
if (!(change instanceof AlterTableDropConstraint))
|
|
243
|
+
continue;
|
|
244
|
+
if (change.table.stableId !== tableId)
|
|
245
|
+
continue;
|
|
246
|
+
if (change.constraint.name === constraintName)
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Branch B worker — break the publication↔column cycle by rebuilding the
|
|
253
|
+
* `AlterTableDropColumn` change with `omitTableRequirement=true`.
|
|
254
|
+
*
|
|
255
|
+
* Returns the rewritten changes array, or `null` if the cycle does not
|
|
256
|
+
* match (e.g. table is also being dropped, or no `AlterPublicationDropTables`
|
|
257
|
+
* references the table).
|
|
258
|
+
*/
|
|
259
|
+
function tryBreakPublicationColumnCycle(cycleNodeIndexes, phaseChanges) {
|
|
260
|
+
// Find an `AlterTableDropColumn` and an `AlterPublicationDropTables` in
|
|
261
|
+
// the cycle that reference the same table. Both must be present —
|
|
262
|
+
// otherwise this is a different cycle shape.
|
|
263
|
+
let dropColumnIndex = -1;
|
|
264
|
+
let dropColumnChange = null;
|
|
265
|
+
let pubMatchesTable = false;
|
|
266
|
+
let pubChange = null;
|
|
267
|
+
for (const nodeIndex of cycleNodeIndexes) {
|
|
268
|
+
const change = phaseChanges[nodeIndex];
|
|
269
|
+
if (change instanceof AlterTableDropColumn &&
|
|
270
|
+
!change.omitTableRequirement) {
|
|
271
|
+
dropColumnIndex = nodeIndex;
|
|
272
|
+
dropColumnChange = change;
|
|
273
|
+
}
|
|
274
|
+
else if (change instanceof AlterPublicationDropTables) {
|
|
275
|
+
pubChange = change;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
if (dropColumnChange === null || pubChange === null)
|
|
279
|
+
return null;
|
|
280
|
+
// Verify the publication is actually dropping membership for the same
|
|
281
|
+
// table whose column is being dropped. Without this check we'd risk
|
|
282
|
+
// rewriting an unrelated AlterTableDropColumn that happens to share a
|
|
283
|
+
// cycle with some other publication change.
|
|
284
|
+
const targetTableId = dropColumnChange.table.stableId;
|
|
285
|
+
for (const t of pubChange.tables) {
|
|
286
|
+
if (stableId.table(t.schema, t.name) === targetTableId) {
|
|
287
|
+
pubMatchesTable = true;
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (!pubMatchesTable)
|
|
292
|
+
return null;
|
|
293
|
+
// Verify the table is NOT itself being dropped. If `DropTable(T)` is in
|
|
294
|
+
// the same phase, the existing structural rewrites in
|
|
295
|
+
// `post-diff-normalization.ts` (replace-expansion superseded filter)
|
|
296
|
+
// already prune the redundant `AlterTableDropColumn`, so we should not
|
|
297
|
+
// see this combination here. Be defensive and bail anyway — flipping
|
|
298
|
+
// `omitTableRequirement` when T is being dropped would let the column
|
|
299
|
+
// drop reorder against the table drop, which is unsafe.
|
|
300
|
+
for (const change of phaseChanges) {
|
|
301
|
+
if (change instanceof DropTable &&
|
|
302
|
+
change.table.stableId === targetTableId) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Replace the AlterTableDropColumn with a fresh instance carrying
|
|
307
|
+
// `omitTableRequirement=true`. All other changes pass through
|
|
308
|
+
// unchanged.
|
|
309
|
+
const rewritten = phaseChanges.slice();
|
|
310
|
+
rewritten[dropColumnIndex] = new AlterTableDropColumn({
|
|
311
|
+
table: dropColumnChange.table,
|
|
312
|
+
column: dropColumnChange.column,
|
|
313
|
+
omitTableRequirement: true,
|
|
314
|
+
});
|
|
315
|
+
return rewritten;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Branch C worker — break a publication membership removal cycle where
|
|
319
|
+
* dropped tables form a FK chain ending at a separately dropped referenced
|
|
320
|
+
* constraint.
|
|
321
|
+
*/
|
|
322
|
+
function tryBreakPublicationFkConstraintDropCycle(cycleNodeIndexes, phaseChanges) {
|
|
323
|
+
let pubChange = null;
|
|
324
|
+
let terminalConstraintDrop = null;
|
|
325
|
+
const dropTables = [];
|
|
326
|
+
for (const nodeIndex of cycleNodeIndexes) {
|
|
327
|
+
const change = phaseChanges[nodeIndex];
|
|
328
|
+
if (change instanceof AlterPublicationDropTables) {
|
|
329
|
+
if (pubChange !== null)
|
|
330
|
+
return null;
|
|
331
|
+
pubChange = change;
|
|
332
|
+
}
|
|
333
|
+
else if (change instanceof AlterTableDropConstraint) {
|
|
334
|
+
if (terminalConstraintDrop !== null)
|
|
335
|
+
return null;
|
|
336
|
+
terminalConstraintDrop = change;
|
|
337
|
+
}
|
|
338
|
+
else if (change instanceof DropTable) {
|
|
339
|
+
dropTables.push(change);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (pubChange === null ||
|
|
346
|
+
terminalConstraintDrop === null ||
|
|
347
|
+
dropTables.length === 0) {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
const publicationTableIds = new Set(pubChange.tables.map((table) => stableId.table(table.schema, table.name)));
|
|
351
|
+
if (!publicationTableIds.has(terminalConstraintDrop.table.stableId)) {
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
// At least one dropped table must be a publication member — that's the
|
|
355
|
+
// publication → DropTable edge that pulls the publication change into the
|
|
356
|
+
// cycle (the back-edge is the terminal constraint's table, checked above).
|
|
357
|
+
// Don't require ALL of them: publications like supabase_realtime commonly
|
|
358
|
+
// contain only a subset of tables, so intermediate FK-chain tables may not
|
|
359
|
+
// be members (Sentry SUPABASE-API-7RS / CLI-1605).
|
|
360
|
+
if (!dropTables.some((dropTable) => publicationTableIds.has(dropTable.table.stableId))) {
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
const cycleDropTableIds = new Set(dropTables.map((change) => change.table.stableId));
|
|
364
|
+
let hasFkToTerminalConstraint = false;
|
|
365
|
+
for (const dropTable of dropTables) {
|
|
366
|
+
for (const fk of iterFkConstraints(dropTable.table.constraints)) {
|
|
367
|
+
if (fkReferencesConstraint(fk, terminalConstraintDrop)) {
|
|
368
|
+
hasFkToTerminalConstraint = true;
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
if (hasFkToTerminalConstraint)
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
if (!hasFkToTerminalConstraint)
|
|
376
|
+
return null;
|
|
377
|
+
return injectFkConstraintDropsForDropTables({
|
|
378
|
+
phaseChanges,
|
|
379
|
+
dropTables,
|
|
380
|
+
shouldInject: (fk, tableId) => isCrossCycleFkConstraint(fk, tableId, cycleDropTableIds) ||
|
|
381
|
+
fkReferencesConstraint(fk, terminalConstraintDrop),
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
function fkReferencesConstraint(fk, constraintDrop) {
|
|
385
|
+
if (fk.foreign_key_schema !== constraintDrop.table.schema ||
|
|
386
|
+
fk.foreign_key_table !== constraintDrop.table.name ||
|
|
387
|
+
fk.foreign_key_columns === null) {
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
return sameOrderedStrings(fk.foreign_key_columns, constraintDrop.constraint.key_columns);
|
|
391
|
+
}
|
|
392
|
+
function sameOrderedStrings(left, right) {
|
|
393
|
+
if (left.length !== right.length)
|
|
394
|
+
return false;
|
|
395
|
+
return left.every((value, index) => value === right[index]);
|
|
396
|
+
}
|
|
@@ -139,7 +139,7 @@ export function printDebugGraph(phaseChanges, graphData, edges, dependencyRows,
|
|
|
139
139
|
const mermaidDiagram = generateMermaidDiagram(phaseChanges, graphData, edges, requirementSets, dependenciesByReferencedId);
|
|
140
140
|
debugGraph("\n==== Mermaid (cycle detected) ====\n%s\n==== end ====", mermaidDiagram);
|
|
141
141
|
}
|
|
142
|
-
catch
|
|
142
|
+
catch {
|
|
143
143
|
// ignore debug printing errors
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -56,7 +56,17 @@ export function convertExplicitRequirementsToConstraints(phaseChanges, graphData
|
|
|
56
56
|
const requiredIds = graphData.explicitRequirementSets[consumerIndex];
|
|
57
57
|
if (requiredIds.size === 0)
|
|
58
58
|
continue;
|
|
59
|
+
// Collect dropped IDs for this change so we can skip requirements
|
|
60
|
+
// for stableIds that this change also drops. A change that drops a
|
|
61
|
+
// stableId should not depend on another change that creates the same
|
|
62
|
+
// stableId, because the entity already exists in the source database.
|
|
63
|
+
// This prevents false ordering constraints such as Grant → Revoke
|
|
64
|
+
// when both operate on the same ACL stableId.
|
|
65
|
+
const droppedIds = new Set(phaseChanges[consumerIndex].drops);
|
|
59
66
|
for (const requiredId of requiredIds) {
|
|
67
|
+
if (droppedIds.has(requiredId)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
60
70
|
const producerIndexes = graphData.changeIndexesByCreatedId.get(requiredId);
|
|
61
71
|
if (!producerIndexes || producerIndexes.size === 0)
|
|
62
72
|
continue;
|
|
@@ -109,6 +119,12 @@ export function buildGraphData(phaseChanges, options) {
|
|
|
109
119
|
for (const droppedId of changeItem.drops ?? []) {
|
|
110
120
|
createdIds.add(droppedId);
|
|
111
121
|
}
|
|
122
|
+
// In-place mutations keep the object identity but invalidate
|
|
123
|
+
// dependents, so for drop-phase ordering they behave like producers of
|
|
124
|
+
// the invalidated ids without changing Change.drops.
|
|
125
|
+
for (const invalidatedId of changeItem.invalidates) {
|
|
126
|
+
createdIds.add(invalidatedId);
|
|
127
|
+
}
|
|
112
128
|
}
|
|
113
129
|
return createdIds;
|
|
114
130
|
});
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* It groups related changes together while preserving the ability for the dependency
|
|
9
9
|
* resolver to reorder within groups when necessary.
|
|
10
10
|
*/
|
|
11
|
-
import { getSchema } from "../
|
|
11
|
+
import { getSchema } from "../change-utils.js";
|
|
12
12
|
import { getExecutionPhase, isMetadataStableId } from "./utils.js";
|
|
13
13
|
/**
|
|
14
14
|
* Object type ordering for logical grouping.
|
|
@@ -145,6 +145,25 @@ function getMainStableId(change) {
|
|
|
145
145
|
}
|
|
146
146
|
return null;
|
|
147
147
|
}
|
|
148
|
+
// For default_privilege operations: group by role + schema combination (before CREATE so we group and use tiebreaker)
|
|
149
|
+
if (change.scope === "default_privilege") {
|
|
150
|
+
if (change.requires.length > 0) {
|
|
151
|
+
let grantingRole = null;
|
|
152
|
+
let schemaId = null;
|
|
153
|
+
for (const id of change.requires) {
|
|
154
|
+
if (id.startsWith("role:")) {
|
|
155
|
+
grantingRole = id;
|
|
156
|
+
}
|
|
157
|
+
else if (id.startsWith("schema:")) {
|
|
158
|
+
schemaId = id;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (schemaId && grantingRole) {
|
|
162
|
+
return `${grantingRole}:${schemaId}`;
|
|
163
|
+
}
|
|
164
|
+
return grantingRole ?? null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
148
167
|
// For CREATE operations: check if creating a constraint (sub-entity of table)
|
|
149
168
|
if (change.operation === "create" && change.creates.length > 0) {
|
|
150
169
|
// Iterate through creates to find the first non-metadata stable ID
|
|
@@ -182,29 +201,6 @@ function getMainStableId(change) {
|
|
|
182
201
|
// Fallback: if all drops are metadata, use first
|
|
183
202
|
return change.drops[0] ?? null;
|
|
184
203
|
}
|
|
185
|
-
// For default_privilege operations: group by role + schema combination
|
|
186
|
-
// This groups all "FOR ROLE X IN SCHEMA Y" statements together
|
|
187
|
-
if (change.scope === "default_privilege") {
|
|
188
|
-
if (change.requires.length > 0) {
|
|
189
|
-
// Iterate through requires to find role and schema
|
|
190
|
-
let grantingRole = null;
|
|
191
|
-
let schemaId = null;
|
|
192
|
-
for (const id of change.requires) {
|
|
193
|
-
if (id.startsWith("role:")) {
|
|
194
|
-
grantingRole = id;
|
|
195
|
-
}
|
|
196
|
-
else if (id.startsWith("schema:")) {
|
|
197
|
-
schemaId = id;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
if (schemaId && grantingRole) {
|
|
201
|
-
// Create composite key: "role:postgres:schema:public"
|
|
202
|
-
return `${grantingRole}:${schemaId}`;
|
|
203
|
-
}
|
|
204
|
-
// If no schema, just group by role
|
|
205
|
-
return grantingRole ?? null;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
204
|
// For ALTER operations: check if creating/dropping a constraint
|
|
209
205
|
// Skip this for privilege/comment/default_privilege scopes (handled above)
|
|
210
206
|
if (change.operation === "alter") {
|
|
@@ -291,27 +287,6 @@ function getParentStableId(change) {
|
|
|
291
287
|
// Fallback: return first requires if available
|
|
292
288
|
return requires.length > 0 ? requires[0] : null;
|
|
293
289
|
}
|
|
294
|
-
/**
|
|
295
|
-
* Extract schema name from a change.
|
|
296
|
-
* Returns the schema name if present, or null for non-schema objects.
|
|
297
|
-
*
|
|
298
|
-
* Uses the getSchema helper which directly accesses schema properties from change objects.
|
|
299
|
-
* For default_privilege changes, accesses the inSchema property directly.
|
|
300
|
-
* For event_trigger changes, groups by their function's schema.
|
|
301
|
-
*/
|
|
302
|
-
function extractSchemaFromChange(change) {
|
|
303
|
-
// Handle default_privilege changes specially (they have inSchema property)
|
|
304
|
-
if (change.scope === "default_privilege") {
|
|
305
|
-
// TypeScript doesn't know about inSchema, but we know it exists for default_privilege changes
|
|
306
|
-
return change.inSchema ?? null;
|
|
307
|
-
}
|
|
308
|
-
// Handle event_trigger changes specially - group by their function's schema
|
|
309
|
-
if (change.objectType === "event_trigger") {
|
|
310
|
-
return change.eventTrigger.function_schema;
|
|
311
|
-
}
|
|
312
|
-
// Use the getSchema helper for all other changes
|
|
313
|
-
return getSchema(change);
|
|
314
|
-
}
|
|
315
290
|
/**
|
|
316
291
|
* Get the effective object type for sorting purposes.
|
|
317
292
|
* For sub-entities, returns the parent's object type (table/view/materialized_view).
|
|
@@ -403,8 +378,8 @@ function sortPhase(changes, phase) {
|
|
|
403
378
|
const changeA = a.change;
|
|
404
379
|
const changeB = b.change;
|
|
405
380
|
// 1. Compare schemas (group objects by schema)
|
|
406
|
-
const schemaA =
|
|
407
|
-
const schemaB =
|
|
381
|
+
const schemaA = getSchema(changeA);
|
|
382
|
+
const schemaB = getSchema(changeB);
|
|
408
383
|
// Non-schema objects (roles, languages, extensions, etc.) sort first
|
|
409
384
|
// Use a special prefix to ensure they come before schema objects
|
|
410
385
|
const schemaKeyA = schemaA === null ? "::" : schemaA;
|
|
@@ -525,6 +500,18 @@ function sortPhase(changes, phase) {
|
|
|
525
500
|
if (operationOrderA !== operationOrderB) {
|
|
526
501
|
return operationOrderA - operationOrderB;
|
|
527
502
|
}
|
|
503
|
+
// 6b. For default_privilege: deterministic tiebreaker by objtype then grantee (canonical order for objtype)
|
|
504
|
+
if (scopeA === "default_privilege" && scopeB === "default_privilege") {
|
|
505
|
+
const defPrivA = changeA;
|
|
506
|
+
const defPrivB = changeB;
|
|
507
|
+
const objtypeOrder = (code) => ({ n: 0, r: 1, S: 2, f: 3, T: 4 })[code] ?? 99;
|
|
508
|
+
const objtypeCompare = objtypeOrder(defPrivA.objtype) - objtypeOrder(defPrivB.objtype);
|
|
509
|
+
if (objtypeCompare !== 0)
|
|
510
|
+
return objtypeCompare;
|
|
511
|
+
const granteeCompare = defPrivA.grantee.localeCompare(defPrivB.grantee);
|
|
512
|
+
if (granteeCompare !== 0)
|
|
513
|
+
return granteeCompare;
|
|
514
|
+
}
|
|
528
515
|
// 7. Preserve original order (stability)
|
|
529
516
|
return a.originalIndex - b.originalIndex;
|
|
530
517
|
});
|