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

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