@supabase/pg-delta 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (930) hide show
  1. package/README.md +48 -3
  2. package/dist/cli/app.js +26 -3
  3. package/dist/cli/bin/cli.js +5 -0
  4. package/dist/cli/commands/catalog-export.d.ts +5 -0
  5. package/dist/cli/commands/catalog-export.js +64 -0
  6. package/dist/cli/commands/declarative-apply.d.ts +6 -0
  7. package/dist/cli/commands/declarative-apply.js +288 -0
  8. package/dist/cli/commands/declarative-export.d.ts +5 -0
  9. package/dist/cli/commands/declarative-export.js +240 -0
  10. package/dist/cli/commands/plan.js +47 -16
  11. package/dist/cli/commands/sync.js +8 -12
  12. package/dist/cli/exit-code.d.ts +2 -0
  13. package/dist/cli/exit-code.js +7 -0
  14. package/dist/cli/formatters/tree/tree.js +3 -2
  15. package/dist/cli/utils/apply-display.d.ts +52 -0
  16. package/dist/cli/utils/apply-display.js +183 -0
  17. package/dist/cli/utils/export-display.d.ts +43 -0
  18. package/dist/cli/utils/export-display.js +202 -0
  19. package/dist/cli/utils/integrations.d.ts +30 -6
  20. package/dist/cli/utils/integrations.js +98 -6
  21. package/dist/cli/utils/resolve-input.d.ts +7 -0
  22. package/dist/cli/utils/resolve-input.js +13 -0
  23. package/dist/cli/utils.d.ts +2 -0
  24. package/dist/cli/utils.js +1 -1
  25. package/dist/core/catalog-export/index.d.ts +11 -0
  26. package/dist/core/catalog-export/index.js +10 -0
  27. package/dist/core/catalog.diff.d.ts +1 -0
  28. package/dist/core/catalog.diff.js +71 -49
  29. package/dist/core/catalog.model.d.ts +14 -1
  30. package/dist/core/catalog.model.js +103 -1
  31. package/dist/core/catalog.snapshot.d.ts +66 -0
  32. package/dist/core/catalog.snapshot.js +206 -0
  33. package/dist/core/change-utils.d.ts +9 -0
  34. package/dist/core/change-utils.js +71 -0
  35. package/dist/core/change.types.d.ts +22 -0
  36. package/dist/core/change.types.js +37 -1
  37. package/dist/core/connection-url.d.ts +32 -0
  38. package/dist/core/connection-url.js +77 -0
  39. package/dist/core/declarative-apply/discover-sql.d.ts +18 -0
  40. package/dist/core/declarative-apply/discover-sql.js +86 -0
  41. package/dist/core/declarative-apply/extract-catalog-providers.d.ts +23 -0
  42. package/dist/core/declarative-apply/extract-catalog-providers.js +159 -0
  43. package/dist/core/declarative-apply/index.d.ts +49 -0
  44. package/dist/core/declarative-apply/index.js +134 -0
  45. package/dist/core/declarative-apply/round-apply.d.ts +100 -0
  46. package/dist/core/declarative-apply/round-apply.js +378 -0
  47. package/dist/core/depend.js +25 -0
  48. package/dist/core/expand-replace-dependencies.d.ts +8 -2
  49. package/dist/core/expand-replace-dependencies.js +116 -10
  50. package/dist/core/export/file-mapper.d.ts +71 -0
  51. package/dist/core/export/file-mapper.js +474 -0
  52. package/dist/core/export/grouper.d.ts +13 -0
  53. package/dist/core/export/grouper.js +76 -0
  54. package/dist/core/export/index.d.ts +45 -0
  55. package/dist/core/export/index.js +66 -0
  56. package/dist/core/export/types.d.ts +84 -0
  57. package/dist/core/export/types.js +25 -0
  58. package/dist/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
  59. package/dist/core/integrations/filter/dsl.d.ts +82 -41
  60. package/dist/core/integrations/filter/dsl.js +127 -61
  61. package/dist/core/integrations/filter/flatten.d.ts +51 -0
  62. package/dist/core/integrations/filter/flatten.js +116 -0
  63. package/dist/core/integrations/integration-dsl.d.ts +27 -1
  64. package/dist/core/integrations/integration.types.d.ts +26 -1
  65. package/dist/core/integrations/integration.types.js +31 -1
  66. package/dist/core/integrations/merge.d.ts +20 -0
  67. package/dist/core/integrations/merge.js +60 -0
  68. package/dist/core/integrations/serialize/dsl.d.ts +8 -12
  69. package/dist/core/integrations/serialize/dsl.js +2 -2
  70. package/dist/core/integrations/serialize/serialize.types.d.ts +31 -0
  71. package/dist/core/integrations/supabase.d.ts +8 -0
  72. package/dist/core/integrations/supabase.js +69 -8
  73. package/dist/core/objects/aggregate/aggregate.diff.d.ts +2 -8
  74. package/dist/core/objects/aggregate/aggregate.diff.js +16 -70
  75. package/dist/core/objects/aggregate/aggregate.model.d.ts +8 -8
  76. package/dist/core/objects/aggregate/aggregate.model.js +1 -1
  77. package/dist/core/objects/aggregate/changes/aggregate.alter.d.ts +2 -1
  78. package/dist/core/objects/aggregate/changes/aggregate.alter.js +1 -1
  79. package/dist/core/objects/aggregate/changes/aggregate.comment.d.ts +3 -2
  80. package/dist/core/objects/aggregate/changes/aggregate.comment.js +2 -2
  81. package/dist/core/objects/aggregate/changes/aggregate.create.d.ts +2 -1
  82. package/dist/core/objects/aggregate/changes/aggregate.create.js +2 -2
  83. package/dist/core/objects/aggregate/changes/aggregate.drop.d.ts +2 -1
  84. package/dist/core/objects/aggregate/changes/aggregate.drop.js +2 -2
  85. package/dist/core/objects/aggregate/changes/aggregate.privilege.d.ts +4 -3
  86. package/dist/core/objects/aggregate/changes/aggregate.privilege.js +3 -3
  87. package/dist/core/objects/aggregate/changes/aggregate.types.d.ts +1 -0
  88. package/dist/core/objects/base.change.d.ts +12 -1
  89. package/dist/core/objects/base.change.js +10 -0
  90. package/dist/core/objects/base.model.d.ts +4 -1
  91. package/dist/core/objects/base.model.js +5 -2
  92. package/dist/core/objects/base.privilege-diff.d.ts +38 -13
  93. package/dist/core/objects/base.privilege-diff.js +104 -22
  94. package/dist/core/objects/base.privilege.d.ts +1 -0
  95. package/dist/core/objects/base.privilege.js +9 -2
  96. package/dist/core/objects/collation/changes/collation.alter.d.ts +3 -2
  97. package/dist/core/objects/collation/changes/collation.alter.js +2 -2
  98. package/dist/core/objects/collation/changes/collation.comment.d.ts +3 -2
  99. package/dist/core/objects/collation/changes/collation.comment.js +2 -2
  100. package/dist/core/objects/collation/changes/collation.create.d.ts +2 -1
  101. package/dist/core/objects/collation/changes/collation.create.js +1 -1
  102. package/dist/core/objects/collation/changes/collation.drop.d.ts +2 -1
  103. package/dist/core/objects/collation/changes/collation.drop.js +1 -1
  104. package/dist/core/objects/collation/changes/collation.types.d.ts +1 -0
  105. package/dist/core/objects/collation/collation.diff.d.ts +2 -3
  106. package/dist/core/objects/diff-context.d.ts +15 -0
  107. package/dist/core/objects/diff-context.js +1 -0
  108. package/dist/core/objects/domain/changes/domain.alter.d.ts +9 -8
  109. package/dist/core/objects/domain/changes/domain.alter.js +8 -8
  110. package/dist/core/objects/domain/changes/domain.comment.d.ts +3 -2
  111. package/dist/core/objects/domain/changes/domain.comment.js +2 -2
  112. package/dist/core/objects/domain/changes/domain.create.d.ts +3 -2
  113. package/dist/core/objects/domain/changes/domain.create.js +12 -4
  114. package/dist/core/objects/domain/changes/domain.drop.d.ts +2 -1
  115. package/dist/core/objects/domain/changes/domain.drop.js +1 -1
  116. package/dist/core/objects/domain/changes/domain.privilege.d.ts +4 -3
  117. package/dist/core/objects/domain/changes/domain.privilege.js +3 -3
  118. package/dist/core/objects/domain/changes/domain.types.d.ts +1 -0
  119. package/dist/core/objects/domain/domain.diff.d.ts +2 -8
  120. package/dist/core/objects/domain/domain.diff.js +16 -77
  121. package/dist/core/objects/domain/domain.model.js +1 -1
  122. package/dist/core/objects/event-trigger/changes/event-trigger.alter.d.ts +3 -2
  123. package/dist/core/objects/event-trigger/changes/event-trigger.alter.js +2 -2
  124. package/dist/core/objects/event-trigger/changes/event-trigger.comment.d.ts +3 -2
  125. package/dist/core/objects/event-trigger/changes/event-trigger.comment.js +2 -2
  126. package/dist/core/objects/event-trigger/changes/event-trigger.create.d.ts +2 -1
  127. package/dist/core/objects/event-trigger/changes/event-trigger.create.js +1 -1
  128. package/dist/core/objects/event-trigger/changes/event-trigger.drop.d.ts +2 -1
  129. package/dist/core/objects/event-trigger/changes/event-trigger.drop.js +1 -1
  130. package/dist/core/objects/event-trigger/changes/event-trigger.types.d.ts +1 -0
  131. package/dist/core/objects/event-trigger/event-trigger.diff.d.ts +2 -3
  132. package/dist/core/objects/extension/changes/extension.alter.d.ts +3 -2
  133. package/dist/core/objects/extension/changes/extension.alter.js +2 -2
  134. package/dist/core/objects/extension/changes/extension.comment.d.ts +3 -2
  135. package/dist/core/objects/extension/changes/extension.comment.js +2 -2
  136. package/dist/core/objects/extension/changes/extension.create.d.ts +2 -1
  137. package/dist/core/objects/extension/changes/extension.create.js +4 -2
  138. package/dist/core/objects/extension/changes/extension.drop.d.ts +2 -1
  139. package/dist/core/objects/extension/changes/extension.drop.js +1 -1
  140. package/dist/core/objects/extension/changes/extension.types.d.ts +1 -0
  141. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.d.ts +3 -2
  142. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.js +2 -2
  143. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.d.ts +3 -2
  144. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.js +2 -2
  145. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.d.ts +2 -1
  146. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.js +1 -1
  147. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.d.ts +2 -1
  148. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.js +1 -1
  149. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.d.ts +4 -3
  150. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.js +3 -3
  151. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.d.ts +1 -0
  152. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.d.ts +2 -8
  153. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.js +13 -77
  154. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.js +2 -2
  155. package/dist/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.d.ts +1 -0
  156. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.d.ts +10 -9
  157. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.js +9 -9
  158. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.d.ts +3 -2
  159. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.js +2 -2
  160. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.d.ts +2 -1
  161. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.js +1 -1
  162. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.d.ts +2 -1
  163. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.js +1 -1
  164. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.d.ts +4 -3
  165. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.js +3 -3
  166. package/dist/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.d.ts +1 -0
  167. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.d.ts +2 -8
  168. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.js +16 -77
  169. package/dist/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.js +1 -1
  170. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.d.ts +4 -3
  171. package/dist/core/objects/foreign-data-wrapper/server/changes/server.alter.js +3 -3
  172. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.d.ts +3 -2
  173. package/dist/core/objects/foreign-data-wrapper/server/changes/server.comment.js +2 -2
  174. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.d.ts +2 -1
  175. package/dist/core/objects/foreign-data-wrapper/server/changes/server.create.js +1 -1
  176. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.d.ts +2 -1
  177. package/dist/core/objects/foreign-data-wrapper/server/changes/server.drop.js +1 -1
  178. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.d.ts +4 -3
  179. package/dist/core/objects/foreign-data-wrapper/server/changes/server.privilege.js +3 -3
  180. package/dist/core/objects/foreign-data-wrapper/server/changes/server.types.d.ts +1 -0
  181. package/dist/core/objects/foreign-data-wrapper/server/server.diff.d.ts +2 -8
  182. package/dist/core/objects/foreign-data-wrapper/server/server.diff.js +13 -77
  183. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.d.ts +2 -1
  184. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.js +1 -1
  185. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.d.ts +2 -1
  186. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.js +1 -1
  187. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.d.ts +2 -1
  188. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.js +1 -1
  189. package/dist/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.d.ts +1 -0
  190. package/dist/core/objects/index/changes/index.alter.d.ts +4 -3
  191. package/dist/core/objects/index/changes/index.alter.js +3 -3
  192. package/dist/core/objects/index/changes/index.comment.d.ts +3 -2
  193. package/dist/core/objects/index/changes/index.comment.js +2 -2
  194. package/dist/core/objects/index/changes/index.create.d.ts +2 -1
  195. package/dist/core/objects/index/changes/index.create.js +1 -1
  196. package/dist/core/objects/index/changes/index.drop.d.ts +2 -1
  197. package/dist/core/objects/index/changes/index.drop.js +1 -1
  198. package/dist/core/objects/index/changes/index.types.d.ts +1 -0
  199. package/dist/core/objects/index/index.model.js +12 -2
  200. package/dist/core/objects/language/changes/language.alter.d.ts +2 -1
  201. package/dist/core/objects/language/changes/language.alter.js +1 -1
  202. package/dist/core/objects/language/changes/language.comment.d.ts +3 -2
  203. package/dist/core/objects/language/changes/language.comment.js +2 -2
  204. package/dist/core/objects/language/changes/language.create.d.ts +2 -1
  205. package/dist/core/objects/language/changes/language.create.js +1 -1
  206. package/dist/core/objects/language/changes/language.drop.d.ts +2 -1
  207. package/dist/core/objects/language/changes/language.drop.js +1 -1
  208. package/dist/core/objects/language/changes/language.privilege.d.ts +4 -3
  209. package/dist/core/objects/language/changes/language.privilege.js +3 -3
  210. package/dist/core/objects/language/changes/language.types.d.ts +1 -0
  211. package/dist/core/objects/language/language.diff.d.ts +2 -5
  212. package/dist/core/objects/language/language.diff.js +7 -39
  213. package/dist/core/objects/materialized-view/changes/materialized-view.alter.d.ts +3 -2
  214. package/dist/core/objects/materialized-view/changes/materialized-view.alter.js +2 -2
  215. package/dist/core/objects/materialized-view/changes/materialized-view.comment.d.ts +5 -4
  216. package/dist/core/objects/materialized-view/changes/materialized-view.comment.js +4 -4
  217. package/dist/core/objects/materialized-view/changes/materialized-view.create.d.ts +2 -1
  218. package/dist/core/objects/materialized-view/changes/materialized-view.create.js +1 -1
  219. package/dist/core/objects/materialized-view/changes/materialized-view.drop.d.ts +2 -1
  220. package/dist/core/objects/materialized-view/changes/materialized-view.drop.js +1 -1
  221. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.d.ts +4 -3
  222. package/dist/core/objects/materialized-view/changes/materialized-view.privilege.js +3 -3
  223. package/dist/core/objects/materialized-view/changes/materialized-view.types.d.ts +1 -0
  224. package/dist/core/objects/materialized-view/materialized-view.diff.d.ts +2 -8
  225. package/dist/core/objects/materialized-view/materialized-view.diff.js +16 -158
  226. package/dist/core/objects/materialized-view/materialized-view.model.d.ts +3 -3
  227. package/dist/core/objects/materialized-view/materialized-view.model.js +1 -1
  228. package/dist/core/objects/procedure/changes/procedure.alter.d.ts +8 -7
  229. package/dist/core/objects/procedure/changes/procedure.alter.js +19 -19
  230. package/dist/core/objects/procedure/changes/procedure.comment.d.ts +3 -2
  231. package/dist/core/objects/procedure/changes/procedure.comment.js +2 -2
  232. package/dist/core/objects/procedure/changes/procedure.create.d.ts +2 -1
  233. package/dist/core/objects/procedure/changes/procedure.create.js +1 -1
  234. package/dist/core/objects/procedure/changes/procedure.drop.d.ts +2 -1
  235. package/dist/core/objects/procedure/changes/procedure.drop.js +1 -1
  236. package/dist/core/objects/procedure/changes/procedure.privilege.d.ts +4 -3
  237. package/dist/core/objects/procedure/changes/procedure.privilege.js +3 -3
  238. package/dist/core/objects/procedure/changes/procedure.types.d.ts +1 -0
  239. package/dist/core/objects/procedure/procedure.diff.d.ts +2 -8
  240. package/dist/core/objects/procedure/procedure.diff.js +57 -97
  241. package/dist/core/objects/procedure/procedure.model.d.ts +9 -9
  242. package/dist/core/objects/procedure/procedure.model.js +1 -1
  243. package/dist/core/objects/publication/changes/publication.alter.d.ts +9 -16
  244. package/dist/core/objects/publication/changes/publication.alter.js +12 -21
  245. package/dist/core/objects/publication/changes/publication.comment.d.ts +3 -2
  246. package/dist/core/objects/publication/changes/publication.comment.js +2 -2
  247. package/dist/core/objects/publication/changes/publication.create.d.ts +2 -1
  248. package/dist/core/objects/publication/changes/publication.create.js +1 -1
  249. package/dist/core/objects/publication/changes/publication.drop.d.ts +2 -1
  250. package/dist/core/objects/publication/changes/publication.drop.js +1 -1
  251. package/dist/core/objects/publication/changes/publication.types.d.ts +3 -2
  252. package/dist/core/objects/publication/publication.diff.d.ts +2 -3
  253. package/dist/core/objects/publication/publication.diff.js +8 -13
  254. package/dist/core/objects/rls-policy/changes/rls-policy.alter.d.ts +4 -3
  255. package/dist/core/objects/rls-policy/changes/rls-policy.alter.js +6 -6
  256. package/dist/core/objects/rls-policy/changes/rls-policy.comment.d.ts +3 -2
  257. package/dist/core/objects/rls-policy/changes/rls-policy.comment.js +2 -2
  258. package/dist/core/objects/rls-policy/changes/rls-policy.create.d.ts +2 -1
  259. package/dist/core/objects/rls-policy/changes/rls-policy.create.js +24 -1
  260. package/dist/core/objects/rls-policy/changes/rls-policy.drop.d.ts +2 -1
  261. package/dist/core/objects/rls-policy/changes/rls-policy.drop.js +1 -1
  262. package/dist/core/objects/rls-policy/changes/rls-policy.types.d.ts +1 -0
  263. package/dist/core/objects/rls-policy/rls-policy.model.d.ts +51 -2
  264. package/dist/core/objects/rls-policy/rls-policy.model.js +122 -1
  265. package/dist/core/objects/role/changes/role.alter.d.ts +3 -2
  266. package/dist/core/objects/role/changes/role.alter.js +2 -2
  267. package/dist/core/objects/role/changes/role.comment.d.ts +3 -2
  268. package/dist/core/objects/role/changes/role.comment.js +2 -2
  269. package/dist/core/objects/role/changes/role.create.d.ts +2 -1
  270. package/dist/core/objects/role/changes/role.create.js +1 -1
  271. package/dist/core/objects/role/changes/role.drop.d.ts +2 -1
  272. package/dist/core/objects/role/changes/role.drop.js +1 -1
  273. package/dist/core/objects/role/changes/role.privilege.d.ts +6 -5
  274. package/dist/core/objects/role/changes/role.privilege.js +5 -5
  275. package/dist/core/objects/role/changes/role.types.d.ts +1 -0
  276. package/dist/core/objects/role/role.diff.js +22 -1
  277. package/dist/core/objects/role/role.model.d.ts +4 -3
  278. package/dist/core/objects/role/role.model.js +118 -12
  279. package/dist/core/objects/rule/changes/rule.alter.d.ts +3 -2
  280. package/dist/core/objects/rule/changes/rule.alter.js +2 -2
  281. package/dist/core/objects/rule/changes/rule.comment.d.ts +3 -2
  282. package/dist/core/objects/rule/changes/rule.comment.js +2 -2
  283. package/dist/core/objects/rule/changes/rule.create.d.ts +2 -1
  284. package/dist/core/objects/rule/changes/rule.create.js +1 -1
  285. package/dist/core/objects/rule/changes/rule.drop.d.ts +2 -1
  286. package/dist/core/objects/rule/changes/rule.drop.js +1 -1
  287. package/dist/core/objects/rule/changes/rule.types.d.ts +1 -0
  288. package/dist/core/objects/rule/rule.model.d.ts +1 -1
  289. package/dist/core/objects/schema/changes/schema.alter.d.ts +2 -1
  290. package/dist/core/objects/schema/changes/schema.alter.js +1 -1
  291. package/dist/core/objects/schema/changes/schema.comment.d.ts +3 -2
  292. package/dist/core/objects/schema/changes/schema.comment.js +2 -2
  293. package/dist/core/objects/schema/changes/schema.create.d.ts +3 -5
  294. package/dist/core/objects/schema/changes/schema.drop.d.ts +2 -1
  295. package/dist/core/objects/schema/changes/schema.drop.js +1 -1
  296. package/dist/core/objects/schema/changes/schema.privilege.d.ts +4 -3
  297. package/dist/core/objects/schema/changes/schema.privilege.js +3 -3
  298. package/dist/core/objects/schema/changes/schema.types.d.ts +1 -0
  299. package/dist/core/objects/schema/schema.diff.d.ts +2 -8
  300. package/dist/core/objects/schema/schema.diff.js +16 -77
  301. package/dist/core/objects/schema/schema.model.js +1 -1
  302. package/dist/core/objects/sequence/changes/sequence.alter.d.ts +3 -2
  303. package/dist/core/objects/sequence/changes/sequence.alter.js +2 -2
  304. package/dist/core/objects/sequence/changes/sequence.comment.d.ts +3 -2
  305. package/dist/core/objects/sequence/changes/sequence.comment.js +2 -2
  306. package/dist/core/objects/sequence/changes/sequence.create.d.ts +2 -1
  307. package/dist/core/objects/sequence/changes/sequence.create.js +1 -1
  308. package/dist/core/objects/sequence/changes/sequence.drop.d.ts +2 -1
  309. package/dist/core/objects/sequence/changes/sequence.drop.js +11 -3
  310. package/dist/core/objects/sequence/changes/sequence.privilege.d.ts +4 -3
  311. package/dist/core/objects/sequence/changes/sequence.privilege.js +3 -3
  312. package/dist/core/objects/sequence/changes/sequence.types.d.ts +1 -0
  313. package/dist/core/objects/sequence/sequence.diff.d.ts +5 -8
  314. package/dist/core/objects/sequence/sequence.diff.js +42 -85
  315. package/dist/core/objects/sequence/sequence.model.js +1 -1
  316. package/dist/core/objects/subscription/changes/subscription.alter.d.ts +7 -6
  317. package/dist/core/objects/subscription/changes/subscription.alter.js +6 -6
  318. package/dist/core/objects/subscription/changes/subscription.comment.d.ts +3 -2
  319. package/dist/core/objects/subscription/changes/subscription.comment.js +2 -2
  320. package/dist/core/objects/subscription/changes/subscription.create.d.ts +2 -1
  321. package/dist/core/objects/subscription/changes/subscription.create.js +1 -1
  322. package/dist/core/objects/subscription/changes/subscription.drop.d.ts +2 -1
  323. package/dist/core/objects/subscription/changes/subscription.drop.js +1 -1
  324. package/dist/core/objects/subscription/changes/subscription.types.d.ts +1 -0
  325. package/dist/core/objects/subscription/subscription.diff.d.ts +2 -3
  326. package/dist/core/objects/table/changes/table.alter.d.ts +65 -22
  327. package/dist/core/objects/table/changes/table.alter.js +111 -23
  328. package/dist/core/objects/table/changes/table.comment.d.ts +7 -6
  329. package/dist/core/objects/table/changes/table.comment.js +6 -6
  330. package/dist/core/objects/table/changes/table.create.d.ts +2 -1
  331. package/dist/core/objects/table/changes/table.create.js +4 -1
  332. package/dist/core/objects/table/changes/table.drop.d.ts +16 -3
  333. package/dist/core/objects/table/changes/table.drop.js +24 -1
  334. package/dist/core/objects/table/changes/table.privilege.d.ts +4 -3
  335. package/dist/core/objects/table/changes/table.privilege.js +3 -3
  336. package/dist/core/objects/table/changes/table.types.d.ts +1 -0
  337. package/dist/core/objects/table/table.diff.d.ts +2 -8
  338. package/dist/core/objects/table/table.diff.js +80 -160
  339. package/dist/core/objects/table/table.model.d.ts +29 -22
  340. package/dist/core/objects/table/table.model.js +6 -1
  341. package/dist/core/objects/trigger/changes/trigger.alter.d.ts +2 -1
  342. package/dist/core/objects/trigger/changes/trigger.alter.js +24 -1
  343. package/dist/core/objects/trigger/changes/trigger.comment.d.ts +3 -2
  344. package/dist/core/objects/trigger/changes/trigger.comment.js +2 -2
  345. package/dist/core/objects/trigger/changes/trigger.create.d.ts +2 -1
  346. package/dist/core/objects/trigger/changes/trigger.create.js +5 -6
  347. package/dist/core/objects/trigger/changes/trigger.drop.d.ts +2 -1
  348. package/dist/core/objects/trigger/changes/trigger.drop.js +1 -1
  349. package/dist/core/objects/trigger/changes/trigger.types.d.ts +1 -0
  350. package/dist/core/objects/trigger/trigger.diff.js +7 -2
  351. package/dist/core/objects/trigger/trigger.model.d.ts +10 -1
  352. package/dist/core/objects/trigger/trigger.model.js +19 -1
  353. package/dist/core/objects/type/composite-type/changes/composite-type.alter.d.ts +5 -4
  354. package/dist/core/objects/type/composite-type/changes/composite-type.alter.js +4 -4
  355. package/dist/core/objects/type/composite-type/changes/composite-type.comment.d.ts +5 -4
  356. package/dist/core/objects/type/composite-type/changes/composite-type.comment.js +4 -4
  357. package/dist/core/objects/type/composite-type/changes/composite-type.create.d.ts +2 -1
  358. package/dist/core/objects/type/composite-type/changes/composite-type.create.js +1 -1
  359. package/dist/core/objects/type/composite-type/changes/composite-type.drop.d.ts +2 -1
  360. package/dist/core/objects/type/composite-type/changes/composite-type.drop.js +1 -1
  361. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.d.ts +4 -3
  362. package/dist/core/objects/type/composite-type/changes/composite-type.privilege.js +3 -3
  363. package/dist/core/objects/type/composite-type/changes/composite-type.types.d.ts +1 -0
  364. package/dist/core/objects/type/composite-type/composite-type.diff.d.ts +2 -8
  365. package/dist/core/objects/type/composite-type/composite-type.diff.js +16 -77
  366. package/dist/core/objects/type/composite-type/composite-type.model.d.ts +3 -3
  367. package/dist/core/objects/type/composite-type/composite-type.model.js +2 -1
  368. package/dist/core/objects/type/enum/changes/enum.alter.d.ts +3 -2
  369. package/dist/core/objects/type/enum/changes/enum.alter.js +2 -2
  370. package/dist/core/objects/type/enum/changes/enum.comment.d.ts +3 -2
  371. package/dist/core/objects/type/enum/changes/enum.comment.js +2 -2
  372. package/dist/core/objects/type/enum/changes/enum.create.d.ts +2 -1
  373. package/dist/core/objects/type/enum/changes/enum.create.js +1 -1
  374. package/dist/core/objects/type/enum/changes/enum.drop.d.ts +2 -1
  375. package/dist/core/objects/type/enum/changes/enum.drop.js +1 -1
  376. package/dist/core/objects/type/enum/changes/enum.privilege.d.ts +4 -3
  377. package/dist/core/objects/type/enum/changes/enum.privilege.js +3 -3
  378. package/dist/core/objects/type/enum/changes/enum.types.d.ts +1 -0
  379. package/dist/core/objects/type/enum/enum.diff.d.ts +2 -8
  380. package/dist/core/objects/type/enum/enum.diff.js +25 -112
  381. package/dist/core/objects/type/enum/enum.model.js +1 -1
  382. package/dist/core/objects/type/range/changes/range.alter.d.ts +2 -1
  383. package/dist/core/objects/type/range/changes/range.alter.js +1 -1
  384. package/dist/core/objects/type/range/changes/range.comment.d.ts +3 -2
  385. package/dist/core/objects/type/range/changes/range.comment.js +2 -2
  386. package/dist/core/objects/type/range/changes/range.create.d.ts +2 -1
  387. package/dist/core/objects/type/range/changes/range.create.js +7 -4
  388. package/dist/core/objects/type/range/changes/range.drop.d.ts +2 -1
  389. package/dist/core/objects/type/range/changes/range.drop.js +1 -1
  390. package/dist/core/objects/type/range/changes/range.privilege.d.ts +4 -3
  391. package/dist/core/objects/type/range/changes/range.privilege.js +3 -3
  392. package/dist/core/objects/type/range/changes/range.types.d.ts +1 -0
  393. package/dist/core/objects/type/range/range.diff.d.ts +2 -8
  394. package/dist/core/objects/type/range/range.diff.js +16 -77
  395. package/dist/core/objects/type/range/range.model.js +1 -1
  396. package/dist/core/objects/type/type.types.d.ts +1 -0
  397. package/dist/core/objects/view/changes/view.alter.d.ts +4 -3
  398. package/dist/core/objects/view/changes/view.alter.js +3 -3
  399. package/dist/core/objects/view/changes/view.comment.d.ts +3 -2
  400. package/dist/core/objects/view/changes/view.comment.js +2 -2
  401. package/dist/core/objects/view/changes/view.create.d.ts +2 -1
  402. package/dist/core/objects/view/changes/view.create.js +1 -1
  403. package/dist/core/objects/view/changes/view.drop.d.ts +2 -1
  404. package/dist/core/objects/view/changes/view.drop.js +1 -1
  405. package/dist/core/objects/view/changes/view.privilege.d.ts +4 -3
  406. package/dist/core/objects/view/changes/view.privilege.js +3 -3
  407. package/dist/core/objects/view/changes/view.types.d.ts +1 -0
  408. package/dist/core/objects/view/view.diff.d.ts +2 -8
  409. package/dist/core/objects/view/view.diff.js +37 -168
  410. package/dist/core/objects/view/view.model.d.ts +18 -4
  411. package/dist/core/objects/view/view.model.js +3 -13
  412. package/dist/core/plan/apply.js +11 -28
  413. package/dist/core/plan/create.d.ts +19 -6
  414. package/dist/core/plan/create.js +154 -171
  415. package/dist/core/plan/serialize.js +16 -4
  416. package/dist/core/plan/sql-format/constants.d.ts +2 -0
  417. package/dist/core/plan/sql-format/constants.js +11 -0
  418. package/dist/core/plan/sql-format/fixtures.d.ts +2 -0
  419. package/dist/core/plan/sql-format/fixtures.js +2455 -0
  420. package/dist/core/plan/sql-format/format-utils.d.ts +37 -0
  421. package/dist/core/plan/sql-format/format-utils.js +274 -0
  422. package/dist/core/plan/sql-format/formatters.d.ts +20 -0
  423. package/dist/core/plan/sql-format/formatters.js +737 -0
  424. package/dist/core/plan/sql-format/index.d.ts +2 -0
  425. package/dist/core/plan/sql-format/index.js +98 -0
  426. package/dist/core/plan/sql-format/keyword-case.d.ts +2 -0
  427. package/dist/core/plan/sql-format/keyword-case.js +893 -0
  428. package/dist/core/plan/sql-format/protect.d.ts +3 -0
  429. package/dist/core/plan/sql-format/protect.js +269 -0
  430. package/dist/core/plan/sql-format/sql-scanner.d.ts +59 -0
  431. package/dist/core/plan/sql-format/sql-scanner.js +202 -0
  432. package/dist/core/plan/sql-format/tokenizer.d.ts +22 -0
  433. package/dist/core/plan/sql-format/tokenizer.js +118 -0
  434. package/dist/core/plan/sql-format/types.d.ts +28 -0
  435. package/dist/core/plan/sql-format/types.js +1 -0
  436. package/dist/core/plan/sql-format/wrap.d.ts +2 -0
  437. package/dist/core/plan/sql-format/wrap.js +165 -0
  438. package/dist/core/plan/sql-format.d.ts +2 -0
  439. package/dist/core/plan/sql-format.js +1 -0
  440. package/dist/core/plan/ssl-config.d.ts +32 -0
  441. package/dist/core/plan/ssl-config.js +115 -0
  442. package/dist/core/plan/statements.d.ts +2 -1
  443. package/dist/core/plan/statements.js +6 -2
  444. package/dist/core/plan/types.d.ts +9 -6
  445. package/dist/core/post-diff-cycle-breaking.d.ts +29 -0
  446. package/dist/core/post-diff-cycle-breaking.js +209 -0
  447. package/dist/core/postgres-config.d.ts +89 -3
  448. package/dist/core/postgres-config.js +273 -4
  449. package/dist/core/sort/custom-constraints.js +65 -1
  450. package/dist/core/sort/graph-builder.js +10 -0
  451. package/dist/core/sort/logical-sort.js +34 -47
  452. package/dist/core/test-utils/assert-valid-sql.d.ts +10 -0
  453. package/dist/core/test-utils/assert-valid-sql.js +19 -0
  454. package/dist/index.d.ts +9 -0
  455. package/dist/index.js +9 -1
  456. package/package.json +59 -22
  457. package/src/cli/app.ts +52 -0
  458. package/src/cli/bin/cli.ts +15 -0
  459. package/src/cli/commands/apply.ts +101 -0
  460. package/src/cli/commands/catalog-export.ts +78 -0
  461. package/src/cli/commands/declarative-apply.diagnostics.test.ts +77 -0
  462. package/src/cli/commands/declarative-apply.ts +380 -0
  463. package/src/cli/commands/declarative-export.ts +322 -0
  464. package/src/cli/commands/plan.ts +210 -0
  465. package/src/cli/commands/sync.ts +178 -0
  466. package/src/cli/exit-code.test.ts +19 -0
  467. package/src/cli/exit-code.ts +7 -0
  468. package/src/cli/formatters/index.ts +5 -0
  469. package/src/cli/formatters/tree/tree-builder.ts +380 -0
  470. package/src/cli/formatters/tree/tree-renderer.ts +372 -0
  471. package/src/cli/formatters/tree/tree.ts +238 -0
  472. package/src/cli/utils/apply-display.test.ts +348 -0
  473. package/src/cli/utils/apply-display.ts +238 -0
  474. package/src/cli/utils/export-display.test.ts +103 -0
  475. package/src/cli/utils/export-display.ts +275 -0
  476. package/src/cli/utils/integrations.test.ts +251 -0
  477. package/src/cli/utils/integrations.ts +170 -0
  478. package/src/cli/utils/resolve-input.test.ts +38 -0
  479. package/src/cli/utils/resolve-input.ts +17 -0
  480. package/src/cli/utils.ts +231 -0
  481. package/src/core/catalog-export/index.ts +20 -0
  482. package/src/core/catalog.diff.ts +253 -0
  483. package/src/core/catalog.model.test.ts +122 -0
  484. package/src/core/catalog.model.ts +510 -0
  485. package/src/core/catalog.snapshot.test.ts +488 -0
  486. package/src/core/catalog.snapshot.ts +289 -0
  487. package/src/core/change-utils.test.ts +61 -0
  488. package/src/core/change-utils.ts +73 -0
  489. package/src/core/change.types.ts +94 -0
  490. package/src/core/connection-url.test.ts +142 -0
  491. package/src/core/connection-url.ts +82 -0
  492. package/src/core/context.ts +26 -0
  493. package/src/core/declarative-apply/discover-sql.test.ts +103 -0
  494. package/src/core/declarative-apply/discover-sql.ts +107 -0
  495. package/src/core/declarative-apply/extract-catalog-providers.ts +220 -0
  496. package/src/core/declarative-apply/index.test.ts +67 -0
  497. package/src/core/declarative-apply/index.ts +205 -0
  498. package/src/core/declarative-apply/round-apply.test.ts +504 -0
  499. package/src/core/declarative-apply/round-apply.ts +562 -0
  500. package/src/core/depend.ts +1895 -0
  501. package/src/core/expand-replace-dependencies.test.ts +552 -0
  502. package/src/core/expand-replace-dependencies.ts +536 -0
  503. package/src/core/export/file-mapper.test.ts +816 -0
  504. package/src/core/export/file-mapper.ts +579 -0
  505. package/src/core/export/grouper.ts +108 -0
  506. package/src/core/export/index.ts +138 -0
  507. package/src/core/export/types.ts +104 -0
  508. package/src/core/fingerprint.ts +204 -0
  509. package/src/core/fixtures/empty-catalogs/postgres-15-16-baseline.json +287 -0
  510. package/src/core/integrations/filter/dsl.test.ts +450 -0
  511. package/src/core/integrations/filter/dsl.ts +305 -0
  512. package/src/core/integrations/filter/filter.types.ts +3 -0
  513. package/src/core/integrations/filter/flatten.test.ts +282 -0
  514. package/src/core/integrations/filter/flatten.ts +150 -0
  515. package/src/core/integrations/integration-dsl.ts +50 -0
  516. package/src/core/integrations/integration.types.ts +65 -0
  517. package/src/core/integrations/merge.test.ts +128 -0
  518. package/src/core/integrations/merge.ts +72 -0
  519. package/src/core/integrations/serialize/dsl.test.ts +110 -0
  520. package/src/core/integrations/serialize/dsl.ts +71 -0
  521. package/src/core/integrations/serialize/serialize.types.ts +40 -0
  522. package/src/core/integrations/supabase.ts +180 -0
  523. package/src/core/objects/aggregate/aggregate.diff.test.ts +215 -0
  524. package/src/core/objects/aggregate/aggregate.diff.ts +222 -0
  525. package/src/core/objects/aggregate/aggregate.model.ts +317 -0
  526. package/src/core/objects/aggregate/changes/aggregate.alter.test.ts +66 -0
  527. package/src/core/objects/aggregate/changes/aggregate.alter.ts +33 -0
  528. package/src/core/objects/aggregate/changes/aggregate.base.ts +20 -0
  529. package/src/core/objects/aggregate/changes/aggregate.comment.test.ts +89 -0
  530. package/src/core/objects/aggregate/changes/aggregate.comment.ts +63 -0
  531. package/src/core/objects/aggregate/changes/aggregate.create.test.ts +104 -0
  532. package/src/core/objects/aggregate/changes/aggregate.create.ts +330 -0
  533. package/src/core/objects/aggregate/changes/aggregate.drop.test.ts +82 -0
  534. package/src/core/objects/aggregate/changes/aggregate.drop.ts +33 -0
  535. package/src/core/objects/aggregate/changes/aggregate.privilege.test.ts +136 -0
  536. package/src/core/objects/aggregate/changes/aggregate.privilege.ts +147 -0
  537. package/src/core/objects/aggregate/changes/aggregate.types.ts +13 -0
  538. package/src/core/objects/base.change.ts +74 -0
  539. package/src/core/objects/base.default-privileges.ts +204 -0
  540. package/src/core/objects/base.diff.ts +20 -0
  541. package/src/core/objects/base.model.test.ts +43 -0
  542. package/src/core/objects/base.model.ts +85 -0
  543. package/src/core/objects/base.privilege-diff.ts +447 -0
  544. package/src/core/objects/base.privilege.ts +191 -0
  545. package/src/core/objects/collation/changes/collation.alter.test.ts +68 -0
  546. package/src/core/objects/collation/changes/collation.alter.ts +80 -0
  547. package/src/core/objects/collation/changes/collation.base.ts +20 -0
  548. package/src/core/objects/collation/changes/collation.comment.ts +69 -0
  549. package/src/core/objects/collation/changes/collation.create.test.ts +56 -0
  550. package/src/core/objects/collation/changes/collation.create.ts +107 -0
  551. package/src/core/objects/collation/changes/collation.drop.test.ts +31 -0
  552. package/src/core/objects/collation/changes/collation.drop.ts +38 -0
  553. package/src/core/objects/collation/changes/collation.types.ts +11 -0
  554. package/src/core/objects/collation/collation.diff.test.ts +97 -0
  555. package/src/core/objects/collation/collation.diff.ts +127 -0
  556. package/src/core/objects/collation/collation.model.ts +224 -0
  557. package/src/core/objects/diff-context.ts +16 -0
  558. package/src/core/objects/domain/changes/domain.alter.test.ts +335 -0
  559. package/src/core/objects/domain/changes/domain.alter.ts +287 -0
  560. package/src/core/objects/domain/changes/domain.base.ts +20 -0
  561. package/src/core/objects/domain/changes/domain.comment.ts +60 -0
  562. package/src/core/objects/domain/changes/domain.create.test.ts +95 -0
  563. package/src/core/objects/domain/changes/domain.create.ts +141 -0
  564. package/src/core/objects/domain/changes/domain.drop.test.ts +33 -0
  565. package/src/core/objects/domain/changes/domain.drop.ts +35 -0
  566. package/src/core/objects/domain/changes/domain.privilege.ts +172 -0
  567. package/src/core/objects/domain/changes/domain.types.ts +13 -0
  568. package/src/core/objects/domain/domain.diff.test.ts +284 -0
  569. package/src/core/objects/domain/domain.diff.ts +295 -0
  570. package/src/core/objects/domain/domain.model.ts +190 -0
  571. package/src/core/objects/event-trigger/changes/event-trigger.alter.test.ts +57 -0
  572. package/src/core/objects/event-trigger/changes/event-trigger.alter.ts +83 -0
  573. package/src/core/objects/event-trigger/changes/event-trigger.base.ts +20 -0
  574. package/src/core/objects/event-trigger/changes/event-trigger.comment.ts +67 -0
  575. package/src/core/objects/event-trigger/changes/event-trigger.create.test.ts +27 -0
  576. package/src/core/objects/event-trigger/changes/event-trigger.create.ts +73 -0
  577. package/src/core/objects/event-trigger/changes/event-trigger.drop.test.ts +25 -0
  578. package/src/core/objects/event-trigger/changes/event-trigger.drop.ts +35 -0
  579. package/src/core/objects/event-trigger/changes/event-trigger.types.ts +11 -0
  580. package/src/core/objects/event-trigger/event-trigger.diff.test.ts +131 -0
  581. package/src/core/objects/event-trigger/event-trigger.diff.ts +127 -0
  582. package/src/core/objects/event-trigger/event-trigger.model.ts +106 -0
  583. package/src/core/objects/extension/changes/extension.alter.test.ts +63 -0
  584. package/src/core/objects/extension/changes/extension.alter.ts +79 -0
  585. package/src/core/objects/extension/changes/extension.base.ts +20 -0
  586. package/src/core/objects/extension/changes/extension.comment.ts +65 -0
  587. package/src/core/objects/extension/changes/extension.create.test.ts +50 -0
  588. package/src/core/objects/extension/changes/extension.create.ts +66 -0
  589. package/src/core/objects/extension/changes/extension.drop.test.ts +26 -0
  590. package/src/core/objects/extension/changes/extension.drop.ts +35 -0
  591. package/src/core/objects/extension/changes/extension.types.ts +11 -0
  592. package/src/core/objects/extension/extension.diff.test.ts +42 -0
  593. package/src/core/objects/extension/extension.diff.ts +90 -0
  594. package/src/core/objects/extension/extension.model.test.ts +98 -0
  595. package/src/core/objects/extension/extension.model.ts +280 -0
  596. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.test.ts +136 -0
  597. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.alter.ts +102 -0
  598. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.base.ts +20 -0
  599. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.comment.ts +73 -0
  600. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.test.ts +160 -0
  601. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.create.ts +96 -0
  602. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.test.ts +26 -0
  603. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.drop.ts +37 -0
  604. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.privilege.ts +173 -0
  605. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/changes/foreign-data-wrapper.types.ts +13 -0
  606. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.test.ts +286 -0
  607. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.diff.ts +271 -0
  608. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper/foreign-data-wrapper.model.ts +149 -0
  609. package/src/core/objects/foreign-data-wrapper/foreign-data-wrapper.types.ts +11 -0
  610. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.test.ts +340 -0
  611. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.alter.ts +342 -0
  612. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.base.ts +20 -0
  613. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.comment.ts +73 -0
  614. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.test.ts +210 -0
  615. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.create.ts +82 -0
  616. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.test.ts +46 -0
  617. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.drop.ts +38 -0
  618. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.privilege.ts +182 -0
  619. package/src/core/objects/foreign-data-wrapper/foreign-table/changes/foreign-table.types.ts +13 -0
  620. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.test.ts +813 -0
  621. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.diff.ts +343 -0
  622. package/src/core/objects/foreign-data-wrapper/foreign-table/foreign-table.model.ts +242 -0
  623. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.test.ts +183 -0
  624. package/src/core/objects/foreign-data-wrapper/server/changes/server.alter.ts +127 -0
  625. package/src/core/objects/foreign-data-wrapper/server/changes/server.base.ts +20 -0
  626. package/src/core/objects/foreign-data-wrapper/server/changes/server.comment.ts +61 -0
  627. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.test.ts +144 -0
  628. package/src/core/objects/foreign-data-wrapper/server/changes/server.create.ts +82 -0
  629. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.test.ts +27 -0
  630. package/src/core/objects/foreign-data-wrapper/server/changes/server.drop.ts +35 -0
  631. package/src/core/objects/foreign-data-wrapper/server/changes/server.privilege.ts +165 -0
  632. package/src/core/objects/foreign-data-wrapper/server/changes/server.types.ts +13 -0
  633. package/src/core/objects/foreign-data-wrapper/server/server.diff.test.ts +262 -0
  634. package/src/core/objects/foreign-data-wrapper/server/server.diff.ts +247 -0
  635. package/src/core/objects/foreign-data-wrapper/server/server.model.ts +133 -0
  636. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.test.ts +91 -0
  637. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.alter.ts +70 -0
  638. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.base.ts +20 -0
  639. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.test.ts +96 -0
  640. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.create.ts +67 -0
  641. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.test.ts +60 -0
  642. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.drop.ts +41 -0
  643. package/src/core/objects/foreign-data-wrapper/user-mapping/changes/user-mapping.types.ts +9 -0
  644. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.test.ts +77 -0
  645. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.diff.ts +107 -0
  646. package/src/core/objects/foreign-data-wrapper/user-mapping/user-mapping.model.ts +96 -0
  647. package/src/core/objects/index/changes/index.alter.test.ts +209 -0
  648. package/src/core/objects/index/changes/index.alter.ts +145 -0
  649. package/src/core/objects/index/changes/index.base.ts +20 -0
  650. package/src/core/objects/index/changes/index.comment.ts +64 -0
  651. package/src/core/objects/index/changes/index.create.test.ts +69 -0
  652. package/src/core/objects/index/changes/index.create.ts +69 -0
  653. package/src/core/objects/index/changes/index.drop.test.ts +47 -0
  654. package/src/core/objects/index/changes/index.drop.ts +35 -0
  655. package/src/core/objects/index/changes/index.types.ts +7 -0
  656. package/src/core/objects/index/changes/utils.ts +16 -0
  657. package/src/core/objects/index/index.diff.test.ts +153 -0
  658. package/src/core/objects/index/index.diff.ts +243 -0
  659. package/src/core/objects/index/index.model.test.ts +83 -0
  660. package/src/core/objects/index/index.model.ts +379 -0
  661. package/src/core/objects/language/changes/language.alter.test.ts +36 -0
  662. package/src/core/objects/language/changes/language.alter.ts +54 -0
  663. package/src/core/objects/language/changes/language.base.ts +20 -0
  664. package/src/core/objects/language/changes/language.comment.ts +59 -0
  665. package/src/core/objects/language/changes/language.create.test.ts +30 -0
  666. package/src/core/objects/language/changes/language.create.ts +105 -0
  667. package/src/core/objects/language/changes/language.drop.test.ts +28 -0
  668. package/src/core/objects/language/changes/language.drop.ts +40 -0
  669. package/src/core/objects/language/changes/language.privilege.ts +173 -0
  670. package/src/core/objects/language/changes/language.types.ts +13 -0
  671. package/src/core/objects/language/language.diff.test.ts +135 -0
  672. package/src/core/objects/language/language.diff.ts +144 -0
  673. package/src/core/objects/language/language.model.ts +150 -0
  674. package/src/core/objects/materialized-view/changes/materialized-view.alter.test.ts +130 -0
  675. package/src/core/objects/materialized-view/changes/materialized-view.alter.ts +114 -0
  676. package/src/core/objects/materialized-view/changes/materialized-view.base.ts +20 -0
  677. package/src/core/objects/materialized-view/changes/materialized-view.comment.ts +177 -0
  678. package/src/core/objects/materialized-view/changes/materialized-view.create.test.ts +69 -0
  679. package/src/core/objects/materialized-view/changes/materialized-view.create.ts +94 -0
  680. package/src/core/objects/materialized-view/changes/materialized-view.drop.test.ts +37 -0
  681. package/src/core/objects/materialized-view/changes/materialized-view.drop.ts +61 -0
  682. package/src/core/objects/materialized-view/changes/materialized-view.privilege.ts +213 -0
  683. package/src/core/objects/materialized-view/changes/materialized-view.types.ts +13 -0
  684. package/src/core/objects/materialized-view/materialized-view.diff.test.ts +264 -0
  685. package/src/core/objects/materialized-view/materialized-view.diff.ts +301 -0
  686. package/src/core/objects/materialized-view/materialized-view.model.ts +258 -0
  687. package/src/core/objects/procedure/changes/procedure.alter.test.ts +1077 -0
  688. package/src/core/objects/procedure/changes/procedure.alter.ts +291 -0
  689. package/src/core/objects/procedure/changes/procedure.base.ts +20 -0
  690. package/src/core/objects/procedure/changes/procedure.comment.ts +71 -0
  691. package/src/core/objects/procedure/changes/procedure.create.test.ts +51 -0
  692. package/src/core/objects/procedure/changes/procedure.create.ts +93 -0
  693. package/src/core/objects/procedure/changes/procedure.drop.test.ts +90 -0
  694. package/src/core/objects/procedure/changes/procedure.drop.ts +50 -0
  695. package/src/core/objects/procedure/changes/procedure.privilege.ts +189 -0
  696. package/src/core/objects/procedure/changes/procedure.types.ts +13 -0
  697. package/src/core/objects/procedure/procedure.diff.test.ts +284 -0
  698. package/src/core/objects/procedure/procedure.diff.ts +371 -0
  699. package/src/core/objects/procedure/procedure.model.ts +264 -0
  700. package/src/core/objects/procedure/utils.ts +58 -0
  701. package/src/core/objects/publication/changes/publication.alter.test.ts +221 -0
  702. package/src/core/objects/publication/changes/publication.alter.ts +232 -0
  703. package/src/core/objects/publication/changes/publication.base.ts +20 -0
  704. package/src/core/objects/publication/changes/publication.comment.test.ts +73 -0
  705. package/src/core/objects/publication/changes/publication.comment.ts +65 -0
  706. package/src/core/objects/publication/changes/publication.create.test.ts +90 -0
  707. package/src/core/objects/publication/changes/publication.create.ts +83 -0
  708. package/src/core/objects/publication/changes/publication.drop.test.ts +48 -0
  709. package/src/core/objects/publication/changes/publication.drop.ts +30 -0
  710. package/src/core/objects/publication/changes/publication.types.ts +25 -0
  711. package/src/core/objects/publication/publication.diff.test.ts +297 -0
  712. package/src/core/objects/publication/publication.diff.ts +247 -0
  713. package/src/core/objects/publication/publication.model.ts +206 -0
  714. package/src/core/objects/publication/utils.ts +55 -0
  715. package/src/core/objects/rls-policy/changes/rls-policy.alter.test.ts +283 -0
  716. package/src/core/objects/rls-policy/changes/rls-policy.alter.ts +129 -0
  717. package/src/core/objects/rls-policy/changes/rls-policy.base.ts +20 -0
  718. package/src/core/objects/rls-policy/changes/rls-policy.comment.ts +70 -0
  719. package/src/core/objects/rls-policy/changes/rls-policy.create.test.ts +209 -0
  720. package/src/core/objects/rls-policy/changes/rls-policy.create.ts +128 -0
  721. package/src/core/objects/rls-policy/changes/rls-policy.drop.test.ts +33 -0
  722. package/src/core/objects/rls-policy/changes/rls-policy.drop.ts +40 -0
  723. package/src/core/objects/rls-policy/changes/rls-policy.types.ts +11 -0
  724. package/src/core/objects/rls-policy/rls-policy.diff.test.ts +81 -0
  725. package/src/core/objects/rls-policy/rls-policy.diff.ts +121 -0
  726. package/src/core/objects/rls-policy/rls-policy.model.ts +273 -0
  727. package/src/core/objects/role/changes/role.alter.test.ts +362 -0
  728. package/src/core/objects/role/changes/role.alter.ts +111 -0
  729. package/src/core/objects/role/changes/role.base.ts +24 -0
  730. package/src/core/objects/role/changes/role.comment.ts +56 -0
  731. package/src/core/objects/role/changes/role.create.test.ts +56 -0
  732. package/src/core/objects/role/changes/role.create.ts +103 -0
  733. package/src/core/objects/role/changes/role.drop.test.ts +32 -0
  734. package/src/core/objects/role/changes/role.drop.ts +35 -0
  735. package/src/core/objects/role/changes/role.privilege.ts +377 -0
  736. package/src/core/objects/role/changes/role.types.ts +13 -0
  737. package/src/core/objects/role/role.diff.test.ts +279 -0
  738. package/src/core/objects/role/role.diff.ts +499 -0
  739. package/src/core/objects/role/role.model.ts +452 -0
  740. package/src/core/objects/rule/changes/rule.alter.test.ts +82 -0
  741. package/src/core/objects/rule/changes/rule.alter.ts +73 -0
  742. package/src/core/objects/rule/changes/rule.base.ts +20 -0
  743. package/src/core/objects/rule/changes/rule.comment.test.ts +58 -0
  744. package/src/core/objects/rule/changes/rule.comment.ts +63 -0
  745. package/src/core/objects/rule/changes/rule.create.test.ts +63 -0
  746. package/src/core/objects/rule/changes/rule.create.ts +43 -0
  747. package/src/core/objects/rule/changes/rule.drop.test.ts +40 -0
  748. package/src/core/objects/rule/changes/rule.drop.ts +30 -0
  749. package/src/core/objects/rule/changes/rule.types.ts +13 -0
  750. package/src/core/objects/rule/rule.diff.test.ts +132 -0
  751. package/src/core/objects/rule/rule.diff.ts +79 -0
  752. package/src/core/objects/rule/rule.model.ts +173 -0
  753. package/src/core/objects/schema/changes/schema.alter.test.ts +31 -0
  754. package/src/core/objects/schema/changes/schema.alter.ts +46 -0
  755. package/src/core/objects/schema/changes/schema.base.ts +20 -0
  756. package/src/core/objects/schema/changes/schema.comment.ts +57 -0
  757. package/src/core/objects/schema/changes/schema.create.test.ts +25 -0
  758. package/src/core/objects/schema/changes/schema.create.ts +47 -0
  759. package/src/core/objects/schema/changes/schema.drop.test.ts +23 -0
  760. package/src/core/objects/schema/changes/schema.drop.ts +35 -0
  761. package/src/core/objects/schema/changes/schema.privilege.ts +176 -0
  762. package/src/core/objects/schema/changes/schema.types.ts +13 -0
  763. package/src/core/objects/schema/schema.diff.test.ts +42 -0
  764. package/src/core/objects/schema/schema.diff.ts +146 -0
  765. package/src/core/objects/schema/schema.model.ts +107 -0
  766. package/src/core/objects/sequence/changes/sequence.alter.test.ts +157 -0
  767. package/src/core/objects/sequence/changes/sequence.alter.ts +116 -0
  768. package/src/core/objects/sequence/changes/sequence.base.ts +20 -0
  769. package/src/core/objects/sequence/changes/sequence.comment.ts +61 -0
  770. package/src/core/objects/sequence/changes/sequence.create.test.ts +89 -0
  771. package/src/core/objects/sequence/changes/sequence.create.ts +112 -0
  772. package/src/core/objects/sequence/changes/sequence.drop.test.ts +35 -0
  773. package/src/core/objects/sequence/changes/sequence.drop.ts +50 -0
  774. package/src/core/objects/sequence/changes/sequence.privilege.ts +180 -0
  775. package/src/core/objects/sequence/changes/sequence.types.ts +13 -0
  776. package/src/core/objects/sequence/sequence.diff.test.ts +429 -0
  777. package/src/core/objects/sequence/sequence.diff.ts +326 -0
  778. package/src/core/objects/sequence/sequence.model.ts +185 -0
  779. package/src/core/objects/subscription/changes/subscription.alter.test.ts +134 -0
  780. package/src/core/objects/subscription/changes/subscription.alter.ts +111 -0
  781. package/src/core/objects/subscription/changes/subscription.base.ts +20 -0
  782. package/src/core/objects/subscription/changes/subscription.comment.test.ts +70 -0
  783. package/src/core/objects/subscription/changes/subscription.comment.ts +65 -0
  784. package/src/core/objects/subscription/changes/subscription.create.test.ts +80 -0
  785. package/src/core/objects/subscription/changes/subscription.create.ts +70 -0
  786. package/src/core/objects/subscription/changes/subscription.drop.test.ts +48 -0
  787. package/src/core/objects/subscription/changes/subscription.drop.ts +21 -0
  788. package/src/core/objects/subscription/changes/subscription.types.ts +23 -0
  789. package/src/core/objects/subscription/subscription.diff.test.ts +237 -0
  790. package/src/core/objects/subscription/subscription.diff.ts +242 -0
  791. package/src/core/objects/subscription/subscription.model.ts +190 -0
  792. package/src/core/objects/subscription/utils.ts +156 -0
  793. package/src/core/objects/table/changes/table.alter.test.ts +899 -0
  794. package/src/core/objects/table/changes/table.alter.ts +910 -0
  795. package/src/core/objects/table/changes/table.base.ts +20 -0
  796. package/src/core/objects/table/changes/table.comment.ts +267 -0
  797. package/src/core/objects/table/changes/table.create.test.ts +188 -0
  798. package/src/core/objects/table/changes/table.create.ts +193 -0
  799. package/src/core/objects/table/changes/table.drop.test.ts +36 -0
  800. package/src/core/objects/table/changes/table.drop.ts +87 -0
  801. package/src/core/objects/table/changes/table.privilege.ts +201 -0
  802. package/src/core/objects/table/changes/table.types.ts +13 -0
  803. package/src/core/objects/table/table.diff.test.ts +1146 -0
  804. package/src/core/objects/table/table.diff.ts +889 -0
  805. package/src/core/objects/table/table.model.ts +462 -0
  806. package/src/core/objects/trigger/changes/trigger.alter.test.ts +50 -0
  807. package/src/core/objects/trigger/changes/trigger.alter.ts +77 -0
  808. package/src/core/objects/trigger/changes/trigger.base.ts +20 -0
  809. package/src/core/objects/trigger/changes/trigger.comment.ts +65 -0
  810. package/src/core/objects/trigger/changes/trigger.create.test.ts +47 -0
  811. package/src/core/objects/trigger/changes/trigger.create.ts +89 -0
  812. package/src/core/objects/trigger/changes/trigger.drop.test.ts +47 -0
  813. package/src/core/objects/trigger/changes/trigger.drop.ts +40 -0
  814. package/src/core/objects/trigger/changes/trigger.types.ts +11 -0
  815. package/src/core/objects/trigger/trigger.diff.test.ts +84 -0
  816. package/src/core/objects/trigger/trigger.diff.ts +121 -0
  817. package/src/core/objects/trigger/trigger.model.ts +268 -0
  818. package/src/core/objects/type/composite-type/changes/composite-type.alter.test.ts +208 -0
  819. package/src/core/objects/type/composite-type/changes/composite-type.alter.ts +175 -0
  820. package/src/core/objects/type/composite-type/changes/composite-type.base.ts +20 -0
  821. package/src/core/objects/type/composite-type/changes/composite-type.comment.ts +146 -0
  822. package/src/core/objects/type/composite-type/changes/composite-type.create.test.ts +106 -0
  823. package/src/core/objects/type/composite-type/changes/composite-type.create.ts +96 -0
  824. package/src/core/objects/type/composite-type/changes/composite-type.drop.test.ts +36 -0
  825. package/src/core/objects/type/composite-type/changes/composite-type.drop.ts +38 -0
  826. package/src/core/objects/type/composite-type/changes/composite-type.privilege.ts +176 -0
  827. package/src/core/objects/type/composite-type/changes/composite-type.types.ts +13 -0
  828. package/src/core/objects/type/composite-type/composite-type.diff.test.ts +269 -0
  829. package/src/core/objects/type/composite-type/composite-type.diff.ts +310 -0
  830. package/src/core/objects/type/composite-type/composite-type.model.ts +253 -0
  831. package/src/core/objects/type/enum/changes/enum.alter.test.ts +113 -0
  832. package/src/core/objects/type/enum/changes/enum.alter.ts +92 -0
  833. package/src/core/objects/type/enum/changes/enum.base.ts +20 -0
  834. package/src/core/objects/type/enum/changes/enum.comment.ts +65 -0
  835. package/src/core/objects/type/enum/changes/enum.create.test.ts +31 -0
  836. package/src/core/objects/type/enum/changes/enum.create.ts +57 -0
  837. package/src/core/objects/type/enum/changes/enum.drop.test.ts +28 -0
  838. package/src/core/objects/type/enum/changes/enum.drop.ts +35 -0
  839. package/src/core/objects/type/enum/changes/enum.privilege.ts +176 -0
  840. package/src/core/objects/type/enum/changes/enum.types.ts +13 -0
  841. package/src/core/objects/type/enum/enum.diff.test.ts +372 -0
  842. package/src/core/objects/type/enum/enum.diff.ts +308 -0
  843. package/src/core/objects/type/enum/enum.model.ts +194 -0
  844. package/src/core/objects/type/range/changes/range.alter.test.ts +29 -0
  845. package/src/core/objects/type/range/changes/range.alter.ts +52 -0
  846. package/src/core/objects/type/range/changes/range.base.ts +20 -0
  847. package/src/core/objects/type/range/changes/range.comment.ts +65 -0
  848. package/src/core/objects/type/range/changes/range.create.test.ts +54 -0
  849. package/src/core/objects/type/range/changes/range.create.ts +156 -0
  850. package/src/core/objects/type/range/changes/range.drop.test.ts +28 -0
  851. package/src/core/objects/type/range/changes/range.drop.ts +35 -0
  852. package/src/core/objects/type/range/changes/range.privilege.ts +176 -0
  853. package/src/core/objects/type/range/changes/range.types.ts +13 -0
  854. package/src/core/objects/type/range/range.diff.test.ts +147 -0
  855. package/src/core/objects/type/range/range.diff.ts +197 -0
  856. package/src/core/objects/type/range/range.model.ts +187 -0
  857. package/src/core/objects/type/type.types.ts +6 -0
  858. package/src/core/objects/utils.ts +171 -0
  859. package/src/core/objects/view/changes/view.alter.test.ts +115 -0
  860. package/src/core/objects/view/changes/view.alter.ts +113 -0
  861. package/src/core/objects/view/changes/view.base.ts +20 -0
  862. package/src/core/objects/view/changes/view.comment.ts +60 -0
  863. package/src/core/objects/view/changes/view.create.test.ts +70 -0
  864. package/src/core/objects/view/changes/view.create.ts +74 -0
  865. package/src/core/objects/view/changes/view.drop.test.ts +37 -0
  866. package/src/core/objects/view/changes/view.drop.ts +41 -0
  867. package/src/core/objects/view/changes/view.privilege.ts +201 -0
  868. package/src/core/objects/view/changes/view.types.ts +13 -0
  869. package/src/core/objects/view/view.diff.test.ts +269 -0
  870. package/src/core/objects/view/view.diff.ts +230 -0
  871. package/src/core/objects/view/view.model.ts +262 -0
  872. package/src/core/plan/apply.ts +172 -0
  873. package/src/core/plan/create.ts +368 -0
  874. package/src/core/plan/hierarchy.ts +574 -0
  875. package/src/core/plan/index.ts +29 -0
  876. package/src/core/plan/io.ts +20 -0
  877. package/src/core/plan/risk.ts +48 -0
  878. package/src/core/plan/serialize.test.ts +317 -0
  879. package/src/core/plan/serialize.ts +209 -0
  880. package/src/core/plan/sql-format/constants.ts +13 -0
  881. package/src/core/plan/sql-format/fixtures.ts +2811 -0
  882. package/src/core/plan/sql-format/format-comment-literals.test.ts +96 -0
  883. package/src/core/plan/sql-format/format-functions.test.ts +127 -0
  884. package/src/core/plan/sql-format/format-lowercase-coverage.test.ts +119 -0
  885. package/src/core/plan/sql-format/format-off.test.ts +806 -0
  886. package/src/core/plan/sql-format/format-pretty-lower-leading.test.ts +1061 -0
  887. package/src/core/plan/sql-format/format-pretty-narrow.test.ts +1279 -0
  888. package/src/core/plan/sql-format/format-pretty-preserve.test.ts +1057 -0
  889. package/src/core/plan/sql-format/format-pretty-upper.test.ts +1048 -0
  890. package/src/core/plan/sql-format/format-stress.test.ts +616 -0
  891. package/src/core/plan/sql-format/format-utils.test.ts +91 -0
  892. package/src/core/plan/sql-format/format-utils.ts +391 -0
  893. package/src/core/plan/sql-format/formatters.ts +921 -0
  894. package/src/core/plan/sql-format/index.ts +149 -0
  895. package/src/core/plan/sql-format/keyword-case.test.ts +118 -0
  896. package/src/core/plan/sql-format/keyword-case.ts +1120 -0
  897. package/src/core/plan/sql-format/protect.test.ts +127 -0
  898. package/src/core/plan/sql-format/protect.ts +337 -0
  899. package/src/core/plan/sql-format/sql-scanner.test.ts +240 -0
  900. package/src/core/plan/sql-format/sql-scanner.ts +252 -0
  901. package/src/core/plan/sql-format/tokenizer.test.ts +68 -0
  902. package/src/core/plan/sql-format/tokenizer.ts +152 -0
  903. package/src/core/plan/sql-format/types.ts +31 -0
  904. package/src/core/plan/sql-format/wrap.test.ts +119 -0
  905. package/src/core/plan/sql-format/wrap.ts +196 -0
  906. package/src/core/plan/sql-format.ts +2 -0
  907. package/src/core/plan/ssl-config.ts +172 -0
  908. package/src/core/plan/statements.ts +22 -0
  909. package/src/core/plan/types.ts +168 -0
  910. package/src/core/post-diff-cycle-breaking.test.ts +459 -0
  911. package/src/core/post-diff-cycle-breaking.ts +317 -0
  912. package/src/core/postgres-config.test.ts +336 -0
  913. package/src/core/postgres-config.ts +458 -0
  914. package/src/core/sort/custom-constraints.ts +235 -0
  915. package/src/core/sort/debug-visualization.ts +239 -0
  916. package/src/core/sort/dependency-filter.ts +224 -0
  917. package/src/core/sort/graph-builder.ts +235 -0
  918. package/src/core/sort/graph-utils.ts +51 -0
  919. package/src/core/sort/logical-sort.test.ts +371 -0
  920. package/src/core/sort/logical-sort.ts +573 -0
  921. package/src/core/sort/sort-changes.ts +234 -0
  922. package/src/core/sort/topological-sort.test.ts +275 -0
  923. package/src/core/sort/topological-sort.ts +184 -0
  924. package/src/core/sort/types.ts +112 -0
  925. package/src/core/sort/utils.ts +69 -0
  926. package/src/core/test-utils/assert-valid-sql.ts +20 -0
  927. package/src/index.ts +41 -0
  928. package/src/typedoc.ts +253 -0
  929. package/dist/core/integrations/filter/extractors.d.ts +0 -12
  930. package/dist/core/integrations/filter/extractors.js +0 -136
