@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
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { ColumnProps } from "../../base.model.ts";
2
3
  import type { Table, TableConstraintProps } from "../table.model.ts";
3
4
  import { CreateTableChange, DropTableChange } from "./table.base.ts";
@@ -29,7 +30,7 @@ export declare class CreateCommentOnTable extends CreateTableChange {
29
30
  });
30
31
  get creates(): `comment:${string}`[];
31
32
  get requires(): `table:${string}`[];
32
- serialize(): string;
33
+ serialize(_options?: SerializeOptions): string;
33
34
  }
34
35
  /**
35
36
  * COMMENT ON TABLE ... IS ...
@@ -42,7 +43,7 @@ export declare class DropCommentOnTable extends DropTableChange {
42
43
  });
43
44
  get drops(): `comment:${string}`[];
44
45
  get requires(): (`comment:${string}` | `table:${string}`)[];
45
- serialize(): string;
46
+ serialize(_options?: SerializeOptions): string;
46
47
  }
47
48
  /**
48
49
  * COMMENT ON COLUMN ... IS ...
@@ -57,7 +58,7 @@ export declare class CreateCommentOnColumn extends CreateTableChange {
57
58
  });
58
59
  get creates(): `comment:${string}`[];
59
60
  get requires(): `column:${string}.${string}.${string}`[];
60
- serialize(): string;
61
+ serialize(_options?: SerializeOptions): string;
61
62
  }
62
63
  /**
63
64
  * COMMENT ON COLUMN ... IS ...
@@ -72,7 +73,7 @@ export declare class DropCommentOnColumn extends DropTableChange {
72
73
  });
73
74
  get drops(): `comment:${string}`[];
74
75
  get requires(): (`column:${string}.${string}.${string}` | `comment:${string}`)[];
75
- serialize(): string;
76
+ serialize(_options?: SerializeOptions): string;
76
77
  }
77
78
  /**
78
79
  * COMMENT ON CONSTRAINT ... IS ...
@@ -87,7 +88,7 @@ export declare class CreateCommentOnConstraint extends CreateTableChange {
87
88
  });
88
89
  get creates(): `comment:${string}`[];
89
90
  get requires(): `constraint:${string}.${string}.${string}`[];
90
- serialize(): string;
91
+ serialize(_options?: SerializeOptions): string;
91
92
  }
92
93
  /**
93
94
  * COMMENT ON CONSTRAINT ... IS ...
@@ -102,5 +103,5 @@ export declare class DropCommentOnConstraint extends DropTableChange {
102
103
  });
103
104
  get drops(): `comment:${string}`[];
104
105
  get requires(): (`constraint:${string}.${string}.${string}` | `comment:${string}`)[];
105
- serialize(): string;
106
+ serialize(_options?: SerializeOptions): string;
106
107
  }
@@ -17,7 +17,7 @@ export class CreateCommentOnTable extends CreateTableChange {
17
17
  get requires() {
18
18
  return [this.table.stableId];
19
19
  }
20
- serialize() {
20
+ serialize(_options) {
21
21
  return [
22
22
  "COMMENT ON TABLE",
23
23
  `${this.table.schema}.${this.table.name}`,
@@ -43,7 +43,7 @@ export class DropCommentOnTable extends DropTableChange {
43
43
  get requires() {
44
44
  return [stableId.comment(this.table.stableId), this.table.stableId];
45
45
  }
46
- serialize() {
46
+ serialize(_options) {
47
47
  return [
48
48
  "COMMENT ON TABLE",
49
49
  `${this.table.schema}.${this.table.name}`,
@@ -72,7 +72,7 @@ export class CreateCommentOnColumn extends CreateTableChange {
72
72
  stableId.column(this.table.schema, this.table.name, this.column.name),
73
73
  ];
74
74
  }
75
- serialize() {
75
+ serialize(_options) {
76
76
  return [
77
77
  "COMMENT ON COLUMN",
78
78
  `${this.table.schema}.${this.table.name}.${this.column.name}`,
@@ -102,7 +102,7 @@ export class DropCommentOnColumn extends DropTableChange {
102
102
  const columnStableId = stableId.column(this.table.schema, this.table.name, this.column.name);
103
103
  return [stableId.comment(columnStableId), columnStableId];
104
104
  }
105
- serialize() {
105
+ serialize(_options) {
106
106
  return [
107
107
  "COMMENT ON COLUMN",
108
108
  `${this.table.schema}.${this.table.name}.${this.column.name}`,
@@ -131,7 +131,7 @@ export class CreateCommentOnConstraint extends CreateTableChange {
131
131
  stableId.constraint(this.table.schema, this.table.name, this.constraint.name),
132
132
  ];
133
133
  }
134
- serialize() {
134
+ serialize(_options) {
135
135
  return [
136
136
  "COMMENT ON CONSTRAINT",
137
137
  this.constraint.name,
@@ -163,7 +163,7 @@ export class DropCommentOnConstraint extends DropTableChange {
163
163
  const constraintStableId = stableId.constraint(this.table.schema, this.table.name, this.constraint.name);
164
164
  return [stableId.comment(constraintStableId), constraintStableId];
165
165
  }
166
- serialize() {
166
+ serialize(_options) {
167
167
  return [
168
168
  "COMMENT ON CONSTRAINT",
169
169
  this.constraint.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Table } from "../table.model.ts";
2
3
  import { CreateTableChange } from "./table.base.ts";
3
4
  /**
@@ -29,5 +30,5 @@ export declare class CreateTable extends CreateTableChange {
29
30
  });
30
31
  get creates(): (`column:${string}.${string}.${string}` | `table:${string}`)[];
31
32
  get requires(): string[];
32
- serialize(): string;
33
+ serialize(_options?: SerializeOptions): string;
33
34
  }
@@ -70,7 +70,7 @@ export class CreateTable extends CreateTableChange {
70
70
  }
71
71
  return Array.from(dependencies);
72
72
  }
73
- serialize() {
73
+ serialize(_options) {
74
74
  const parts = ["CREATE"];
75
75
  // Add TEMPORARY/UNLOGGED based on persistence
76
76
  if (this.table.persistence === "t") {
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Table } from "../table.model.ts";
2
3
  import { DropTableChange } from "./table.base.ts";
3
4
  /**
@@ -16,7 +17,7 @@ export declare class DropTable extends DropTableChange {
16
17
  constructor(props: {
17
18
  table: Table;
18
19
  });
19
- get drops(): (`column:${string}.${string}.${string}` | `table:${string}`)[];
20
- get requires(): (`column:${string}.${string}.${string}` | `table:${string}`)[];
21
- serialize(): string;
20
+ get drops(): (`column:${string}.${string}.${string}` | `constraint:${string}.${string}.${string}` | `table:${string}`)[];
21
+ get requires(): (`column:${string}.${string}.${string}` | `constraint:${string}.${string}.${string}` | `table:${string}`)[];
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -21,15 +21,21 @@ export class DropTable extends DropTableChange {
21
21
  return [
22
22
  this.table.stableId,
23
23
  ...this.table.columns.map((column) => stableId.column(this.table.schema, this.table.name, column.name)),
24
+ // Include constraint stableIds so FK relationships that only exist at the
25
+ // constraint level still affect whole-table drop ordering.
26
+ ...this.table.constraints.map((constraint) => stableId.constraint(this.table.schema, this.table.name, constraint.name)),
24
27
  ];
25
28
  }
26
29
  get requires() {
27
30
  return [
28
31
  this.table.stableId,
29
32
  ...this.table.columns.map((col) => stableId.column(this.table.schema, this.table.name, col.name)),
33
+ // Mirror the dropped constraint ids in requires so drop-phase graph
34
+ // consumers can connect catalog FK edges back to this table drop.
35
+ ...this.table.constraints.map((constraint) => stableId.constraint(this.table.schema, this.table.name, constraint.name)),
30
36
  ];
31
37
  }
32
- serialize() {
38
+ serialize(_options) {
33
39
  return ["DROP TABLE", `${this.table.schema}.${this.table.name}`].join(" ");
34
40
  }
35
41
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Table } from "../table.model.ts";
2
3
  import { AlterTableChange } from "./table.base.ts";
3
4
  export type TablePrivilege = GrantTablePrivileges | RevokeTablePrivileges | RevokeGrantOptionTablePrivileges;
@@ -38,7 +39,7 @@ export declare class GrantTablePrivileges extends AlterTableChange {
38
39
  });
39
40
  get creates(): `acl:${string}::grantee:${string}`[];
40
41
  get requires(): (`role:${string}` | `table:${string}`)[];
41
- serialize(): string;
42
+ serialize(_options?: SerializeOptions): string;
42
43
  }
43
44
  /**
44
45
  * Revoke privileges on a table.
@@ -79,7 +80,7 @@ export declare class RevokeTablePrivileges extends AlterTableChange {
79
80
  });
80
81
  get drops(): `acl:${string}::grantee:${string}`[];
81
82
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `table:${string}`)[];
82
- serialize(): string;
83
+ serialize(_options?: SerializeOptions): string;
83
84
  }
84
85
  /**
85
86
  * Revoke grant option for privileges on a table.
@@ -103,5 +104,5 @@ export declare class RevokeGrantOptionTablePrivileges extends AlterTableChange {
103
104
  version?: number;
104
105
  });
105
106
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `table:${string}`)[];
106
- serialize(): string;
107
+ serialize(_options?: SerializeOptions): string;
107
108
  }
@@ -37,7 +37,7 @@ export class GrantTablePrivileges extends AlterTableChange {
37
37
  get requires() {
38
38
  return [this.table.stableId, stableId.role(this.grantee)];
39
39
  }
40
- serialize() {
40
+ serialize(_options) {
41
41
  const hasGrantable = this.privileges.some((p) => p.grantable);
42
42
  const hasBase = this.privileges.some((p) => !p.grantable);
43
43
  if (hasGrantable && hasBase) {
@@ -98,7 +98,7 @@ export class RevokeTablePrivileges extends AlterTableChange {
98
98
  stableId.role(this.grantee),
99
99
  ];
100
100
  }
101
- serialize() {
101
+ serialize(_options) {
102
102
  const kindPrefix = getObjectKindPrefix("TABLE");
103
103
  const list = this.privileges.map((p) => p.privilege);
104
104
  const privSql = formatObjectPrivilegeList("TABLE", list, this.version);
@@ -138,7 +138,7 @@ export class RevokeGrantOptionTablePrivileges extends AlterTableChange {
138
138
  stableId.role(this.grantee),
139
139
  ];
140
140
  }
141
- serialize() {
141
+ serialize(_options) {
142
142
  const kindPrefix = getObjectKindPrefix("TABLE");
143
143
  const privSql = formatObjectPrivilegeList("TABLE", this.privilegeNames, this.version);
144
144
  const tableName = `${this.table.schema}.${this.table.name}`;
@@ -1,7 +1,7 @@
1
1
  import { diffObjects } from "../base.diff.js";
2
2
  import { diffPrivileges, emitColumnPrivilegeChanges, } from "../base.privilege-diff.js";
3
3
  import { deepEqual } from "../utils.js";
4
- import { AlterTableAddColumn, AlterTableAddConstraint, AlterTableAlterColumnDropDefault, AlterTableAlterColumnDropNotNull, AlterTableAlterColumnSetDefault, AlterTableAlterColumnSetNotNull, AlterTableAlterColumnType, AlterTableAttachPartition, AlterTableChangeOwner, AlterTableDetachPartition, AlterTableDisableRowLevelSecurity, AlterTableDropColumn, AlterTableDropConstraint, AlterTableEnableRowLevelSecurity, AlterTableForceRowLevelSecurity, AlterTableNoForceRowLevelSecurity, AlterTableResetStorageParams, AlterTableSetLogged, AlterTableSetReplicaIdentity, AlterTableSetStorageParams, AlterTableSetUnlogged, AlterTableValidateConstraint, } from "./changes/table.alter.js";
4
+ import { AlterTableAddColumn, AlterTableAddConstraint, AlterTableAlterColumnAddIdentity, AlterTableAlterColumnDropDefault, AlterTableAlterColumnDropIdentity, AlterTableAlterColumnDropNotNull, AlterTableAlterColumnSetDefault, AlterTableAlterColumnSetGenerated, AlterTableAlterColumnSetNotNull, AlterTableAlterColumnType, AlterTableAttachPartition, AlterTableChangeOwner, AlterTableDetachPartition, AlterTableDisableRowLevelSecurity, AlterTableDropColumn, AlterTableDropConstraint, AlterTableEnableRowLevelSecurity, AlterTableForceRowLevelSecurity, AlterTableNoForceRowLevelSecurity, AlterTableResetStorageParams, AlterTableSetLogged, AlterTableSetReplicaIdentity, AlterTableSetStorageParams, AlterTableSetUnlogged, AlterTableValidateConstraint, } from "./changes/table.alter.js";
5
5
  import { CreateCommentOnColumn, CreateCommentOnConstraint, CreateCommentOnTable, DropCommentOnColumn, DropCommentOnConstraint, DropCommentOnTable, } from "./changes/table.comment.js";
6
6
  import { CreateTable } from "./changes/table.create.js";
7
7
  import { DropTable } from "./changes/table.drop.js";
@@ -381,6 +381,17 @@ export function diffTables(ctx, main, branch) {
381
381
  partitionNotNullChanged &&
382
382
  parentBranchCol.not_null === branchCol.not_null);
383
383
  }
384
+ case "identity": {
385
+ const parentIdentityChanged = parentMainCol.is_identity !== parentBranchCol.is_identity ||
386
+ parentMainCol.is_identity_always !==
387
+ parentBranchCol.is_identity_always;
388
+ const partitionIdentityChanged = mainCol.is_identity !== branchCol.is_identity ||
389
+ mainCol.is_identity_always !== branchCol.is_identity_always;
390
+ return (parentIdentityChanged &&
391
+ partitionIdentityChanged &&
392
+ parentBranchCol.is_identity === branchCol.is_identity &&
393
+ parentBranchCol.is_identity_always === branchCol.is_identity_always);
394
+ }
384
395
  }
385
396
  };
386
397
  // Helper to check if parent has the same column add/drop
@@ -450,6 +461,16 @@ export function diffTables(ctx, main, branch) {
450
461
  }));
451
462
  }
452
463
  }
464
+ // PostgreSQL rejects SET DEFAULT while the column still has identity metadata,
465
+ // so identity removal must lead the IDENTITY -> serial/default transition.
466
+ if (mainCol.is_identity && !branchCol.is_identity) {
467
+ if (!parentHasSameColumnPropertyChange(name, "identity")) {
468
+ changes.push(new AlterTableAlterColumnDropIdentity({
469
+ table: branchTable,
470
+ column: branchCol,
471
+ }));
472
+ }
473
+ }
453
474
  // DEFAULT change
454
475
  if (mainCol.default !== branchCol.default) {
455
476
  // Skip if parent has the same default change
@@ -490,6 +511,30 @@ export function diffTables(ctx, main, branch) {
490
511
  }
491
512
  }
492
513
  }
514
+ // Serial-like defaults have to be cleared before ADD GENERATED AS IDENTITY,
515
+ // while mode-only flips stay in-place on an existing identity column.
516
+ if ((!mainCol.is_identity && branchCol.is_identity) ||
517
+ (mainCol.is_identity &&
518
+ branchCol.is_identity &&
519
+ mainCol.is_identity_always !== branchCol.is_identity_always)) {
520
+ // Skip if parent has the same identity change
521
+ if (!parentHasSameColumnPropertyChange(name, "identity")) {
522
+ if (!mainCol.is_identity && branchCol.is_identity) {
523
+ changes.push(new AlterTableAlterColumnAddIdentity({
524
+ table: branchTable,
525
+ column: branchCol,
526
+ }));
527
+ }
528
+ else if (mainCol.is_identity &&
529
+ branchCol.is_identity &&
530
+ mainCol.is_identity_always !== branchCol.is_identity_always) {
531
+ changes.push(new AlterTableAlterColumnSetGenerated({
532
+ table: branchTable,
533
+ column: branchCol,
534
+ }));
535
+ }
536
+ }
537
+ }
493
538
  // NOT NULL change
494
539
  if (mainCol.not_null !== branchCol.not_null) {
495
540
  // Skip if parent has the same NOT NULL change
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { TableLikeObject } from "../../base.model.ts";
2
3
  import type { Trigger } from "../trigger.model.ts";
3
4
  import { AlterTriggerChange } from "./trigger.base.ts";
@@ -25,5 +26,5 @@ export declare class ReplaceTrigger extends AlterTriggerChange {
25
26
  indexableObject?: TableLikeObject;
26
27
  });
27
28
  get requires(): `trigger:${string}`[];
28
- serialize(): string;
29
+ serialize(_options?: SerializeOptions): string;
29
30
  }
@@ -18,7 +18,7 @@ export class ReplaceTrigger extends AlterTriggerChange {
18
18
  get requires() {
19
19
  return [this.trigger.stableId];
20
20
  }
21
- serialize() {
21
+ serialize(_options) {
22
22
  if (this.trigger.isConstraintTrigger) {
23
23
  const dropChange = new DropTrigger({ trigger: this.trigger });
24
24
  const createChange = new CreateTrigger({
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Trigger } from "../trigger.model.ts";
2
3
  import { CreateTriggerChange, DropTriggerChange } from "./trigger.base.ts";
3
4
  export type CommentTrigger = CreateCommentOnTrigger | DropCommentOnTrigger;
@@ -9,7 +10,7 @@ export declare class CreateCommentOnTrigger extends CreateTriggerChange {
9
10
  });
10
11
  get creates(): `comment:${string}`[];
11
12
  get requires(): `trigger:${string}`[];
12
- serialize(): string;
13
+ serialize(_options?: SerializeOptions): string;
13
14
  }
14
15
  export declare class DropCommentOnTrigger extends DropTriggerChange {
15
16
  readonly trigger: Trigger;
@@ -19,5 +20,5 @@ export declare class DropCommentOnTrigger extends DropTriggerChange {
19
20
  });
20
21
  get drops(): `comment:${string}`[];
21
22
  get requires(): (`comment:${string}` | `trigger:${string}`)[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnTrigger extends CreateTriggerChange {
14
14
  get requires() {
15
15
  return [this.trigger.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON TRIGGER",
20
20
  this.trigger.name,
@@ -39,7 +39,7 @@ export class DropCommentOnTrigger extends DropTriggerChange {
39
39
  get requires() {
40
40
  return [stableId.comment(this.trigger.stableId), this.trigger.stableId];
41
41
  }
42
- serialize() {
42
+ serialize(_options) {
43
43
  return [
44
44
  "COMMENT ON TRIGGER",
45
45
  this.trigger.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { TableLikeObject } from "../../base.model.ts";
2
3
  import type { Trigger } from "../trigger.model.ts";
3
4
  import { CreateTriggerChange } from "./trigger.base.ts";
@@ -37,5 +38,5 @@ export declare class CreateTrigger extends CreateTriggerChange {
37
38
  });
38
39
  get creates(): `trigger:${string}`[];
39
40
  get requires(): string[];
40
- serialize(): string;
41
+ serialize(_options?: SerializeOptions): string;
41
42
  }
@@ -51,7 +51,7 @@ export class CreateTrigger extends CreateTriggerChange {
51
51
  dependencies.add(stableId.role(this.trigger.owner));
52
52
  return Array.from(dependencies);
53
53
  }
54
- serialize() {
54
+ serialize(_options) {
55
55
  let definition = this.trigger.definition.trim();
56
56
  const isConstraintTrigger = this.trigger.isConstraintTrigger;
57
57
  definition = definition.replace(/^CREATE\s+(?:OR\s+REPLACE\s+)?/i, `CREATE ${this.orReplace && !isConstraintTrigger ? "OR REPLACE " : ""}`);
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Trigger } from "../trigger.model.ts";
2
3
  import { DropTriggerChange } from "./trigger.base.ts";
3
4
  /**
@@ -18,5 +19,5 @@ export declare class DropTrigger extends DropTriggerChange {
18
19
  });
19
20
  get drops(): `trigger:${string}`[];
20
21
  get requires(): `trigger:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,7 +22,7 @@ export class DropTrigger extends DropTriggerChange {
22
22
  get requires() {
23
23
  return [this.trigger.stableId];
24
24
  }
25
- serialize() {
25
+ serialize(_options) {
26
26
  return [
27
27
  "DROP TRIGGER",
28
28
  this.trigger.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { AlterCompositeTypeChange } from "./composite-type.base.ts";
3
4
  /**
@@ -29,7 +30,7 @@ export declare class AlterCompositeTypeChangeOwner extends AlterCompositeTypeCha
29
30
  owner: string;
30
31
  });
31
32
  get requires(): `type:${string}`[];
32
- serialize(): string;
33
+ serialize(_options?: SerializeOptions): string;
33
34
  }
34
35
  /**
35
36
  * ALTER TYPE ... ADD ATTRIBUTE ...
@@ -44,7 +45,7 @@ export declare class AlterCompositeTypeAddAttribute extends AlterCompositeTypeCh
44
45
  });
45
46
  get creates(): string[];
46
47
  get requires(): `type:${string}`[];
47
- serialize(): string;
48
+ serialize(_options?: SerializeOptions): string;
48
49
  }
49
50
  /**
50
51
  * ALTER TYPE ... DROP ATTRIBUTE ...
@@ -58,7 +59,7 @@ export declare class AlterCompositeTypeDropAttribute extends AlterCompositeTypeC
58
59
  attribute: CompositeType["columns"][number];
59
60
  });
60
61
  get requires(): string[];
61
- serialize(): string;
62
+ serialize(_options?: SerializeOptions): string;
62
63
  }
63
64
  /**
64
65
  * ALTER TYPE ... ALTER ATTRIBUTE ... TYPE ... [ COLLATE ... ]
@@ -72,7 +73,7 @@ export declare class AlterCompositeTypeAlterAttributeType extends AlterComposite
72
73
  attribute: CompositeType["columns"][number];
73
74
  });
74
75
  get requires(): string[];
75
- serialize(): string;
76
+ serialize(_options?: SerializeOptions): string;
76
77
  }
77
78
  /**
78
79
  * Replace a composite type by dropping and recreating it.
@@ -14,7 +14,7 @@ export class AlterCompositeTypeChangeOwner extends AlterCompositeTypeChange {
14
14
  get requires() {
15
15
  return [this.compositeType.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "ALTER TYPE",
20
20
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -41,7 +41,7 @@ export class AlterCompositeTypeAddAttribute extends AlterCompositeTypeChange {
41
41
  get requires() {
42
42
  return [this.compositeType.stableId];
43
43
  }
44
- serialize() {
44
+ serialize(_options) {
45
45
  const parts = [
46
46
  "ALTER TYPE",
47
47
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -73,7 +73,7 @@ export class AlterCompositeTypeDropAttribute extends AlterCompositeTypeChange {
73
73
  this.compositeType.stableId,
74
74
  ];
75
75
  }
76
- serialize() {
76
+ serialize(_options) {
77
77
  return [
78
78
  "ALTER TYPE",
79
79
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -100,7 +100,7 @@ export class AlterCompositeTypeAlterAttributeType extends AlterCompositeTypeChan
100
100
  this.compositeType.stableId,
101
101
  ];
102
102
  }
103
- serialize() {
103
+ serialize(_options) {
104
104
  const parts = [
105
105
  "ALTER TYPE",
106
106
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { ColumnProps } from "../../../base.model.ts";
2
3
  import type { CompositeType } from "../composite-type.model.ts";
3
4
  import { CreateCompositeTypeChange, DropCompositeTypeChange } from "./composite-type.base.ts";
@@ -15,7 +16,7 @@ export declare class CreateCommentOnCompositeType extends CreateCompositeTypeCha
15
16
  });
16
17
  get creates(): `comment:${string}`[];
17
18
  get requires(): `type:${string}`[];
18
- serialize(): string;
19
+ serialize(_options?: SerializeOptions): string;
19
20
  }
20
21
  export declare class DropCommentOnCompositeType extends DropCompositeTypeChange {
21
22
  readonly compositeType: CompositeType;
@@ -25,7 +26,7 @@ export declare class DropCommentOnCompositeType extends DropCompositeTypeChange
25
26
  });
26
27
  get drops(): `comment:${string}`[];
27
28
  get requires(): (`comment:${string}` | `type:${string}`)[];
28
- serialize(): string;
29
+ serialize(_options?: SerializeOptions): string;
29
30
  }
30
31
  export declare class CreateCommentOnCompositeTypeAttribute extends CreateCompositeTypeChange {
31
32
  readonly compositeType: CompositeType;
@@ -37,7 +38,7 @@ export declare class CreateCommentOnCompositeTypeAttribute extends CreateComposi
37
38
  });
38
39
  get creates(): `comment:${string}`[];
39
40
  get requires(): string[];
40
- serialize(): string;
41
+ serialize(_options?: SerializeOptions): string;
41
42
  }
42
43
  export declare class DropCommentOnCompositeTypeAttribute extends DropCompositeTypeChange {
43
44
  readonly compositeType: CompositeType;
@@ -49,5 +50,5 @@ export declare class DropCommentOnCompositeTypeAttribute extends DropCompositeTy
49
50
  });
50
51
  get drops(): `comment:${string}`[];
51
52
  get requires(): string[];
52
- serialize(): string;
53
+ serialize(_options?: SerializeOptions): string;
53
54
  }
@@ -14,7 +14,7 @@ export class CreateCommentOnCompositeType extends CreateCompositeTypeChange {
14
14
  get requires() {
15
15
  return [this.compositeType.stableId];
16
16
  }
17
- serialize() {
17
+ serialize(_options) {
18
18
  return [
19
19
  "COMMENT ON TYPE",
20
20
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -40,7 +40,7 @@ export class DropCommentOnCompositeType extends DropCompositeTypeChange {
40
40
  this.compositeType.stableId,
41
41
  ];
42
42
  }
43
- serialize() {
43
+ serialize(_options) {
44
44
  return [
45
45
  "COMMENT ON TYPE",
46
46
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -67,7 +67,7 @@ export class CreateCommentOnCompositeTypeAttribute extends CreateCompositeTypeCh
67
67
  this.compositeType.stableId,
68
68
  ];
69
69
  }
70
- serialize() {
70
+ serialize(_options) {
71
71
  return [
72
72
  "COMMENT ON COLUMN",
73
73
  `${this.compositeType.schema}.${this.compositeType.name}.${this.attribute.name}`,
@@ -98,7 +98,7 @@ export class DropCommentOnCompositeTypeAttribute extends DropCompositeTypeChange
98
98
  this.compositeType.stableId,
99
99
  ];
100
100
  }
101
- serialize() {
101
+ serialize(_options) {
102
102
  return [
103
103
  "COMMENT ON COLUMN",
104
104
  `${this.compositeType.schema}.${this.compositeType.name}.${this.attribute.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { CreateCompositeTypeChange } from "./composite-type.base.ts";
3
4
  /**
@@ -19,5 +20,5 @@ export declare class CreateCompositeType extends CreateCompositeTypeChange {
19
20
  });
20
21
  get creates(): `type:${string}`[];
21
22
  get requires(): string[];
22
- serialize(): string;
23
+ serialize(_options?: SerializeOptions): string;
23
24
  }
@@ -48,7 +48,7 @@ export class CreateCompositeType extends CreateCompositeTypeChange {
48
48
  }
49
49
  return Array.from(dependencies);
50
50
  }
51
- serialize() {
51
+ serialize(_options) {
52
52
  const parts = ["CREATE TYPE"];
53
53
  // Add schema and name
54
54
  parts.push(`${this.compositeType.schema}.${this.compositeType.name}`);
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { DropCompositeTypeChange } from "./composite-type.base.ts";
3
4
  /**
@@ -18,5 +19,5 @@ export declare class DropCompositeType extends DropCompositeTypeChange {
18
19
  });
19
20
  get drops(): `type:${string}`[];
20
21
  get requires(): `type:${string}`[];
21
- serialize(): string;
22
+ serialize(_options?: SerializeOptions): string;
22
23
  }
@@ -22,7 +22,7 @@ export class DropCompositeType extends DropCompositeTypeChange {
22
22
  get requires() {
23
23
  return [this.compositeType.stableId];
24
24
  }
25
- serialize() {
25
+ serialize(_options) {
26
26
  return [
27
27
  "DROP TYPE",
28
28
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { CompositeType } from "../composite-type.model.ts";
2
3
  import { AlterCompositeTypeChange } from "./composite-type.base.ts";
3
4
  export type CompositeTypePrivilege = GrantCompositeTypePrivileges | RevokeCompositeTypePrivileges | RevokeGrantOptionCompositeTypePrivileges;
@@ -34,7 +35,7 @@ export declare class GrantCompositeTypePrivileges extends AlterCompositeTypeChan
34
35
  });
35
36
  get creates(): `acl:${string}::grantee:${string}`[];
36
37
  get requires(): (`role:${string}` | `type:${string}`)[];
37
- serialize(): string;
38
+ serialize(_options?: SerializeOptions): string;
38
39
  }
39
40
  /**
40
41
  * Revoke privileges on a composite type.
@@ -71,7 +72,7 @@ export declare class RevokeCompositeTypePrivileges extends AlterCompositeTypeCha
71
72
  });
72
73
  get drops(): `acl:${string}::grantee:${string}`[];
73
74
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
74
- serialize(): string;
75
+ serialize(_options?: SerializeOptions): string;
75
76
  }
76
77
  /**
77
78
  * Revoke grant option for privileges on a composite type.
@@ -93,5 +94,5 @@ export declare class RevokeGrantOptionCompositeTypePrivileges extends AlterCompo
93
94
  version?: number;
94
95
  });
95
96
  get requires(): (`acl:${string}::grantee:${string}` | `role:${string}` | `type:${string}`)[];
96
- serialize(): string;
97
+ serialize(_options?: SerializeOptions): string;
97
98
  }