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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/dist/core/expand-replace-dependencies.js +23 -0
  2. package/dist/core/integrations/serialize/dsl.d.ts +1 -8
  3. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  4. package/dist/core/integrations/supabase.js +19 -0
  5. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  6. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  7. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  8. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  9. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  10. package/dist/core/objects/aggregate/changes/aggregate.create.js +1 -1
  11. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  12. package/dist/core/objects/aggregate/changes/aggregate.drop.js +1 -1
  13. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  14. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  15. package/dist/core/objects/base.change.d.ts +2 -1
  16. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  17. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  18. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  19. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  20. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  21. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  22. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  23. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  24. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  25. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  26. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  27. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  28. package/dist/core/objects/domain/changes/domain.create.d.ts +2 -1
  29. package/dist/core/objects/domain/changes/domain.create.js +1 -1
  30. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  31. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  32. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  33. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  34. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  35. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  36. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  37. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  38. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  39. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  40. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  41. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  42. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  43. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  44. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  45. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  46. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  47. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  48. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  49. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  50. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  51. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  52. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  53. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  54. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  55. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  56. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  57. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  58. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  59. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  60. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  61. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  62. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  63. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  64. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  65. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  66. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  67. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  68. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  69. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  70. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  71. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  72. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  73. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  74. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  75. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  76. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  77. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  78. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  79. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  80. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  81. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  82. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  83. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  84. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  85. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  86. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  87. package/dist/core/objects/index/changes/index.alter.js +3 -3
  88. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  89. package/dist/core/objects/index/changes/index.comment.js +2 -2
  90. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  91. package/dist/core/objects/index/changes/index.create.js +1 -1
  92. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  93. package/dist/core/objects/index/changes/index.drop.js +1 -1
  94. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  95. package/dist/core/objects/language/changes/language.alter.js +1 -1
  96. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  97. package/dist/core/objects/language/changes/language.comment.js +2 -2
  98. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  99. package/dist/core/objects/language/changes/language.create.js +1 -1
  100. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  101. package/dist/core/objects/language/changes/language.drop.js +1 -1
  102. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  103. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  104. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  105. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  106. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  107. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  108. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  109. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  110. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  111. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  112. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  113. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  114. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  115. package/dist/core/objects/procedure/changes/procedure.alter.js +7 -7
  116. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  117. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  118. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  119. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  120. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  121. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  122. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  123. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  124. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -7
  125. package/dist/core/objects/publication/changes/publication.alter.js +12 -7
  126. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  127. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  128. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  129. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  130. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  131. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  132. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  133. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +3 -3
  134. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  135. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  136. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  137. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +1 -1
  138. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  139. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  140. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  141. package/dist/core/objects/role/changes/role.alter.js +2 -2
  142. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  143. package/dist/core/objects/role/changes/role.comment.js +2 -2
  144. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  145. package/dist/core/objects/role/changes/role.create.js +1 -1
  146. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  147. package/dist/core/objects/role/changes/role.drop.js +1 -1
  148. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  149. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  150. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  151. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  152. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  153. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  154. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  155. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  156. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  157. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  158. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  159. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  160. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  161. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  162. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  163. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  164. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  165. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  166. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  167. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  168. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  169. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  170. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  171. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  172. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  173. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  174. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  175. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  176. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  177. package/dist/core/objects/sequence/sequence.diff.d.ts +4 -1
  178. package/dist/core/objects/sequence/sequence.diff.js +12 -0
  179. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  180. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  181. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  182. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  183. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  184. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  185. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  186. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  187. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  188. package/dist/core/objects/table/changes/table.alter.js +107 -22
  189. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  190. package/dist/core/objects/table/changes/table.comment.js +6 -6
  191. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  192. package/dist/core/objects/table/changes/table.create.js +1 -1
  193. package/dist/core/objects/table/changes/table.drop.d.ts +4 -3
  194. package/dist/core/objects/table/changes/table.drop.js +7 -1
  195. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  196. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  197. package/dist/core/objects/table/table.diff.js +46 -1
  198. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  199. package/dist/core/objects/trigger/changes/trigger.alter.js +1 -1
  200. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  201. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  202. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  203. package/dist/core/objects/trigger/changes/trigger.create.js +1 -1
  204. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  205. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  206. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  207. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  208. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  209. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  210. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  211. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  212. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  213. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  214. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  215. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  216. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  217. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  218. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  219. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  220. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  221. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  222. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  223. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  224. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  225. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  226. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  227. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  228. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  229. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  230. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  231. package/dist/core/objects/type/range/changes/range.create.js +1 -1
  232. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  233. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  234. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  235. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  236. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  237. package/dist/core/objects/view/changes/view.alter.js +3 -3
  238. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  239. package/dist/core/objects/view/changes/view.comment.js +2 -2
  240. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  241. package/dist/core/objects/view/changes/view.create.js +1 -1
  242. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  243. package/dist/core/objects/view/changes/view.drop.js +1 -1
  244. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  245. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  246. package/dist/core/sort/custom-constraints.js +64 -0
  247. package/package.json +1 -1
  248. package/src/core/expand-replace-dependencies.test.ts +126 -1
  249. package/src/core/expand-replace-dependencies.ts +50 -0
  250. package/src/core/integrations/serialize/dsl.test.ts +20 -1
  251. package/src/core/integrations/serialize/dsl.ts +1 -10
  252. package/src/core/integrations/serialize/serialize.types.ts +37 -0
  253. package/src/core/integrations/supabase.ts +19 -0
  254. package/src/core/objects/aggregate/changes/aggregate.alter.ts +2 -1
  255. package/src/core/objects/aggregate/changes/aggregate.comment.ts +3 -2
  256. package/src/core/objects/aggregate/changes/aggregate.create.ts +2 -1
  257. package/src/core/objects/aggregate/changes/aggregate.drop.ts +2 -1
  258. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +4 -3
  259. package/src/core/objects/base.change.ts +3 -1
  260. package/src/core/objects/collation/changes/collation.alter.ts +3 -2
  261. package/src/core/objects/collation/changes/collation.comment.ts +3 -2
  262. package/src/core/objects/collation/changes/collation.create.ts +2 -1
  263. package/src/core/objects/collation/changes/collation.drop.ts +2 -1
  264. package/src/core/objects/domain/changes/domain.alter.ts +9 -8
  265. package/src/core/objects/domain/changes/domain.comment.ts +3 -2
  266. package/src/core/objects/domain/changes/domain.create.ts +2 -1
  267. package/src/core/objects/domain/changes/domain.drop.ts +2 -1
  268. package/src/core/objects/domain/changes/domain.privilege.ts +4 -3
  269. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +3 -2
  270. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +3 -2
  271. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +2 -1
  272. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +2 -1
  273. package/src/core/objects/extension/changes/extension.alter.ts +3 -2
  274. package/src/core/objects/extension/changes/extension.comment.ts +3 -2
  275. package/src/core/objects/extension/changes/extension.create.test.ts +22 -0
  276. package/src/core/objects/extension/changes/extension.create.ts +5 -2
  277. package/src/core/objects/extension/changes/extension.drop.ts +2 -1
  278. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +3 -2
  279. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +3 -2
  280. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +2 -1
  281. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +2 -1
  282. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +4 -3
  283. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +10 -9
  284. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +3 -2
  285. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +2 -1
  286. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +2 -1
  287. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +4 -3
  288. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +4 -3
  289. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +3 -2
  290. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +2 -1
  291. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +2 -1
  292. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +4 -3
  293. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +2 -1
  294. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +2 -1
  295. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +2 -1
  296. package/src/core/objects/index/changes/index.alter.ts +4 -3
  297. package/src/core/objects/index/changes/index.comment.ts +3 -2
  298. package/src/core/objects/index/changes/index.create.ts +2 -1
  299. package/src/core/objects/index/changes/index.drop.ts +2 -1
  300. package/src/core/objects/language/changes/language.alter.ts +2 -1
  301. package/src/core/objects/language/changes/language.comment.ts +3 -2
  302. package/src/core/objects/language/changes/language.create.ts +2 -1
  303. package/src/core/objects/language/changes/language.drop.ts +2 -1
  304. package/src/core/objects/language/changes/language.privilege.ts +4 -3
  305. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +3 -2
  306. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +5 -4
  307. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +2 -1
  308. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +2 -1
  309. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +4 -3
  310. package/src/core/objects/procedure/changes/procedure.alter.ts +8 -7
  311. package/src/core/objects/procedure/changes/procedure.comment.ts +3 -2
  312. package/src/core/objects/procedure/changes/procedure.create.ts +2 -1
  313. package/src/core/objects/procedure/changes/procedure.drop.ts +2 -1
  314. package/src/core/objects/procedure/changes/procedure.privilege.ts +4 -3
  315. package/src/core/objects/publication/changes/publication.alter.test.ts +4 -0
  316. package/src/core/objects/publication/changes/publication.alter.ts +14 -7
  317. package/src/core/objects/publication/changes/publication.comment.ts +3 -2
  318. package/src/core/objects/publication/changes/publication.create.ts +2 -1
  319. package/src/core/objects/publication/changes/publication.drop.ts +2 -1
  320. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +4 -3
  321. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +3 -2
  322. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +2 -1
  323. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +2 -1
  324. package/src/core/objects/role/changes/role.alter.ts +3 -2
  325. package/src/core/objects/role/changes/role.comment.ts +3 -2
  326. package/src/core/objects/role/changes/role.create.ts +2 -1
  327. package/src/core/objects/role/changes/role.drop.ts +2 -1
  328. package/src/core/objects/role/changes/role.privilege.ts +6 -5
  329. package/src/core/objects/rule/changes/rule.alter.ts +3 -2
  330. package/src/core/objects/rule/changes/rule.comment.ts +3 -2
  331. package/src/core/objects/rule/changes/rule.create.ts +2 -1
  332. package/src/core/objects/rule/changes/rule.drop.ts +2 -1
  333. package/src/core/objects/schema/changes/schema.alter.ts +2 -1
  334. package/src/core/objects/schema/changes/schema.comment.ts +3 -2
  335. package/src/core/objects/schema/changes/schema.create.ts +3 -3
  336. package/src/core/objects/schema/changes/schema.drop.ts +2 -1
  337. package/src/core/objects/schema/changes/schema.privilege.ts +4 -3
  338. package/src/core/objects/sequence/changes/sequence.alter.ts +3 -2
  339. package/src/core/objects/sequence/changes/sequence.comment.ts +3 -2
  340. package/src/core/objects/sequence/changes/sequence.create.ts +2 -1
  341. package/src/core/objects/sequence/changes/sequence.drop.ts +16 -3
  342. package/src/core/objects/sequence/changes/sequence.privilege.ts +4 -3
  343. package/src/core/objects/sequence/sequence.diff.test.ts +73 -1
  344. package/src/core/objects/sequence/sequence.diff.ts +24 -2
  345. package/src/core/objects/subscription/changes/subscription.alter.ts +7 -6
  346. package/src/core/objects/subscription/changes/subscription.comment.ts +3 -2
  347. package/src/core/objects/subscription/changes/subscription.create.ts +2 -1
  348. package/src/core/objects/subscription/changes/subscription.drop.ts +2 -1
  349. package/src/core/objects/table/changes/table.alter.test.ts +38 -0
  350. package/src/core/objects/table/changes/table.alter.ts +123 -22
  351. package/src/core/objects/table/changes/table.comment.ts +7 -6
  352. package/src/core/objects/table/changes/table.create.ts +2 -1
  353. package/src/core/objects/table/changes/table.drop.ts +20 -1
  354. package/src/core/objects/table/changes/table.privilege.ts +4 -3
  355. package/src/core/objects/table/table.diff.test.ts +121 -0
  356. package/src/core/objects/table/table.diff.ts +64 -1
  357. package/src/core/objects/trigger/changes/trigger.alter.ts +2 -1
  358. package/src/core/objects/trigger/changes/trigger.comment.ts +3 -2
  359. package/src/core/objects/trigger/changes/trigger.create.ts +2 -1
  360. package/src/core/objects/trigger/changes/trigger.drop.ts +2 -1
  361. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +5 -4
  362. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +5 -4
  363. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +2 -1
  364. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +2 -1
  365. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +4 -3
  366. package/src/core/objects/type/enum/changes/enum.alter.ts +3 -2
  367. package/src/core/objects/type/enum/changes/enum.comment.ts +3 -2
  368. package/src/core/objects/type/enum/changes/enum.create.ts +2 -1
  369. package/src/core/objects/type/enum/changes/enum.drop.ts +2 -1
  370. package/src/core/objects/type/enum/changes/enum.privilege.ts +4 -3
  371. package/src/core/objects/type/range/changes/range.alter.ts +2 -1
  372. package/src/core/objects/type/range/changes/range.comment.ts +3 -2
  373. package/src/core/objects/type/range/changes/range.create.ts +2 -1
  374. package/src/core/objects/type/range/changes/range.drop.ts +2 -1
  375. package/src/core/objects/type/range/changes/range.privilege.ts +4 -3
  376. package/src/core/objects/view/changes/view.alter.ts +4 -3
  377. package/src/core/objects/view/changes/view.comment.ts +3 -2
  378. package/src/core/objects/view/changes/view.create.ts +2 -1
  379. package/src/core/objects/view/changes/view.drop.ts +2 -1
  380. package/src/core/objects/view/changes/view.privilege.ts +4 -3
  381. package/src/core/plan/sql-format/format-off.test.ts +1 -1
  382. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1 -1
  383. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1 -1
  384. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1 -1
  385. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1 -1
  386. package/src/core/sort/custom-constraints.ts +74 -0
  387. package/src/typedoc.ts +5 -0
