@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 { quoteLiteral } from "../../base.change.ts";
2
3
  import type { ColumnProps } from "../../base.model.ts";
3
4
  import { stableId } from "../../utils.ts";
@@ -49,7 +50,7 @@ export class CreateCommentOnTable extends CreateTableChange {
49
50
  return [this.table.stableId];
50
51
  }
51
52
 
52
- serialize(): string {
53
+ serialize(_options?: SerializeOptions): string {
53
54
  return [
54
55
  "COMMENT ON TABLE",
55
56
  `${this.table.schema}.${this.table.name}`,
@@ -80,7 +81,7 @@ export class DropCommentOnTable extends DropTableChange {
80
81
  return [stableId.comment(this.table.stableId), this.table.stableId];
81
82
  }
82
83
 
83
- serialize(): string {
84
+ serialize(_options?: SerializeOptions): string {
84
85
  return [
85
86
  "COMMENT ON TABLE",
86
87
  `${this.table.schema}.${this.table.name}`,
@@ -118,7 +119,7 @@ export class CreateCommentOnColumn extends CreateTableChange {
118
119
  ];
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  return [
123
124
  "COMMENT ON COLUMN",
124
125
  `${this.table.schema}.${this.table.name}.${this.column.name}`,
@@ -161,7 +162,7 @@ export class DropCommentOnColumn extends DropTableChange {
161
162
  return [stableId.comment(columnStableId), columnStableId];
162
163
  }
163
164
 
164
- serialize(): string {
165
+ serialize(_options?: SerializeOptions): string {
165
166
  return [
166
167
  "COMMENT ON COLUMN",
167
168
  `${this.table.schema}.${this.table.name}.${this.column.name}`,
@@ -206,7 +207,7 @@ export class CreateCommentOnConstraint extends CreateTableChange {
206
207
  ];
207
208
  }
208
209
 
209
- serialize(): string {
210
+ serialize(_options?: SerializeOptions): string {
210
211
  return [
211
212
  "COMMENT ON CONSTRAINT",
212
213
  this.constraint.name,
@@ -254,7 +255,7 @@ export class DropCommentOnConstraint extends DropTableChange {
254
255
  return [stableId.comment(constraintStableId), constraintStableId];
255
256
  }
256
257
 
257
- serialize(): string {
258
+ serialize(_options?: SerializeOptions): string {
258
259
  return [
259
260
  "COMMENT ON CONSTRAINT",
260
261
  this.constraint.name,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { isUserDefinedTypeSchema, stableId } from "../../utils.ts";
2
3
  import type { Table } from "../table.model.ts";
3
4
  import { CreateTableChange } from "./table.base.ts";
@@ -93,7 +94,7 @@ export class CreateTable extends CreateTableChange {
93
94
  return Array.from(dependencies);
94
95
  }
95
96
 
96
- serialize(): string {
97
+ serialize(_options?: SerializeOptions): string {
97
98
  const parts: string[] = ["CREATE"];
98
99
 
99
100
  // Add TEMPORARY/UNLOGGED based on persistence
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { stableId } from "../../utils.ts";
2
3
  import type { Table } from "../table.model.ts";
3
4
  import { DropTableChange } from "./table.base.ts";
@@ -27,6 +28,15 @@ export class DropTable extends DropTableChange {
27
28
  ...this.table.columns.map((column) =>
28
29
  stableId.column(this.table.schema, this.table.name, column.name),
29
30
  ),
31
+ // Include constraint stableIds so FK relationships that only exist at the
32
+ // constraint level still affect whole-table drop ordering.
33
+ ...this.table.constraints.map((constraint) =>
34
+ stableId.constraint(
35
+ this.table.schema,
36
+ this.table.name,
37
+ constraint.name,
38
+ ),
39
+ ),
30
40
  ];
31
41
  }
32
42
 
@@ -36,10 +46,19 @@ export class DropTable extends DropTableChange {
36
46
  ...this.table.columns.map((col) =>
37
47
  stableId.column(this.table.schema, this.table.name, col.name),
38
48
  ),
49
+ // Mirror the dropped constraint ids in requires so drop-phase graph
50
+ // consumers can connect catalog FK edges back to this table drop.
51
+ ...this.table.constraints.map((constraint) =>
52
+ stableId.constraint(
53
+ this.table.schema,
54
+ this.table.name,
55
+ constraint.name,
56
+ ),
57
+ ),
39
58
  ];
40
59
  }
41
60
 
42
- serialize(): string {
61
+ serialize(_options?: SerializeOptions): string {
43
62
  return ["DROP TABLE", `${this.table.schema}.${this.table.name}`].join(" ");
44
63
  }
45
64
  }
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -57,7 +58,7 @@ export class GrantTablePrivileges extends AlterTableChange {
57
58
  return [this.table.stableId, stableId.role(this.grantee)];
58
59
  }
59
60
 
60
- serialize(): string {
61
+ serialize(_options?: SerializeOptions): string {
61
62
  const hasGrantable = this.privileges.some((p) => p.grantable);
62
63
  const hasBase = this.privileges.some((p) => !p.grantable);
63
64
  if (hasGrantable && hasBase) {
@@ -132,7 +133,7 @@ export class RevokeTablePrivileges extends AlterTableChange {
132
133
  ];
133
134
  }
134
135
 
135
- serialize(): string {
136
+ serialize(_options?: SerializeOptions): string {
136
137
  const kindPrefix = getObjectKindPrefix("TABLE");
137
138
  const list = this.privileges.map((p) => p.privilege);
138
139
  const privSql = formatObjectPrivilegeList("TABLE", list, this.version);
@@ -183,7 +184,7 @@ export class RevokeGrantOptionTablePrivileges extends AlterTableChange {
183
184
  ];
184
185
  }
185
186
 
186
- serialize(): string {
187
+ serialize(_options?: SerializeOptions): string {
187
188
  const kindPrefix = getObjectKindPrefix("TABLE");
188
189
  const privSql = formatObjectPrivilegeList(
189
190
  "TABLE",
@@ -3,9 +3,12 @@ import { DefaultPrivilegeState } from "../base.default-privileges.ts";
3
3
  import {
4
4
  AlterTableAddColumn,
5
5
  AlterTableAddConstraint,
6
+ AlterTableAlterColumnAddIdentity,
6
7
  AlterTableAlterColumnDropDefault,
8
+ AlterTableAlterColumnDropIdentity,
7
9
  AlterTableAlterColumnDropNotNull,
8
10
  AlterTableAlterColumnSetDefault,
11
+ AlterTableAlterColumnSetGenerated,
9
12
  AlterTableAlterColumnSetNotNull,
10
13
  AlterTableAlterColumnType,
11
14
  AlterTableChangeOwner,
@@ -714,6 +717,124 @@ describe.concurrent("table.diff", () => {
714
717
  ).toBe(true);
715
718
  });
716
719
 
720
+ test("identity transitions emit drop/add/set-generated changes", () => {
721
+ const serialColumn = {
722
+ name: "id",
723
+ position: 1,
724
+ data_type: "integer",
725
+ data_type_str: "integer",
726
+ is_custom_type: false,
727
+ custom_type_type: null,
728
+ custom_type_category: null,
729
+ custom_type_schema: null,
730
+ custom_type_name: null,
731
+ not_null: false,
732
+ is_identity: false,
733
+ is_identity_always: false,
734
+ is_generated: false,
735
+ collation: null,
736
+ default: "nextval('public.t_identity_id_seq'::regclass)",
737
+ comment: null,
738
+ };
739
+
740
+ const identityAlwaysColumn = {
741
+ ...serialColumn,
742
+ is_identity: true,
743
+ is_identity_always: true,
744
+ default: null,
745
+ };
746
+
747
+ const identityByDefaultColumn = {
748
+ ...identityAlwaysColumn,
749
+ is_identity_always: false,
750
+ };
751
+
752
+ const serialToIdentityMain = new Table({
753
+ ...base,
754
+ name: "t_identity",
755
+ columns: [serialColumn],
756
+ });
757
+ const serialToIdentityBranch = new Table({
758
+ ...base,
759
+ name: "t_identity",
760
+ columns: [identityAlwaysColumn],
761
+ });
762
+
763
+ const serialToIdentityChanges = diffTables(
764
+ testContext,
765
+ { [serialToIdentityMain.stableId]: serialToIdentityMain },
766
+ { [serialToIdentityBranch.stableId]: serialToIdentityBranch },
767
+ );
768
+ expect(
769
+ serialToIdentityChanges.some(
770
+ (c) => c instanceof AlterTableAlterColumnDropDefault,
771
+ ),
772
+ ).toBe(true);
773
+ expect(
774
+ serialToIdentityChanges.some(
775
+ (c) => c instanceof AlterTableAlterColumnAddIdentity,
776
+ ),
777
+ ).toBe(true);
778
+
779
+ const identityToSerialChanges = diffTables(
780
+ testContext,
781
+ { [serialToIdentityBranch.stableId]: serialToIdentityBranch },
782
+ { [serialToIdentityMain.stableId]: serialToIdentityMain },
783
+ );
784
+ expect(
785
+ identityToSerialChanges.some(
786
+ (c) => c instanceof AlterTableAlterColumnDropIdentity,
787
+ ),
788
+ ).toBe(true);
789
+ expect(
790
+ identityToSerialChanges.some(
791
+ (c) => c instanceof AlterTableAlterColumnSetDefault,
792
+ ),
793
+ ).toBe(true);
794
+
795
+ const alwaysToByDefaultMain = new Table({
796
+ ...base,
797
+ name: "t_identity_mode",
798
+ columns: [identityAlwaysColumn],
799
+ });
800
+ const alwaysToByDefaultBranch = new Table({
801
+ ...base,
802
+ name: "t_identity_mode",
803
+ columns: [identityByDefaultColumn],
804
+ });
805
+ const alwaysToByDefaultChanges = diffTables(
806
+ testContext,
807
+ { [alwaysToByDefaultMain.stableId]: alwaysToByDefaultMain },
808
+ { [alwaysToByDefaultBranch.stableId]: alwaysToByDefaultBranch },
809
+ );
810
+ expect(
811
+ alwaysToByDefaultChanges.some(
812
+ (c) => c instanceof AlterTableAlterColumnSetGenerated,
813
+ ),
814
+ ).toBe(true);
815
+
816
+ const byDefaultToAlwaysMain = new Table({
817
+ ...base,
818
+ name: "t_identity_mode_reverse",
819
+ columns: [identityByDefaultColumn],
820
+ });
821
+ const byDefaultToAlwaysBranch = new Table({
822
+ ...base,
823
+ name: "t_identity_mode_reverse",
824
+ columns: [identityAlwaysColumn],
825
+ });
826
+ const byDefaultToAlwaysChanges = diffTables(
827
+ testContext,
828
+ { [byDefaultToAlwaysMain.stableId]: byDefaultToAlwaysMain },
829
+ { [byDefaultToAlwaysBranch.stableId]: byDefaultToAlwaysBranch },
830
+ );
831
+ expect(
832
+ byDefaultToAlwaysChanges.some(
833
+ (c) => c instanceof AlterTableAlterColumnSetGenerated,
834
+ ),
835
+ ).toBe(true);
836
+ });
837
+
717
838
  test("created table with privileges emits grant changes", () => {
718
839
  const t = new Table({
719
840
  ...base,
@@ -8,9 +8,12 @@ import { deepEqual } from "../utils.ts";
8
8
  import {
9
9
  AlterTableAddColumn,
10
10
  AlterTableAddConstraint,
11
+ AlterTableAlterColumnAddIdentity,
11
12
  AlterTableAlterColumnDropDefault,
13
+ AlterTableAlterColumnDropIdentity,
12
14
  AlterTableAlterColumnDropNotNull,
13
15
  AlterTableAlterColumnSetDefault,
16
+ AlterTableAlterColumnSetGenerated,
14
17
  AlterTableAlterColumnSetNotNull,
15
18
  AlterTableAlterColumnType,
16
19
  AlterTableAttachPartition,
@@ -545,7 +548,7 @@ export function diffTables(
545
548
  // Helper to check if parent has the same column property change
546
549
  const parentHasSameColumnPropertyChange = (
547
550
  columnName: string,
548
- property: "type" | "default" | "not_null",
551
+ property: "type" | "default" | "not_null" | "identity",
549
552
  ): boolean => {
550
553
  const { parentMain, parentBranch } = getParentTables();
551
554
  if (!parentMain || !parentBranch) {
@@ -601,6 +604,21 @@ export function diffTables(
601
604
  parentBranchCol.not_null === branchCol.not_null
602
605
  );
603
606
  }
607
+ case "identity": {
608
+ const parentIdentityChanged =
609
+ parentMainCol.is_identity !== parentBranchCol.is_identity ||
610
+ parentMainCol.is_identity_always !==
611
+ parentBranchCol.is_identity_always;
612
+ const partitionIdentityChanged =
613
+ mainCol.is_identity !== branchCol.is_identity ||
614
+ mainCol.is_identity_always !== branchCol.is_identity_always;
615
+ return (
616
+ parentIdentityChanged &&
617
+ partitionIdentityChanged &&
618
+ parentBranchCol.is_identity === branchCol.is_identity &&
619
+ parentBranchCol.is_identity_always === branchCol.is_identity_always
620
+ );
621
+ }
604
622
  }
605
623
  };
606
624
 
@@ -698,6 +716,19 @@ export function diffTables(
698
716
  }
699
717
  }
700
718
 
719
+ // PostgreSQL rejects SET DEFAULT while the column still has identity metadata,
720
+ // so identity removal must lead the IDENTITY -> serial/default transition.
721
+ if (mainCol.is_identity && !branchCol.is_identity) {
722
+ if (!parentHasSameColumnPropertyChange(name, "identity")) {
723
+ changes.push(
724
+ new AlterTableAlterColumnDropIdentity({
725
+ table: branchTable,
726
+ column: branchCol,
727
+ }),
728
+ );
729
+ }
730
+ }
731
+
701
732
  // DEFAULT change
702
733
  if (mainCol.default !== branchCol.default) {
703
734
  // Skip if parent has the same default change
@@ -746,6 +777,38 @@ export function diffTables(
746
777
  }
747
778
  }
748
779
 
780
+ // Serial-like defaults have to be cleared before ADD GENERATED AS IDENTITY,
781
+ // while mode-only flips stay in-place on an existing identity column.
782
+ if (
783
+ (!mainCol.is_identity && branchCol.is_identity) ||
784
+ (mainCol.is_identity &&
785
+ branchCol.is_identity &&
786
+ mainCol.is_identity_always !== branchCol.is_identity_always)
787
+ ) {
788
+ // Skip if parent has the same identity change
789
+ if (!parentHasSameColumnPropertyChange(name, "identity")) {
790
+ if (!mainCol.is_identity && branchCol.is_identity) {
791
+ changes.push(
792
+ new AlterTableAlterColumnAddIdentity({
793
+ table: branchTable,
794
+ column: branchCol,
795
+ }),
796
+ );
797
+ } else if (
798
+ mainCol.is_identity &&
799
+ branchCol.is_identity &&
800
+ mainCol.is_identity_always !== branchCol.is_identity_always
801
+ ) {
802
+ changes.push(
803
+ new AlterTableAlterColumnSetGenerated({
804
+ table: branchTable,
805
+ column: branchCol,
806
+ }),
807
+ );
808
+ }
809
+ }
810
+ }
811
+
749
812
  // NOT NULL change
750
813
  if (mainCol.not_null !== branchCol.not_null) {
751
814
  // 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 { quoteLiteral } from "../../base.change.ts";
2
3
  import type { TableLikeObject } from "../../base.model.ts";
3
4
  import type { Trigger } from "../trigger.model.ts";
@@ -40,7 +41,7 @@ export class ReplaceTrigger extends AlterTriggerChange {
40
41
  return [this.trigger.stableId];
41
42
  }
42
43
 
43
- serialize(): string {
44
+ serialize(_options?: SerializeOptions): string {
44
45
  if (this.trigger.isConstraintTrigger) {
45
46
  const dropChange = new DropTrigger({ trigger: this.trigger });
46
47
  const createChange = new CreateTrigger({
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../base.change.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Trigger } from "../trigger.model.ts";
@@ -22,7 +23,7 @@ export class CreateCommentOnTrigger extends CreateTriggerChange {
22
23
  return [this.trigger.stableId];
23
24
  }
24
25
 
25
- serialize(): string {
26
+ serialize(_options?: SerializeOptions): string {
26
27
  return [
27
28
  "COMMENT ON TRIGGER",
28
29
  this.trigger.name,
@@ -52,7 +53,7 @@ export class DropCommentOnTrigger extends DropTriggerChange {
52
53
  return [stableId.comment(this.trigger.stableId), this.trigger.stableId];
53
54
  }
54
55
 
55
- serialize(): string {
56
+ serialize(_options?: SerializeOptions): string {
56
57
  return [
57
58
  "COMMENT ON TRIGGER",
58
59
  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 { stableId } from "../../utils.ts";
3
4
  import type { Trigger } from "../trigger.model.ts";
@@ -74,7 +75,7 @@ export class CreateTrigger extends CreateTriggerChange {
74
75
  return Array.from(dependencies);
75
76
  }
76
77
 
77
- serialize(): string {
78
+ serialize(_options?: SerializeOptions): string {
78
79
  let definition = this.trigger.definition.trim();
79
80
  const isConstraintTrigger = this.trigger.isConstraintTrigger;
80
81
 
@@ -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
 
@@ -28,7 +29,7 @@ export class DropTrigger extends DropTriggerChange {
28
29
  return [this.trigger.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return [
33
34
  "DROP TRIGGER",
34
35
  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
 
@@ -42,7 +43,7 @@ export class AlterCompositeTypeChangeOwner extends AlterCompositeTypeChange {
42
43
  return [this.compositeType.stableId];
43
44
  }
44
45
 
45
- serialize(): string {
46
+ serialize(_options?: SerializeOptions): string {
46
47
  return [
47
48
  "ALTER TYPE",
48
49
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -77,7 +78,7 @@ export class AlterCompositeTypeAddAttribute extends AlterCompositeTypeChange {
77
78
  return [this.compositeType.stableId];
78
79
  }
79
80
 
80
- serialize(): string {
81
+ serialize(_options?: SerializeOptions): string {
81
82
  const parts = [
82
83
  "ALTER TYPE",
83
84
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -116,7 +117,7 @@ export class AlterCompositeTypeDropAttribute extends AlterCompositeTypeChange {
116
117
  ];
117
118
  }
118
119
 
119
- serialize(): string {
120
+ serialize(_options?: SerializeOptions): string {
120
121
  return [
121
122
  "ALTER TYPE",
122
123
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -150,7 +151,7 @@ export class AlterCompositeTypeAlterAttributeType extends AlterCompositeTypeChan
150
151
  ];
151
152
  }
152
153
 
153
- serialize(): string {
154
+ serialize(_options?: SerializeOptions): string {
154
155
  const parts = [
155
156
  "ALTER TYPE",
156
157
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../../base.change.ts";
2
3
  import type { ColumnProps } from "../../../base.model.ts";
3
4
  import { stableId } from "../../../utils.ts";
@@ -36,7 +37,7 @@ export class CreateCommentOnCompositeType extends CreateCompositeTypeChange {
36
37
  return [this.compositeType.stableId];
37
38
  }
38
39
 
39
- serialize(): string {
40
+ serialize(_options?: SerializeOptions): string {
40
41
  return [
41
42
  "COMMENT ON TYPE",
42
43
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -67,7 +68,7 @@ export class DropCommentOnCompositeType extends DropCompositeTypeChange {
67
68
  ];
68
69
  }
69
70
 
70
- serialize(): string {
71
+ serialize(_options?: SerializeOptions): string {
71
72
  return [
72
73
  "COMMENT ON TYPE",
73
74
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -99,7 +100,7 @@ export class CreateCommentOnCompositeTypeAttribute extends CreateCompositeTypeCh
99
100
  ];
100
101
  }
101
102
 
102
- serialize(): string {
103
+ serialize(_options?: SerializeOptions): string {
103
104
  return [
104
105
  "COMMENT ON COLUMN",
105
106
  `${this.compositeType.schema}.${this.compositeType.name}.${this.attribute.name}`,
@@ -135,7 +136,7 @@ export class DropCommentOnCompositeTypeAttribute extends DropCompositeTypeChange
135
136
  ];
136
137
  }
137
138
 
138
- serialize(): string {
139
+ serialize(_options?: SerializeOptions): string {
139
140
  return [
140
141
  "COMMENT ON COLUMN",
141
142
  `${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 { isUserDefinedTypeSchema, stableId } from "../../../utils.ts";
2
3
  import type { CompositeType } from "../composite-type.model.ts";
3
4
  import { CreateCompositeTypeChange } from "./composite-type.base.ts";
@@ -65,7 +66,7 @@ export class CreateCompositeType extends CreateCompositeTypeChange {
65
66
  return Array.from(dependencies);
66
67
  }
67
68
 
68
- serialize(): string {
69
+ serialize(_options?: SerializeOptions): string {
69
70
  const parts: string[] = ["CREATE TYPE"];
70
71
 
71
72
  // Add schema and 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
 
@@ -28,7 +29,7 @@ export class DropCompositeType extends DropCompositeTypeChange {
28
29
  return [this.compositeType.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return [
33
34
  "DROP TYPE",
34
35
  `${this.compositeType.schema}.${this.compositeType.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import {
2
3
  formatObjectPrivilegeList,
3
4
  getObjectKindPrefix,
@@ -52,7 +53,7 @@ export class GrantCompositeTypePrivileges extends AlterCompositeTypeChange {
52
53
  return [this.compositeType.stableId, stableId.role(this.grantee)];
53
54
  }
54
55
 
55
- serialize(): string {
56
+ serialize(_options?: SerializeOptions): string {
56
57
  const hasGrantable = this.privileges.some((p) => p.grantable);
57
58
  const hasBase = this.privileges.some((p) => !p.grantable);
58
59
  if (hasGrantable && hasBase) {
@@ -118,7 +119,7 @@ export class RevokeCompositeTypePrivileges extends AlterCompositeTypeChange {
118
119
  ];
119
120
  }
120
121
 
121
- serialize(): string {
122
+ serialize(_options?: SerializeOptions): string {
122
123
  const kindPrefix = getObjectKindPrefix("TYPE");
123
124
  const list = this.privileges.map((p) => p.privilege);
124
125
  const privSql = formatObjectPrivilegeList("TYPE", list, this.version);
@@ -162,7 +163,7 @@ export class RevokeGrantOptionCompositeTypePrivileges extends AlterCompositeType
162
163
  ];
163
164
  }
164
165
 
165
- serialize(): string {
166
+ serialize(_options?: SerializeOptions): string {
166
167
  const kindPrefix = getObjectKindPrefix("TYPE");
167
168
  const privSql = formatObjectPrivilegeList(
168
169
  "TYPE",
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../../base.change.ts";
2
3
  import type { Enum } from "../enum.model.ts";
3
4
  import { AlterEnumChange } from "./enum.base.ts";
@@ -36,7 +37,7 @@ export class AlterEnumChangeOwner extends AlterEnumChange {
36
37
  return [this.enum.stableId];
37
38
  }
38
39
 
39
- serialize(): string {
40
+ serialize(_options?: SerializeOptions): string {
40
41
  return [
41
42
  "ALTER TYPE",
42
43
  `${this.enum.schema}.${this.enum.name}`,
@@ -70,7 +71,7 @@ export class AlterEnumAddValue extends AlterEnumChange {
70
71
  return [this.enum.stableId];
71
72
  }
72
73
 
73
- serialize(): string {
74
+ serialize(_options?: SerializeOptions): string {
74
75
  const parts = [
75
76
  "ALTER TYPE",
76
77
  `${this.enum.schema}.${this.enum.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../../base.change.ts";
2
3
  import { stableId } from "../../../utils.ts";
3
4
  import type { Enum } from "../enum.model.ts";
@@ -26,7 +27,7 @@ export class CreateCommentOnEnum extends CreateEnumChange {
26
27
  return [this.enum.stableId];
27
28
  }
28
29
 
29
- serialize(): string {
30
+ serialize(_options?: SerializeOptions): string {
30
31
  return [
31
32
  "COMMENT ON TYPE",
32
33
  `${this.enum.schema}.${this.enum.name}`,
@@ -54,7 +55,7 @@ export class DropCommentOnEnum extends DropEnumChange {
54
55
  return [stableId.comment(this.enum.stableId), this.enum.stableId];
55
56
  }
56
57
 
57
- serialize(): string {
58
+ serialize(_options?: SerializeOptions): string {
58
59
  return [
59
60
  "COMMENT ON TYPE",
60
61
  `${this.enum.schema}.${this.enum.name}`,
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import { quoteLiteral } from "../../../base.change.ts";
2
3
  import { stableId } from "../../../utils.ts";
3
4
  import type { Enum } from "../enum.model.ts";
@@ -38,7 +39,7 @@ export class CreateEnum extends CreateEnumChange {
38
39
  return Array.from(dependencies);
39
40
  }
40
41
 
41
- serialize(): string {
42
+ serialize(_options?: SerializeOptions): string {
42
43
  const parts: string[] = ["CREATE TYPE"];
43
44
 
44
45
  // Add schema and name
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../../integrations/serialize/serialize.types.ts";
1
2
  import type { Enum } from "../enum.model.ts";
2
3
  import { DropEnumChange } from "./enum.base.ts";
3
4
 
@@ -28,7 +29,7 @@ export class DropEnum extends DropEnumChange {
28
29
  return [this.enum.stableId];
29
30
  }
30
31
 
31
- serialize(): string {
32
+ serialize(_options?: SerializeOptions): string {
32
33
  return ["DROP TYPE", `${this.enum.schema}.${this.enum.name}`].join(" ");
33
34
  }
34
35
  }