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

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