@supabase/pg-delta 1.0.0-alpha.11 → 1.0.0-alpha.13
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/core/expand-replace-dependencies.js +23 -0
- package/dist/core/export/index.d.ts +2 -2
- package/dist/core/export/index.js +4 -1
- package/dist/core/integrations/integration.types.d.ts +26 -1
- package/dist/core/integrations/integration.types.js +31 -1
- package/dist/core/integrations/serialize/dsl.d.ts +1 -8
- package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
- package/dist/core/integrations/supabase.js +19 -0
- 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/base.change.d.ts +2 -1
- 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/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 +2 -1
- package/dist/core/objects/domain/changes/domain.create.js +1 -1
- 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/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/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/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-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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/plan/create.js +5 -17
- package/dist/core/plan/types.d.ts +3 -6
- package/dist/core/sort/custom-constraints.js +64 -0
- package/package.json +1 -1
- package/src/core/expand-replace-dependencies.test.ts +126 -1
- package/src/core/expand-replace-dependencies.ts +50 -0
- package/src/core/export/index.ts +13 -4
- package/src/core/integrations/integration.types.ts +59 -1
- package/src/core/integrations/serialize/dsl.test.ts +20 -1
- package/src/core/integrations/serialize/dsl.ts +1 -10
- package/src/core/integrations/serialize/serialize.types.ts +37 -0
- package/src/core/integrations/supabase.ts +19 -0
- 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/base.change.ts +3 -1
- 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/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 +2 -1
- 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/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/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/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-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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/plan/create.ts +11 -27
- 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/plan/types.ts +3 -6
- package/src/core/sort/custom-constraints.ts +74 -0
- package/src/typedoc.ts +5 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import {
|
|
2
3
|
formatObjectPrivilegeList,
|
|
3
4
|
getObjectKindPrefix,
|
|
@@ -54,7 +55,7 @@ export class GrantSequencePrivileges extends AlterSequenceChange {
|
|
|
54
55
|
return [this.sequence.stableId, stableId.role(this.grantee)];
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
serialize(): string {
|
|
58
|
+
serialize(_options?: SerializeOptions): string {
|
|
58
59
|
const hasGrantable = this.privileges.some((p) => p.grantable);
|
|
59
60
|
const hasBase = this.privileges.some((p) => !p.grantable);
|
|
60
61
|
if (hasGrantable && hasBase) {
|
|
@@ -122,7 +123,7 @@ export class RevokeSequencePrivileges extends AlterSequenceChange {
|
|
|
122
123
|
];
|
|
123
124
|
}
|
|
124
125
|
|
|
125
|
-
serialize(): string {
|
|
126
|
+
serialize(_options?: SerializeOptions): string {
|
|
126
127
|
const kindPrefix = getObjectKindPrefix("SEQUENCE");
|
|
127
128
|
const list = this.privileges.map((p) => p.privilege);
|
|
128
129
|
const privSql = formatObjectPrivilegeList("SEQUENCE", list, this.version);
|
|
@@ -166,7 +167,7 @@ export class RevokeGrantOptionSequencePrivileges extends AlterSequenceChange {
|
|
|
166
167
|
];
|
|
167
168
|
}
|
|
168
169
|
|
|
169
|
-
serialize(): string {
|
|
170
|
+
serialize(_options?: SerializeOptions): string {
|
|
170
171
|
const kindPrefix = getObjectKindPrefix("SEQUENCE");
|
|
171
172
|
const privSql = formatObjectPrivilegeList(
|
|
172
173
|
"SEQUENCE",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, expect, test } from "bun:test";
|
|
2
2
|
import { DefaultPrivilegeState } from "../base.default-privileges.ts";
|
|
3
|
-
import
|
|
3
|
+
import { AlterTableAlterColumnSetDefault } from "../table/changes/table.alter.ts";
|
|
4
|
+
import { Table } from "../table/table.model.ts";
|
|
4
5
|
import {
|
|
5
6
|
AlterSequenceSetOptions,
|
|
6
7
|
AlterSequenceSetOwnedBy,
|
|
@@ -107,6 +108,77 @@ describe.concurrent("sequence.diff", () => {
|
|
|
107
108
|
expect(changes[1]).toBeInstanceOf(CreateSequence);
|
|
108
109
|
});
|
|
109
110
|
|
|
111
|
+
test("replacing an owned sequence re-emits the owning column default", () => {
|
|
112
|
+
const main = new Sequence({
|
|
113
|
+
...base,
|
|
114
|
+
data_type: "integer",
|
|
115
|
+
owned_by_schema: "public",
|
|
116
|
+
owned_by_table: "users",
|
|
117
|
+
owned_by_column: "id",
|
|
118
|
+
});
|
|
119
|
+
const branch = new Sequence({
|
|
120
|
+
...base,
|
|
121
|
+
owned_by_schema: "public",
|
|
122
|
+
owned_by_table: "users",
|
|
123
|
+
owned_by_column: "id",
|
|
124
|
+
});
|
|
125
|
+
const branchTable = new Table({
|
|
126
|
+
schema: "public",
|
|
127
|
+
name: "users",
|
|
128
|
+
persistence: "p",
|
|
129
|
+
row_security: false,
|
|
130
|
+
force_row_security: false,
|
|
131
|
+
has_indexes: false,
|
|
132
|
+
has_rules: false,
|
|
133
|
+
has_triggers: false,
|
|
134
|
+
has_subclasses: false,
|
|
135
|
+
is_populated: true,
|
|
136
|
+
replica_identity: "d",
|
|
137
|
+
is_partition: false,
|
|
138
|
+
options: null,
|
|
139
|
+
partition_bound: null,
|
|
140
|
+
partition_by: null,
|
|
141
|
+
owner: "test",
|
|
142
|
+
comment: null,
|
|
143
|
+
parent_schema: null,
|
|
144
|
+
parent_name: null,
|
|
145
|
+
columns: [
|
|
146
|
+
{
|
|
147
|
+
name: "id",
|
|
148
|
+
position: 1,
|
|
149
|
+
data_type: "bigint",
|
|
150
|
+
data_type_str: "bigint",
|
|
151
|
+
is_custom_type: false,
|
|
152
|
+
custom_type_type: null,
|
|
153
|
+
custom_type_category: null,
|
|
154
|
+
custom_type_schema: null,
|
|
155
|
+
custom_type_name: null,
|
|
156
|
+
not_null: true,
|
|
157
|
+
is_identity: false,
|
|
158
|
+
is_identity_always: false,
|
|
159
|
+
is_generated: false,
|
|
160
|
+
collation: null,
|
|
161
|
+
default: "nextval('public.seq1'::regclass)",
|
|
162
|
+
comment: null,
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
privileges: [],
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
const changes = diffSequences(
|
|
169
|
+
testContext,
|
|
170
|
+
{ [main.stableId]: main },
|
|
171
|
+
{ [branch.stableId]: branch },
|
|
172
|
+
{ [branchTable.stableId]: branchTable },
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
expect(changes).toHaveLength(4);
|
|
176
|
+
expect(changes[0]).toBeInstanceOf(DropSequence);
|
|
177
|
+
expect(changes[1]).toBeInstanceOf(CreateSequence);
|
|
178
|
+
expect(changes[2]).toBeInstanceOf(AlterSequenceSetOwnedBy);
|
|
179
|
+
expect(changes[3]).toBeInstanceOf(AlterTableAlterColumnSetDefault);
|
|
180
|
+
});
|
|
181
|
+
|
|
110
182
|
test("skip DROP SEQUENCE when owned by table being dropped", () => {
|
|
111
183
|
const ownedSequence = new Sequence({
|
|
112
184
|
...base,
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
emitObjectPrivilegeChanges,
|
|
5
5
|
} from "../base.privilege-diff.ts";
|
|
6
6
|
import type { ObjectDiffContext } from "../diff-context.ts";
|
|
7
|
+
import { AlterTableAlterColumnSetDefault } from "../table/changes/table.alter.ts";
|
|
7
8
|
import type { Table } from "../table/table.model.ts";
|
|
8
9
|
import { hasNonAlterableChanges } from "../utils.ts";
|
|
9
10
|
import {
|
|
@@ -24,6 +25,10 @@ import {
|
|
|
24
25
|
import type { SequenceChange } from "./changes/sequence.types.ts";
|
|
25
26
|
import type { Sequence } from "./sequence.model.ts";
|
|
26
27
|
|
|
28
|
+
type SequenceOrColumnSetDefaultChange =
|
|
29
|
+
| AlterTableAlterColumnSetDefault
|
|
30
|
+
| SequenceChange;
|
|
31
|
+
|
|
27
32
|
/**
|
|
28
33
|
* Diff two sets of sequences from main and branch catalogs.
|
|
29
34
|
*
|
|
@@ -41,10 +46,10 @@ export function diffSequences(
|
|
|
41
46
|
main: Record<string, Sequence>,
|
|
42
47
|
branch: Record<string, Sequence>,
|
|
43
48
|
branchTables: Record<string, Table> = {},
|
|
44
|
-
):
|
|
49
|
+
): SequenceOrColumnSetDefaultChange[] {
|
|
45
50
|
const { created, dropped, altered } = diffObjects(main, branch);
|
|
46
51
|
|
|
47
|
-
const changes:
|
|
52
|
+
const changes: SequenceOrColumnSetDefaultChange[] = [];
|
|
48
53
|
|
|
49
54
|
for (const sequenceId of created) {
|
|
50
55
|
const createdSeq = branch[sequenceId];
|
|
@@ -157,6 +162,12 @@ export function diffSequences(
|
|
|
157
162
|
branchSequence.owned_by_table !== null &&
|
|
158
163
|
branchSequence.owned_by_column !== null
|
|
159
164
|
) {
|
|
165
|
+
const ownedByTableId = `table:${branchSequence.owned_by_schema}.${branchSequence.owned_by_table}`;
|
|
166
|
+
const ownedByTable = branchTables[ownedByTableId];
|
|
167
|
+
const ownedByColumn = ownedByTable?.columns?.find(
|
|
168
|
+
(column) => column.name === branchSequence.owned_by_column,
|
|
169
|
+
);
|
|
170
|
+
|
|
160
171
|
changes.push(
|
|
161
172
|
new AlterSequenceSetOwnedBy({
|
|
162
173
|
sequence: branchSequence,
|
|
@@ -167,6 +178,17 @@ export function diffSequences(
|
|
|
167
178
|
} as { schema: string; table: string; column: string },
|
|
168
179
|
}),
|
|
169
180
|
);
|
|
181
|
+
|
|
182
|
+
// Replacing an owned sequence with DROP ... CASCADE removes the column's
|
|
183
|
+
// existing nextval(...) default, so restore it after ownership is reattached.
|
|
184
|
+
if (ownedByTable && ownedByColumn && ownedByColumn.default !== null) {
|
|
185
|
+
changes.push(
|
|
186
|
+
new AlterTableAlterColumnSetDefault({
|
|
187
|
+
table: ownedByTable,
|
|
188
|
+
column: ownedByColumn,
|
|
189
|
+
}),
|
|
190
|
+
);
|
|
191
|
+
}
|
|
170
192
|
} else if (
|
|
171
193
|
mainSequence.owned_by_schema !== null ||
|
|
172
194
|
mainSequence.owned_by_table !== null ||
|
|
@@ -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 { stableId } from "../../utils.ts";
|
|
3
4
|
import type { Subscription } from "../subscription.model.ts";
|
|
@@ -16,7 +17,7 @@ export class AlterSubscriptionSetConnection extends AlterSubscriptionChange {
|
|
|
16
17
|
this.subscription = props.subscription;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
serialize(): string {
|
|
20
|
+
serialize(_options?: SerializeOptions): string {
|
|
20
21
|
return `ALTER SUBSCRIPTION ${this.subscription.name} CONNECTION ${quoteLiteral(this.subscription.conninfo)}`;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
@@ -30,7 +31,7 @@ export class AlterSubscriptionSetPublication extends AlterSubscriptionChange {
|
|
|
30
31
|
this.subscription = props.subscription;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
serialize(): string {
|
|
34
|
+
serialize(_options?: SerializeOptions): string {
|
|
34
35
|
const base = `ALTER SUBSCRIPTION ${this.subscription.name} SET PUBLICATION ${this.subscription.publications.join(", ")}`;
|
|
35
36
|
if (!this.subscription.enabled) {
|
|
36
37
|
return `${base} WITH (refresh = false)`;
|
|
@@ -48,7 +49,7 @@ export class AlterSubscriptionEnable extends AlterSubscriptionChange {
|
|
|
48
49
|
this.subscription = props.subscription;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
serialize(): string {
|
|
52
|
+
serialize(_options?: SerializeOptions): string {
|
|
52
53
|
return `ALTER SUBSCRIPTION ${this.subscription.name} ENABLE`;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
@@ -62,7 +63,7 @@ export class AlterSubscriptionDisable extends AlterSubscriptionChange {
|
|
|
62
63
|
this.subscription = props.subscription;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
serialize(): string {
|
|
66
|
+
serialize(_options?: SerializeOptions): string {
|
|
66
67
|
return `ALTER SUBSCRIPTION ${this.subscription.name} DISABLE`;
|
|
67
68
|
}
|
|
68
69
|
}
|
|
@@ -81,7 +82,7 @@ export class AlterSubscriptionSetOptions extends AlterSubscriptionChange {
|
|
|
81
82
|
this.options = props.options;
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
serialize(): string {
|
|
85
|
+
serialize(_options?: SerializeOptions): string {
|
|
85
86
|
const assignments = this.options.map((option) =>
|
|
86
87
|
formatSubscriptionOption(this.subscription, option),
|
|
87
88
|
);
|
|
@@ -104,7 +105,7 @@ export class AlterSubscriptionSetOwner extends AlterSubscriptionChange {
|
|
|
104
105
|
return [stableId.role(this.owner)];
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
serialize(): string {
|
|
108
|
+
serialize(_options?: SerializeOptions): string {
|
|
108
109
|
return `ALTER SUBSCRIPTION ${this.subscription.name} OWNER TO ${this.owner}`;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
@@ -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 { stableId } from "../../utils.ts";
|
|
3
4
|
import type { Subscription } from "../subscription.model.ts";
|
|
@@ -27,7 +28,7 @@ export class CreateCommentOnSubscription extends CreateSubscriptionChange {
|
|
|
27
28
|
return [this.subscription.stableId];
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
serialize(): string {
|
|
31
|
+
serialize(_options?: SerializeOptions): string {
|
|
31
32
|
return [
|
|
32
33
|
"COMMENT ON SUBSCRIPTION",
|
|
33
34
|
this.subscription.name,
|
|
@@ -58,7 +59,7 @@ export class DropCommentOnSubscription extends DropSubscriptionChange {
|
|
|
58
59
|
];
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
serialize(): string {
|
|
62
|
+
serialize(_options?: SerializeOptions): string {
|
|
62
63
|
return `COMMENT ON SUBSCRIPTION ${this.subscription.name} IS NULL`;
|
|
63
64
|
}
|
|
64
65
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
// src/objects/subscription/changes/subscription.create.ts
|
|
2
3
|
import { quoteLiteral } from "../../base.change.ts";
|
|
3
4
|
import { stableId } from "../../utils.ts";
|
|
@@ -22,7 +23,7 @@ export class CreateSubscription extends CreateSubscriptionChange {
|
|
|
22
23
|
return [stableId.role(this.subscription.owner)];
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
serialize(): string {
|
|
26
|
+
serialize(_options?: SerializeOptions): string {
|
|
26
27
|
const parts: string[] = [
|
|
27
28
|
"CREATE SUBSCRIPTION",
|
|
28
29
|
this.subscription.name,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import type { Subscription } from "../subscription.model.ts";
|
|
2
3
|
import { DropSubscriptionChange } from "./subscription.base.ts";
|
|
3
4
|
|
|
@@ -14,7 +15,7 @@ export class DropSubscription extends DropSubscriptionChange {
|
|
|
14
15
|
return [this.subscription.stableId];
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
serialize(): string {
|
|
18
|
+
serialize(_options?: SerializeOptions): string {
|
|
18
19
|
return `DROP SUBSCRIPTION ${this.subscription.name}`;
|
|
19
20
|
}
|
|
20
21
|
}
|
|
@@ -5,9 +5,12 @@ import { Table, type TableProps } from "../table.model.ts";
|
|
|
5
5
|
import {
|
|
6
6
|
AlterTableAddColumn,
|
|
7
7
|
AlterTableAddConstraint,
|
|
8
|
+
AlterTableAlterColumnAddIdentity,
|
|
8
9
|
AlterTableAlterColumnDropDefault,
|
|
10
|
+
AlterTableAlterColumnDropIdentity,
|
|
9
11
|
AlterTableAlterColumnDropNotNull,
|
|
10
12
|
AlterTableAlterColumnSetDefault,
|
|
13
|
+
AlterTableAlterColumnSetGenerated,
|
|
11
14
|
AlterTableAlterColumnSetNotNull,
|
|
12
15
|
AlterTableAlterColumnType,
|
|
13
16
|
AlterTableAttachPartition,
|
|
@@ -498,6 +501,41 @@ describe.concurrent("table", () => {
|
|
|
498
501
|
"ALTER TABLE public.test_table ALTER COLUMN a DROP DEFAULT",
|
|
499
502
|
);
|
|
500
503
|
|
|
504
|
+
const changeAddIdentity = new AlterTableAlterColumnAddIdentity({
|
|
505
|
+
table: withCols,
|
|
506
|
+
column: {
|
|
507
|
+
...colInt,
|
|
508
|
+
is_identity: true,
|
|
509
|
+
is_identity_always: true,
|
|
510
|
+
},
|
|
511
|
+
});
|
|
512
|
+
await assertValidSql(changeAddIdentity.serialize());
|
|
513
|
+
expect(changeAddIdentity.serialize()).toBe(
|
|
514
|
+
"ALTER TABLE public.test_table ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY",
|
|
515
|
+
);
|
|
516
|
+
|
|
517
|
+
const changeSetGenerated = new AlterTableAlterColumnSetGenerated({
|
|
518
|
+
table: withCols,
|
|
519
|
+
column: {
|
|
520
|
+
...colInt,
|
|
521
|
+
is_identity: true,
|
|
522
|
+
is_identity_always: false,
|
|
523
|
+
},
|
|
524
|
+
});
|
|
525
|
+
await assertValidSql(changeSetGenerated.serialize());
|
|
526
|
+
expect(changeSetGenerated.serialize()).toBe(
|
|
527
|
+
"ALTER TABLE public.test_table ALTER COLUMN a SET GENERATED BY DEFAULT",
|
|
528
|
+
);
|
|
529
|
+
|
|
530
|
+
const changeDropIdentity = new AlterTableAlterColumnDropIdentity({
|
|
531
|
+
table: withCols,
|
|
532
|
+
column: { ...colInt },
|
|
533
|
+
});
|
|
534
|
+
await assertValidSql(changeDropIdentity.serialize());
|
|
535
|
+
expect(changeDropIdentity.serialize()).toBe(
|
|
536
|
+
"ALTER TABLE public.test_table ALTER COLUMN a DROP IDENTITY",
|
|
537
|
+
);
|
|
538
|
+
|
|
501
539
|
const changeSetNotNull = new AlterTableAlterColumnSetNotNull({
|
|
502
540
|
table: withCols,
|
|
503
541
|
column: { ...colInt, not_null: true },
|
|
@@ -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}`,
|