@@ -0,0 +1,806 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { renderScript } from "./fixtures.ts";
3
+
4
+ describe("sql formatting snapshots", () => {
5
+ test("format-off", () => {
6
+ const output = ["-- format: off", renderScript(undefined)]
7
+ .filter(Boolean)
8
+ .join("\n");
9
+ expect(output).toMatchInlineSnapshot(`
10
+ "-- format: off
11
+ -- schema.create
12
+ CREATE SCHEMA application_schema_with_very_long_name_for_wrapping_tests AUTHORIZATION admin;
13
+
14
+ -- schema.drop
15
+ DROP SCHEMA application_schema_with_very_long_name_for_wrapping_tests;
16
+
17
+ -- schema.alter.change_owner
18
+ ALTER SCHEMA application_schema_with_very_long_name_for_wrapping_tests OWNER TO new_admin;
19
+
20
+ -- schema.comment
21
+ COMMENT ON SCHEMA application_schema_with_very_long_name_for_wrapping_tests IS 'application schema';
22
+
23
+ -- schema.drop_comment
24
+ COMMENT ON SCHEMA application_schema_with_very_long_name_for_wrapping_tests IS NULL;
25
+
26
+ -- schema.grant
27
+ GRANT ALL ON SCHEMA application_schema_with_very_long_name_for_wrapping_tests TO app_user WITH GRANT OPTION;
28
+
29
+ -- schema.revoke
30
+ REVOKE CREATE ON SCHEMA application_schema_with_very_long_name_for_wrapping_tests FROM app_user;
31
+
32
+ -- schema.revoke_grant_option
33
+ REVOKE GRANT OPTION FOR USAGE ON SCHEMA application_schema_with_very_long_name_for_wrapping_tests FROM app_user;
34
+
35
+ -- extension.create
36
+ CREATE EXTENSION pgcrypto WITH SCHEMA extensions;
37
+
38
+ -- extension.drop
39
+ DROP EXTENSION pgcrypto;
40
+
41
+ -- extension.alter.update_version
42
+ ALTER EXTENSION pgcrypto UPDATE TO '1.4';
43
+
44
+ -- extension.alter.set_schema
45
+ ALTER EXTENSION pgcrypto SET SCHEMA public;
46
+
47
+ -- extension.comment
48
+ COMMENT ON EXTENSION pgcrypto IS 'cryptographic functions';
49
+
50
+ -- extension.drop_comment
51
+ COMMENT ON EXTENSION pgcrypto IS NULL;
52
+
53
+ -- domain.create
54
+ CREATE DOMAIN public.test_domain_all AS custom.text[][] COLLATE mycoll DEFAULT 'hello' NOT NULL CHECK (VALUE <> '');
55
+
56
+ -- domain.drop
57
+ DROP DOMAIN public.test_domain_all;
58
+
59
+ -- domain.alter.set_default
60
+ ALTER DOMAIN public.test_domain_all SET DEFAULT 'world';
61
+
62
+ -- domain.alter.drop_default
63
+ ALTER DOMAIN public.test_domain_all DROP DEFAULT;
64
+
65
+ -- domain.alter.set_not_null
66
+ ALTER DOMAIN public.test_domain_all SET NOT NULL;
67
+
68
+ -- domain.alter.drop_not_null
69
+ ALTER DOMAIN public.test_domain_all DROP NOT NULL;
70
+
71
+ -- domain.alter.change_owner
72
+ ALTER DOMAIN public.test_domain_all OWNER TO new_owner;
73
+
74
+ -- domain.alter.add_constraint
75
+ ALTER DOMAIN public.test_domain_all ADD CONSTRAINT domain_len_chk CHECK (char_length(VALUE) <= 255) NOT VALID;
76
+
77
+ -- domain.alter.drop_constraint
78
+ ALTER DOMAIN public.test_domain_all DROP CONSTRAINT domain_chk;
79
+
80
+ -- domain.alter.validate_constraint
81
+ ALTER DOMAIN public.test_domain_all VALIDATE CONSTRAINT domain_len_chk;
82
+
83
+ -- domain.comment
84
+ COMMENT ON DOMAIN public.test_domain_all IS 'domain comment';
85
+
86
+ -- domain.drop_comment
87
+ COMMENT ON DOMAIN public.test_domain_all IS NULL;
88
+
89
+ -- domain.grant
90
+ GRANT ALL ON DOMAIN public.test_domain_all TO app_user;
91
+
92
+ -- domain.revoke
93
+ REVOKE ALL ON DOMAIN public.test_domain_all FROM app_user;
94
+
95
+ -- domain.revoke_grant_option
96
+ REVOKE GRANT OPTION FOR ALL ON DOMAIN public.test_domain_all FROM app_user;
97
+
98
+ -- type.enum.create
99
+ CREATE TYPE public.test_enum AS ENUM ('value1', 'value2', 'value3');
100
+
101
+ -- type.enum.drop
102
+ DROP TYPE public.test_enum;
103
+
104
+ -- type.enum.alter.change_owner
105
+ ALTER TYPE public.test_enum OWNER TO new_owner;
106
+
107
+ -- type.enum.alter.add_value
108
+ ALTER TYPE public.test_enum ADD VALUE 'value4' AFTER 'value2';
109
+
110
+ -- type.enum.comment
111
+ COMMENT ON TYPE public.test_enum IS 'enum comment';
112
+
113
+ -- type.enum.drop_comment
114
+ COMMENT ON TYPE public.test_enum IS NULL;
115
+
116
+ -- type.enum.grant
117
+ GRANT ALL ON TYPE public.test_enum TO app_user;
118
+
119
+ -- type.enum.revoke
120
+ REVOKE ALL ON TYPE public.test_enum FROM app_user;
121
+
122
+ -- type.enum.revoke_grant_option
123
+ REVOKE GRANT OPTION FOR ALL ON TYPE public.test_enum FROM app_user;
124
+
125
+ -- type.composite.create
126
+ CREATE TYPE public.test_type AS (id integer, name text COLLATE "en_US");
127
+
128
+ -- type.composite.drop
129
+ DROP TYPE public.test_type;
130
+
131
+ -- type.composite.alter.change_owner
132
+ ALTER TYPE public.test_type OWNER TO new_owner;
133
+
134
+ -- type.composite.alter.add_attribute
135
+ ALTER TYPE public.test_type ADD ATTRIBUTE age integer;
136
+
137
+ -- type.composite.alter.drop_attribute
138
+ ALTER TYPE public.test_type DROP ATTRIBUTE name;
139
+
140
+ -- type.composite.alter.alter_attr_type
141
+ ALTER TYPE public.test_type ALTER ATTRIBUTE name TYPE varchar(255) COLLATE "C";
142
+
143
+ -- type.composite.comment
144
+ COMMENT ON TYPE public.test_type IS 'composite comment';
145
+
146
+ -- type.composite.drop_comment
147
+ COMMENT ON TYPE public.test_type IS NULL;
148
+
149
+ -- type.composite.attr_comment
150
+ COMMENT ON COLUMN public.test_type.id IS 'attr comment';
151
+
152
+ -- type.composite.drop_attr_comment
153
+ COMMENT ON COLUMN public.test_type.id IS NULL;
154
+
155
+ -- type.composite.grant
156
+ GRANT ALL ON TYPE public.test_type TO app_user;
157
+
158
+ -- type.composite.revoke
159
+ REVOKE ALL ON TYPE public.test_type FROM app_user;
160
+
161
+ -- type.composite.revoke_grant_option
162
+ REVOKE GRANT OPTION FOR ALL ON TYPE public.test_type FROM app_user;
163
+
164
+ -- type.range.create
165
+ CREATE TYPE public.daterange_custom AS RANGE (SUBTYPE = date, SUBTYPE_OPCLASS = public.date_ops, COLLATION = "en_US", CANONICAL = public.canon_fn, SUBTYPE_DIFF = public.diff_fn);
166
+
167
+ -- type.range.drop
168
+ DROP TYPE public.daterange_custom;
169
+
170
+ -- type.range.alter.change_owner
171
+ ALTER TYPE public.daterange_custom OWNER TO new_owner;
172
+
173
+ -- type.range.comment
174
+ COMMENT ON TYPE public.daterange_custom IS 'range comment';
175
+
176
+ -- type.range.drop_comment
177
+ COMMENT ON TYPE public.daterange_custom IS NULL;
178
+
179
+ -- type.range.grant
180
+ GRANT ALL ON TYPE public.daterange_custom TO app_user;
181
+
182
+ -- type.range.revoke
183
+ REVOKE ALL ON TYPE public.daterange_custom FROM app_user;
184
+
185
+ -- type.range.revoke_grant_option
186
+ REVOKE GRANT OPTION FOR ALL ON TYPE public.daterange_custom FROM app_user;
187
+
188
+ -- collation.create
189
+ CREATE COLLATION public.test (LOCALE = 'en_US', LC_COLLATE = 'en_US', LC_CTYPE = 'en_US', PROVIDER = icu, DETERMINISTIC = false, RULES = '& A < a <<< à', VERSION = '1.0');
190
+
191
+ -- collation.drop
192
+ DROP COLLATION public.test;
193
+
194
+ -- collation.alter.change_owner
195
+ ALTER COLLATION public.test OWNER TO new_owner;
196
+
197
+ -- collation.alter.refresh_version
198
+ ALTER COLLATION public.test REFRESH VERSION;
199
+
200
+ -- collation.comment
201
+ COMMENT ON COLLATION public.test IS 'collation comment';
202
+
203
+ -- collation.drop_comment
204
+ COMMENT ON COLLATION public.test IS NULL;
205
+
206
+ -- table.create
207
+ CREATE TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test (id bigint GENERATED ALWAYS AS IDENTITY NOT NULL, status text COLLATE "en_US" DEFAULT 'pending', created_at timestamptz DEFAULT now(), ref_id bigint, computed bigint GENERATED ALWAYS AS (id * 2) STORED) WITH (fillfactor=70, autovacuum_enabled=false);
208
+
209
+ -- table.drop
210
+ DROP TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test;
211
+
212
+ -- table.alter.add_column
213
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ADD COLUMN email text COLLATE "en_US" DEFAULT 'user@example.com' NOT NULL;
214
+
215
+ -- table.alter.drop_column
216
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test DROP COLUMN computed;
217
+
218
+ -- table.alter.column_type
219
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ALTER COLUMN status TYPE character varying(255) COLLATE "C";
220
+
221
+ -- table.alter.column_set_default
222
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ALTER COLUMN status SET DEFAULT 'active';
223
+
224
+ -- table.alter.column_drop_default
225
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ALTER COLUMN status DROP DEFAULT;
226
+
227
+ -- table.alter.column_set_not_null
228
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ALTER COLUMN status SET NOT NULL;
229
+
230
+ -- table.alter.column_drop_not_null
231
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ALTER COLUMN status DROP NOT NULL;
232
+
233
+ -- table.alter.add_constraint
234
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ADD CONSTRAINT uq_t_fmt_status UNIQUE (status);
235
+
236
+ -- table.alter.add_fk_constraint
237
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ADD CONSTRAINT fk_t_fmt_ref FOREIGN KEY (ref_id) REFERENCES public.other_table(id) MATCH FULL ON UPDATE SET NULL ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
238
+
239
+ -- table.alter.drop_constraint
240
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test DROP CONSTRAINT uq_t_fmt_status;
241
+
242
+ -- table.alter.validate_constraint
243
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test VALIDATE CONSTRAINT chk_t_fmt_status;
244
+
245
+ -- table.alter.change_owner
246
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test OWNER TO new_owner;
247
+
248
+ -- table.alter.set_logged
249
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test SET LOGGED;
250
+
251
+ -- table.alter.set_unlogged
252
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test SET UNLOGGED;
253
+
254
+ -- table.alter.enable_rls
255
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test ENABLE ROW LEVEL SECURITY;
256
+
257
+ -- table.alter.disable_rls
258
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test DISABLE ROW LEVEL SECURITY;
259
+
260
+ -- table.alter.force_rls
261
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test FORCE ROW LEVEL SECURITY;
262
+
263
+ -- table.alter.no_force_rls
264
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test NO FORCE ROW LEVEL SECURITY;
265
+
266
+ -- table.alter.set_storage_params
267
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test SET (fillfactor=80, autovacuum_enabled=true);
268
+
269
+ -- table.alter.reset_storage_params
270
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test RESET (fillfactor, autovacuum_enabled);
271
+
272
+ -- table.alter.replica_identity
273
+ ALTER TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test REPLICA IDENTITY FULL;
274
+
275
+ -- table.alter.attach_partition
276
+ ALTER TABLE public.events ATTACH PARTITION public.events_2024 FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');
277
+
278
+ -- table.alter.detach_partition
279
+ ALTER TABLE public.events DETACH PARTITION public.events_2024;
280
+
281
+ -- table.comment
282
+ COMMENT ON TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test IS 'table comment';
283
+
284
+ -- table.drop_comment
285
+ COMMENT ON TABLE public.table_with_very_long_name_for_formatting_and_wrapping_test IS NULL;
286
+
287
+ -- table.column_comment
288
+ COMMENT ON COLUMN public.table_with_very_long_name_for_formatting_and_wrapping_test.id IS 'id column';
289
+
290
+ -- table.drop_column_comment
291
+ COMMENT ON COLUMN public.table_with_very_long_name_for_formatting_and_wrapping_test.id IS NULL;
292
+
293
+ -- table.constraint_comment
294
+ COMMENT ON CONSTRAINT pk_t_fmt ON public.table_with_very_long_name_for_formatting_and_wrapping_test IS 'primary key';
295
+
296
+ -- table.drop_constraint_comment
297
+ COMMENT ON CONSTRAINT chk_t_fmt_status ON public.table_with_very_long_name_for_formatting_and_wrapping_test IS NULL;
298
+
299
+ -- table.grant
300
+ GRANT INSERT, SELECT ON public.table_with_very_long_name_for_formatting_and_wrapping_test TO app_reader;
301
+
302
+ -- table.revoke
303
+ REVOKE DELETE, UPDATE ON public.table_with_very_long_name_for_formatting_and_wrapping_test FROM app_reader;
304
+
305
+ -- table.revoke_grant_option
306
+ REVOKE GRANT OPTION FOR INSERT, SELECT ON public.table_with_very_long_name_for_formatting_and_wrapping_test FROM app_reader;
307
+
308
+ -- publication.create
309
+ CREATE PUBLICATION pub_custom FOR TABLE public.articles_with_a_very_long_name_very_very_long_name_that_will_go_above_the_wrapping_limit (id, title) WHERE (published = true), TABLE public.comments_a_little_smaller_name_than_the_previous_one, TABLES IN SCHEMA analytics;
310
+
311
+ -- publication.drop
312
+ DROP PUBLICATION pub_custom;
313
+
314
+ -- publication.alter.set_options
315
+ ALTER PUBLICATION pub_custom SET (publish = 'insert, update, delete, truncate', publish_via_partition_root = false);
316
+
317
+ -- publication.alter.set_list
318
+ ALTER PUBLICATION pub_custom SET TABLE public.articles_with_a_very_long_name_very_very_long_name_that_will_go_above_the_wrapping_limit (id, title) WHERE (published = true), TABLE public.comments_a_little_smaller_name_than_the_previous_one, TABLES IN SCHEMA analytics;
319
+
320
+ -- publication.alter.add_tables
321
+ ALTER PUBLICATION pub_custom ADD TABLE public.new_table_with_very_long_name_for_formatting_and_wrapping_test;
322
+
323
+ -- publication.alter.drop_tables
324
+ ALTER PUBLICATION pub_custom DROP TABLE public.comments_a_little_smaller_name_than_the_previous_one;
325
+
326
+ -- publication.alter.add_schemas
327
+ ALTER PUBLICATION pub_custom ADD TABLES IN SCHEMA staging;
328
+
329
+ -- publication.alter.drop_schemas
330
+ ALTER PUBLICATION pub_custom DROP TABLES IN SCHEMA analytics;
331
+
332
+ -- publication.alter.set_owner
333
+ ALTER PUBLICATION pub_custom OWNER TO new_owner;
334
+
335
+ -- publication.comment
336
+ COMMENT ON PUBLICATION pub_custom IS 'publication comment';
337
+
338
+ -- publication.drop_comment
339
+ COMMENT ON PUBLICATION pub_custom IS NULL;
340
+
341
+ -- view.create
342
+ CREATE VIEW public.test_view WITH (security_barrier=true, check_option=local) AS SELECT *
343
+ FROM test_table;
344
+
345
+ -- view.drop
346
+ DROP VIEW public.test_view;
347
+
348
+ -- view.alter.change_owner
349
+ ALTER VIEW public.test_view OWNER TO new_owner;
350
+
351
+ -- view.alter.set_options
352
+ ALTER VIEW public.test_view SET (security_barrier=true, check_option=cascaded);
353
+
354
+ -- view.alter.reset_options
355
+ ALTER VIEW public.test_view RESET (security_barrier);
356
+
357
+ -- view.comment
358
+ COMMENT ON VIEW public.test_view IS 'view comment';
359
+
360
+ -- view.drop_comment
361
+ COMMENT ON VIEW public.test_view IS NULL;
362
+
363
+ -- view.grant
364
+ GRANT SELECT ON public.test_view TO app_reader WITH GRANT OPTION;
365
+
366
+ -- view.revoke
367
+ REVOKE SELECT ON public.test_view FROM app_reader;
368
+
369
+ -- view.revoke_grant_option
370
+ REVOKE GRANT OPTION FOR SELECT ON public.test_view FROM app_reader;
371
+
372
+ -- rule.create
373
+ CREATE RULE test_rule AS ON INSERT TO public.test_table DO INSTEAD NOTHING;
374
+
375
+ -- rule.drop
376
+ DROP RULE test_rule ON public.test_table;
377
+
378
+ -- rule.replace
379
+ CREATE OR REPLACE RULE test_rule AS ON INSERT TO public.test_table DO INSTEAD NOTHING;
380
+
381
+ -- rule.alter.set_enabled
382
+ ALTER TABLE public.test_table DISABLE RULE test_rule;
383
+
384
+ -- rule.comment
385
+ COMMENT ON RULE test_rule ON public.test_table IS 'rule comment';
386
+
387
+ -- rule.drop_comment
388
+ COMMENT ON RULE test_rule ON public.test_table IS NULL;
389
+
390
+ -- procedure.create
391
+ CREATE PROCEDURE public.test_procedure() LANGUAGE plpgsql AS $$ begin null; end; $$;
392
+
393
+ -- procedure.drop
394
+ DROP PROCEDURE public.test_procedure();
395
+
396
+ -- function.create
397
+ CREATE FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name("p_schema_name_for_analytics" text, "p_table_name_for_metrics" text, "p_limit_count_default" integer DEFAULT 100) RETURNS TABLE(total bigint, average numeric) LANGUAGE plpgsql STABLE SECURITY DEFINER PARALLEL SAFE COST 100 ROWS 10 STRICT SET search_path TO 'pg_catalog', 'public' AS $function$ BEGIN RETURN QUERY SELECT count(*)::bigint, avg(value)::numeric FROM generate_series(1, p_limit_count_default); END; $function$;
398
+
399
+ -- function.drop
400
+ DROP FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(IN "p_schema_name_for_analytics" text, IN "p_table_name_for_metrics" text, IN "p_limit_count_default" integer);
401
+
402
+ -- function.alter.change_owner
403
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) OWNER TO new_admin;
404
+
405
+ -- function.alter.set_security
406
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) SECURITY INVOKER;
407
+
408
+ -- function.alter.set_config
409
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) SET work_mem TO '256MB';
410
+
411
+ -- function.alter.set_volatility
412
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) IMMUTABLE;
413
+
414
+ -- function.alter.set_strictness
415
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) CALLED ON NULL INPUT;
416
+
417
+ -- function.alter.set_leakproof
418
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) LEAKPROOF;
419
+
420
+ -- function.alter.set_parallel
421
+ ALTER FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) PARALLEL RESTRICTED;
422
+
423
+ -- function.comment
424
+ COMMENT ON FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text,text,integer) IS 'Calculate metrics for a given table';
425
+
426
+ -- function.drop_comment
427
+ COMMENT ON FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text,text,integer) IS NULL;
428
+
429
+ -- function.grant
430
+ GRANT ALL ON FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) TO app_user WITH GRANT OPTION;
431
+
432
+ -- function.revoke
433
+ REVOKE ALL ON FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) FROM app_user;
434
+
435
+ -- function.revoke_grant_option
436
+ REVOKE GRANT OPTION FOR ALL ON FUNCTION public.calculate_metrics_for_analytics_dashboard_with_extended_name(text, text, integer) FROM app_user;
437
+
438
+ -- sequence.create
439
+ CREATE SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq;
440
+
441
+ -- sequence.drop
442
+ DROP SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq CASCADE;
443
+
444
+ -- sequence.alter.set_owned_by
445
+ ALTER SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq OWNED BY public.table_with_very_long_name_for_formatting_and_wrapping_test.id;
446
+
447
+ -- sequence.alter.set_options
448
+ ALTER SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq INCREMENT BY 10 MINVALUE 1 MAXVALUE 1000000 CACHE 5 CYCLE;
449
+
450
+ -- sequence.comment
451
+ COMMENT ON SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq IS 'sequence for table_with_very_long_name_for_formatting_and_wrapping_test.id';
452
+
453
+ -- sequence.drop_comment
454
+ COMMENT ON SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq IS NULL;
455
+
456
+ -- sequence.grant
457
+ GRANT SELECT, USAGE ON SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq TO app_user;
458
+
459
+ -- sequence.revoke
460
+ REVOKE USAGE ON SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq FROM app_user;
461
+
462
+ -- sequence.revoke_grant_option
463
+ REVOKE GRANT OPTION FOR USAGE ON SEQUENCE public.table_with_very_long_name_for_formatting_and_wrapping_test_id_seq FROM app_user;
464
+
465
+ -- policy.create
466
+ CREATE POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test FOR SELECT TO authenticated USING (auth.uid() = user_id);
467
+
468
+ -- policy.create_restrictive
469
+ CREATE POLICY restrict_delete ON public.table_with_very_long_name_for_formatting_and_wrapping_test AS RESTRICTIVE FOR DELETE TO authenticated, service_role USING (auth.uid() = owner_id) WITH CHECK (status <> 'locked');
470
+
471
+ -- policy.drop
472
+ DROP POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test;
473
+
474
+ -- policy.alter.set_roles
475
+ ALTER POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test TO authenticated, anon;
476
+
477
+ -- policy.alter.set_using
478
+ ALTER POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test USING (auth.uid() = user_id AND status = 'active');
479
+
480
+ -- policy.alter.set_with_check
481
+ ALTER POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test WITH CHECK (auth.uid() = user_id);
482
+
483
+ -- policy.comment
484
+ COMMENT ON POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test IS 'rls policy comment';
485
+
486
+ -- policy.drop_comment
487
+ COMMENT ON POLICY allow_select_own ON public.table_with_very_long_name_for_formatting_and_wrapping_test IS NULL;
488
+
489
+ -- index.create
490
+ CREATE UNIQUE INDEX idx_t_fmt_status ON public.table_with_very_long_name_for_formatting_and_wrapping_test (status) WITH (fillfactor='90') WHERE (status <> 'archived'::text);
491
+
492
+ -- index.create_gin
493
+ CREATE INDEX idx_t_fmt_search ON public.table_with_very_long_name_for_formatting_and_wrapping_test USING gin (to_tsvector('english'::regconfig, status));
494
+
495
+ -- index.drop
496
+ DROP INDEX public.idx_t_fmt_status;
497
+
498
+ -- index.alter.set_storage_params
499
+ ALTER INDEX public.idx_t_fmt_status RESET (deduplicate_items);
500
+ ALTER INDEX public.idx_t_fmt_status SET (fillfactor=80);
501
+
502
+ -- index.alter.set_statistics
503
+ ALTER INDEX public.idx_t_fmt_status ALTER COLUMN 1 SET STATISTICS 500;
504
+
505
+ -- index.comment
506
+ COMMENT ON INDEX public.idx_t_fmt_status IS 'index comment';
507
+
508
+ -- index.drop_comment
509
+ COMMENT ON INDEX public.idx_t_fmt_status IS NULL;
510
+
511
+ -- trigger.create
512
+ CREATE TRIGGER trg_audit AFTER INSERT OR UPDATE ON public.table_with_very_long_name_for_formatting_and_wrapping_test REFERENCING OLD TABLE AS old_rows NEW TABLE AS new_rows FOR EACH ROW WHEN ((NEW.status IS DISTINCT FROM OLD.status)) EXECUTE FUNCTION public.audit_trigger_fn('arg1', 'arg2');
513
+
514
+ -- trigger.drop
515
+ DROP TRIGGER trg_audit ON public.table_with_very_long_name_for_formatting_and_wrapping_test;
516
+
517
+ -- trigger.replace
518
+ CREATE OR REPLACE TRIGGER trg_audit AFTER INSERT OR UPDATE ON public.table_with_very_long_name_for_formatting_and_wrapping_test REFERENCING OLD TABLE AS old_rows NEW TABLE AS new_rows FOR EACH ROW WHEN ((NEW.status IS DISTINCT FROM OLD.status)) EXECUTE FUNCTION public.audit_trigger_fn('arg1', 'arg2');
519
+
520
+ -- trigger.comment
521
+ COMMENT ON TRIGGER trg_audit ON public.table_with_very_long_name_for_formatting_and_wrapping_test IS 'trigger comment';
522
+
523
+ -- trigger.drop_comment
524
+ COMMENT ON TRIGGER trg_audit ON public.table_with_very_long_name_for_formatting_and_wrapping_test IS NULL;
525
+
526
+ -- matview.create
527
+ CREATE MATERIALIZED VIEW analytics.daily_stats WITH (fillfactor=70) AS SELECT date_trunc('day', created_at) AS day, count(*) AS total
528
+ FROM public.events
529
+ GROUP BY 1 WITH DATA;
530
+
531
+ -- matview.drop
532
+ DROP MATERIALIZED VIEW analytics.daily_stats;
533
+
534
+ -- matview.alter.change_owner
535
+ ALTER MATERIALIZED VIEW analytics.daily_stats OWNER TO new_owner;
536
+
537
+ -- matview.alter.set_storage
538
+ ALTER MATERIALIZED VIEW analytics.daily_stats RESET (autovacuum_enabled);
539
+ ALTER MATERIALIZED VIEW analytics.daily_stats SET (fillfactor=80);
540
+
541
+ -- matview.comment
542
+ COMMENT ON MATERIALIZED VIEW analytics.daily_stats IS 'daily aggregation';
543
+
544
+ -- matview.drop_comment
545
+ COMMENT ON MATERIALIZED VIEW analytics.daily_stats IS NULL;
546
+
547
+ -- matview.column_comment
548
+ COMMENT ON COLUMN analytics.daily_stats.day IS 'day bucket';
549
+
550
+ -- matview.drop_column_comment
551
+ COMMENT ON COLUMN analytics.daily_stats.day IS NULL;
552
+
553
+ -- matview.grant
554
+ GRANT SELECT ON analytics.daily_stats TO app_reader;
555
+
556
+ -- matview.revoke
557
+ REVOKE SELECT ON analytics.daily_stats FROM app_reader;
558
+
559
+ -- matview.revoke_grant_option
560
+ REVOKE GRANT OPTION FOR SELECT ON analytics.daily_stats FROM app_reader;
561
+
562
+ -- aggregate.create
563
+ CREATE AGGREGATE public.array_cat_agg(anycompatiblearray) (SFUNC = array_cat, STYPE = anycompatiblearray, COMBINEFUNC = array_cat, INITCOND = '{}', PARALLEL = SAFE, STRICT);
564
+
565
+ -- aggregate.drop
566
+ DROP AGGREGATE public.array_cat_agg(anycompatiblearray);
567
+
568
+ -- aggregate.alter.change_owner
569
+ ALTER AGGREGATE public.array_cat_agg(anycompatiblearray) OWNER TO new_owner;
570
+
571
+ -- aggregate.comment
572
+ COMMENT ON AGGREGATE public.array_cat_agg(anycompatiblearray) IS 'concatenate arrays aggregate';
573
+
574
+ -- aggregate.drop_comment
575
+ COMMENT ON AGGREGATE public.array_cat_agg(anycompatiblearray) IS NULL;
576
+
577
+ -- aggregate.grant
578
+ GRANT ALL ON FUNCTION public.array_cat_agg(anycompatiblearray) TO app_user;
579
+
580
+ -- aggregate.revoke
581
+ REVOKE ALL ON FUNCTION public.array_cat_agg(anycompatiblearray) FROM app_user;
582
+
583
+ -- aggregate.revoke_grant_option
584
+ REVOKE GRANT OPTION FOR ALL ON FUNCTION public.array_cat_agg(anycompatiblearray) FROM app_user;
585
+
586
+ -- event_trigger.create
587
+ CREATE EVENT TRIGGER prevent_drop ON sql_drop WHEN TAG IN ('DROP TABLE', 'DROP SCHEMA') EXECUTE FUNCTION public.prevent_drop_fn();
588
+
589
+ -- event_trigger.drop
590
+ DROP EVENT TRIGGER prevent_drop;
591
+
592
+ -- event_trigger.alter.change_owner
593
+ ALTER EVENT TRIGGER prevent_drop OWNER TO new_owner;
594
+
595
+ -- event_trigger.alter.set_enabled
596
+ ALTER EVENT TRIGGER prevent_drop DISABLE;
597
+
598
+ -- event_trigger.comment
599
+ COMMENT ON EVENT TRIGGER prevent_drop IS 'prevent accidental drops';
600
+
601
+ -- event_trigger.drop_comment
602
+ COMMENT ON EVENT TRIGGER prevent_drop IS NULL;
603
+
604
+ -- language.create
605
+ CREATE TRUSTED LANGUAGE plv8 HANDLER plv8_call_handler INLINE plv8_inline_handler VALIDATOR plv8_call_validator;
606
+
607
+ -- language.drop
608
+ DROP LANGUAGE plv8;
609
+
610
+ -- language.alter.change_owner
611
+ ALTER LANGUAGE plv8 OWNER TO new_owner;
612
+
613
+ -- language.comment
614
+ COMMENT ON LANGUAGE plv8 IS 'PL/V8 trusted procedural language';
615
+
616
+ -- language.drop_comment
617
+ COMMENT ON LANGUAGE plv8 IS NULL;
618
+
619
+ -- language.grant
620
+ GRANT ALL ON LANGUAGE plv8 TO app_user WITH GRANT OPTION;
621
+
622
+ -- language.revoke
623
+ REVOKE ALL ON LANGUAGE plv8 FROM app_user;
624
+
625
+ -- language.revoke_grant_option
626
+ REVOKE GRANT OPTION FOR ALL ON LANGUAGE plv8 FROM app_user;
627
+
628
+ -- role.create
629
+ CREATE ROLE app_user WITH LOGIN CONNECTION LIMIT 100;
630
+
631
+ -- role.drop
632
+ DROP ROLE app_user;
633
+
634
+ -- role.alter.set_options
635
+ ALTER ROLE app_user WITH NOSUPERUSER CREATEDB;
636
+
637
+ -- role.alter.set_config
638
+ ALTER ROLE app_user SET statement_timeout TO '60000';
639
+
640
+ -- role.comment
641
+ COMMENT ON ROLE app_user IS 'application user role';
642
+
643
+ -- role.drop_comment
644
+ COMMENT ON ROLE app_user IS NULL;
645
+
646
+ -- role.grant_membership
647
+ GRANT app_user TO dev_user WITH ADMIN OPTION;
648
+
649
+ -- role.revoke_membership
650
+ REVOKE app_user FROM dev_user;
651
+
652
+ -- role.revoke_membership_options
653
+ REVOKE ADMIN OPTION FOR app_user FROM dev_user;
654
+
655
+ -- role.grant_default_privileges
656
+ ALTER DEFAULT PRIVILEGES FOR ROLE app_user IN SCHEMA public GRANT SELECT ON TABLES TO app_reader;
657
+
658
+ -- role.revoke_default_privileges
659
+ ALTER DEFAULT PRIVILEGES FOR ROLE app_user IN SCHEMA public REVOKE SELECT ON TABLES FROM app_reader;
660
+
661
+ -- subscription.create
662
+ CREATE SUBSCRIPTION sub_replica CONNECTION 'host=primary.db port=5432 dbname=mydb' PUBLICATION pub_custom WITH (slot_name = 'sub_replica_slot', binary = true, streaming = 'parallel', synchronous_commit = 'remote_apply', disable_on_error = true, failover = true);
663
+
664
+ -- subscription.drop
665
+ DROP SUBSCRIPTION sub_replica;
666
+
667
+ -- subscription.alter.set_connection
668
+ ALTER SUBSCRIPTION sub_replica CONNECTION 'host=primary.db port=5432 dbname=mydb';
669
+
670
+ -- subscription.alter.set_publication
671
+ ALTER SUBSCRIPTION sub_replica SET PUBLICATION pub_custom;
672
+
673
+ -- subscription.alter.enable
674
+ ALTER SUBSCRIPTION sub_replica ENABLE;
675
+
676
+ -- subscription.alter.disable
677
+ ALTER SUBSCRIPTION sub_replica DISABLE;
678
+
679
+ -- subscription.alter.set_options
680
+ ALTER SUBSCRIPTION sub_replica SET (binary = true, streaming = 'parallel', synchronous_commit = 'remote_apply');
681
+
682
+ -- subscription.alter.set_owner
683
+ ALTER SUBSCRIPTION sub_replica OWNER TO new_owner;
684
+
685
+ -- subscription.comment
686
+ COMMENT ON SUBSCRIPTION sub_replica IS 'replication subscription';
687
+
688
+ -- subscription.drop_comment
689
+ COMMENT ON SUBSCRIPTION sub_replica IS NULL;
690
+
691
+ -- fdw.create
692
+ CREATE FOREIGN DATA WRAPPER postgres_fdw HANDLER postgres_fdw_handler VALIDATOR postgres_fdw_validator OPTIONS (debug 'true');
693
+
694
+ -- fdw.drop
695
+ DROP FOREIGN DATA WRAPPER postgres_fdw;
696
+
697
+ -- fdw.alter.change_owner
698
+ ALTER FOREIGN DATA WRAPPER postgres_fdw OWNER TO new_owner;
699
+
700
+ -- fdw.alter.set_options
701
+ ALTER FOREIGN DATA WRAPPER postgres_fdw OPTIONS (SET debug 'false', ADD use_remote_estimate '');
702
+
703
+ -- fdw.comment
704
+ COMMENT ON FOREIGN DATA WRAPPER postgres_fdw IS 'PostgreSQL foreign data wrapper';
705
+
706
+ -- fdw.drop_comment
707
+ COMMENT ON FOREIGN DATA WRAPPER postgres_fdw IS NULL;
708
+
709
+ -- fdw.grant
710
+ GRANT ALL ON FOREIGN DATA WRAPPER postgres_fdw TO app_user;
711
+
712
+ -- fdw.revoke
713
+ REVOKE ALL ON FOREIGN DATA WRAPPER postgres_fdw FROM app_user;
714
+
715
+ -- fdw.revoke_grant_option
716
+ REVOKE GRANT OPTION FOR ALL ON FOREIGN DATA WRAPPER postgres_fdw FROM app_user;
717
+
718
+ -- foreign_table.create
719
+ CREATE FOREIGN TABLE public.remote_users (id integer, email text) SERVER remote_server OPTIONS (schema_name 'public', table_name 'users');
720
+
721
+ -- foreign_table.drop
722
+ DROP FOREIGN TABLE public.remote_users;
723
+
724
+ -- foreign_table.alter.change_owner
725
+ ALTER FOREIGN TABLE public.remote_users OWNER TO new_owner;
726
+
727
+ -- foreign_table.alter.add_column
728
+ ALTER FOREIGN TABLE public.remote_users ADD COLUMN name text NOT NULL DEFAULT 'unknown';
729
+
730
+ -- foreign_table.alter.drop_column
731
+ ALTER FOREIGN TABLE public.remote_users DROP COLUMN email;
732
+
733
+ -- foreign_table.alter.column_type
734
+ ALTER FOREIGN TABLE public.remote_users ALTER COLUMN id TYPE bigint;
735
+
736
+ -- foreign_table.alter.column_set_default
737
+ ALTER FOREIGN TABLE public.remote_users ALTER COLUMN email SET DEFAULT 'nobody@example.com';
738
+
739
+ -- foreign_table.alter.column_drop_default
740
+ ALTER FOREIGN TABLE public.remote_users ALTER COLUMN email DROP DEFAULT;
741
+
742
+ -- foreign_table.alter.column_set_not_null
743
+ ALTER FOREIGN TABLE public.remote_users ALTER COLUMN email SET NOT NULL;
744
+
745
+ -- foreign_table.alter.column_drop_not_null
746
+ ALTER FOREIGN TABLE public.remote_users ALTER COLUMN email DROP NOT NULL;
747
+
748
+ -- foreign_table.alter.set_options
749
+ ALTER FOREIGN TABLE public.remote_users OPTIONS (SET fetch_size '1000');
750
+
751
+ -- foreign_table.comment
752
+ COMMENT ON FOREIGN TABLE public.remote_users IS 'remote users table';
753
+
754
+ -- foreign_table.drop_comment
755
+ COMMENT ON FOREIGN TABLE public.remote_users IS NULL;
756
+
757
+ -- foreign_table.grant
758
+ GRANT SELECT ON TABLE public.remote_users TO app_reader;
759
+
760
+ -- foreign_table.revoke
761
+ REVOKE SELECT ON TABLE public.remote_users FROM app_reader;
762
+
763
+ -- foreign_table.revoke_grant_option
764
+ REVOKE GRANT OPTION FOR SELECT ON TABLE public.remote_users FROM app_reader;
765
+
766
+ -- server.create
767
+ CREATE SERVER remote_server TYPE 'postgresql' VERSION '16.0' FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'remote.host', port '5432', dbname 'remote_db');
768
+
769
+ -- server.drop
770
+ DROP SERVER remote_server;
771
+
772
+ -- server.alter.change_owner
773
+ ALTER SERVER remote_server OWNER TO new_owner;
774
+
775
+ -- server.alter.set_version
776
+ ALTER SERVER remote_server VERSION '17.0';
777
+
778
+ -- server.alter.set_options
779
+ ALTER SERVER remote_server OPTIONS (SET host 'new.host', DROP port);
780
+
781
+ -- server.comment
782
+ COMMENT ON SERVER remote_server IS 'remote PostgreSQL server';
783
+
784
+ -- server.drop_comment
785
+ COMMENT ON SERVER remote_server IS NULL;
786
+
787
+ -- server.grant
788
+ GRANT ALL ON SERVER remote_server TO app_user;
789
+
790
+ -- server.revoke
791
+ REVOKE ALL ON SERVER remote_server FROM app_user;
792
+
793
+ -- server.revoke_grant_option
794
+ REVOKE GRANT OPTION FOR ALL ON SERVER remote_server FROM app_user;
795
+
796
+ -- user_mapping.create
797
+ CREATE USER MAPPING FOR app_user SERVER remote_server OPTIONS (user 'remote_app', password 'secret123');
798
+
799
+ -- user_mapping.drop
800
+ DROP USER MAPPING FOR app_user SERVER remote_server;
801
+
802
+ -- user_mapping.alter.set_options
803
+ ALTER USER MAPPING FOR app_user SERVER remote_server OPTIONS (SET password 'new_secret');"
804
+ `);
805
+ });
806
+ });