@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.
Files changed (387) hide show
  1. package/dist/core/expand-replace-dependencies.js +23 -0
  2. package/dist/core/integrations/serialize/dsl.d.ts +1 -8
  3. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  4. package/dist/core/integrations/supabase.js +19 -0
  5. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  6. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  7. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  8. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  9. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  10. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  11. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  12. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  13. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  14. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  15. package/dist/core/objects/base.change.d.ts +2 -1
  16. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  17. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  18. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  19. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  20. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  21. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  22. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  23. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  24. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  25. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  26. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  27. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  28. package/dist/core/objects/domain/changes/domain.create.d.ts +2 -1
  29. package/dist/core/objects/domain/changes/domain.create.js +1 -1
  30. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  31. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  32. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  33. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  34. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  35. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  36. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  37. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  38. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  39. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  40. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  41. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  42. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  43. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  44. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  45. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  46. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  47. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  48. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  49. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  50. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  51. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  52. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  53. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  54. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  55. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  56. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  57. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  58. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  59. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  60. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  61. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  62. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  63. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  64. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  65. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  66. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  67. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  68. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  69. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  70. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  71. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  72. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  73. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  74. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  75. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  76. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  77. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  78. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  79. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  80. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  81. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  82. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  83. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  84. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  85. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  86. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  87. package/dist/core/objects/index/changes/index.alter.js +3 -3
  88. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  89. package/dist/core/objects/index/changes/index.comment.js +2 -2
  90. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  91. package/dist/core/objects/index/changes/index.create.js +1 -1
  92. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  93. package/dist/core/objects/index/changes/index.drop.js +1 -1
  94. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  95. package/dist/core/objects/language/changes/language.alter.js +1 -1
  96. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  97. package/dist/core/objects/language/changes/language.comment.js +2 -2
  98. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  99. package/dist/core/objects/language/changes/language.create.js +1 -1
  100. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  101. package/dist/core/objects/language/changes/language.drop.js +1 -1
  102. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  103. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  104. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  105. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  106. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  107. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  108. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  109. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  110. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  111. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  112. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  113. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  114. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  115. package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
  116. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  117. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  118. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  119. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  120. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  121. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  122. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  123. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  124. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
  125. package/dist/core/objects/publication/changes/publication.alter.js +12 -7
  126. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  127. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  128. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  129. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  130. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  131. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  132. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  133. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  134. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  135. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  136. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  137. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +1 -1
  138. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  139. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  140. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  141. package/dist/core/objects/role/changes/role.alter.js +2 -2
  142. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  143. package/dist/core/objects/role/changes/role.comment.js +2 -2
  144. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  145. package/dist/core/objects/role/changes/role.create.js +1 -1
  146. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  147. package/dist/core/objects/role/changes/role.drop.js +1 -1
  148. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  149. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  150. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  151. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  152. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  153. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  154. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  155. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  156. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  157. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  158. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  159. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  160. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  161. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  162. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  163. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  164. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  165. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  166. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  167. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  168. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  169. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  170. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  171. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  172. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  173. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  174. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  175. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  176. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  177. package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
  178. package/dist/core/objects/sequence/sequence.diff.js +12 -0
  179. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  180. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  181. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  182. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  183. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  184. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  185. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  186. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  187. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  188. package/dist/core/objects/table/changes/table.alter.js +107 -22
  189. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  190. package/dist/core/objects/table/changes/table.comment.js +6 -6
  191. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  192. package/dist/core/objects/table/changes/table.create.js +1 -1
  193. package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
  194. package/dist/core/objects/table/changes/table.drop.js +7 -1
  195. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  196. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  197. package/dist/core/objects/table/table.diff.js +46 -1
  198. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  199. package/dist/core/objects/trigger/changes/trigger.alter.js +1 -1
  200. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  201. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  202. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  203. package/dist/core/objects/trigger/changes/trigger.create.js +1 -1
  204. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  205. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  206. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  207. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  208. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  209. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  210. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  211. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  212. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  213. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  214. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  215. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  216. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  217. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  218. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  219. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  220. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  221. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  222. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  223. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  224. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  225. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  226. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  227. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  228. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  229. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  230. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  231. package/dist/core/objects/type/range/changes/range.create.js +1 -1
  232. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  233. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  234. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  235. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  236. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  237. package/dist/core/objects/view/changes/view.alter.js +3 -3
  238. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  239. package/dist/core/objects/view/changes/view.comment.js +2 -2
  240. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  241. package/dist/core/objects/view/changes/view.create.js +1 -1
  242. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  243. package/dist/core/objects/view/changes/view.drop.js +1 -1
  244. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  245. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  246. package/dist/core/sort/custom-constraints.js +64 -0
  247. package/package.json +1 -1
  248. package/src/core/expand-replace-dependencies.test.ts +126 -1
  249. package/src/core/expand-replace-dependencies.ts +50 -0
  250. package/src/core/integrations/serialize/dsl.test.ts +20 -1
  251. package/src/core/integrations/serialize/dsl.ts +1 -10
  252. package/src/core/integrations/serialize/serialize.types.ts +37 -0
  253. package/src/core/integrations/supabase.ts +19 -0
  254. package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
  255. package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
  256. package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
  257. package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
  258. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
  259. package/src/core/objects/base.change.ts +3 -1
  260. package/src/core/objects/collation/changes/collation.alter.ts +3 -2
  261. package/src/core/objects/collation/changes/collation.comment.ts +3 -2
  262. package/src/core/objects/collation/changes/collation.create.ts +2 -1
  263. package/src/core/objects/collation/changes/collation.drop.ts +2 -1
  264. package/src/core/objects/domain/changes/domain.alter.ts +9 -8
  265. package/src/core/objects/domain/changes/domain.comment.ts +3 -2
  266. package/src/core/objects/domain/changes/domain.create.ts +2 -1
  267. package/src/core/objects/domain/changes/domain.drop.ts +2 -1
  268. package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
  269. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
  270. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
  271. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
  272. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
  273. package/src/core/objects/extension/changes/extension.alter.ts +3 -2
  274. package/src/core/objects/extension/changes/extension.comment.ts +3 -2
  275. package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
  276. package/src/core/objects/extension/changes/extension.create.ts +5 -2
  277. package/src/core/objects/extension/changes/extension.drop.ts +2 -1
  278. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
  279. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
  280. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
  281. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
  282. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
  283. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
  284. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
  285. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
  286. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
  287. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
  288. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
  289. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
  290. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
  291. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
  292. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
  293. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
  294. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
  295. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
  296. package/src/core/objects/index/changes/index.alter.ts +4 -3
  297. package/src/core/objects/index/changes/index.comment.ts +3 -2
  298. package/src/core/objects/index/changes/index.create.ts +2 -1
  299. package/src/core/objects/index/changes/index.drop.ts +2 -1
  300. package/src/core/objects/language/changes/language.alter.ts +2 -1
  301. package/src/core/objects/language/changes/language.comment.ts +3 -2
  302. package/src/core/objects/language/changes/language.create.ts +2 -1
  303. package/src/core/objects/language/changes/language.drop.ts +2 -1
  304. package/src/core/objects/language/changes/language.privilege.ts +4 -3
  305. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
  306. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
  307. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
  308. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
  309. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
  310. package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
  311. package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
  312. package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
  313. package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
  314. package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
  315. package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
  316. package/src/core/objects/publication/changes/publication.alter.ts +14 -7
  317. package/src/core/objects/publication/changes/publication.comment.ts +3 -2
  318. package/src/core/objects/publication/changes/publication.create.ts +2 -1
  319. package/src/core/objects/publication/changes/publication.drop.ts +2 -1
  320. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
  321. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
  322. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
  323. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
  324. package/src/core/objects/role/changes/role.alter.ts +3 -2
  325. package/src/core/objects/role/changes/role.comment.ts +3 -2
  326. package/src/core/objects/role/changes/role.create.ts +2 -1
  327. package/src/core/objects/role/changes/role.drop.ts +2 -1
  328. package/src/core/objects/role/changes/role.privilege.ts +6 -5
  329. package/src/core/objects/rule/changes/rule.alter.ts +3 -2
  330. package/src/core/objects/rule/changes/rule.comment.ts +3 -2
  331. package/src/core/objects/rule/changes/rule.create.ts +2 -1
  332. package/src/core/objects/rule/changes/rule.drop.ts +2 -1
  333. package/src/core/objects/schema/changes/schema.alter.ts +2 -1
  334. package/src/core/objects/schema/changes/schema.comment.ts +3 -2
  335. package/src/core/objects/schema/changes/schema.create.ts +3 -3
  336. package/src/core/objects/schema/changes/schema.drop.ts +2 -1
  337. package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
  338. package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
  339. package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
  340. package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
  341. package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
  342. package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
  343. package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
  344. package/src/core/objects/sequence/sequence.diff.ts +24 -2
  345. package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
  346. package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
  347. package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
  348. package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
  349. package/src/core/objects/table/changes/table.alter.test.ts +38 -0
  350. package/src/core/objects/table/changes/table.alter.ts +123 -22
  351. package/src/core/objects/table/changes/table.comment.ts +7 -6
  352. package/src/core/objects/table/changes/table.create.ts +2 -1
  353. package/src/core/objects/table/changes/table.drop.ts +20 -1
  354. package/src/core/objects/table/changes/table.privilege.ts +4 -3
  355. package/src/core/objects/table/table.diff.test.ts +121 -0
  356. package/src/core/objects/table/table.diff.ts +64 -1
  357. package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
  358. package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
  359. package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
  360. package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
  361. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
  362. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
  363. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
  364. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
  365. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
  366. package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
  367. package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
  368. package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
  369. package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
  370. package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
  371. package/src/core/objects/type/range/changes/range.alter.ts +2 -1
  372. package/src/core/objects/type/range/changes/range.comment.ts +3 -2
  373. package/src/core/objects/type/range/changes/range.create.ts +2 -1
  374. package/src/core/objects/type/range/changes/range.drop.ts +2 -1
  375. package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
  376. package/src/core/objects/view/changes/view.alter.ts +4 -3
  377. package/src/core/objects/view/changes/view.comment.ts +3 -2
  378. package/src/core/objects/view/changes/view.create.ts +2 -1
  379. package/src/core/objects/view/changes/view.drop.ts +2 -1
  380. package/src/core/objects/view/changes/view.privilege.ts +4 -3
  381. package/src/core/plan/sql-format/format-off.test.ts +1 -1
  382. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
  383. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
  384. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
  385. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
  386. package/src/core/sort/custom-constraints.ts +74 -0
  387. 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; skipAuthorization?: boolean }) {
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?: { skipAuthorization?: boolean }): string {
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
- return [
32
+ serialize(_options?: SerializeOptions): string {
33
+ const parts = [
33
34
  "DROP SEQUENCE",
34
35
  `${this.sequence.schema}.${this.sequence.name}`,
35
- ].join(" ");
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 type { Table } from "../table/table.model.ts";
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
- ): SequenceChange[] {
49
+ ): SequenceOrColumnSetDefaultChange[] {
45
50
  const { created, dropped, altered } = diffObjects(main, branch);
46
51
 
47
- const changes: SequenceChange[] = [];
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 },