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

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