@@ -1,3 +1,4 @@
1
+ import type { SerializeOptions } from "../../../integrations/serialize/serialize.types.ts";
1
2
  import type { ColumnProps } from "../../base.model.ts";
2
3
  import { stableId } from "../../utils.ts";
3
4
  import type { Table, TableConstraintProps } from "../table.model.ts";
@@ -62,8 +63,11 @@ import { AlterTableChange } from "./table.base.ts";
62
63
  export type AlterTable =
63
64
  | AlterTableAddColumn
64
65
  | AlterTableAddConstraint
66
+ | AlterTableAlterColumnAddIdentity
65
67
  | AlterTableAlterColumnDropDefault
68
+ | AlterTableAlterColumnDropIdentity
66
69
  | AlterTableAlterColumnDropNotNull
70
+ | AlterTableAlterColumnSetGenerated
67
71
  | AlterTableAlterColumnSetDefault
68
72
  | AlterTableAlterColumnSetNotNull
69
73
  | AlterTableAlterColumnType
@@ -101,7 +105,7 @@ export class AlterTableChangeOwner extends AlterTableChange {
101
105
  return [this.table.stableId];
102
106
  }
103
107
 
104
- serialize(): string {
108
+ serialize(_options?: SerializeOptions): string {
105
109
  return [
106
110
  "ALTER TABLE",
107
111
  `${this.table.schema}.${this.table.name}`,
@@ -127,7 +131,7 @@ export class AlterTableSetLogged extends AlterTableChange {
127
131
  return [this.table.stableId];
128
132
  }
129
133
 
130
- serialize(): string {
134
+ serialize(_options?: SerializeOptions): string {
131
135
  return [
132
136
  "ALTER TABLE",
133
137
  `${this.table.schema}.${this.table.name}`,
@@ -152,7 +156,7 @@ export class AlterTableSetUnlogged extends AlterTableChange {
152
156
  return [this.table.stableId];
153
157
  }
154
158
 
155
- serialize(): string {
159
+ serialize(_options?: SerializeOptions): string {
156
160
  return [
157
161
  "ALTER TABLE",
158
162
  `${this.table.schema}.${this.table.name}`,
@@ -177,7 +181,7 @@ export class AlterTableEnableRowLevelSecurity extends AlterTableChange {
177
181
  return [this.table.stableId];
178
182
  }
179
183
 
180
- serialize(): string {
184
+ serialize(_options?: SerializeOptions): string {
181
185
  return [
182
186
  "ALTER TABLE",
183
187
  `${this.table.schema}.${this.table.name}`,
@@ -202,7 +206,7 @@ export class AlterTableDisableRowLevelSecurity extends AlterTableChange {
202
206
  return [this.table.stableId];
203
207
  }
204
208
 
205
- serialize(): string {
209
+ serialize(_options?: SerializeOptions): string {
206
210
  return [
207
211
  "ALTER TABLE",
208
212
  `${this.table.schema}.${this.table.name}`,
@@ -227,7 +231,7 @@ export class AlterTableForceRowLevelSecurity extends AlterTableChange {
227
231
  return [this.table.stableId];
228
232
  }
229
233
 
230
- serialize(): string {
234
+ serialize(_options?: SerializeOptions): string {
231
235
  return [
232
236
  "ALTER TABLE",
233
237
  `${this.table.schema}.${this.table.name}`,
@@ -252,7 +256,7 @@ export class AlterTableNoForceRowLevelSecurity extends AlterTableChange {
252
256
  return [this.table.stableId];
253
257
  }
254
258
 
255
- serialize(): string {
259
+ serialize(_options?: SerializeOptions): string {
256
260
  return [
257
261
  "ALTER TABLE",
258
262
  `${this.table.schema}.${this.table.name}`,
@@ -279,7 +283,7 @@ export class AlterTableSetStorageParams extends AlterTableChange {
279
283
  return [this.table.stableId];
280
284
  }
281
285
 
282
- serialize(): string {
286
+ serialize(_options?: SerializeOptions): string {
283
287
  const storageParams = this.options.join(", ");
284
288
  return [
285
289
  "ALTER TABLE",
@@ -307,7 +311,7 @@ export class AlterTableResetStorageParams extends AlterTableChange {
307
311
  return [this.table.stableId];
308
312
  }
309
313
 
310
- serialize(): string {
314
+ serialize(_options?: SerializeOptions): string {
311
315
  const paramsSql = this.params.join(", ");
312
316
  return [
313
317
  "ALTER TABLE",
@@ -365,7 +369,7 @@ export class AlterTableAddConstraint extends AlterTableChange {
365
369
  return reqs;
366
370
  }
367
371
 
368
- serialize(): string {
372
+ serialize(_options?: SerializeOptions): string {
369
373
  return [
370
374
  "ALTER TABLE",
371
375
  `${this.table.schema}.${this.table.name}`,
@@ -411,7 +415,7 @@ export class AlterTableDropConstraint extends AlterTableChange {
411
415
  ];
412
416
  }
413
417
 
414
- serialize(): string {
418
+ serialize(_options?: SerializeOptions): string {
415
419
  return [
416
420
  "ALTER TABLE",
417
421
  `${this.table.schema}.${this.table.name}`,
@@ -446,7 +450,7 @@ export class AlterTableValidateConstraint extends AlterTableChange {
446
450
  ];
447
451
  }
448
452
 
449
- serialize(): string {
453
+ serialize(_options?: SerializeOptions): string {
450
454
  return [
451
455
  "ALTER TABLE",
452
456
  `${this.table.schema}.${this.table.name}`,
@@ -474,7 +478,7 @@ export class AlterTableSetReplicaIdentity extends AlterTableChange {
474
478
  return [this.table.stableId];
475
479
  }
476
480
 
477
- serialize(): string {
481
+ serialize(_options?: SerializeOptions): string {
478
482
  const clause =
479
483
  this.mode === "d"
480
484
  ? "DEFAULT"
@@ -516,7 +520,7 @@ export class AlterTableAddColumn extends AlterTableChange {
516
520
  return [this.table.stableId];
517
521
  }
518
522
 
519
- serialize(): string {
523
+ serialize(_options?: SerializeOptions): string {
520
524
  const parts: string[] = [
521
525
  "ALTER TABLE",
522
526
  `${this.table.schema}.${this.table.name}`,
@@ -572,7 +576,7 @@ export class AlterTableDropColumn extends AlterTableChange {
572
576
  ];
573
577
  }
574
578
 
575
- serialize(): string {
579
+ serialize(_options?: SerializeOptions): string {
576
580
  return [
577
581
  "ALTER TABLE",
578
582
  `${this.table.schema}.${this.table.name}`,
@@ -602,7 +606,7 @@ export class AlterTableAlterColumnType extends AlterTableChange {
602
606
  ];
603
607
  }
604
608
 
605
- serialize(): string {
609
+ serialize(_options?: SerializeOptions): string {
606
610
  const parts: string[] = [
607
611
  "ALTER TABLE",
608
612
  `${this.table.schema}.${this.table.name}`,
@@ -638,7 +642,7 @@ export class AlterTableAlterColumnSetDefault extends AlterTableChange {
638
642
  ];
639
643
  }
640
644
 
641
- serialize(): string {
645
+ serialize(_options?: SerializeOptions): string {
642
646
  const set = this.column.is_generated ? "SET EXPRESSION AS" : "SET DEFAULT";
643
647
 
644
648
  return [
@@ -672,7 +676,7 @@ export class AlterTableAlterColumnDropDefault extends AlterTableChange {
672
676
  ];
673
677
  }
674
678
 
675
- serialize(): string {
679
+ serialize(_options?: SerializeOptions): string {
676
680
  return [
677
681
  "ALTER TABLE",
678
682
  `${this.table.schema}.${this.table.name}`,
@@ -683,6 +687,103 @@ export class AlterTableAlterColumnDropDefault extends AlterTableChange {
683
687
  }
684
688
  }
685
689
 
690
+ /**
691
+ * ALTER TABLE ... ALTER COLUMN ... ADD GENERATED ... AS IDENTITY
692
+ */
693
+ export class AlterTableAlterColumnAddIdentity extends AlterTableChange {
694
+ public readonly table: Table;
695
+ public readonly column: ColumnProps;
696
+ public readonly scope = "object" as const;
697
+
698
+ constructor(props: { table: Table; column: ColumnProps }) {
699
+ super();
700
+ this.table = props.table;
701
+ this.column = props.column;
702
+ }
703
+
704
+ get requires() {
705
+ return [
706
+ stableId.column(this.table.schema, this.table.name, this.column.name),
707
+ ];
708
+ }
709
+
710
+ serialize(): string {
711
+ return [
712
+ "ALTER TABLE",
713
+ `${this.table.schema}.${this.table.name}`,
714
+ "ALTER COLUMN",
715
+ this.column.name,
716
+ "ADD",
717
+ this.column.is_identity_always
718
+ ? "GENERATED ALWAYS AS IDENTITY"
719
+ : "GENERATED BY DEFAULT AS IDENTITY",
720
+ ].join(" ");
721
+ }
722
+ }
723
+
724
+ /**
725
+ * ALTER TABLE ... ALTER COLUMN ... DROP IDENTITY
726
+ */
727
+ export class AlterTableAlterColumnDropIdentity extends AlterTableChange {
728
+ public readonly table: Table;
729
+ public readonly column: ColumnProps;
730
+ public readonly scope = "object" as const;
731
+
732
+ constructor(props: { table: Table; column: ColumnProps }) {
733
+ super();
734
+ this.table = props.table;
735
+ this.column = props.column;
736
+ }
737
+
738
+ get requires() {
739
+ return [
740
+ stableId.column(this.table.schema, this.table.name, this.column.name),
741
+ ];
742
+ }
743
+
744
+ serialize(): string {
745
+ return [
746
+ "ALTER TABLE",
747
+ `${this.table.schema}.${this.table.name}`,
748
+ "ALTER COLUMN",
749
+ this.column.name,
750
+ "DROP IDENTITY",
751
+ ].join(" ");
752
+ }
753
+ }
754
+
755
+ /**
756
+ * ALTER TABLE ... ALTER COLUMN ... SET GENERATED { ALWAYS | BY DEFAULT }
757
+ */
758
+ export class AlterTableAlterColumnSetGenerated extends AlterTableChange {
759
+ public readonly table: Table;
760
+ public readonly column: ColumnProps;
761
+ public readonly scope = "object" as const;
762
+
763
+ constructor(props: { table: Table; column: ColumnProps }) {
764
+ super();
765
+ this.table = props.table;
766
+ this.column = props.column;
767
+ }
768
+
769
+ get requires() {
770
+ return [
771
+ stableId.column(this.table.schema, this.table.name, this.column.name),
772
+ ];
773
+ }
774
+
775
+ serialize(): string {
776
+ return [
777
+ "ALTER TABLE",
778
+ `${this.table.schema}.${this.table.name}`,
779
+ "ALTER COLUMN",
780
+ this.column.name,
781
+ "SET GENERATED",
782
+ this.column.is_identity_always ? "ALWAYS" : "BY DEFAULT",
783
+ ].join(" ");
784
+ }
785
+ }
786
+
686
787
  /**
687
788
  * ALTER TABLE ... ALTER COLUMN ... SET NOT NULL
688
789
  */
@@ -703,7 +804,7 @@ export class AlterTableAlterColumnSetNotNull extends AlterTableChange {
703
804
  ];
704
805
  }
705
806
 
706
- serialize(): string {
807
+ serialize(_options?: SerializeOptions): string {
707
808
  return [
708
809
  "ALTER TABLE",
709
810
  `${this.table.schema}.${this.table.name}`,
@@ -734,7 +835,7 @@ export class AlterTableAlterColumnDropNotNull extends AlterTableChange {
734
835
  ];
735
836
  }
736
837
 
737
- serialize(): string {
838
+ serialize(_options?: SerializeOptions): string {
738
839
  return [
739
840
  "ALTER TABLE",
740
841
  `${this.table.schema}.${this.table.name}`,
@@ -764,7 +865,7 @@ export class AlterTableAttachPartition extends AlterTableChange {
764
865
  return [this.partition.stableId, this.table.stableId];
765
866
  }
766
867
 
767
- serialize(): string {
868
+ serialize(_options?: SerializeOptions): string {
768
869
  const bound = this.partition.partition_bound ?? "DEFAULT";
769
870
  return [
770
871
  "ALTER TABLE",
@@ -795,7 +896,7 @@ export class AlterTableDetachPartition extends AlterTableChange {
795
896
  return [this.table.stableId, this.partition.stableId];
796
897
  }
797
898
 
798
- serialize(): string {
899
+ serialize(_options?: SerializeOptions): string {
799
900
  return [
800
901
  "ALTER TABLE",
801
902
  `${this.table.schema}.${this.table.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";
@@ -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