@supabase/pg-delta 1.0.0-alpha.11 → 1.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/dist/core/expand-replace-dependencies.js +23 -0
  2. package/dist/core/export/index.d.ts +2 -2
  3. package/dist/core/export/index.js +4 -1
  4. package/dist/core/integrations/integration.types.d.ts +26 -1
  5. package/dist/core/integrations/integration.types.js +31 -1
  6. package/dist/core/integrations/serialize/dsl.d.ts +1 -8
  7. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  8. package/dist/core/integrations/supabase.js +19 -0
  9. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  10. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  11. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  12. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  13. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  14. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  15. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  16. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  17. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  18. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  19. package/dist/core/objects/base.change.d.ts +2 -1
  20. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  21. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  22. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  23. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  24. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  25. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  26. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  27. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  28. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  29. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  30. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  31. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  32. package/dist/core/objects/domain/changes/domain.create.d.ts +2 -1
  33. package/dist/core/objects/domain/changes/domain.create.js +1 -1
  34. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  35. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  36. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  37. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  38. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  39. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  40. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  41. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  42. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  43. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  44. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  45. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  46. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  47. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  48. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  49. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  50. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  51. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  52. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  53. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  54. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  55. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  56. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  57. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  58. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  59. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  60. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  61. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  62. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  63. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  64. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  65. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  66. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  67. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  68. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  69. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  70. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  71. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  72. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  73. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  74. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  75. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  76. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  77. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  78. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  79. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  80. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  81. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  82. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  83. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  84. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  85. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  86. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  87. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  88. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  89. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  90. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  91. package/dist/core/objects/index/changes/index.alter.js +3 -3
  92. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  93. package/dist/core/objects/index/changes/index.comment.js +2 -2
  94. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  95. package/dist/core/objects/index/changes/index.create.js +1 -1
  96. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  97. package/dist/core/objects/index/changes/index.drop.js +1 -1
  98. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  99. package/dist/core/objects/language/changes/language.alter.js +1 -1
  100. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  101. package/dist/core/objects/language/changes/language.comment.js +2 -2
  102. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  103. package/dist/core/objects/language/changes/language.create.js +1 -1
  104. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  105. package/dist/core/objects/language/changes/language.drop.js +1 -1
  106. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  107. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  108. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  109. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  110. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  111. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  112. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  113. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  114. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  115. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  116. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  117. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  118. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  119. package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
  120. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  121. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  122. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  123. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  124. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  125. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  126. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  127. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  128. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
  129. package/dist/core/objects/publication/changes/publication.alter.js +12 -7
  130. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  131. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  132. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  133. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  134. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  135. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  136. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  137. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  138. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  139. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  140. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  141. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +1 -1
  142. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  143. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  144. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  145. package/dist/core/objects/role/changes/role.alter.js +2 -2
  146. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  147. package/dist/core/objects/role/changes/role.comment.js +2 -2
  148. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  149. package/dist/core/objects/role/changes/role.create.js +1 -1
  150. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  151. package/dist/core/objects/role/changes/role.drop.js +1 -1
  152. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  153. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  154. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  155. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  156. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  157. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  158. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  159. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  160. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  161. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  162. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  163. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  164. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  165. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  166. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  167. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  168. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  169. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  170. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  171. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  172. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  173. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  174. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  175. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  176. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  177. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  178. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  179. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  180. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  181. package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
  182. package/dist/core/objects/sequence/sequence.diff.js +12 -0
  183. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  184. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  185. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  186. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  187. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  188. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  189. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  190. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  191. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  192. package/dist/core/objects/table/changes/table.alter.js +107 -22
  193. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  194. package/dist/core/objects/table/changes/table.comment.js +6 -6
  195. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  196. package/dist/core/objects/table/changes/table.create.js +1 -1
  197. package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
  198. package/dist/core/objects/table/changes/table.drop.js +7 -1
  199. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  200. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  201. package/dist/core/objects/table/table.diff.js +46 -1
  202. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  203. package/dist/core/objects/trigger/changes/trigger.alter.js +1 -1
  204. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  205. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  206. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  207. package/dist/core/objects/trigger/changes/trigger.create.js +1 -1
  208. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  209. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  210. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  211. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  212. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  213. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  214. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  215. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  216. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  217. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  218. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  219. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  220. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  221. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  222. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  223. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  224. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  225. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  226. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  227. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  228. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  229. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  230. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  231. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  232. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  233. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  234. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  235. package/dist/core/objects/type/range/changes/range.create.js +1 -1
  236. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  237. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  238. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  239. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  240. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  241. package/dist/core/objects/view/changes/view.alter.js +3 -3
  242. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  243. package/dist/core/objects/view/changes/view.comment.js +2 -2
  244. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  245. package/dist/core/objects/view/changes/view.create.js +1 -1
  246. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  247. package/dist/core/objects/view/changes/view.drop.js +1 -1
  248. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  249. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  250. package/dist/core/plan/create.js +5 -17
  251. package/dist/core/plan/types.d.ts +3 -6
  252. package/dist/core/sort/custom-constraints.js +64 -0
  253. package/package.json +1 -1
  254. package/src/core/expand-replace-dependencies.test.ts +126 -1
  255. package/src/core/expand-replace-dependencies.ts +50 -0
  256. package/src/core/export/index.ts +13 -4
  257. package/src/core/integrations/integration.types.ts +59 -1
  258. package/src/core/integrations/serialize/dsl.test.ts +20 -1
  259. package/src/core/integrations/serialize/dsl.ts +1 -10
  260. package/src/core/integrations/serialize/serialize.types.ts +37 -0
  261. package/src/core/integrations/supabase.ts +19 -0
  262. package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
  263. package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
  264. package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
  265. package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
  266. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
  267. package/src/core/objects/base.change.ts +3 -1
  268. package/src/core/objects/collation/changes/collation.alter.ts +3 -2
  269. package/src/core/objects/collation/changes/collation.comment.ts +3 -2
  270. package/src/core/objects/collation/changes/collation.create.ts +2 -1
  271. package/src/core/objects/collation/changes/collation.drop.ts +2 -1
  272. package/src/core/objects/domain/changes/domain.alter.ts +9 -8
  273. package/src/core/objects/domain/changes/domain.comment.ts +3 -2
  274. package/src/core/objects/domain/changes/domain.create.ts +2 -1
  275. package/src/core/objects/domain/changes/domain.drop.ts +2 -1
  276. package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
  277. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
  278. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
  279. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
  280. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
  281. package/src/core/objects/extension/changes/extension.alter.ts +3 -2
  282. package/src/core/objects/extension/changes/extension.comment.ts +3 -2
  283. package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
  284. package/src/core/objects/extension/changes/extension.create.ts +5 -2
  285. package/src/core/objects/extension/changes/extension.drop.ts +2 -1
  286. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
  287. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
  288. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
  289. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
  290. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
  291. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
  292. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
  293. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
  294. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
  295. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
  296. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
  297. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
  298. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
  299. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
  300. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
  301. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
  302. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
  303. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
  304. package/src/core/objects/index/changes/index.alter.ts +4 -3
  305. package/src/core/objects/index/changes/index.comment.ts +3 -2
  306. package/src/core/objects/index/changes/index.create.ts +2 -1
  307. package/src/core/objects/index/changes/index.drop.ts +2 -1
  308. package/src/core/objects/language/changes/language.alter.ts +2 -1
  309. package/src/core/objects/language/changes/language.comment.ts +3 -2
  310. package/src/core/objects/language/changes/language.create.ts +2 -1
  311. package/src/core/objects/language/changes/language.drop.ts +2 -1
  312. package/src/core/objects/language/changes/language.privilege.ts +4 -3
  313. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
  314. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
  315. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
  316. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
  317. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
  318. package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
  319. package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
  320. package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
  321. package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
  322. package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
  323. package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
  324. package/src/core/objects/publication/changes/publication.alter.ts +14 -7
  325. package/src/core/objects/publication/changes/publication.comment.ts +3 -2
  326. package/src/core/objects/publication/changes/publication.create.ts +2 -1
  327. package/src/core/objects/publication/changes/publication.drop.ts +2 -1
  328. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
  329. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
  330. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
  331. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
  332. package/src/core/objects/role/changes/role.alter.ts +3 -2
  333. package/src/core/objects/role/changes/role.comment.ts +3 -2
  334. package/src/core/objects/role/changes/role.create.ts +2 -1
  335. package/src/core/objects/role/changes/role.drop.ts +2 -1
  336. package/src/core/objects/role/changes/role.privilege.ts +6 -5
  337. package/src/core/objects/rule/changes/rule.alter.ts +3 -2
  338. package/src/core/objects/rule/changes/rule.comment.ts +3 -2
  339. package/src/core/objects/rule/changes/rule.create.ts +2 -1
  340. package/src/core/objects/rule/changes/rule.drop.ts +2 -1
  341. package/src/core/objects/schema/changes/schema.alter.ts +2 -1
  342. package/src/core/objects/schema/changes/schema.comment.ts +3 -2
  343. package/src/core/objects/schema/changes/schema.create.ts +3 -3
  344. package/src/core/objects/schema/changes/schema.drop.ts +2 -1
  345. package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
  346. package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
  347. package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
  348. package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
  349. package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
  350. package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
  351. package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
  352. package/src/core/objects/sequence/sequence.diff.ts +24 -2
  353. package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
  354. package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
  355. package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
  356. package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
  357. package/src/core/objects/table/changes/table.alter.test.ts +38 -0
  358. package/src/core/objects/table/changes/table.alter.ts +123 -22
  359. package/src/core/objects/table/changes/table.comment.ts +7 -6
  360. package/src/core/objects/table/changes/table.create.ts +2 -1
  361. package/src/core/objects/table/changes/table.drop.ts +20 -1
  362. package/src/core/objects/table/changes/table.privilege.ts +4 -3
  363. package/src/core/objects/table/table.diff.test.ts +121 -0
  364. package/src/core/objects/table/table.diff.ts +64 -1
  365. package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
  366. package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
  367. package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
  368. package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
  369. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
  370. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
  371. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
  372. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
  373. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
  374. package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
  375. package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
  376. package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
  377. package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
  378. package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
  379. package/src/core/objects/type/range/changes/range.alter.ts +2 -1
  380. package/src/core/objects/type/range/changes/range.comment.ts +3 -2
  381. package/src/core/objects/type/range/changes/range.create.ts +2 -1
  382. package/src/core/objects/type/range/changes/range.drop.ts +2 -1
  383. package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
  384. package/src/core/objects/view/changes/view.alter.ts +4 -3
  385. package/src/core/objects/view/changes/view.comment.ts +3 -2
  386. package/src/core/objects/view/changes/view.create.ts +2 -1
  387. package/src/core/objects/view/changes/view.drop.ts +2 -1
  388. package/src/core/objects/view/changes/view.privilege.ts +4 -3
  389. package/src/core/plan/create.ts +11 -27
  390. package/src/core/plan/sql-format/format-off.test.ts +1 -1
  391. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
  392. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
  393. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
  394. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
  395. package/src/core/plan/types.ts +3 -6
  396. package/src/core/sort/custom-constraints.ts +74 -0
  397. package/src/typedoc.ts +5 -0
