@supabase/pg-delta 1.0.0-alpha.11 → 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/core/expand-replace-dependencies.js +23 -0
- 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/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/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/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/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 { stableId } from "../../utils.ts";
|
|
2
3
|
import type { Role } from "../role.model.ts";
|
|
3
4
|
import { CreateRoleChange, DropRoleChange } from "./role.base.ts";
|
|
@@ -50,7 +51,7 @@ export class GrantRoleMembership extends CreateRoleChange {
|
|
|
50
51
|
return [this.role.stableId, stableId.role(this.member)];
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
serialize(): string {
|
|
54
|
+
serialize(_options?: SerializeOptions): string {
|
|
54
55
|
// On creation, only emit ADMIN OPTION; leave INHERIT/SET to defaults
|
|
55
56
|
const opts: string[] = [];
|
|
56
57
|
if (this.options.admin) opts.push("ADMIN OPTION");
|
|
@@ -94,7 +95,7 @@ export class RevokeRoleMembership extends DropRoleChange {
|
|
|
94
95
|
];
|
|
95
96
|
}
|
|
96
97
|
|
|
97
|
-
serialize(): string {
|
|
98
|
+
serialize(_options?: SerializeOptions): string {
|
|
98
99
|
return `REVOKE ${this.role.name} FROM ${this.member}`;
|
|
99
100
|
}
|
|
100
101
|
}
|
|
@@ -138,7 +139,7 @@ export class RevokeRoleMembershipOptions extends DropRoleChange {
|
|
|
138
139
|
];
|
|
139
140
|
}
|
|
140
141
|
|
|
141
|
-
serialize(): string {
|
|
142
|
+
serialize(_options?: SerializeOptions): string {
|
|
142
143
|
const parts: string[] = [];
|
|
143
144
|
if (this.admin) parts.push("ADMIN OPTION");
|
|
144
145
|
if (this.inherit) parts.push("INHERIT OPTION");
|
|
@@ -197,7 +198,7 @@ export class GrantRoleDefaultPrivileges extends CreateRoleChange {
|
|
|
197
198
|
];
|
|
198
199
|
}
|
|
199
200
|
|
|
200
|
-
serialize(): string {
|
|
201
|
+
serialize(_options?: SerializeOptions): string {
|
|
201
202
|
const scope = this.inSchema ? ` IN SCHEMA ${this.inSchema}` : "";
|
|
202
203
|
const hasGrantable = this.privileges.some((p) => p.grantable);
|
|
203
204
|
const hasBase = this.privileges.some((p) => !p.grantable);
|
|
@@ -272,7 +273,7 @@ export class RevokeRoleDefaultPrivileges extends DropRoleChange {
|
|
|
272
273
|
];
|
|
273
274
|
}
|
|
274
275
|
|
|
275
|
-
serialize(): string {
|
|
276
|
+
serialize(_options?: SerializeOptions): string {
|
|
276
277
|
const scope = this.inSchema ? ` IN SCHEMA ${this.inSchema}` : "";
|
|
277
278
|
const grantOptionPrivs = this.privileges
|
|
278
279
|
.filter((p) => p.grantable)
|
|
@@ -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 { Rule, RuleEnabledState } from "../rule.model.ts";
|
|
3
4
|
import { AlterRuleChange } from "./rule.base.ts";
|
|
@@ -22,7 +23,7 @@ export class ReplaceRule extends AlterRuleChange {
|
|
|
22
23
|
];
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
serialize(): string {
|
|
26
|
+
serialize(_options?: SerializeOptions): string {
|
|
26
27
|
return new CreateRule({ rule: this.rule, orReplace: true }).serialize();
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -48,7 +49,7 @@ export class SetRuleEnabledState extends AlterRuleChange {
|
|
|
48
49
|
];
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
serialize(): string {
|
|
52
|
+
serialize(_options?: SerializeOptions): string {
|
|
52
53
|
const clause = clauseForState(this.enabled);
|
|
53
54
|
return `ALTER TABLE ${this.rule.schema}.${this.rule.table_name} ${clause} ${this.rule.name}`;
|
|
54
55
|
}
|
|
@@ -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 { Rule } from "../rule.model.ts";
|
|
@@ -20,7 +21,7 @@ export class CreateCommentOnRule extends CreateRuleChange {
|
|
|
20
21
|
return [this.rule.stableId];
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
serialize(): string {
|
|
24
|
+
serialize(_options?: SerializeOptions): string {
|
|
24
25
|
return [
|
|
25
26
|
"COMMENT ON RULE",
|
|
26
27
|
this.rule.name,
|
|
@@ -50,7 +51,7 @@ export class DropCommentOnRule extends DropRuleChange {
|
|
|
50
51
|
return [stableId.comment(this.rule.stableId), this.rule.stableId];
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
serialize(): string {
|
|
54
|
+
serialize(_options?: SerializeOptions): string {
|
|
54
55
|
return [
|
|
55
56
|
"COMMENT ON RULE",
|
|
56
57
|
this.rule.name,
|
|
@@ -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 { Rule } from "../rule.model.ts";
|
|
3
4
|
import { CreateRuleChange } from "./rule.base.ts";
|
|
@@ -26,7 +27,7 @@ export class CreateRule extends CreateRuleChange {
|
|
|
26
27
|
];
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
serialize(): string {
|
|
30
|
+
serialize(_options?: SerializeOptions): string {
|
|
30
31
|
let definition = this.rule.definition.trim();
|
|
31
32
|
|
|
32
33
|
definition = definition.replace(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import type { Rule } from "../rule.model.ts";
|
|
2
3
|
import { DropRuleChange } from "./rule.base.ts";
|
|
3
4
|
|
|
@@ -18,7 +19,7 @@ export class DropRule extends DropRuleChange {
|
|
|
18
19
|
return [this.rule.stableId, this.rule.relationStableId];
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
serialize(): string {
|
|
22
|
+
serialize(_options?: SerializeOptions): string {
|
|
22
23
|
return [
|
|
23
24
|
"DROP RULE",
|
|
24
25
|
this.rule.name,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import type { Schema } from "../schema.model.ts";
|
|
2
3
|
import { AlterSchemaChange } from "./schema.base.ts";
|
|
3
4
|
|
|
@@ -33,7 +34,7 @@ export class AlterSchemaChangeOwner extends AlterSchemaChange {
|
|
|
33
34
|
return [this.schema.stableId];
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
serialize(): string {
|
|
37
|
+
serialize(_options?: SerializeOptions): string {
|
|
37
38
|
return ["ALTER SCHEMA", this.schema.name, "OWNER TO", this.owner].join(" ");
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -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 { Schema } from "../schema.model.ts";
|
|
@@ -22,7 +23,7 @@ export class CreateCommentOnSchema extends CreateSchemaChange {
|
|
|
22
23
|
return [this.schema.stableId];
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
serialize(): string {
|
|
26
|
+
serialize(_options?: SerializeOptions): string {
|
|
26
27
|
return [
|
|
27
28
|
"COMMENT ON SCHEMA",
|
|
28
29
|
this.schema.name,
|
|
@@ -50,7 +51,7 @@ export class DropCommentOnSchema extends DropSchemaChange {
|
|
|
50
51
|
return [stableId.comment(this.schema.stableId), this.schema.stableId];
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
serialize(): string {
|
|
54
|
+
serialize(_options?: SerializeOptions): string {
|
|
54
55
|
return ["COMMENT ON SCHEMA", this.schema.name, "IS NULL"].join(" ");
|
|
55
56
|
}
|
|
56
57
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { SchemaSerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import { stableId } from "../../utils.ts";
|
|
2
3
|
import type { Schema } from "../schema.model.ts";
|
|
3
4
|
import { CreateSchemaChange } from "./schema.base.ts";
|
|
4
|
-
|
|
5
5
|
/**
|
|
6
6
|
* Create a schema.
|
|
7
7
|
*
|
|
@@ -18,7 +18,7 @@ export class CreateSchema extends CreateSchemaChange {
|
|
|
18
18
|
public readonly schema: Schema;
|
|
19
19
|
public readonly scope = "object" as const;
|
|
20
20
|
|
|
21
|
-
constructor(props: { schema: Schema
|
|
21
|
+
constructor(props: { schema: Schema } & SchemaSerializeOptions) {
|
|
22
22
|
super();
|
|
23
23
|
this.schema = props.schema;
|
|
24
24
|
}
|
|
@@ -31,7 +31,7 @@ export class CreateSchema extends CreateSchemaChange {
|
|
|
31
31
|
return [stableId.role(this.schema.owner)];
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
serialize(options?:
|
|
34
|
+
serialize(options?: SchemaSerializeOptions): string {
|
|
35
35
|
const parts: string[] = ["CREATE SCHEMA"];
|
|
36
36
|
|
|
37
37
|
// Add schema name
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import type { Schema } from "../schema.model.ts";
|
|
2
3
|
import { DropSchemaChange } from "./schema.base.ts";
|
|
3
4
|
|
|
@@ -28,7 +29,7 @@ export class DropSchema extends DropSchemaChange {
|
|
|
28
29
|
return [this.schema.stableId];
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
serialize(): string {
|
|
32
|
+
serialize(_options?: SerializeOptions): string {
|
|
32
33
|
return ["DROP SCHEMA", this.schema.name].join(" ");
|
|
33
34
|
}
|
|
34
35
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import {
|
|
2
3
|
formatObjectPrivilegeList,
|
|
3
4
|
getObjectKindPrefix,
|
|
@@ -52,7 +53,7 @@ export class GrantSchemaPrivileges extends AlterSchemaChange {
|
|
|
52
53
|
return [this.schema.stableId, stableId.role(this.grantee)];
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
serialize(): string {
|
|
56
|
+
serialize(_options?: SerializeOptions): string {
|
|
56
57
|
const hasGrantable = this.privileges.some((p) => p.grantable);
|
|
57
58
|
const hasBase = this.privileges.some((p) => !p.grantable);
|
|
58
59
|
if (hasGrantable && hasBase) {
|
|
@@ -118,7 +119,7 @@ export class RevokeSchemaPrivileges extends AlterSchemaChange {
|
|
|
118
119
|
];
|
|
119
120
|
}
|
|
120
121
|
|
|
121
|
-
serialize(): string {
|
|
122
|
+
serialize(_options?: SerializeOptions): string {
|
|
122
123
|
const kindPrefix = getObjectKindPrefix("SCHEMA");
|
|
123
124
|
const list = this.privileges.map((p) => p.privilege);
|
|
124
125
|
const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
|
|
@@ -162,7 +163,7 @@ export class RevokeGrantOptionSchemaPrivileges extends AlterSchemaChange {
|
|
|
162
163
|
];
|
|
163
164
|
}
|
|
164
165
|
|
|
165
|
-
serialize(): string {
|
|
166
|
+
serialize(_options?: SerializeOptions): string {
|
|
166
167
|
const kindPrefix = getObjectKindPrefix("SCHEMA");
|
|
167
168
|
const privSql = formatObjectPrivilegeList(
|
|
168
169
|
"SCHEMA",
|
|
@@ -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 { Sequence } from "../sequence.model.ts";
|
|
3
4
|
import { AlterSequenceChange } from "./sequence.base.ts";
|
|
@@ -58,7 +59,7 @@ export class AlterSequenceSetOwnedBy extends AlterSequenceChange {
|
|
|
58
59
|
];
|
|
59
60
|
}
|
|
60
61
|
|
|
61
|
-
serialize(): string {
|
|
62
|
+
serialize(_options?: SerializeOptions): string {
|
|
62
63
|
const head = [
|
|
63
64
|
"ALTER SEQUENCE",
|
|
64
65
|
`${this.sequence.schema}.${this.sequence.name}`,
|
|
@@ -99,7 +100,7 @@ export class AlterSequenceSetOptions extends AlterSequenceChange {
|
|
|
99
100
|
|
|
100
101
|
// Note: default max computation moved to diff when building options
|
|
101
102
|
|
|
102
|
-
serialize(): string {
|
|
103
|
+
serialize(_options?: SerializeOptions): string {
|
|
103
104
|
const parts: string[] = [
|
|
104
105
|
"ALTER SEQUENCE",
|
|
105
106
|
`${this.sequence.schema}.${this.sequence.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 { stableId } from "../../utils.ts";
|
|
3
4
|
import type { Sequence } from "../sequence.model.ts";
|
|
@@ -22,7 +23,7 @@ export class CreateCommentOnSequence extends CreateSequenceChange {
|
|
|
22
23
|
return [this.sequence.stableId];
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
serialize(): string {
|
|
26
|
+
serialize(_options?: SerializeOptions): string {
|
|
26
27
|
return [
|
|
27
28
|
"COMMENT ON SEQUENCE",
|
|
28
29
|
`${this.sequence.schema}.${this.sequence.name}`,
|
|
@@ -50,7 +51,7 @@ export class DropCommentOnSequence extends DropSequenceChange {
|
|
|
50
51
|
return [stableId.comment(this.sequence.stableId), this.sequence.stableId];
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
serialize(): string {
|
|
54
|
+
serialize(_options?: SerializeOptions): string {
|
|
54
55
|
return [
|
|
55
56
|
"COMMENT ON SEQUENCE",
|
|
56
57
|
`${this.sequence.schema}.${this.sequence.name}`,
|
|
@@ -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 { Sequence } from "../sequence.model.ts";
|
|
3
4
|
import { CreateSequenceChange } from "./sequence.base.ts";
|
|
@@ -61,7 +62,7 @@ export class CreateSequence extends CreateSequenceChange {
|
|
|
61
62
|
return Array.from(dependencies);
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
serialize(): string {
|
|
65
|
+
serialize(_options?: SerializeOptions): string {
|
|
65
66
|
const parts: string[] = ["CREATE SEQUENCE"];
|
|
66
67
|
|
|
67
68
|
// Add schema and name
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
|
|
1
2
|
import type { Sequence } from "../sequence.model.ts";
|
|
2
3
|
import { DropSequenceChange } from "./sequence.base.ts";
|
|
3
4
|
|
|
@@ -28,10 +29,22 @@ export class DropSequence extends DropSequenceChange {
|
|
|
28
29
|
return [this.sequence.stableId];
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
serialize(): string {
|
|
32
|
-
|
|
32
|
+
serialize(_options?: SerializeOptions): string {
|
|
33
|
+
const parts = [
|
|
33
34
|
"DROP SEQUENCE",
|
|
34
35
|
`${this.sequence.schema}.${this.sequence.name}`,
|
|
35
|
-
]
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
// Owned sequences still need CASCADE here because DROP runs in the earlier
|
|
39
|
+
// phase and later ALTER TABLE statements will re-establish the desired default.
|
|
40
|
+
if (
|
|
41
|
+
this.sequence.owned_by_schema &&
|
|
42
|
+
this.sequence.owned_by_table &&
|
|
43
|
+
this.sequence.owned_by_column
|
|
44
|
+
) {
|
|
45
|
+
parts.push("CASCADE");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return parts.join(" ");
|
|
36
49
|
}
|
|
37
50
|
}
|
|
@@ -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 },
|