@supabase/pg-delta 1.0.0-alpha.10 → 1.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/declarative-export.js +12 -17
- package/dist/cli/commands/plan.js +10 -13
- package/dist/cli/commands/sync.js +8 -12
- package/dist/cli/utils/integrations.d.ts +30 -6
- package/dist/cli/utils/integrations.js +98 -6
- 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/depend.js +25 -0
- package/dist/core/expand-replace-dependencies.js +23 -0
- package/dist/core/export/file-mapper.d.ts +2 -2
- package/dist/core/integrations/filter/dsl.d.ts +78 -74
- package/dist/core/integrations/filter/dsl.js +127 -79
- package/dist/core/integrations/filter/flatten.d.ts +51 -0
- package/dist/core/integrations/filter/flatten.js +116 -0
- package/dist/core/integrations/integration-dsl.d.ts +17 -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.js +42 -8
- 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.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 +1 -1
- package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
- package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
- package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
- package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
- package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +1 -0
- package/dist/core/objects/base.change.d.ts +12 -1
- package/dist/core/objects/base.change.js +10 -0
- package/dist/core/objects/base.model.d.ts +4 -1
- package/dist/core/objects/base.model.js +5 -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/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.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 +8 -2
- 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.types.d.ts +1 -0
- 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.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.types.d.ts +1 -0
- 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/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 +2 -2
- 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 +1 -1
- 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.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 +9 -9
- 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 +1 -1
- 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.types.d.ts +1 -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 +3 -3
- 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 +1 -1
- 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/user-mapping/changes/user-mapping.alter.d.ts +2 -1
- package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
- 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 +1 -1
- 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/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/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/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.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.types.d.ts +1 -0
- package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
- package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
- 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.types.d.ts +1 -0
- package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
- package/dist/core/objects/publication/changes/publication.alter.js +12 -7
- 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.types.d.ts +1 -0
- 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 +3 -3
- 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 +1 -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/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.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.types.d.ts +1 -0
- 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/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.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.types.d.ts +1 -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.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.types.d.ts +1 -0
- package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
- package/dist/core/objects/sequence/sequence.diff.js +12 -0
- package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
- package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
- 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 +1 -1
- package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
- package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
- package/dist/core/objects/subscription/changes/subscription.types.d.ts +1 -0
- package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
- package/dist/core/objects/table/changes/table.alter.js +107 -22
- 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 +1 -1
- package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
- package/dist/core/objects/table/changes/table.drop.js +7 -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.types.d.ts +1 -0
- package/dist/core/objects/table/table.diff.js +46 -1
- package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
- package/dist/core/objects/trigger/changes/trigger.alter.js +1 -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 +1 -1
- 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/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.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.types.d.ts +1 -0
- package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
- package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
- 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.types.d.ts +1 -0
- 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.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 +1 -1
- 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.types.d.ts +1 -0
- package/dist/core/objects/type/type.types.d.ts +1 -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.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.types.d.ts +1 -0
- package/dist/core/objects/view/view.diff.js +24 -13
- package/dist/core/postgres-config.d.ts +2 -2
- package/dist/core/sort/custom-constraints.js +65 -1
- package/dist/core/sort/logical-sort.js +3 -24
- package/package.json +5 -1
- package/src/cli/commands/declarative-export.ts +19 -27
- package/src/cli/commands/plan.ts +14 -20
- package/src/cli/commands/sync.ts +8 -15
- package/src/cli/utils/integrations.test.ts +210 -3
- package/src/cli/utils/integrations.ts +134 -6
- package/src/core/catalog.snapshot.test.ts +11 -2
- package/src/core/change-utils.test.ts +61 -0
- package/src/core/change-utils.ts +73 -0
- package/src/core/change.types.ts +50 -0
- package/src/core/depend.ts +25 -0
- package/src/core/expand-replace-dependencies.test.ts +126 -1
- package/src/core/expand-replace-dependencies.ts +50 -0
- package/src/core/export/file-mapper.ts +7 -2
- package/src/core/integrations/filter/dsl.test.ts +299 -60
- package/src/core/integrations/filter/dsl.ts +208 -169
- package/src/core/integrations/filter/flatten.test.ts +282 -0
- package/src/core/integrations/filter/flatten.ts +150 -0
- package/src/core/integrations/integration-dsl.ts +17 -1
- 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 +26 -7
- package/src/core/integrations/serialize/dsl.ts +8 -14
- package/src/core/integrations/serialize/serialize.types.ts +37 -0
- package/src/core/integrations/supabase.ts +42 -8
- package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
- package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
- package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
- package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
- package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
- package/src/core/objects/aggregate/changes/aggregate.types.ts +1 -0
- package/src/core/objects/base.change.ts +13 -1
- package/src/core/objects/base.model.test.ts +43 -0
- package/src/core/objects/base.model.ts +5 -2
- package/src/core/objects/collation/changes/collation.alter.ts +3 -2
- package/src/core/objects/collation/changes/collation.comment.ts +3 -2
- package/src/core/objects/collation/changes/collation.create.ts +2 -1
- package/src/core/objects/collation/changes/collation.drop.ts +2 -1
- package/src/core/objects/collation/changes/collation.types.ts +1 -0
- package/src/core/objects/domain/changes/domain.alter.ts +9 -8
- package/src/core/objects/domain/changes/domain.comment.ts +3 -2
- package/src/core/objects/domain/changes/domain.create.ts +19 -2
- package/src/core/objects/domain/changes/domain.drop.ts +2 -1
- package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
- package/src/core/objects/domain/changes/domain.types.ts +1 -0
- package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
- package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
- package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
- package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
- package/src/core/objects/event-trigger/changes/event-trigger.types.ts +1 -0
- package/src/core/objects/extension/changes/extension.alter.ts +3 -2
- package/src/core/objects/extension/changes/extension.comment.ts +3 -2
- package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
- package/src/core/objects/extension/changes/extension.create.ts +5 -2
- package/src/core/objects/extension/changes/extension.drop.ts +2 -1
- package/src/core/objects/extension/changes/extension.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
- package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
- package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
- package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
- package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +1 -0
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
- package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +1 -0
- package/src/core/objects/index/changes/index.alter.ts +4 -3
- package/src/core/objects/index/changes/index.comment.ts +3 -2
- package/src/core/objects/index/changes/index.create.ts +2 -1
- package/src/core/objects/index/changes/index.drop.ts +2 -1
- package/src/core/objects/index/changes/index.types.ts +1 -0
- package/src/core/objects/language/changes/language.alter.ts +2 -1
- package/src/core/objects/language/changes/language.comment.ts +3 -2
- package/src/core/objects/language/changes/language.create.ts +2 -1
- package/src/core/objects/language/changes/language.drop.ts +2 -1
- package/src/core/objects/language/changes/language.privilege.ts +4 -3
- package/src/core/objects/language/changes/language.types.ts +1 -0
- package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
- package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
- package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
- package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
- package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
- package/src/core/objects/materialized-view/changes/materialized-view.types.ts +1 -0
- package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
- package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
- package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
- package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
- package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
- package/src/core/objects/procedure/changes/procedure.types.ts +1 -0
- package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
- package/src/core/objects/publication/changes/publication.alter.ts +14 -7
- package/src/core/objects/publication/changes/publication.comment.ts +3 -2
- package/src/core/objects/publication/changes/publication.create.ts +2 -1
- package/src/core/objects/publication/changes/publication.drop.ts +2 -1
- package/src/core/objects/publication/changes/publication.types.ts +1 -0
- package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
- package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
- package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
- package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
- package/src/core/objects/rls-policy/changes/rls-policy.types.ts +1 -0
- package/src/core/objects/role/changes/role.alter.ts +3 -2
- package/src/core/objects/role/changes/role.comment.ts +3 -2
- package/src/core/objects/role/changes/role.create.ts +2 -1
- package/src/core/objects/role/changes/role.drop.ts +2 -1
- package/src/core/objects/role/changes/role.privilege.ts +6 -5
- package/src/core/objects/role/changes/role.types.ts +1 -0
- package/src/core/objects/rule/changes/rule.alter.ts +3 -2
- package/src/core/objects/rule/changes/rule.comment.ts +3 -2
- package/src/core/objects/rule/changes/rule.create.ts +2 -1
- package/src/core/objects/rule/changes/rule.drop.ts +2 -1
- package/src/core/objects/rule/changes/rule.types.ts +1 -0
- package/src/core/objects/schema/changes/schema.alter.ts +2 -1
- package/src/core/objects/schema/changes/schema.comment.ts +3 -2
- package/src/core/objects/schema/changes/schema.create.ts +3 -3
- package/src/core/objects/schema/changes/schema.drop.ts +2 -1
- package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
- package/src/core/objects/schema/changes/schema.types.ts +1 -0
- package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
- package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
- package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
- package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
- package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
- package/src/core/objects/sequence/changes/sequence.types.ts +1 -0
- package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
- package/src/core/objects/sequence/sequence.diff.ts +24 -2
- package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
- package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
- package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
- package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
- package/src/core/objects/subscription/changes/subscription.types.ts +1 -0
- package/src/core/objects/table/changes/table.alter.test.ts +38 -0
- package/src/core/objects/table/changes/table.alter.ts +123 -22
- package/src/core/objects/table/changes/table.comment.ts +7 -6
- package/src/core/objects/table/changes/table.create.ts +2 -1
- package/src/core/objects/table/changes/table.drop.ts +20 -1
- package/src/core/objects/table/changes/table.privilege.ts +4 -3
- package/src/core/objects/table/changes/table.types.ts +1 -0
- package/src/core/objects/table/table.diff.test.ts +121 -0
- package/src/core/objects/table/table.diff.ts +64 -1
- package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
- package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
- package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
- package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
- package/src/core/objects/trigger/changes/trigger.types.ts +1 -0
- package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
- package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
- package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
- package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
- package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
- package/src/core/objects/type/composite-type/changes/composite-type.types.ts +1 -0
- package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
- package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
- package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
- package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
- package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
- package/src/core/objects/type/enum/changes/enum.types.ts +1 -0
- package/src/core/objects/type/range/changes/range.alter.ts +2 -1
- package/src/core/objects/type/range/changes/range.comment.ts +3 -2
- package/src/core/objects/type/range/changes/range.create.ts +2 -1
- package/src/core/objects/type/range/changes/range.drop.ts +2 -1
- package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
- package/src/core/objects/type/range/changes/range.types.ts +1 -0
- package/src/core/objects/type/type.types.ts +1 -0
- package/src/core/objects/view/changes/view.alter.ts +4 -3
- package/src/core/objects/view/changes/view.comment.ts +3 -2
- package/src/core/objects/view/changes/view.create.ts +2 -1
- package/src/core/objects/view/changes/view.drop.ts +2 -1
- package/src/core/objects/view/changes/view.privilege.ts +4 -3
- package/src/core/objects/view/changes/view.types.ts +1 -0
- package/src/core/objects/view/view.diff.test.ts +96 -0
- package/src/core/objects/view/view.diff.ts +30 -15
- package/src/core/plan/sql-format/format-off.test.ts +1 -1
- package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
- package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
- package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
- package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
- package/src/core/postgres-config.ts +2 -2
- package/src/core/sort/custom-constraints.ts +75 -1
- package/src/core/sort/logical-sort.ts +3 -27
- package/src/typedoc.ts +253 -0
- package/dist/core/integrations/filter/extractors.d.ts +0 -12
- package/dist/core/integrations/filter/extractors.js +0 -178
- package/src/core/integrations/filter/extractors.test.ts +0 -244
- package/src/core/integrations/filter/extractors.ts +0 -187
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import type { ColumnProps } from "../../base.model.ts";
|
|
2
3
|
import { stableId } from "../../utils.ts";
|
|
3
4
|
import type { Table, TableConstraintProps } from "../table.model.ts";
|
|
@@ -62,8 +63,11 @@ import { AlterTableChange } from "./table.base.ts";
|
|
|
62
63
|
export type AlterTable =
|
|
63
64
|
| AlterTableAddColumn
|
|
64
65
|
| AlterTableAddConstraint
|
|
66
|
+
| AlterTableAlterColumnAddIdentity
|
|
65
67
|
| AlterTableAlterColumnDropDefault
|
|
68
|
+
| AlterTableAlterColumnDropIdentity
|
|
66
69
|
| AlterTableAlterColumnDropNotNull
|
|
70
|
+
| AlterTableAlterColumnSetGenerated
|
|
67
71
|
| AlterTableAlterColumnSetDefault
|
|
68
72
|
| AlterTableAlterColumnSetNotNull
|
|
69
73
|
| AlterTableAlterColumnType
|
|
@@ -101,7 +105,7 @@ export class AlterTableChangeOwner extends AlterTableChange {
|
|
|
101
105
|
return [this.table.stableId];
|
|
102
106
|
}
|
|
103
107
|
|
|
104
|
-
serialize(): string {
|
|
108
|
+
serialize(_options?: SerializeOptions): string {
|
|
105
109
|
return [
|
|
106
110
|
"ALTER TABLE",
|
|
107
111
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -127,7 +131,7 @@ export class AlterTableSetLogged extends AlterTableChange {
|
|
|
127
131
|
return [this.table.stableId];
|
|
128
132
|
}
|
|
129
133
|
|
|
130
|
-
serialize(): string {
|
|
134
|
+
serialize(_options?: SerializeOptions): string {
|
|
131
135
|
return [
|
|
132
136
|
"ALTER TABLE",
|
|
133
137
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -152,7 +156,7 @@ export class AlterTableSetUnlogged extends AlterTableChange {
|
|
|
152
156
|
return [this.table.stableId];
|
|
153
157
|
}
|
|
154
158
|
|
|
155
|
-
serialize(): string {
|
|
159
|
+
serialize(_options?: SerializeOptions): string {
|
|
156
160
|
return [
|
|
157
161
|
"ALTER TABLE",
|
|
158
162
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -177,7 +181,7 @@ export class AlterTableEnableRowLevelSecurity extends AlterTableChange {
|
|
|
177
181
|
return [this.table.stableId];
|
|
178
182
|
}
|
|
179
183
|
|
|
180
|
-
serialize(): string {
|
|
184
|
+
serialize(_options?: SerializeOptions): string {
|
|
181
185
|
return [
|
|
182
186
|
"ALTER TABLE",
|
|
183
187
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -202,7 +206,7 @@ export class AlterTableDisableRowLevelSecurity extends AlterTableChange {
|
|
|
202
206
|
return [this.table.stableId];
|
|
203
207
|
}
|
|
204
208
|
|
|
205
|
-
serialize(): string {
|
|
209
|
+
serialize(_options?: SerializeOptions): string {
|
|
206
210
|
return [
|
|
207
211
|
"ALTER TABLE",
|
|
208
212
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -227,7 +231,7 @@ export class AlterTableForceRowLevelSecurity extends AlterTableChange {
|
|
|
227
231
|
return [this.table.stableId];
|
|
228
232
|
}
|
|
229
233
|
|
|
230
|
-
serialize(): string {
|
|
234
|
+
serialize(_options?: SerializeOptions): string {
|
|
231
235
|
return [
|
|
232
236
|
"ALTER TABLE",
|
|
233
237
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -252,7 +256,7 @@ export class AlterTableNoForceRowLevelSecurity extends AlterTableChange {
|
|
|
252
256
|
return [this.table.stableId];
|
|
253
257
|
}
|
|
254
258
|
|
|
255
|
-
serialize(): string {
|
|
259
|
+
serialize(_options?: SerializeOptions): string {
|
|
256
260
|
return [
|
|
257
261
|
"ALTER TABLE",
|
|
258
262
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -279,7 +283,7 @@ export class AlterTableSetStorageParams extends AlterTableChange {
|
|
|
279
283
|
return [this.table.stableId];
|
|
280
284
|
}
|
|
281
285
|
|
|
282
|
-
serialize(): string {
|
|
286
|
+
serialize(_options?: SerializeOptions): string {
|
|
283
287
|
const storageParams = this.options.join(", ");
|
|
284
288
|
return [
|
|
285
289
|
"ALTER TABLE",
|
|
@@ -307,7 +311,7 @@ export class AlterTableResetStorageParams extends AlterTableChange {
|
|
|
307
311
|
return [this.table.stableId];
|
|
308
312
|
}
|
|
309
313
|
|
|
310
|
-
serialize(): string {
|
|
314
|
+
serialize(_options?: SerializeOptions): string {
|
|
311
315
|
const paramsSql = this.params.join(", ");
|
|
312
316
|
return [
|
|
313
317
|
"ALTER TABLE",
|
|
@@ -365,7 +369,7 @@ export class AlterTableAddConstraint extends AlterTableChange {
|
|
|
365
369
|
return reqs;
|
|
366
370
|
}
|
|
367
371
|
|
|
368
|
-
serialize(): string {
|
|
372
|
+
serialize(_options?: SerializeOptions): string {
|
|
369
373
|
return [
|
|
370
374
|
"ALTER TABLE",
|
|
371
375
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -411,7 +415,7 @@ export class AlterTableDropConstraint extends AlterTableChange {
|
|
|
411
415
|
];
|
|
412
416
|
}
|
|
413
417
|
|
|
414
|
-
serialize(): string {
|
|
418
|
+
serialize(_options?: SerializeOptions): string {
|
|
415
419
|
return [
|
|
416
420
|
"ALTER TABLE",
|
|
417
421
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -446,7 +450,7 @@ export class AlterTableValidateConstraint extends AlterTableChange {
|
|
|
446
450
|
];
|
|
447
451
|
}
|
|
448
452
|
|
|
449
|
-
serialize(): string {
|
|
453
|
+
serialize(_options?: SerializeOptions): string {
|
|
450
454
|
return [
|
|
451
455
|
"ALTER TABLE",
|
|
452
456
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -474,7 +478,7 @@ export class AlterTableSetReplicaIdentity extends AlterTableChange {
|
|
|
474
478
|
return [this.table.stableId];
|
|
475
479
|
}
|
|
476
480
|
|
|
477
|
-
serialize(): string {
|
|
481
|
+
serialize(_options?: SerializeOptions): string {
|
|
478
482
|
const clause =
|
|
479
483
|
this.mode === "d"
|
|
480
484
|
? "DEFAULT"
|
|
@@ -516,7 +520,7 @@ export class AlterTableAddColumn extends AlterTableChange {
|
|
|
516
520
|
return [this.table.stableId];
|
|
517
521
|
}
|
|
518
522
|
|
|
519
|
-
serialize(): string {
|
|
523
|
+
serialize(_options?: SerializeOptions): string {
|
|
520
524
|
const parts: string[] = [
|
|
521
525
|
"ALTER TABLE",
|
|
522
526
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -572,7 +576,7 @@ export class AlterTableDropColumn extends AlterTableChange {
|
|
|
572
576
|
];
|
|
573
577
|
}
|
|
574
578
|
|
|
575
|
-
serialize(): string {
|
|
579
|
+
serialize(_options?: SerializeOptions): string {
|
|
576
580
|
return [
|
|
577
581
|
"ALTER TABLE",
|
|
578
582
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -602,7 +606,7 @@ export class AlterTableAlterColumnType extends AlterTableChange {
|
|
|
602
606
|
];
|
|
603
607
|
}
|
|
604
608
|
|
|
605
|
-
serialize(): string {
|
|
609
|
+
serialize(_options?: SerializeOptions): string {
|
|
606
610
|
const parts: string[] = [
|
|
607
611
|
"ALTER TABLE",
|
|
608
612
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -638,7 +642,7 @@ export class AlterTableAlterColumnSetDefault extends AlterTableChange {
|
|
|
638
642
|
];
|
|
639
643
|
}
|
|
640
644
|
|
|
641
|
-
serialize(): string {
|
|
645
|
+
serialize(_options?: SerializeOptions): string {
|
|
642
646
|
const set = this.column.is_generated ? "SET EXPRESSION AS" : "SET DEFAULT";
|
|
643
647
|
|
|
644
648
|
return [
|
|
@@ -672,7 +676,7 @@ export class AlterTableAlterColumnDropDefault extends AlterTableChange {
|
|
|
672
676
|
];
|
|
673
677
|
}
|
|
674
678
|
|
|
675
|
-
serialize(): string {
|
|
679
|
+
serialize(_options?: SerializeOptions): string {
|
|
676
680
|
return [
|
|
677
681
|
"ALTER TABLE",
|
|
678
682
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -683,6 +687,103 @@ export class AlterTableAlterColumnDropDefault extends AlterTableChange {
|
|
|
683
687
|
}
|
|
684
688
|
}
|
|
685
689
|
|
|
690
|
+
/**
|
|
691
|
+
* ALTER TABLE ... ALTER COLUMN ... ADD GENERATED ... AS IDENTITY
|
|
692
|
+
*/
|
|
693
|
+
export class AlterTableAlterColumnAddIdentity extends AlterTableChange {
|
|
694
|
+
public readonly table: Table;
|
|
695
|
+
public readonly column: ColumnProps;
|
|
696
|
+
public readonly scope = "object" as const;
|
|
697
|
+
|
|
698
|
+
constructor(props: { table: Table; column: ColumnProps }) {
|
|
699
|
+
super();
|
|
700
|
+
this.table = props.table;
|
|
701
|
+
this.column = props.column;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
get requires() {
|
|
705
|
+
return [
|
|
706
|
+
stableId.column(this.table.schema, this.table.name, this.column.name),
|
|
707
|
+
];
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
serialize(): string {
|
|
711
|
+
return [
|
|
712
|
+
"ALTER TABLE",
|
|
713
|
+
`${this.table.schema}.${this.table.name}`,
|
|
714
|
+
"ALTER COLUMN",
|
|
715
|
+
this.column.name,
|
|
716
|
+
"ADD",
|
|
717
|
+
this.column.is_identity_always
|
|
718
|
+
? "GENERATED ALWAYS AS IDENTITY"
|
|
719
|
+
: "GENERATED BY DEFAULT AS IDENTITY",
|
|
720
|
+
].join(" ");
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY
|
|
726
|
+
*/
|
|
727
|
+
export class AlterTableAlterColumnDropIdentity extends AlterTableChange {
|
|
728
|
+
public readonly table: Table;
|
|
729
|
+
public readonly column: ColumnProps;
|
|
730
|
+
public readonly scope = "object" as const;
|
|
731
|
+
|
|
732
|
+
constructor(props: { table: Table; column: ColumnProps }) {
|
|
733
|
+
super();
|
|
734
|
+
this.table = props.table;
|
|
735
|
+
this.column = props.column;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
get requires() {
|
|
739
|
+
return [
|
|
740
|
+
stableId.column(this.table.schema, this.table.name, this.column.name),
|
|
741
|
+
];
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
serialize(): string {
|
|
745
|
+
return [
|
|
746
|
+
"ALTER TABLE",
|
|
747
|
+
`${this.table.schema}.${this.table.name}`,
|
|
748
|
+
"ALTER COLUMN",
|
|
749
|
+
this.column.name,
|
|
750
|
+
"DROP IDENTITY",
|
|
751
|
+
].join(" ");
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* ALTER TABLE ... ALTER COLUMN ... SET GENERATED { ALWAYS | BY DEFAULT }
|
|
757
|
+
*/
|
|
758
|
+
export class AlterTableAlterColumnSetGenerated extends AlterTableChange {
|
|
759
|
+
public readonly table: Table;
|
|
760
|
+
public readonly column: ColumnProps;
|
|
761
|
+
public readonly scope = "object" as const;
|
|
762
|
+
|
|
763
|
+
constructor(props: { table: Table; column: ColumnProps }) {
|
|
764
|
+
super();
|
|
765
|
+
this.table = props.table;
|
|
766
|
+
this.column = props.column;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
get requires() {
|
|
770
|
+
return [
|
|
771
|
+
stableId.column(this.table.schema, this.table.name, this.column.name),
|
|
772
|
+
];
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
serialize(): string {
|
|
776
|
+
return [
|
|
777
|
+
"ALTER TABLE",
|
|
778
|
+
`${this.table.schema}.${this.table.name}`,
|
|
779
|
+
"ALTER COLUMN",
|
|
780
|
+
this.column.name,
|
|
781
|
+
"SET GENERATED",
|
|
782
|
+
this.column.is_identity_always ? "ALWAYS" : "BY DEFAULT",
|
|
783
|
+
].join(" ");
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
|
|
686
787
|
/**
|
|
687
788
|
* ALTER TABLE ... ALTER COLUMN ... SET NOT NULL
|
|
688
789
|
*/
|
|
@@ -703,7 +804,7 @@ export class AlterTableAlterColumnSetNotNull extends AlterTableChange {
|
|
|
703
804
|
];
|
|
704
805
|
}
|
|
705
806
|
|
|
706
|
-
serialize(): string {
|
|
807
|
+
serialize(_options?: SerializeOptions): string {
|
|
707
808
|
return [
|
|
708
809
|
"ALTER TABLE",
|
|
709
810
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -734,7 +835,7 @@ export class AlterTableAlterColumnDropNotNull extends AlterTableChange {
|
|
|
734
835
|
];
|
|
735
836
|
}
|
|
736
837
|
|
|
737
|
-
serialize(): string {
|
|
838
|
+
serialize(_options?: SerializeOptions): string {
|
|
738
839
|
return [
|
|
739
840
|
"ALTER TABLE",
|
|
740
841
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -764,7 +865,7 @@ export class AlterTableAttachPartition extends AlterTableChange {
|
|
|
764
865
|
return [this.partition.stableId, this.table.stableId];
|
|
765
866
|
}
|
|
766
867
|
|
|
767
|
-
serialize(): string {
|
|
868
|
+
serialize(_options?: SerializeOptions): string {
|
|
768
869
|
const bound = this.partition.partition_bound ?? "DEFAULT";
|
|
769
870
|
return [
|
|
770
871
|
"ALTER TABLE",
|
|
@@ -795,7 +896,7 @@ export class AlterTableDetachPartition extends AlterTableChange {
|
|
|
795
896
|
return [this.table.stableId, this.partition.stableId];
|
|
796
897
|
}
|
|
797
898
|
|
|
798
|
-
serialize(): string {
|
|
899
|
+
serialize(_options?: SerializeOptions): string {
|
|
799
900
|
return [
|
|
800
901
|
"ALTER TABLE",
|
|
801
902
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import { quoteLiteral } from "../../base.change.ts";
|
|
2
3
|
import type { ColumnProps } from "../../base.model.ts";
|
|
3
4
|
import { stableId } from "../../utils.ts";
|
|
@@ -49,7 +50,7 @@ export class CreateCommentOnTable extends CreateTableChange {
|
|
|
49
50
|
return [this.table.stableId];
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
serialize(): string {
|
|
53
|
+
serialize(_options?: SerializeOptions): string {
|
|
53
54
|
return [
|
|
54
55
|
"COMMENT ON TABLE",
|
|
55
56
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -80,7 +81,7 @@ export class DropCommentOnTable extends DropTableChange {
|
|
|
80
81
|
return [stableId.comment(this.table.stableId), this.table.stableId];
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
serialize(): string {
|
|
84
|
+
serialize(_options?: SerializeOptions): string {
|
|
84
85
|
return [
|
|
85
86
|
"COMMENT ON TABLE",
|
|
86
87
|
`${this.table.schema}.${this.table.name}`,
|
|
@@ -118,7 +119,7 @@ export class CreateCommentOnColumn extends CreateTableChange {
|
|
|
118
119
|
];
|
|
119
120
|
}
|
|
120
121
|
|
|
121
|
-
serialize(): string {
|
|
122
|
+
serialize(_options?: SerializeOptions): string {
|
|
122
123
|
return [
|
|
123
124
|
"COMMENT ON COLUMN",
|
|
124
125
|
`${this.table.schema}.${this.table.name}.${this.column.name}`,
|
|
@@ -161,7 +162,7 @@ export class DropCommentOnColumn extends DropTableChange {
|
|
|
161
162
|
return [stableId.comment(columnStableId), columnStableId];
|
|
162
163
|
}
|
|
163
164
|
|
|
164
|
-
serialize(): string {
|
|
165
|
+
serialize(_options?: SerializeOptions): string {
|
|
165
166
|
return [
|
|
166
167
|
"COMMENT ON COLUMN",
|
|
167
168
|
`${this.table.schema}.${this.table.name}.${this.column.name}`,
|
|
@@ -206,7 +207,7 @@ export class CreateCommentOnConstraint extends CreateTableChange {
|
|
|
206
207
|
];
|
|
207
208
|
}
|
|
208
209
|
|
|
209
|
-
serialize(): string {
|
|
210
|
+
serialize(_options?: SerializeOptions): string {
|
|
210
211
|
return [
|
|
211
212
|
"COMMENT ON CONSTRAINT",
|
|
212
213
|
this.constraint.name,
|
|
@@ -254,7 +255,7 @@ export class DropCommentOnConstraint extends DropTableChange {
|
|
|
254
255
|
return [stableId.comment(constraintStableId), constraintStableId];
|
|
255
256
|
}
|
|
256
257
|
|
|
257
|
-
serialize(): string {
|
|
258
|
+
serialize(_options?: SerializeOptions): string {
|
|
258
259
|
return [
|
|
259
260
|
"COMMENT ON CONSTRAINT",
|
|
260
261
|
this.constraint.name,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import { isUserDefinedTypeSchema, stableId } from "../../utils.ts";
|
|
2
3
|
import type { Table } from "../table.model.ts";
|
|
3
4
|
import { CreateTableChange } from "./table.base.ts";
|
|
@@ -93,7 +94,7 @@ export class CreateTable extends CreateTableChange {
|
|
|
93
94
|
return Array.from(dependencies);
|
|
94
95
|
}
|
|
95
96
|
|
|
96
|
-
serialize(): string {
|
|
97
|
+
serialize(_options?: SerializeOptions): string {
|
|
97
98
|
const parts: string[] = ["CREATE"];
|
|
98
99
|
|
|
99
100
|
// Add TEMPORARY/UNLOGGED based on persistence
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import { stableId } from "../../utils.ts";
|
|
2
3
|
import type { Table } from "../table.model.ts";
|
|
3
4
|
import { DropTableChange } from "./table.base.ts";
|
|
@@ -27,6 +28,15 @@ export class DropTable extends DropTableChange {
|
|
|
27
28
|
...this.table.columns.map((column) =>
|
|
28
29
|
stableId.column(this.table.schema, this.table.name, column.name),
|
|
29
30
|
),
|
|
31
|
+
// Include constraint stableIds so FK relationships that only exist at the
|
|
32
|
+
// constraint level still affect whole-table drop ordering.
|
|
33
|
+
...this.table.constraints.map((constraint) =>
|
|
34
|
+
stableId.constraint(
|
|
35
|
+
this.table.schema,
|
|
36
|
+
this.table.name,
|
|
37
|
+
constraint.name,
|
|
38
|
+
),
|
|
39
|
+
),
|
|
30
40
|
];
|
|
31
41
|
}
|
|
32
42
|
|
|
@@ -36,10 +46,19 @@ export class DropTable extends DropTableChange {
|
|
|
36
46
|
...this.table.columns.map((col) =>
|
|
37
47
|
stableId.column(this.table.schema, this.table.name, col.name),
|
|
38
48
|
),
|
|
49
|
+
// Mirror the dropped constraint ids in requires so drop-phase graph
|
|
50
|
+
// consumers can connect catalog FK edges back to this table drop.
|
|
51
|
+
...this.table.constraints.map((constraint) =>
|
|
52
|
+
stableId.constraint(
|
|
53
|
+
this.table.schema,
|
|
54
|
+
this.table.name,
|
|
55
|
+
constraint.name,
|
|
56
|
+
),
|
|
57
|
+
),
|
|
39
58
|
];
|
|
40
59
|
}
|
|
41
60
|
|
|
42
|
-
serialize(): string {
|
|
61
|
+
serialize(_options?: SerializeOptions): string {
|
|
43
62
|
return ["DROP TABLE", `${this.table.schema}.${this.table.name}`].join(" ");
|
|
44
63
|
}
|
|
45
64
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import {
|
|
2
3
|
formatObjectPrivilegeList,
|
|
3
4
|
getObjectKindPrefix,
|
|
@@ -57,7 +58,7 @@ export class GrantTablePrivileges extends AlterTableChange {
|
|
|
57
58
|
return [this.table.stableId, stableId.role(this.grantee)];
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
serialize(): string {
|
|
61
|
+
serialize(_options?: SerializeOptions): string {
|
|
61
62
|
const hasGrantable = this.privileges.some((p) => p.grantable);
|
|
62
63
|
const hasBase = this.privileges.some((p) => !p.grantable);
|
|
63
64
|
if (hasGrantable && hasBase) {
|
|
@@ -132,7 +133,7 @@ export class RevokeTablePrivileges extends AlterTableChange {
|
|
|
132
133
|
];
|
|
133
134
|
}
|
|
134
135
|
|
|
135
|
-
serialize(): string {
|
|
136
|
+
serialize(_options?: SerializeOptions): string {
|
|
136
137
|
const kindPrefix = getObjectKindPrefix("TABLE");
|
|
137
138
|
const list = this.privileges.map((p) => p.privilege);
|
|
138
139
|
const privSql = formatObjectPrivilegeList("TABLE", list, this.version);
|
|
@@ -183,7 +184,7 @@ export class RevokeGrantOptionTablePrivileges extends AlterTableChange {
|
|
|
183
184
|
];
|
|
184
185
|
}
|
|
185
186
|
|
|
186
|
-
serialize(): string {
|
|
187
|
+
serialize(_options?: SerializeOptions): string {
|
|
187
188
|
const kindPrefix = getObjectKindPrefix("TABLE");
|
|
188
189
|
const privSql = formatObjectPrivilegeList(
|
|
189
190
|
"TABLE",
|
|
@@ -4,6 +4,7 @@ import type { CreateTable } from "./table.create.ts";
|
|
|
4
4
|
import type { DropTable } from "./table.drop.ts";
|
|
5
5
|
import type { TablePrivilege } from "./table.privilege.ts";
|
|
6
6
|
|
|
7
|
+
/** Union of all table-related change variants (`objectType: "table"`). @category Change Types */
|
|
7
8
|
export type TableChange =
|
|
8
9
|
| AlterTable
|
|
9
10
|
| CommentTable
|
|
@@ -3,9 +3,12 @@ import { DefaultPrivilegeState } from "../base.default-privileges.ts";
|
|
|
3
3
|
import {
|
|
4
4
|
AlterTableAddColumn,
|
|
5
5
|
AlterTableAddConstraint,
|
|
6
|
+
AlterTableAlterColumnAddIdentity,
|
|
6
7
|
AlterTableAlterColumnDropDefault,
|
|
8
|
+
AlterTableAlterColumnDropIdentity,
|
|
7
9
|
AlterTableAlterColumnDropNotNull,
|
|
8
10
|
AlterTableAlterColumnSetDefault,
|
|
11
|
+
AlterTableAlterColumnSetGenerated,
|
|
9
12
|
AlterTableAlterColumnSetNotNull,
|
|
10
13
|
AlterTableAlterColumnType,
|
|
11
14
|
AlterTableChangeOwner,
|
|
@@ -714,6 +717,124 @@ describe.concurrent("table.diff", () => {
|
|
|
714
717
|
).toBe(true);
|
|
715
718
|
});
|
|
716
719
|
|
|
720
|
+
test("identity transitions emit drop/add/set-generated changes", () => {
|
|
721
|
+
const serialColumn = {
|
|
722
|
+
name: "id",
|
|
723
|
+
position: 1,
|
|
724
|
+
data_type: "integer",
|
|
725
|
+
data_type_str: "integer",
|
|
726
|
+
is_custom_type: false,
|
|
727
|
+
custom_type_type: null,
|
|
728
|
+
custom_type_category: null,
|
|
729
|
+
custom_type_schema: null,
|
|
730
|
+
custom_type_name: null,
|
|
731
|
+
not_null: false,
|
|
732
|
+
is_identity: false,
|
|
733
|
+
is_identity_always: false,
|
|
734
|
+
is_generated: false,
|
|
735
|
+
collation: null,
|
|
736
|
+
default: "nextval('public.t_identity_id_seq'::regclass)",
|
|
737
|
+
comment: null,
|
|
738
|
+
};
|
|
739
|
+
|
|
740
|
+
const identityAlwaysColumn = {
|
|
741
|
+
...serialColumn,
|
|
742
|
+
is_identity: true,
|
|
743
|
+
is_identity_always: true,
|
|
744
|
+
default: null,
|
|
745
|
+
};
|
|
746
|
+
|
|
747
|
+
const identityByDefaultColumn = {
|
|
748
|
+
...identityAlwaysColumn,
|
|
749
|
+
is_identity_always: false,
|
|
750
|
+
};
|
|
751
|
+
|
|
752
|
+
const serialToIdentityMain = new Table({
|
|
753
|
+
...base,
|
|
754
|
+
name: "t_identity",
|
|
755
|
+
columns: [serialColumn],
|
|
756
|
+
});
|
|
757
|
+
const serialToIdentityBranch = new Table({
|
|
758
|
+
...base,
|
|
759
|
+
name: "t_identity",
|
|
760
|
+
columns: [identityAlwaysColumn],
|
|
761
|
+
});
|
|
762
|
+
|
|
763
|
+
const serialToIdentityChanges = diffTables(
|
|
764
|
+
testContext,
|
|
765
|
+
{ [serialToIdentityMain.stableId]: serialToIdentityMain },
|
|
766
|
+
{ [serialToIdentityBranch.stableId]: serialToIdentityBranch },
|
|
767
|
+
);
|
|
768
|
+
expect(
|
|
769
|
+
serialToIdentityChanges.some(
|
|
770
|
+
(c) => c instanceof AlterTableAlterColumnDropDefault,
|
|
771
|
+
),
|
|
772
|
+
).toBe(true);
|
|
773
|
+
expect(
|
|
774
|
+
serialToIdentityChanges.some(
|
|
775
|
+
(c) => c instanceof AlterTableAlterColumnAddIdentity,
|
|
776
|
+
),
|
|
777
|
+
).toBe(true);
|
|
778
|
+
|
|
779
|
+
const identityToSerialChanges = diffTables(
|
|
780
|
+
testContext,
|
|
781
|
+
{ [serialToIdentityBranch.stableId]: serialToIdentityBranch },
|
|
782
|
+
{ [serialToIdentityMain.stableId]: serialToIdentityMain },
|
|
783
|
+
);
|
|
784
|
+
expect(
|
|
785
|
+
identityToSerialChanges.some(
|
|
786
|
+
(c) => c instanceof AlterTableAlterColumnDropIdentity,
|
|
787
|
+
),
|
|
788
|
+
).toBe(true);
|
|
789
|
+
expect(
|
|
790
|
+
identityToSerialChanges.some(
|
|
791
|
+
(c) => c instanceof AlterTableAlterColumnSetDefault,
|
|
792
|
+
),
|
|
793
|
+
).toBe(true);
|
|
794
|
+
|
|
795
|
+
const alwaysToByDefaultMain = new Table({
|
|
796
|
+
...base,
|
|
797
|
+
name: "t_identity_mode",
|
|
798
|
+
columns: [identityAlwaysColumn],
|
|
799
|
+
});
|
|
800
|
+
const alwaysToByDefaultBranch = new Table({
|
|
801
|
+
...base,
|
|
802
|
+
name: "t_identity_mode",
|
|
803
|
+
columns: [identityByDefaultColumn],
|
|
804
|
+
});
|
|
805
|
+
const alwaysToByDefaultChanges = diffTables(
|
|
806
|
+
testContext,
|
|
807
|
+
{ [alwaysToByDefaultMain.stableId]: alwaysToByDefaultMain },
|
|
808
|
+
{ [alwaysToByDefaultBranch.stableId]: alwaysToByDefaultBranch },
|
|
809
|
+
);
|
|
810
|
+
expect(
|
|
811
|
+
alwaysToByDefaultChanges.some(
|
|
812
|
+
(c) => c instanceof AlterTableAlterColumnSetGenerated,
|
|
813
|
+
),
|
|
814
|
+
).toBe(true);
|
|
815
|
+
|
|
816
|
+
const byDefaultToAlwaysMain = new Table({
|
|
817
|
+
...base,
|
|
818
|
+
name: "t_identity_mode_reverse",
|
|
819
|
+
columns: [identityByDefaultColumn],
|
|
820
|
+
});
|
|
821
|
+
const byDefaultToAlwaysBranch = new Table({
|
|
822
|
+
...base,
|
|
823
|
+
name: "t_identity_mode_reverse",
|
|
824
|
+
columns: [identityAlwaysColumn],
|
|
825
|
+
});
|
|
826
|
+
const byDefaultToAlwaysChanges = diffTables(
|
|
827
|
+
testContext,
|
|
828
|
+
{ [byDefaultToAlwaysMain.stableId]: byDefaultToAlwaysMain },
|
|
829
|
+
{ [byDefaultToAlwaysBranch.stableId]: byDefaultToAlwaysBranch },
|
|
830
|
+
);
|
|
831
|
+
expect(
|
|
832
|
+
byDefaultToAlwaysChanges.some(
|
|
833
|
+
(c) => c instanceof AlterTableAlterColumnSetGenerated,
|
|
834
|
+
),
|
|
835
|
+
).toBe(true);
|
|
836
|
+
});
|
|
837
|
+
|
|
717
838
|
test("created table with privileges emits grant changes", () => {
|
|
718
839
|
const t = new Table({
|
|
719
840
|
...base,
|
|
@@ -8,9 +8,12 @@ import { deepEqual } from "../utils.ts";
|
|
|
8
8
|
import {
|
|
9
9
|
AlterTableAddColumn,
|
|
10
10
|
AlterTableAddConstraint,
|
|
11
|
+
AlterTableAlterColumnAddIdentity,
|
|
11
12
|
AlterTableAlterColumnDropDefault,
|
|
13
|
+
AlterTableAlterColumnDropIdentity,
|
|
12
14
|
AlterTableAlterColumnDropNotNull,
|
|
13
15
|
AlterTableAlterColumnSetDefault,
|
|
16
|
+
AlterTableAlterColumnSetGenerated,
|
|
14
17
|
AlterTableAlterColumnSetNotNull,
|
|
15
18
|
AlterTableAlterColumnType,
|
|
16
19
|
AlterTableAttachPartition,
|
|
@@ -545,7 +548,7 @@ export function diffTables(
|
|
|
545
548
|
// Helper to check if parent has the same column property change
|
|
546
549
|
const parentHasSameColumnPropertyChange = (
|
|
547
550
|
columnName: string,
|
|
548
|
-
property: "type" | "default" | "not_null",
|
|
551
|
+
property: "type" | "default" | "not_null" | "identity",
|
|
549
552
|
): boolean => {
|
|
550
553
|
const { parentMain, parentBranch } = getParentTables();
|
|
551
554
|
if (!parentMain || !parentBranch) {
|
|
@@ -601,6 +604,21 @@ export function diffTables(
|
|
|
601
604
|
parentBranchCol.not_null === branchCol.not_null
|
|
602
605
|
);
|
|
603
606
|
}
|
|
607
|
+
case "identity": {
|
|
608
|
+
const parentIdentityChanged =
|
|
609
|
+
parentMainCol.is_identity !== parentBranchCol.is_identity ||
|
|
610
|
+
parentMainCol.is_identity_always !==
|
|
611
|
+
parentBranchCol.is_identity_always;
|
|
612
|
+
const partitionIdentityChanged =
|
|
613
|
+
mainCol.is_identity !== branchCol.is_identity ||
|
|
614
|
+
mainCol.is_identity_always !== branchCol.is_identity_always;
|
|
615
|
+
return (
|
|
616
|
+
parentIdentityChanged &&
|
|
617
|
+
partitionIdentityChanged &&
|
|
618
|
+
parentBranchCol.is_identity === branchCol.is_identity &&
|
|
619
|
+
parentBranchCol.is_identity_always === branchCol.is_identity_always
|
|
620
|
+
);
|
|
621
|
+
}
|
|
604
622
|
}
|
|
605
623
|
};
|
|
606
624
|
|
|
@@ -698,6 +716,19 @@ export function diffTables(
|
|
|
698
716
|
}
|
|
699
717
|
}
|
|
700
718
|
|
|
719
|
+
// PostgreSQL rejects SET DEFAULT while the column still has identity metadata,
|
|
720
|
+
// so identity removal must lead the IDENTITY -> serial/default transition.
|
|
721
|
+
if (mainCol.is_identity && !branchCol.is_identity) {
|
|
722
|
+
if (!parentHasSameColumnPropertyChange(name, "identity")) {
|
|
723
|
+
changes.push(
|
|
724
|
+
new AlterTableAlterColumnDropIdentity({
|
|
725
|
+
table: branchTable,
|
|
726
|
+
column: branchCol,
|
|
727
|
+
}),
|
|
728
|
+
);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
701
732
|
// DEFAULT change
|
|
702
733
|
if (mainCol.default !== branchCol.default) {
|
|
703
734
|
// Skip if parent has the same default change
|
|
@@ -746,6 +777,38 @@ export function diffTables(
|
|
|
746
777
|
}
|
|
747
778
|
}
|
|
748
779
|
|
|
780
|
+
// Serial-like defaults have to be cleared before ADD GENERATED AS IDENTITY,
|
|
781
|
+
// while mode-only flips stay in-place on an existing identity column.
|
|
782
|
+
if (
|
|
783
|
+
(!mainCol.is_identity && branchCol.is_identity) ||
|
|
784
|
+
(mainCol.is_identity &&
|
|
785
|
+
branchCol.is_identity &&
|
|
786
|
+
mainCol.is_identity_always !== branchCol.is_identity_always)
|
|
787
|
+
) {
|
|
788
|
+
// Skip if parent has the same identity change
|
|
789
|
+
if (!parentHasSameColumnPropertyChange(name, "identity")) {
|
|
790
|
+
if (!mainCol.is_identity && branchCol.is_identity) {
|
|
791
|
+
changes.push(
|
|
792
|
+
new AlterTableAlterColumnAddIdentity({
|
|
793
|
+
table: branchTable,
|
|
794
|
+
column: branchCol,
|
|
795
|
+
}),
|
|
796
|
+
);
|
|
797
|
+
} else if (
|
|
798
|
+
mainCol.is_identity &&
|
|
799
|
+
branchCol.is_identity &&
|
|
800
|
+
mainCol.is_identity_always !== branchCol.is_identity_always
|
|
801
|
+
) {
|
|
802
|
+
changes.push(
|
|
803
|
+
new AlterTableAlterColumnSetGenerated({
|
|
804
|
+
table: branchTable,
|
|
805
|
+
column: branchCol,
|
|
806
|
+
}),
|
|
807
|
+
);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
|
|
749
812
|
// NOT NULL change
|
|
750
813
|
if (mainCol.not_null !== branchCol.not_null) {
|
|
751
814
|
// Skip if parent has the same NOT NULL change
|