@@ -29,7 +29,7 @@ export class GrantRoleMembership extends CreateRoleChange {
29
29
  get requires() {
30
30
  return [this.role.stableId, stableId.role(this.member)];
31
31
  }
32
- serialize() {
32
+ serialize(_options) {
33
33
  // On creation, only emit ADMIN OPTION; leave INHERIT/SET to defaults
34
34
  const opts = [];
35
35
  if (this.options.admin)
@@ -69,7 +69,7 @@ export class RevokeRoleMembership extends DropRoleChange {
69
69
  this.role.stableId,
70
70
  ];
71
71
  }
72
- serialize() {
72
+ serialize(_options) {
73
73
  return `REVOKE ${this.role.name} FROM ${this.member}`;
74
74
  }
75
75
  }
@@ -103,7 +103,7 @@ export class RevokeRoleMembershipOptions extends DropRoleChange {
103
103
  this.role.stableId,
104
104
  ];
105
105
  }
106
- serialize() {
106
+ serialize(_options) {
107
107
  const parts = [];
108
108
  if (this.admin)
109
109
  parts.push("ADMIN OPTION");
@@ -148,7 +148,7 @@ export class GrantRoleDefaultPrivileges extends CreateRoleChange {
148
148
  ...(this.inSchema ? [stableId.schema(this.inSchema)] : []),
149
149
  ];
150
150
  }
151
- serialize() {
151
+ serialize(_options) {
152
152
  const scope = this.inSchema ? ` IN SCHEMA ${this.inSchema}` : "";
153
153
  const hasGrantable = this.privileges.some((p) => p.grantable);
154
154
  const hasBase = this.privileges.some((p) => !p.grantable);
@@ -195,7 +195,7 @@ export class RevokeRoleDefaultPrivileges extends DropRoleChange {
195
195
  ...(this.inSchema ? [stableId.schema(this.inSchema)] : []),
196
196
  ];
197
197
  }
198
- serialize() {
198
+ serialize(_options) {
199
199
  const scope = this.inSchema ? ` IN SCHEMA ${this.inSchema}` : "";
200
200
  const grantOptionPrivs = this.privileges
201
201
  .filter((p) => p.grantable)
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Rule, RuleEnabledState } from "../rule.model.ts";
2
3
  import { AlterRuleChange } from "./rule.base.ts";
3
4
  export declare class ReplaceRule extends AlterRuleChange {
@@ -7,7 +8,7 @@ export declare class ReplaceRule extends AlterRuleChange {
7
8
  rule: Rule;
8
9
  });
9
10
  get requires(): string[];
10
- serialize(): string;
11
+ serialize(_options?: SerializeOptions): string;
11
12
  }
12
13
  export declare class SetRuleEnabledState extends AlterRuleChange {
13
14
  readonly rule: Rule;
@@ -18,5 +19,5 @@ export declare class SetRuleEnabledState extends AlterRuleChange {
18
19
  enabled?: RuleEnabledState;
19
20
  });
20
21
  get requires(): string[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -15,7 +15,7 @@ export class ReplaceRule extends AlterRuleChange {
15
15
  ...this.rule.columns.map((column) => stableId.column(this.rule.schema, this.rule.table_name, column)),
16
16
  ];
17
17
  }
18
- serialize() {
18
+ serialize(_options) {
19
19
  return new CreateRule({ rule: this.rule, orReplace: true }).serialize();
20
20
  }
21
21
  }
@@ -35,7 +35,7 @@ export class SetRuleEnabledState extends AlterRuleChange {
35
35
  ...this.rule.columns.map((column) => stableId.column(this.rule.schema, this.rule.table_name, column)),
36
36
  ];
37
37
  }
38
- serialize() {
38
+ serialize(_options) {
39
39
  const clause = clauseForState(this.enabled);
40
40
  return `ALTER TABLE ${this.rule.schema}.${this.rule.table_name} ${clause} ${this.rule.name}`;
41
41
  }
@@ -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 { CreateRuleChange, DropRuleChange } from "./rule.base.ts";
3
4
  export declare class CreateCommentOnRule extends CreateRuleChange {
@@ -8,7 +9,7 @@ export declare class CreateCommentOnRule extends CreateRuleChange {
8
9
  });
9
10
  get creates(): `comment:${string}`[];
10
11
  get requires(): `rule:${string}`[];
11
- serialize(): string;
12
+ serialize(_options?: SerializeOptions): string;
12
13
  }
13
14
  export declare class DropCommentOnRule extends DropRuleChange {
14
15
  readonly rule: Rule;
@@ -18,5 +19,5 @@ export declare class DropCommentOnRule extends DropRuleChange {
18
19
  });
19
20
  get drops(): `comment:${string}`[];
20
21
  get requires(): (`comment:${string}` | `rule:${string}`)[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnRule extends CreateRuleChange {
14
14
  get requires() {
15
15
  return [this.rule.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON RULE",
20
20
  this.rule.name,
@@ -39,7 +39,7 @@ export class DropCommentOnRule extends DropRuleChange {
39
39
  get requires() {
40
40
  return [stableId.comment(this.rule.stableId), this.rule.stableId];
41
41
  }
42
- serialize() {
42
+ serialize(_options) {
43
43
  return [
44
44
  "COMMENT ON RULE",
45
45
  this.rule.name,
@@ -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 { CreateRuleChange } from "./rule.base.ts";
3
4
  export declare class CreateRule extends CreateRuleChange {
@@ -10,5 +11,5 @@ export declare class CreateRule extends CreateRuleChange {
10
11
  });
11
12
  get creates(): `rule:${string}`[];
12
13
  get requires(): string[];
13
- serialize(): string;
14
+ serialize(_options?: SerializeOptions): string;
14
15
  }
@@ -18,7 +18,7 @@ export class CreateRule extends CreateRuleChange {
18
18
  ...this.rule.columns.map((column) => stableId.column(this.rule.schema, this.rule.table_name, column)),
19
19
  ];
20
20
  }
21
- serialize() {
21
+ serialize(_options) {
22
22
  let definition = this.rule.definition.trim();
23
23
  definition = definition.replace(/^CREATE\s+(?:OR\s+REPLACE\s+)?/i, `CREATE ${this.orReplace ? "OR REPLACE " : ""}`);
24
24
  // Remove trailing semicolons (pg_get_ruledef includes them, but we add our own)
@@ -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
  export declare class DropRule extends DropRuleChange {
@@ -8,5 +9,5 @@ export declare class DropRule extends DropRuleChange {
8
9
  });
9
10
  get drops(): `rule:${string}`[];
10
11
  get requires(): string[];
11
- serialize(): string;
12
+ serialize(_options?: SerializeOptions): string;
12
13
  }
@@ -12,7 +12,7 @@ export class DropRule extends DropRuleChange {
12
12
  get requires() {
13
13
  return [this.rule.stableId, this.rule.relationStableId];
14
14
  }
15
- serialize() {
15
+ serialize(_options) {
16
16
  return [
17
17
  "DROP RULE",
18
18
  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
  /**
@@ -24,7 +25,7 @@ export declare class AlterSchemaChangeOwner extends AlterSchemaChange {
24
25
  owner: string;
25
26
  });
26
27
  get requires(): `schema:${string}`[];
27
- serialize(): string;
28
+ serialize(_options?: SerializeOptions): string;
28
29
  }
29
30
  /**
30
31
  * Replace a schema by dropping and recreating it.
@@ -14,7 +14,7 @@ export class AlterSchemaChangeOwner extends AlterSchemaChange {
14
14
  get requires() {
15
15
  return [this.schema.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return ["ALTER SCHEMA", this.schema.name, "OWNER TO", this.owner].join(" ");
19
19
  }
20
20
  }
@@ -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 { CreateSchemaChange, DropSchemaChange } from "./schema.base.ts";
3
4
  export type CommentSchema = CreateCommentOnSchema | DropCommentOnSchema;
@@ -9,7 +10,7 @@ export declare class CreateCommentOnSchema extends CreateSchemaChange {
9
10
  });
10
11
  get creates(): `comment:${string}`[];
11
12
  get requires(): `schema:${string}`[];
12
- serialize(): string;
13
+ serialize(_options?: SerializeOptions): string;
13
14
  }
14
15
  export declare class DropCommentOnSchema extends DropSchemaChange {
15
16
  readonly schema: Schema;
@@ -19,5 +20,5 @@ export declare class DropCommentOnSchema extends DropSchemaChange {
19
20
  });
20
21
  get drops(): `comment:${string}`[];
21
22
  get requires(): (`schema:${string}` | `comment:${string}`)[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnSchema extends CreateSchemaChange {
14
14
  get requires() {
15
15
  return [this.schema.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON SCHEMA",
20
20
  this.schema.name,
@@ -37,7 +37,7 @@ export class DropCommentOnSchema extends DropSchemaChange {
37
37
  get requires() {
38
38
  return [stableId.comment(this.schema.stableId), this.schema.stableId];
39
39
  }
40
- serialize() {
40
+ serialize(_options) {
41
41
  return ["COMMENT ON SCHEMA", this.schema.name, "IS NULL"].join(" ");
42
42
  }
43
43
  }
@@ -1,3 +1,4 @@
1
+ import type { SchemaSerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Schema } from "../schema.model.ts";
2
3
  import { CreateSchemaChange } from "./schema.base.ts";
3
4
  /**
@@ -17,11 +18,8 @@ export declare class CreateSchema extends CreateSchemaChange {
17
18
  readonly scope: "object";
18
19
  constructor(props: {
19
20
  schema: Schema;
20
- skipAuthorization?: boolean;
21
- });
21
+ } & SchemaSerializeOptions);
22
22
  get creates(): `schema:${string}`[];
23
23
  get requires(): `role:${string}`[];
24
- serialize(options?: {
25
- skipAuthorization?: boolean;
26
- }): string;
24
+ serialize(options?: SchemaSerializeOptions): string;
27
25
  }
@@ -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
  /**
@@ -18,5 +19,5 @@ export declare class DropSchema extends DropSchemaChange {
18
19
  });
19
20
  get drops(): `schema:${string}`[];
20
21
  get requires(): `schema:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,7 +22,7 @@ export class DropSchema extends DropSchemaChange {
22
22
  get requires() {
23
23
  return [this.schema.stableId];
24
24
  }
25
- serialize() {
25
+ serialize(_options) {
26
26
  return ["DROP SCHEMA", this.schema.name].join(" ");
27
27
  }
28
28
  }
@@ -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
  export type SchemaPrivilege = GrantSchemaPrivileges | RevokeSchemaPrivileges | RevokeGrantOptionSchemaPrivileges;
@@ -34,7 +35,7 @@ export declare class GrantSchemaPrivileges extends AlterSchemaChange {
34
35
  });
35
36
  get creates(): `acl:${string}::grantee:${string}`[];
36
37
  get requires(): (`schema:${string}` | `role:${string}`)[];
37
- serialize(): string;
38
+ serialize(_options?: SerializeOptions): string;
38
39
  }
39
40
  /**
40
41
  * Revoke privileges on a schema.
@@ -71,7 +72,7 @@ export declare class RevokeSchemaPrivileges extends AlterSchemaChange {
71
72
  });
72
73
  get drops(): `acl:${string}::grantee:${string}`[];
73
74
  get requires(): (`schema:${string}` | `acl:${string}::grantee:${string}` | `role:${string}`)[];
74
- serialize(): string;
75
+ serialize(_options?: SerializeOptions): string;
75
76
  }
76
77
  /**
77
78
  * Revoke grant option for privileges on a schema.
@@ -93,5 +94,5 @@ export declare class RevokeGrantOptionSchemaPrivileges extends AlterSchemaChange
93
94
  version?: number;
94
95
  });
95
96
  get requires(): (`schema:${string}` | `acl:${string}::grantee:${string}` | `role:${string}`)[];
96
- serialize(): string;
97
+ serialize(_options?: SerializeOptions): string;
97
98
  }
@@ -33,7 +33,7 @@ export class GrantSchemaPrivileges extends AlterSchemaChange {
33
33
  get requires() {
34
34
  return [this.schema.stableId, stableId.role(this.grantee)];
35
35
  }
36
- serialize() {
36
+ serialize(_options) {
37
37
  const hasGrantable = this.privileges.some((p) => p.grantable);
38
38
  const hasBase = this.privileges.some((p) => !p.grantable);
39
39
  if (hasGrantable && hasBase) {
@@ -87,7 +87,7 @@ export class RevokeSchemaPrivileges extends AlterSchemaChange {
87
87
  stableId.role(this.grantee),
88
88
  ];
89
89
  }
90
- serialize() {
90
+ serialize(_options) {
91
91
  const kindPrefix = getObjectKindPrefix("SCHEMA");
92
92
  const list = this.privileges.map((p) => p.privilege);
93
93
  const privSql = formatObjectPrivilegeList("SCHEMA", list, this.version);
@@ -122,7 +122,7 @@ export class RevokeGrantOptionSchemaPrivileges extends AlterSchemaChange {
122
122
  stableId.role(this.grantee),
123
123
  ];
124
124
  }
125
- serialize() {
125
+ serialize(_options) {
126
126
  const kindPrefix = getObjectKindPrefix("SCHEMA");
127
127
  const privSql = formatObjectPrivilegeList("SCHEMA", this.privilegeNames, this.version);
128
128
  const schemaName = this.schema.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 { AlterSequenceChange } from "./sequence.base.ts";
3
4
  /**
@@ -35,7 +36,7 @@ export declare class AlterSequenceSetOwnedBy extends AlterSequenceChange {
35
36
  });
36
37
  get creates(): never[];
37
38
  get requires(): (`column:${string}.${string}.${string}` | `sequence:${string}`)[];
38
- serialize(): string;
39
+ serialize(_options?: SerializeOptions): string;
39
40
  }
40
41
  /**
41
42
  * ALTER SEQUENCE ... set options ...
@@ -51,7 +52,7 @@ export declare class AlterSequenceSetOptions extends AlterSequenceChange {
51
52
  });
52
53
  get creates(): never[];
53
54
  get requires(): `sequence:${string}`[];
54
- serialize(): string;
55
+ serialize(_options?: SerializeOptions): string;
55
56
  }
56
57
  /**
57
58
  * Replace a sequence by dropping and recreating it.
@@ -25,7 +25,7 @@ export class AlterSequenceSetOwnedBy extends AlterSequenceChange {
25
25
  : []),
26
26
  ];
27
27
  }
28
- serialize() {
28
+ serialize(_options) {
29
29
  const head = [
30
30
  "ALTER SEQUENCE",
31
31
  `${this.sequence.schema}.${this.sequence.name}`,
@@ -60,7 +60,7 @@ export class AlterSequenceSetOptions extends AlterSequenceChange {
60
60
  return [this.sequence.stableId];
61
61
  }
62
62
  // Note: default max computation moved to diff when building options
63
- serialize() {
63
+ serialize(_options) {
64
64
  const parts = [
65
65
  "ALTER SEQUENCE",
66
66
  `${this.sequence.schema}.${this.sequence.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 { CreateSequenceChange, DropSequenceChange } from "./sequence.base.ts";
3
4
  export type CommentSequence = CreateCommentOnSequence | DropCommentOnSequence;
@@ -9,7 +10,7 @@ export declare class CreateCommentOnSequence extends CreateSequenceChange {
9
10
  });
10
11
  get creates(): `comment:${string}`[];
11
12
  get requires(): `sequence:${string}`[];
12
- serialize(): string;
13
+ serialize(_options?: SerializeOptions): string;
13
14
  }
14
15
  export declare class DropCommentOnSequence extends DropSequenceChange {
15
16
  readonly sequence: Sequence;
@@ -19,5 +20,5 @@ export declare class DropCommentOnSequence extends DropSequenceChange {
19
20
  });
20
21
  get drops(): `comment:${string}`[];
21
22
  get requires(): (`comment:${string}` | `sequence:${string}`)[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnSequence extends CreateSequenceChange {
14
14
  get requires() {
15
15
  return [this.sequence.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON SEQUENCE",
20
20
  `${this.sequence.schema}.${this.sequence.name}`,
@@ -37,7 +37,7 @@ export class DropCommentOnSequence extends DropSequenceChange {
37
37
  get requires() {
38
38
  return [stableId.comment(this.sequence.stableId), this.sequence.stableId];
39
39
  }
40
- serialize() {
40
+ serialize(_options) {
41
41
  return [
42
42
  "COMMENT ON SEQUENCE",
43
43
  `${this.sequence.schema}.${this.sequence.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 { CreateSequenceChange } from "./sequence.base.ts";
3
4
  /**
@@ -21,5 +22,5 @@ export declare class CreateSequence extends CreateSequenceChange {
21
22
  });
22
23
  get creates(): `sequence:${string}`[];
23
24
  get requires(): string[];
24
- serialize(): string;
25
+ serialize(_options?: SerializeOptions): string;
25
26
  }
@@ -38,7 +38,7 @@ export class CreateSequence extends CreateSequenceChange {
38
38
  }
39
39
  return Array.from(dependencies);
40
40
  }
41
- serialize() {
41
+ serialize(_options) {
42
42
  const parts = ["CREATE SEQUENCE"];
43
43
  // Add schema and name
44
44
  parts.push(`${this.sequence.schema}.${this.sequence.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
  /**
@@ -18,5 +19,5 @@ export declare class DropSequence extends DropSequenceChange {
18
19
  });
19
20
  get drops(): `sequence:${string}`[];
20
21
  get requires(): `sequence:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,10 +22,18 @@ export class DropSequence extends DropSequenceChange {
22
22
  get requires() {
23
23
  return [this.sequence.stableId];
24
24
  }
25
- serialize() {
26
- return [
25
+ serialize(_options) {
26
+ const parts = [
27
27
  "DROP SEQUENCE",
28
28
  `${this.sequence.schema}.${this.sequence.name}`,
29
- ].join(" ");
29
+ ];
30
+ // Owned sequences still need CASCADE here because DROP runs in the earlier
31
+ // phase and later ALTER TABLE statements will re-establish the desired default.
32
+ if (this.sequence.owned_by_schema &&
33
+ this.sequence.owned_by_table &&
34
+ this.sequence.owned_by_column) {
35
+ parts.push("CASCADE");
36
+ }
37
+ return parts.join(" ");
30
38
  }
31
39
  }
@@ -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 { AlterSequenceChange } from "./sequence.base.ts";
3
4
  export type SequencePrivilege = GrantSequencePrivileges | RevokeSequencePrivileges | RevokeGrantOptionSequencePrivileges;
@@ -36,7 +37,7 @@ export declare class GrantSequencePrivileges extends AlterSequenceChange {
36
37
  });
37
38
  get creates(): `acl:${string}::grantee:${string}`[];
38
39
  get requires(): (`role:${string}` | `sequence:${string}`)[];
39
- serialize(): string;
40
+ serialize(_options?: SerializeOptions): string;
40
41
  }
41
42
  /**
42
43
  * Revoke privileges on a sequence.
@@ -75,7 +76,7 @@ export declare class RevokeSequencePrivileges extends AlterSequenceChange {
75
76
  });
76
77
  get drops(): `acl:${string}::grantee:${string}`[];
77
78
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `sequence:${string}`)[];
78
- serialize(): string;
79
+ serialize(_options?: SerializeOptions): string;
79
80
  }
80
81
  /**
81
82
  * Revoke grant option for privileges on a sequence.
@@ -97,5 +98,5 @@ export declare class RevokeGrantOptionSequencePrivileges extends AlterSequenceCh
97
98
  version?: number;
98
99
  });
99
100
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `sequence:${string}`)[];
100
- serialize(): string;
101
+ serialize(_options?: SerializeOptions): string;
101
102
  }
@@ -35,7 +35,7 @@ export class GrantSequencePrivileges extends AlterSequenceChange {
35
35
  get requires() {
36
36
  return [this.sequence.stableId, stableId.role(this.grantee)];
37
37
  }
38
- serialize() {
38
+ serialize(_options) {
39
39
  const hasGrantable = this.privileges.some((p) => p.grantable);
40
40
  const hasBase = this.privileges.some((p) => !p.grantable);
41
41
  if (hasGrantable && hasBase) {
@@ -91,7 +91,7 @@ export class RevokeSequencePrivileges extends AlterSequenceChange {
91
91
  stableId.role(this.grantee),
92
92
  ];
93
93
  }
94
- serialize() {
94
+ serialize(_options) {
95
95
  const kindPrefix = getObjectKindPrefix("SEQUENCE");
96
96
  const list = this.privileges.map((p) => p.privilege);
97
97
  const privSql = formatObjectPrivilegeList("SEQUENCE", list, this.version);
@@ -126,7 +126,7 @@ export class RevokeGrantOptionSequencePrivileges extends AlterSequenceChange {
126
126
  stableId.role(this.grantee),
127
127
  ];
128
128
  }
129
- serialize() {
129
+ serialize(_options) {
130
130
  const kindPrefix = getObjectKindPrefix("SEQUENCE");
131
131
  const privSql = formatObjectPrivilegeList("SEQUENCE", this.privilegeNames, this.version);
132
132
  const sequenceName = `${this.sequence.schema}.${this.sequence.name}`;
@@ -1,7 +1,9 @@
1
1
  import type { ObjectDiffContext } from "../diff-context.ts";
2
+ import { AlterTableAlterColumnSetDefault } from "../table/changes/table.alter.ts";
2
3
  import type { Table } from "../table/table.model.ts";
3
4
  import type { SequenceChange } from "./changes/sequence.types.ts";
4
5
  import type { Sequence } from "./sequence.model.ts";
6
+ type SequenceOrColumnSetDefaultChange = AlterTableAlterColumnSetDefault | SequenceChange;
5
7
  /**
6
8
  * Diff two sets of sequences from main and branch catalogs.
7
9
  *
@@ -11,4 +13,5 @@ import type { Sequence } from "./sequence.model.ts";
11
13
  * @param branchTables - The tables in the branch catalog (used to check if owning tables are being dropped).
12
14
  * @returns A list of changes to apply to main to make it match branch.
13
15
  */
14
- export declare function diffSequences(ctx: Pick<ObjectDiffContext, "version" | "currentUser" | "defaultPrivilegeState">, main: Record<string, Sequence>, branch: Record<string, Sequence>, branchTables?: Record<string, Table>): SequenceChange[];
16
+ export declare function diffSequences(ctx: Pick<ObjectDiffContext, "version" | "currentUser" | "defaultPrivilegeState">, main: Record<string, Sequence>, branch: Record<string, Sequence>, branchTables?: Record<string, Table>): SequenceOrColumnSetDefaultChange[];
17
+ export {};
@@ -1,5 +1,6 @@
1
1
  import { diffObjects } from "../base.diff.js";
2
2
  import { diffPrivileges, emitObjectPrivilegeChanges, } from "../base.privilege-diff.js";
3
+ import { AlterTableAlterColumnSetDefault } from "../table/changes/table.alter.js";
3
4
  import { hasNonAlterableChanges } from "../utils.js";
4
5
  import { AlterSequenceSetOptions, AlterSequenceSetOwnedBy, } from "./changes/sequence.alter.js";
5
6
  import { CreateCommentOnSequence, DropCommentOnSequence, } from "./changes/sequence.comment.js";
@@ -90,6 +91,9 @@ export function diffSequences(ctx, main, branch, branchTables = {}) {
90
91
  if (branchSequence.owned_by_schema !== null &&
91
92
  branchSequence.owned_by_table !== null &&
92
93
  branchSequence.owned_by_column !== null) {
94
+ const ownedByTableId = `table:${branchSequence.owned_by_schema}.${branchSequence.owned_by_table}`;
95
+ const ownedByTable = branchTables[ownedByTableId];
96
+ const ownedByColumn = ownedByTable?.columns?.find((column) => column.name === branchSequence.owned_by_column);
93
97
  changes.push(new AlterSequenceSetOwnedBy({
94
98
  sequence: branchSequence,
95
99
  ownedBy: {
@@ -98,6 +102,14 @@ export function diffSequences(ctx, main, branch, branchTables = {}) {
98
102
  column: branchSequence.owned_by_column,
99
103
  },
100
104
  }));
105
+ // Replacing an owned sequence with DROP ... CASCADE removes the column's
106
+ // existing nextval(...) default, so restore it after ownership is reattached.
107
+ if (ownedByTable && ownedByColumn && ownedByColumn.default !== null) {
108
+ changes.push(new AlterTableAlterColumnSetDefault({
109
+ table: ownedByTable,
110
+ column: ownedByColumn,
111
+ }));
112
+ }
101
113
  }
102
114
  else if (mainSequence.owned_by_schema !== null ||
103
115
  mainSequence.owned_by_table !== null ||
@@ -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 { type SubscriptionSettableOption } from "../utils.ts";
3
4
  import { AlterSubscriptionChange } from "./subscription.base.ts";
@@ -7,7 +8,7 @@ export declare class AlterSubscriptionSetConnection extends AlterSubscriptionCha
7
8
  constructor(props: {
8
9
  subscription: Subscription;
9
10
  });
10
- serialize(): string;
11
+ serialize(_options?: SerializeOptions): string;
11
12
  }
12
13
  export declare class AlterSubscriptionSetPublication extends AlterSubscriptionChange {
13
14
  readonly subscription: Subscription;
@@ -15,7 +16,7 @@ export declare class AlterSubscriptionSetPublication extends AlterSubscriptionCh
15
16
  constructor(props: {
16
17
  subscription: Subscription;
17
18
  });
18
- serialize(): string;
19
+ serialize(_options?: SerializeOptions): string;
19
20
  }
20
21
  export declare class AlterSubscriptionEnable extends AlterSubscriptionChange {
21
22
  readonly subscription: Subscription;
@@ -23,7 +24,7 @@ export declare class AlterSubscriptionEnable extends AlterSubscriptionChange {
23
24
  constructor(props: {
24
25
  subscription: Subscription;
25
26
  });
26
- serialize(): string;
27
+ serialize(_options?: SerializeOptions): string;
27
28
  }
28
29
  export declare class AlterSubscriptionDisable extends AlterSubscriptionChange {
29
30
  readonly subscription: Subscription;
@@ -31,7 +32,7 @@ export declare class AlterSubscriptionDisable extends AlterSubscriptionChange {
31
32
  constructor(props: {
32
33
  subscription: Subscription;
33
34
  });
34
- serialize(): string;
35
+ serialize(_options?: SerializeOptions): string;
35
36
  }
36
37
  export declare class AlterSubscriptionSetOptions extends AlterSubscriptionChange {
37
38
  readonly subscription: Subscription;
@@ -41,7 +42,7 @@ export declare class AlterSubscriptionSetOptions extends AlterSubscriptionChange
41
42
  subscription: Subscription;
42
43
  options: SubscriptionSettableOption[];
43
44
  });
44
- serialize(): string;
45
+ serialize(_options?: SerializeOptions): string;
45
46
  }
46
47
  export declare class AlterSubscriptionSetOwner extends AlterSubscriptionChange {
47
48
  readonly subscription: Subscription;
@@ -52,5 +53,5 @@ export declare class AlterSubscriptionSetOwner extends AlterSubscriptionChange {
52
53
  owner: string;
53
54
  });
54
55
  get requires(): `role:${string}`[];
55
- serialize(): string;
56
+ serialize(_options?: SerializeOptions): string;
56
57
  }