pg_query 2.1.0 → 4.2.1

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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -0
  3. data/README.md +59 -31
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/extconf.rb +8 -2
  6. data/ext/pg_query/include/access/amapi.h +45 -1
  7. data/ext/pg_query/include/access/attmap.h +1 -1
  8. data/ext/pg_query/include/access/attnum.h +2 -2
  9. data/ext/pg_query/include/access/clog.h +4 -2
  10. data/ext/pg_query/include/access/commit_ts.h +6 -9
  11. data/ext/pg_query/include/access/detoast.h +1 -11
  12. data/ext/pg_query/include/access/genam.h +15 -12
  13. data/ext/pg_query/include/access/gin.h +2 -2
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +75 -87
  16. data/ext/pg_query/include/access/itup.h +7 -1
  17. data/ext/pg_query/include/access/parallel.h +2 -2
  18. data/ext/pg_query/include/access/printtup.h +1 -1
  19. data/ext/pg_query/include/access/relation.h +1 -1
  20. data/ext/pg_query/include/access/relscan.h +17 -2
  21. data/ext/pg_query/include/access/rmgr.h +30 -3
  22. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  23. data/ext/pg_query/include/access/sdir.h +1 -1
  24. data/ext/pg_query/include/access/skey.h +1 -1
  25. data/ext/pg_query/include/access/stratnum.h +4 -2
  26. data/ext/pg_query/include/access/sysattr.h +1 -1
  27. data/ext/pg_query/include/access/table.h +2 -1
  28. data/ext/pg_query/include/access/tableam.h +272 -20
  29. data/ext/pg_query/include/access/toast_compression.h +73 -0
  30. data/ext/pg_query/include/access/transam.h +123 -13
  31. data/ext/pg_query/include/access/tupconvert.h +1 -1
  32. data/ext/pg_query/include/access/tupdesc.h +1 -1
  33. data/ext/pg_query/include/access/tupmacs.h +3 -3
  34. data/ext/pg_query/include/access/twophase.h +5 -1
  35. data/ext/pg_query/include/access/xact.h +79 -19
  36. data/ext/pg_query/include/access/xlog.h +60 -155
  37. data/ext/pg_query/include/access/xlog_internal.h +50 -14
  38. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  39. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  40. data/ext/pg_query/include/access/xlogreader.h +148 -32
  41. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  42. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  43. data/ext/pg_query/include/c.h +101 -44
  44. data/ext/pg_query/include/catalog/catalog.h +3 -1
  45. data/ext/pg_query/include/catalog/catversion.h +2 -2
  46. data/ext/pg_query/include/catalog/dependency.h +10 -16
  47. data/ext/pg_query/include/catalog/genbki.h +83 -5
  48. data/ext/pg_query/include/catalog/index.h +18 -3
  49. data/ext/pg_query/include/catalog/indexing.h +12 -324
  50. data/ext/pg_query/include/catalog/namespace.h +4 -2
  51. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  52. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  55. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  56. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  57. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  59. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  61. data/ext/pg_query/include/catalog/pg_class.h +45 -15
  62. data/ext/pg_query/include/catalog/pg_class_d.h +31 -2
  63. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  65. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  67. data/ext/pg_query/include/catalog/pg_control.h +5 -5
  68. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  70. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  74. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  75. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  76. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  77. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  78. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  80. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  82. data/ext/pg_query/include/catalog/pg_operator.h +21 -16
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  86. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  87. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  88. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  89. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  90. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  91. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  92. data/ext/pg_query/include/catalog/pg_publication.h +50 -4
  93. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  94. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  95. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  96. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  97. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  98. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  99. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  100. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  101. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  102. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  103. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  104. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  105. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  106. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  107. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  108. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  109. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  110. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  111. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  112. data/ext/pg_query/include/catalog/pg_type.h +56 -24
  113. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  114. data/ext/pg_query/include/catalog/storage.h +5 -3
  115. data/ext/pg_query/include/commands/async.h +4 -5
  116. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  117. data/ext/pg_query/include/commands/defrem.h +11 -24
  118. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  119. data/ext/pg_query/include/commands/explain.h +1 -1
  120. data/ext/pg_query/include/commands/prepare.h +1 -1
  121. data/ext/pg_query/include/commands/tablespace.h +3 -1
  122. data/ext/pg_query/include/commands/trigger.h +27 -17
  123. data/ext/pg_query/include/commands/user.h +2 -2
  124. data/ext/pg_query/include/commands/vacuum.h +88 -41
  125. data/ext/pg_query/include/commands/variable.h +1 -1
  126. data/ext/pg_query/include/common/file_perm.h +4 -4
  127. data/ext/pg_query/include/common/hashfn.h +1 -1
  128. data/ext/pg_query/include/common/ip.h +1 -7
  129. data/ext/pg_query/include/common/keywords.h +2 -6
  130. data/ext/pg_query/include/common/kwlookup.h +1 -1
  131. data/ext/pg_query/include/common/pg_prng.h +60 -0
  132. data/ext/pg_query/include/common/relpath.h +2 -2
  133. data/ext/pg_query/include/common/string.h +24 -1
  134. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  135. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  136. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  137. data/ext/pg_query/include/executor/execdesc.h +1 -1
  138. data/ext/pg_query/include/executor/executor.h +65 -22
  139. data/ext/pg_query/include/executor/functions.h +17 -3
  140. data/ext/pg_query/include/executor/instrument.h +33 -16
  141. data/ext/pg_query/include/executor/spi.h +41 -3
  142. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  143. data/ext/pg_query/include/executor/tuptable.h +1 -1
  144. data/ext/pg_query/include/fmgr.h +13 -7
  145. data/ext/pg_query/include/funcapi.h +16 -4
  146. data/ext/pg_query/include/getaddrinfo.h +1 -1
  147. data/ext/pg_query/include/jit/jit.h +11 -11
  148. data/ext/pg_query/include/kwlist_d.h +517 -494
  149. data/ext/pg_query/include/lib/dshash.h +112 -0
  150. data/ext/pg_query/include/lib/ilist.h +20 -1
  151. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  152. data/ext/pg_query/include/lib/simplehash.h +150 -25
  153. data/ext/pg_query/include/lib/sort_template.h +432 -0
  154. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  155. data/ext/pg_query/include/libpq/auth.h +6 -4
  156. data/ext/pg_query/include/libpq/crypt.h +5 -4
  157. data/ext/pg_query/include/libpq/hba.h +43 -4
  158. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  159. data/ext/pg_query/include/libpq/libpq.h +31 -20
  160. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  161. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  162. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  163. data/ext/pg_query/include/mb/pg_wchar.h +106 -23
  164. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  165. data/ext/pg_query/include/miscadmin.h +71 -52
  166. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  167. data/ext/pg_query/include/nodes/execnodes.h +272 -80
  168. data/ext/pg_query/include/nodes/extensible.h +4 -2
  169. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  170. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  171. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  172. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  173. data/ext/pg_query/include/nodes/nodes.h +30 -11
  174. data/ext/pg_query/include/nodes/params.h +1 -1
  175. data/ext/pg_query/include/nodes/parsenodes.h +327 -94
  176. data/ext/pg_query/include/nodes/pathnodes.h +245 -67
  177. data/ext/pg_query/include/nodes/pg_list.h +75 -68
  178. data/ext/pg_query/include/nodes/plannodes.h +128 -30
  179. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  180. data/ext/pg_query/include/nodes/print.h +1 -1
  181. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  182. data/ext/pg_query/include/nodes/value.h +58 -39
  183. data/ext/pg_query/include/optimizer/cost.h +9 -2
  184. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  185. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  186. data/ext/pg_query/include/optimizer/optimizer.h +25 -22
  187. data/ext/pg_query/include/optimizer/paths.h +6 -6
  188. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  189. data/ext/pg_query/include/parser/analyze.h +19 -5
  190. data/ext/pg_query/include/parser/gram.h +947 -913
  191. data/ext/pg_query/include/parser/gramparse.h +1 -1
  192. data/ext/pg_query/include/parser/kwlist.h +463 -453
  193. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  194. data/ext/pg_query/include/parser/parse_coerce.h +4 -1
  195. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  196. data/ext/pg_query/include/parser/parse_func.h +2 -1
  197. data/ext/pg_query/include/parser/parse_node.h +21 -9
  198. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  199. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  200. data/ext/pg_query/include/parser/parse_type.h +1 -1
  201. data/ext/pg_query/include/parser/parser.h +31 -4
  202. data/ext/pg_query/include/parser/parsetree.h +1 -1
  203. data/ext/pg_query/include/parser/scanner.h +1 -1
  204. data/ext/pg_query/include/parser/scansup.h +2 -5
  205. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  206. data/ext/pg_query/include/pg_config.h +94 -46
  207. data/ext/pg_query/include/pg_config_manual.h +74 -21
  208. data/ext/pg_query/include/pg_getopt.h +6 -6
  209. data/ext/pg_query/include/pg_query.h +5 -4
  210. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  211. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  212. data/ext/pg_query/include/pg_query_fingerprint_defs.c +1220 -422
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +152 -26
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +174 -30
  217. data/ext/pg_query/include/pg_trace.h +1 -1
  218. data/ext/pg_query/include/pgstat.h +449 -1237
  219. data/ext/pg_query/include/pgtime.h +14 -4
  220. data/ext/pg_query/include/pl_gram.h +126 -128
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  225. data/ext/pg_query/include/plerrcodes.h +9 -1
  226. data/ext/pg_query/include/plpgsql.h +52 -54
  227. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  228. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  229. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  230. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  231. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  232. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  233. data/ext/pg_query/include/port/atomics.h +1 -1
  234. data/ext/pg_query/include/port/pg_bitutils.h +88 -12
  235. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  236. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  237. data/ext/pg_query/include/port.h +72 -43
  238. data/ext/pg_query/include/portability/instr_time.h +1 -1
  239. data/ext/pg_query/include/postgres.h +60 -16
  240. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  241. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  244. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  245. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  246. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  247. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  248. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  249. data/ext/pg_query/include/postmaster/startup.h +39 -0
  250. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  251. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  252. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1422 -916
  253. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  254. data/ext/pg_query/include/regex/regex.h +18 -16
  255. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  256. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  257. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  258. data/ext/pg_query/include/replication/origin.h +7 -7
  259. data/ext/pg_query/include/replication/reorderbuffer.h +262 -44
  260. data/ext/pg_query/include/replication/slot.h +23 -12
  261. data/ext/pg_query/include/replication/syncrep.h +5 -5
  262. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  263. data/ext/pg_query/include/replication/walsender.h +8 -8
  264. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  265. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  266. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  267. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  268. data/ext/pg_query/include/storage/backendid.h +3 -3
  269. data/ext/pg_query/include/storage/block.h +4 -10
  270. data/ext/pg_query/include/storage/buf.h +1 -1
  271. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  272. data/ext/pg_query/include/storage/bufpage.h +6 -8
  273. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  274. data/ext/pg_query/include/storage/dsm.h +4 -1
  275. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  276. data/ext/pg_query/include/storage/fd.h +33 -3
  277. data/ext/pg_query/include/storage/fileset.h +40 -0
  278. data/ext/pg_query/include/storage/ipc.h +4 -1
  279. data/ext/pg_query/include/storage/item.h +1 -1
  280. data/ext/pg_query/include/storage/itemid.h +1 -1
  281. data/ext/pg_query/include/storage/itemptr.h +3 -1
  282. data/ext/pg_query/include/storage/large_object.h +2 -2
  283. data/ext/pg_query/include/storage/latch.h +9 -13
  284. data/ext/pg_query/include/storage/lmgr.h +2 -1
  285. data/ext/pg_query/include/storage/lock.h +17 -13
  286. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  287. data/ext/pg_query/include/storage/lwlock.h +6 -32
  288. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  289. data/ext/pg_query/include/storage/off.h +1 -1
  290. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  291. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  292. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  293. data/ext/pg_query/include/storage/predicate.h +4 -4
  294. data/ext/pg_query/include/storage/proc.h +183 -55
  295. data/ext/pg_query/include/storage/procarray.h +98 -0
  296. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  297. data/ext/pg_query/include/storage/procsignal.h +3 -7
  298. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  299. data/ext/pg_query/include/storage/s_lock.h +67 -4
  300. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  301. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  302. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  303. data/ext/pg_query/include/storage/shmem.h +1 -1
  304. data/ext/pg_query/include/storage/sinval.h +3 -3
  305. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  306. data/ext/pg_query/include/storage/smgr.h +10 -8
  307. data/ext/pg_query/include/storage/spin.h +2 -2
  308. data/ext/pg_query/include/storage/standby.h +13 -6
  309. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  310. data/ext/pg_query/include/storage/sync.h +7 -3
  311. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  312. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  313. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  314. data/ext/pg_query/include/tcop/dest.h +1 -1
  315. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  316. data/ext/pg_query/include/tcop/pquery.h +7 -1
  317. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  318. data/ext/pg_query/include/tcop/utility.h +7 -3
  319. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  320. data/ext/pg_query/include/utils/acl.h +24 -3
  321. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  322. data/ext/pg_query/include/utils/array.h +7 -2
  323. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  324. data/ext/pg_query/include/utils/backend_status.h +321 -0
  325. data/ext/pg_query/include/utils/builtins.h +11 -11
  326. data/ext/pg_query/include/utils/bytea.h +3 -2
  327. data/ext/pg_query/include/utils/catcache.h +1 -1
  328. data/ext/pg_query/include/utils/date.h +1 -1
  329. data/ext/pg_query/include/utils/datetime.h +8 -7
  330. data/ext/pg_query/include/utils/datum.h +9 -1
  331. data/ext/pg_query/include/utils/dsa.h +1 -1
  332. data/ext/pg_query/include/utils/dynahash.h +4 -3
  333. data/ext/pg_query/include/utils/elog.h +52 -21
  334. data/ext/pg_query/include/utils/errcodes.h +2 -0
  335. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  336. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  337. data/ext/pg_query/include/utils/float.h +7 -7
  338. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  339. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  340. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  341. data/ext/pg_query/include/utils/guc.h +69 -43
  342. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  343. data/ext/pg_query/include/utils/hsearch.h +15 -11
  344. data/ext/pg_query/include/utils/inval.h +5 -1
  345. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  346. data/ext/pg_query/include/utils/memdebug.h +1 -1
  347. data/ext/pg_query/include/utils/memutils.h +8 -3
  348. data/ext/pg_query/include/utils/numeric.h +19 -5
  349. data/ext/pg_query/include/utils/palloc.h +25 -3
  350. data/ext/pg_query/include/utils/partcache.h +1 -1
  351. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  352. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  353. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  354. data/ext/pg_query/include/utils/pidfile.h +1 -1
  355. data/ext/pg_query/include/utils/plancache.h +6 -5
  356. data/ext/pg_query/include/utils/portal.h +12 -1
  357. data/ext/pg_query/include/utils/ps_status.h +1 -1
  358. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  359. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  360. data/ext/pg_query/include/utils/regproc.h +14 -3
  361. data/ext/pg_query/include/utils/rel.h +71 -20
  362. data/ext/pg_query/include/utils/relcache.h +9 -7
  363. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  364. data/ext/pg_query/include/utils/resowner.h +1 -1
  365. data/ext/pg_query/include/utils/rls.h +2 -2
  366. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  367. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  368. data/ext/pg_query/include/utils/snapmgr.h +35 -14
  369. data/ext/pg_query/include/utils/snapshot.h +14 -1
  370. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  371. data/ext/pg_query/include/utils/syscache.h +6 -1
  372. data/ext/pg_query/include/utils/timeout.h +11 -4
  373. data/ext/pg_query/include/utils/timestamp.h +6 -5
  374. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  375. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  376. data/ext/pg_query/include/utils/typcache.h +24 -17
  377. data/ext/pg_query/include/utils/tzparser.h +1 -1
  378. data/ext/pg_query/include/utils/varlena.h +5 -3
  379. data/ext/pg_query/include/utils/wait_event.h +289 -0
  380. data/ext/pg_query/include/utils/xml.h +4 -4
  381. data/ext/pg_query/pg_query.pb-c.c +4318 -2307
  382. data/ext/pg_query/pg_query_deparse.c +1114 -381
  383. data/ext/pg_query/pg_query_fingerprint.c +46 -10
  384. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  385. data/ext/pg_query/pg_query_json_plpgsql.c +55 -12
  386. data/ext/pg_query/pg_query_normalize.c +163 -20
  387. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +65 -16
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  390. data/ext/pg_query/pg_query_parse.c +1 -1
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +79 -16
  392. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  393. data/ext/pg_query/pg_query_ruby.c +1 -1
  394. data/ext/pg_query/pg_query_scan.c +2 -1
  395. data/ext/pg_query/pg_query_split.c +3 -2
  396. data/ext/pg_query/src_backend_catalog_namespace.c +21 -9
  397. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  398. data/ext/pg_query/src_backend_commands_define.c +11 -1
  399. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  400. data/ext/pg_query/src_backend_nodes_copyfuncs.c +424 -109
  401. data/ext/pg_query/src_backend_nodes_equalfuncs.c +291 -46
  402. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  403. data/ext/pg_query/src_backend_nodes_list.c +86 -11
  404. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  405. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  406. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  407. data/ext/pg_query/src_backend_parser_gram.c +33890 -31262
  408. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  409. data/ext/pg_query/src_backend_parser_scan.c +644 -441
  410. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  411. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  412. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  413. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  414. data/ext/pg_query/src_backend_tcop_postgres.c +73 -24
  415. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  416. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  417. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  418. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  419. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +109 -15
  420. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  421. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  422. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  423. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  424. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  425. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  426. data/ext/pg_query/src_backend_utils_misc_guc.c +207 -45
  427. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  428. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  429. data/ext/pg_query/src_common_encnames.c +1 -1
  430. data/ext/pg_query/src_common_hashfn.c +3 -3
  431. data/ext/pg_query/src_common_keywords.c +15 -2
  432. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  433. data/ext/pg_query/src_common_kwlookup.c +1 -1
  434. data/ext/pg_query/src_common_pg_prng.c +152 -0
  435. data/ext/pg_query/src_common_psprintf.c +1 -1
  436. data/ext/pg_query/src_common_string.c +7 -1
  437. data/ext/pg_query/src_common_stringinfo.c +1 -1
  438. data/ext/pg_query/src_common_wchar.c +712 -109
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1235 -1261
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  446. data/ext/pg_query/src_port_pg_bitutils.c +41 -52
  447. data/ext/pg_query/src_port_pgsleep.c +1 -1
  448. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  449. data/ext/pg_query/src_port_qsort.c +12 -224
  450. data/ext/pg_query/src_port_snprintf.c +46 -20
  451. data/ext/pg_query/src_port_strerror.c +9 -19
  452. data/ext/pg_query/src_port_strnlen.c +1 -1
  453. data/lib/pg_query/deparse.rb +7 -1
  454. data/lib/pg_query/filter_columns.rb +6 -4
  455. data/lib/pg_query/fingerprint.rb +18 -3
  456. data/lib/pg_query/node.rb +2 -2
  457. data/lib/pg_query/param_refs.rb +1 -1
  458. data/lib/pg_query/parse.rb +87 -51
  459. data/lib/pg_query/pg_query_pb.rb +1109 -942
  460. data/lib/pg_query/treewalker.rb +6 -0
  461. data/lib/pg_query/truncate.rb +54 -8
  462. data/lib/pg_query/version.rb +1 -1
  463. metadata +29 -18
  464. data/ext/pg_query/include/access/xloginsert.h +0 -64
  465. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  466. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  467. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  468. data/ext/pg_query/include/parser/parse_target.h +0 -46
  469. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  470. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  471. data/ext/pg_query/src_port_erand48.c +0 -127
  472. data/ext/pg_query/src_port_random.c +0 -31
@@ -3,7 +3,7 @@
3
3
  * pg_opclass_d.h
4
4
  * Macro definitions for pg_opclass
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_OPCLASS_D_H
20
20
 
21
21
  #define OperatorClassRelationId 2616
22
+ #define OpclassAmNameNspIndexId 2686
23
+ #define OpclassOidIndexId 2687
22
24
 
23
25
  #define Anum_pg_opclass_oid 1
24
26
  #define Anum_pg_opclass_opcmethod 2
@@ -4,7 +4,7 @@
4
4
  * definition of the "operator" system catalog (pg_operator)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_operator.h
@@ -36,12 +36,12 @@ CATALOG(pg_operator,2617,OperatorRelationId)
36
36
  NameData oprname;
37
37
 
38
38
  /* OID of namespace containing this oper */
39
- Oid oprnamespace BKI_DEFAULT(PGNSP);
39
+ Oid oprnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
40
40
 
41
41
  /* operator owner */
42
- Oid oprowner BKI_DEFAULT(PGUID);
42
+ Oid oprowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
43
43
 
44
- /* 'l', 'r', or 'b' */
44
+ /* 'l' for prefix or 'b' for infix */
45
45
  char oprkind BKI_DEFAULT(b);
46
46
 
47
47
  /* can be used in merge join? */
@@ -50,29 +50,29 @@ CATALOG(pg_operator,2617,OperatorRelationId)
50
50
  /* can be used in hash join? */
51
51
  bool oprcanhash BKI_DEFAULT(f);
52
52
 
53
- /* left arg type, or 0 if 'l' oprkind */
54
- Oid oprleft BKI_LOOKUP(pg_type);
53
+ /* left arg type, or 0 if prefix operator */
54
+ Oid oprleft BKI_LOOKUP_OPT(pg_type);
55
55
 
56
- /* right arg type, or 0 if 'r' oprkind */
56
+ /* right arg type */
57
57
  Oid oprright BKI_LOOKUP(pg_type);
58
58
 
59
- /* result datatype */
60
- Oid oprresult BKI_LOOKUP(pg_type);
59
+ /* result datatype; can be 0 in a "shell" operator */
60
+ Oid oprresult BKI_LOOKUP_OPT(pg_type);
61
61
 
62
62
  /* OID of commutator oper, or 0 if none */
63
- Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
63
+ Oid oprcom BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_operator);
64
64
 
65
65
  /* OID of negator oper, or 0 if none */
66
- Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP(pg_operator);
66
+ Oid oprnegate BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_operator);
67
67
 
68
- /* OID of underlying function */
69
- regproc oprcode BKI_LOOKUP(pg_proc);
68
+ /* OID of underlying function; can be 0 in a "shell" operator */
69
+ regproc oprcode BKI_LOOKUP_OPT(pg_proc);
70
70
 
71
71
  /* OID of restriction estimator, or 0 */
72
- regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
72
+ regproc oprrest BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);
73
73
 
74
74
  /* OID of join estimator, or 0 */
75
- regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP(pg_proc);
75
+ regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);
76
76
  } FormData_pg_operator;
77
77
 
78
78
  /* ----------------
@@ -82,6 +82,9 @@ CATALOG(pg_operator,2617,OperatorRelationId)
82
82
  */
83
83
  typedef FormData_pg_operator *Form_pg_operator;
84
84
 
85
+ DECLARE_UNIQUE_INDEX_PKEY(pg_operator_oid_index, 2688, OperatorOidIndexId, on pg_operator using btree(oid oid_ops));
86
+ DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, OperatorNameNspIndexId, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
87
+
85
88
 
86
89
  extern ObjectAddress OperatorCreate(const char *operatorName,
87
90
  Oid operatorNamespace,
@@ -95,7 +98,9 @@ extern ObjectAddress OperatorCreate(const char *operatorName,
95
98
  bool canMerge,
96
99
  bool canHash);
97
100
 
98
- extern ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool isUpdate);
101
+ extern ObjectAddress makeOperatorDependencies(HeapTuple tuple,
102
+ bool makeExtensionDep,
103
+ bool isUpdate);
99
104
 
100
105
  extern void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete);
101
106
 
@@ -3,7 +3,7 @@
3
3
  * pg_operator_d.h
4
4
  * Macro definitions for pg_operator
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_OPERATOR_D_H
20
20
 
21
21
  #define OperatorRelationId 2617
22
+ #define OperatorOidIndexId 2688
23
+ #define OperatorNameNspIndexId 2689
22
24
 
23
25
  #define Anum_pg_operator_oid 1
24
26
  #define Anum_pg_operator_oprname 2
@@ -43,11 +45,15 @@
43
45
  #define Int4EqualOperator 96
44
46
  #define Int4LessOperator 97
45
47
  #define TextEqualOperator 98
48
+ #define TextPrefixOperator 3877
46
49
  #define NameEqualTextOperator 254
47
50
  #define NameLessTextOperator 255
48
51
  #define NameGreaterEqualTextOperator 257
49
52
  #define TIDEqualOperator 387
50
53
  #define TIDLessOperator 2799
54
+ #define TIDGreaterOperator 2800
55
+ #define TIDLessEqOperator 2801
56
+ #define TIDGreaterEqOperator 2802
51
57
  #define Int8LessOperator 412
52
58
  #define OID_NAME_REGEXEQ_OP 639
53
59
  #define OID_TEXT_REGEXEQ_OP 641
@@ -102,5 +108,35 @@
102
108
  #define OID_RANGE_RIGHT_OP 3894
103
109
  #define OID_RANGE_OVERLAPS_LEFT_OP 3895
104
110
  #define OID_RANGE_OVERLAPS_RIGHT_OP 3896
111
+ #define OID_MULTIRANGE_LESS_OP 2862
112
+ #define OID_MULTIRANGE_LESS_EQUAL_OP 2863
113
+ #define OID_MULTIRANGE_GREATER_EQUAL_OP 2864
114
+ #define OID_MULTIRANGE_GREATER_OP 2865
115
+ #define OID_RANGE_OVERLAPS_MULTIRANGE_OP 2866
116
+ #define OID_MULTIRANGE_OVERLAPS_RANGE_OP 2867
117
+ #define OID_MULTIRANGE_OVERLAPS_MULTIRANGE_OP 2868
118
+ #define OID_MULTIRANGE_CONTAINS_ELEM_OP 2869
119
+ #define OID_MULTIRANGE_CONTAINS_RANGE_OP 2870
120
+ #define OID_MULTIRANGE_CONTAINS_MULTIRANGE_OP 2871
121
+ #define OID_MULTIRANGE_ELEM_CONTAINED_OP 2872
122
+ #define OID_MULTIRANGE_RANGE_CONTAINED_OP 2873
123
+ #define OID_MULTIRANGE_MULTIRANGE_CONTAINED_OP 2874
124
+ #define OID_RANGE_CONTAINS_MULTIRANGE_OP 4539
125
+ #define OID_RANGE_MULTIRANGE_CONTAINED_OP 4540
126
+ #define OID_RANGE_OVERLAPS_LEFT_MULTIRANGE_OP 2875
127
+ #define OID_MULTIRANGE_OVERLAPS_LEFT_RANGE_OP 2876
128
+ #define OID_MULTIRANGE_OVERLAPS_LEFT_MULTIRANGE_OP 2877
129
+ #define OID_RANGE_OVERLAPS_RIGHT_MULTIRANGE_OP 3585
130
+ #define OID_MULTIRANGE_OVERLAPS_RIGHT_RANGE_OP 4035
131
+ #define OID_MULTIRANGE_OVERLAPS_RIGHT_MULTIRANGE_OP 4142
132
+ #define OID_RANGE_ADJACENT_MULTIRANGE_OP 4179
133
+ #define OID_MULTIRANGE_ADJACENT_RANGE_OP 4180
134
+ #define OID_MULTIRANGE_ADJACENT_MULTIRANGE_OP 4198
135
+ #define OID_RANGE_LEFT_MULTIRANGE_OP 4395
136
+ #define OID_MULTIRANGE_LEFT_RANGE_OP 4396
137
+ #define OID_MULTIRANGE_LEFT_MULTIRANGE_OP 4397
138
+ #define OID_RANGE_RIGHT_MULTIRANGE_OP 4398
139
+ #define OID_MULTIRANGE_RIGHT_RANGE_OP 4399
140
+ #define OID_MULTIRANGE_RIGHT_MULTIRANGE_OP 4400
105
141
 
106
142
  #endif /* PG_OPERATOR_D_H */
@@ -4,7 +4,7 @@
4
4
  * definition of the "operator family" system catalog (pg_opfamily)
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/catalog/pg_opfamily.h
@@ -37,10 +37,10 @@ CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
37
37
  NameData opfname;
38
38
 
39
39
  /* namespace of this opfamily */
40
- Oid opfnamespace BKI_DEFAULT(PGNSP);
40
+ Oid opfnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
41
41
 
42
42
  /* opfamily owner */
43
- Oid opfowner BKI_DEFAULT(PGUID);
43
+ Oid opfowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
44
44
  } FormData_pg_opfamily;
45
45
 
46
46
  /* ----------------
@@ -50,6 +50,9 @@ CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
50
50
  */
51
51
  typedef FormData_pg_opfamily *Form_pg_opfamily;
52
52
 
53
+ DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, OpfamilyAmNameNspIndexId, on pg_opfamily using btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
54
+ DECLARE_UNIQUE_INDEX_PKEY(pg_opfamily_oid_index, 2755, OpfamilyOidIndexId, on pg_opfamily using btree(oid oid_ops));
55
+
53
56
  #ifdef EXPOSE_TO_CLIENT_CODE
54
57
 
55
58
  #define IsBooleanOpfamily(opfamily) \
@@ -3,7 +3,7 @@
3
3
  * pg_opfamily_d.h
4
4
  * Macro definitions for pg_opfamily
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_OPFAMILY_D_H
20
20
 
21
21
  #define OperatorFamilyRelationId 2753
22
+ #define OpfamilyAmNameNspIndexId 2754
23
+ #define OpfamilyOidIndexId 2755
22
24
 
23
25
  #define Anum_pg_opfamily_oid 1
24
26
  #define Anum_pg_opfamily_opfmethod 2
@@ -0,0 +1,60 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_parameter_acl.h
4
+ * definition of the "configuration parameter ACL" system catalog
5
+ * (pg_parameter_acl).
6
+ *
7
+ *
8
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1994, Regents of the University of California
10
+ *
11
+ * src/include/catalog/pg_parameter_acl.h
12
+ *
13
+ * NOTES
14
+ * The Catalog.pm module reads this file and derives schema
15
+ * information.
16
+ *
17
+ *-------------------------------------------------------------------------
18
+ */
19
+ #ifndef PG_PARAMETER_ACL_H
20
+ #define PG_PARAMETER_ACL_H
21
+
22
+ #include "catalog/genbki.h"
23
+ #include "catalog/pg_parameter_acl_d.h"
24
+
25
+ /* ----------------
26
+ * pg_parameter_acl definition. cpp turns this into
27
+ * typedef struct FormData_pg_parameter_acl
28
+ * ----------------
29
+ */
30
+ CATALOG(pg_parameter_acl,6243,ParameterAclRelationId) BKI_SHARED_RELATION
31
+ {
32
+ Oid oid; /* oid */
33
+
34
+ #ifdef CATALOG_VARLEN /* variable-length fields start here */
35
+ /* name of parameter */
36
+ text parname BKI_FORCE_NOT_NULL;
37
+
38
+ /* access permissions */
39
+ aclitem paracl[1] BKI_DEFAULT(_null_);
40
+ #endif
41
+ } FormData_pg_parameter_acl;
42
+
43
+
44
+ /* ----------------
45
+ * Form_pg_parameter_acl corresponds to a pointer to a tuple with
46
+ * the format of pg_parameter_acl relation.
47
+ * ----------------
48
+ */
49
+ typedef FormData_pg_parameter_acl * Form_pg_parameter_acl;
50
+
51
+ DECLARE_TOAST_WITH_MACRO(pg_parameter_acl, 6244, 6245, PgParameterAclToastTable, PgParameterAclToastIndex);
52
+
53
+ DECLARE_UNIQUE_INDEX(pg_parameter_acl_parname_index, 6246, ParameterAclParnameIndexId, on pg_parameter_acl using btree(parname text_ops));
54
+ DECLARE_UNIQUE_INDEX_PKEY(pg_parameter_acl_oid_index, 6247, ParameterAclOidIndexId, on pg_parameter_acl using btree(oid oid_ops));
55
+
56
+
57
+ extern Oid ParameterAclLookup(const char *parameter, bool missing_ok);
58
+ extern Oid ParameterAclCreate(const char *parameter);
59
+
60
+ #endif /* PG_PARAMETER_ACL_H */
@@ -0,0 +1,34 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_parameter_acl_d.h
4
+ * Macro definitions for pg_parameter_acl
5
+ *
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * NOTES
10
+ * ******************************
11
+ * *** DO NOT EDIT THIS FILE! ***
12
+ * ******************************
13
+ *
14
+ * It has been GENERATED by src/backend/catalog/genbki.pl
15
+ *
16
+ *-------------------------------------------------------------------------
17
+ */
18
+ #ifndef PG_PARAMETER_ACL_D_H
19
+ #define PG_PARAMETER_ACL_D_H
20
+
21
+ #define ParameterAclRelationId 6243
22
+ #define PgParameterAclToastTable 6244
23
+ #define PgParameterAclToastIndex 6245
24
+ #define ParameterAclParnameIndexId 6246
25
+ #define ParameterAclOidIndexId 6247
26
+
27
+ #define Anum_pg_parameter_acl_oid 1
28
+ #define Anum_pg_parameter_acl_parname 2
29
+ #define Anum_pg_parameter_acl_paracl 3
30
+
31
+ #define Natts_pg_parameter_acl 3
32
+
33
+
34
+ #endif /* PG_PARAMETER_ACL_D_H */
@@ -5,7 +5,7 @@
5
5
  * (pg_partitioned_table)
6
6
  *
7
7
  *
8
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
9
9
  * Portions Copyright (c) 1994, Regents of the University of California
10
10
  *
11
11
  * src/include/catalog/pg_partitioned_table.h
@@ -29,11 +29,11 @@
29
29
  */
30
30
  CATALOG(pg_partitioned_table,3350,PartitionedRelationId)
31
31
  {
32
- Oid partrelid; /* partitioned table oid */
32
+ Oid partrelid BKI_LOOKUP(pg_class); /* partitioned table oid */
33
33
  char partstrat; /* partitioning strategy */
34
34
  int16 partnatts; /* number of partition key columns */
35
- Oid partdefid; /* default partition oid; InvalidOid if there
36
- * isn't one */
35
+ Oid partdefid BKI_LOOKUP_OPT(pg_class); /* default partition oid;
36
+ * 0 if there isn't one */
37
37
 
38
38
  /*
39
39
  * variable-length fields start here, but we allow direct access to
@@ -41,13 +41,17 @@ CATALOG(pg_partitioned_table,3350,PartitionedRelationId)
41
41
  * field of a heap tuple can be reliably accessed using its C struct
42
42
  * offset, as previous fields are all non-nullable fixed-length fields.
43
43
  */
44
- int2vector partattrs; /* each member of the array is the attribute
45
- * number of a partition key column, or 0 if
46
- * the column is actually an expression */
44
+ int2vector partattrs BKI_FORCE_NOT_NULL; /* each member of the array is
45
+ * the attribute number of a
46
+ * partition key column, or 0
47
+ * if the column is actually
48
+ * an expression */
47
49
 
48
50
  #ifdef CATALOG_VARLEN
49
- oidvector partclass; /* operator class to compare keys */
50
- oidvector partcollation; /* user-specified collation for keys */
51
+ oidvector partclass BKI_LOOKUP(pg_opclass) BKI_FORCE_NOT_NULL; /* operator class to
52
+ * compare keys */
53
+ oidvector partcollation BKI_LOOKUP_OPT(pg_collation) BKI_FORCE_NOT_NULL; /* user-specified
54
+ * collation for keys */
51
55
  pg_node_tree partexprs; /* list of expressions in the partition key;
52
56
  * one item for each zero entry in partattrs[] */
53
57
  #endif
@@ -60,4 +64,11 @@ CATALOG(pg_partitioned_table,3350,PartitionedRelationId)
60
64
  */
61
65
  typedef FormData_pg_partitioned_table *Form_pg_partitioned_table;
62
66
 
67
+ DECLARE_TOAST(pg_partitioned_table, 4165, 4166);
68
+
69
+ DECLARE_UNIQUE_INDEX_PKEY(pg_partitioned_table_partrelid_index, 3351, PartitionedRelidIndexId, on pg_partitioned_table using btree(partrelid oid_ops));
70
+
71
+ /* partattrs can contain zero (InvalidAttrNumber) to represent expressions */
72
+ DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute, (attrelid, attnum));
73
+
63
74
  #endif /* PG_PARTITIONED_TABLE_H */
@@ -3,7 +3,7 @@
3
3
  * pg_partitioned_table_d.h
4
4
  * Macro definitions for pg_partitioned_table
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,7 @@
19
19
  #define PG_PARTITIONED_TABLE_D_H
20
20
 
21
21
  #define PartitionedRelationId 3350
22
+ #define PartitionedRelidIndexId 3351
22
23
 
23
24
  #define Anum_pg_partitioned_table_partrelid 1
24
25
  #define Anum_pg_partitioned_table_partstrat 2
@@ -3,7 +3,7 @@
3
3
  * pg_proc.h
4
4
  * definition of the "procedure" system catalog (pg_proc)
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/catalog/pg_proc.h
@@ -35,10 +35,10 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
35
35
  NameData proname;
36
36
 
37
37
  /* OID of namespace containing this proc */
38
- Oid pronamespace BKI_DEFAULT(PGNSP);
38
+ Oid pronamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
39
39
 
40
40
  /* procedure owner */
41
- Oid proowner BKI_DEFAULT(PGUID);
41
+ Oid proowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
42
42
 
43
43
  /* OID of pg_language entry */
44
44
  Oid prolang BKI_DEFAULT(internal) BKI_LOOKUP(pg_language);
@@ -49,11 +49,11 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
49
49
  /* estimated # of rows out (if proretset) */
50
50
  float4 prorows BKI_DEFAULT(0);
51
51
 
52
- /* element type of variadic array, or 0 */
53
- Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP(pg_type);
52
+ /* element type of variadic array, or 0 if not variadic */
53
+ Oid provariadic BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
54
54
 
55
55
  /* planner support function for this function, or 0 if none */
56
- regproc prosupport BKI_DEFAULT(0) BKI_LOOKUP(pg_proc);
56
+ regproc prosupport BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_proc);
57
57
 
58
58
  /* see PROKIND_ categories below */
59
59
  char prokind BKI_DEFAULT(f);
@@ -92,7 +92,7 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
92
92
  */
93
93
 
94
94
  /* parameter types (excludes OUT params) */
95
- oidvector proargtypes BKI_LOOKUP(pg_type);
95
+ oidvector proargtypes BKI_LOOKUP(pg_type) BKI_FORCE_NOT_NULL;
96
96
 
97
97
  #ifdef CATALOG_VARLEN
98
98
 
@@ -109,7 +109,7 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
109
109
  pg_node_tree proargdefaults BKI_DEFAULT(_null_);
110
110
 
111
111
  /* types for which to apply transforms */
112
- Oid protrftypes[1] BKI_DEFAULT(_null_);
112
+ Oid protrftypes[1] BKI_DEFAULT(_null_) BKI_LOOKUP(pg_type);
113
113
 
114
114
  /* procedure source text */
115
115
  text prosrc BKI_FORCE_NOT_NULL;
@@ -117,6 +117,9 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
117
117
  /* secondary procedure info (can be NULL) */
118
118
  text probin BKI_DEFAULT(_null_);
119
119
 
120
+ /* pre-parsed SQL function body */
121
+ pg_node_tree prosqlbody BKI_DEFAULT(_null_);
122
+
120
123
  /* procedure-local GUC settings */
121
124
  text proconfig[1] BKI_DEFAULT(_null_);
122
125
 
@@ -132,6 +135,11 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
132
135
  */
133
136
  typedef FormData_pg_proc *Form_pg_proc;
134
137
 
138
+ DECLARE_TOAST(pg_proc, 2836, 2837);
139
+
140
+ DECLARE_UNIQUE_INDEX_PKEY(pg_proc_oid_index, 2690, ProcedureOidIndexId, on pg_proc using btree(oid oid_ops));
141
+ DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, ProcedureNameArgsNspIndexId, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
142
+
135
143
  #ifdef EXPOSE_TO_CLIENT_CODE
136
144
 
137
145
  /*
@@ -157,10 +165,10 @@ typedef FormData_pg_proc *Form_pg_proc;
157
165
  /*
158
166
  * Symbolic values for proparallel column: these indicate whether a function
159
167
  * can be safely be run in a parallel backend, during parallelism but
160
- * necessarily in the master, or only in non-parallel mode.
168
+ * necessarily in the leader, or only in non-parallel mode.
161
169
  */
162
- #define PROPARALLEL_SAFE 's' /* can run in worker or master */
163
- #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel master only */
170
+ #define PROPARALLEL_SAFE 's' /* can run in worker or leader */
171
+ #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel leader only */
164
172
  #define PROPARALLEL_UNSAFE 'u' /* banned while in parallel mode */
165
173
 
166
174
  /*
@@ -187,6 +195,7 @@ extern ObjectAddress ProcedureCreate(const char *procedureName,
187
195
  Oid languageValidator,
188
196
  const char *prosrc,
189
197
  const char *probin,
198
+ Node *prosqlbody,
190
199
  char prokind,
191
200
  bool security_definer,
192
201
  bool isLeakProof,
@@ -3,7 +3,7 @@
3
3
  * pg_proc_d.h
4
4
  * Macro definitions for pg_proc
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -20,6 +20,8 @@
20
20
 
21
21
  #define ProcedureRelationId 1255
22
22
  #define ProcedureRelation_Rowtype_Id 81
23
+ #define ProcedureOidIndexId 2690
24
+ #define ProcedureNameArgsNspIndexId 2691
23
25
 
24
26
  #define Anum_pg_proc_oid 1
25
27
  #define Anum_pg_proc_proname 2
@@ -48,10 +50,11 @@
48
50
  #define Anum_pg_proc_protrftypes 25
49
51
  #define Anum_pg_proc_prosrc 26
50
52
  #define Anum_pg_proc_probin 27
51
- #define Anum_pg_proc_proconfig 28
52
- #define Anum_pg_proc_proacl 29
53
+ #define Anum_pg_proc_prosqlbody 28
54
+ #define Anum_pg_proc_proconfig 29
55
+ #define Anum_pg_proc_proacl 30
53
56
 
54
- #define Natts_pg_proc 29
57
+ #define Natts_pg_proc 30
55
58
 
56
59
 
57
60
  /*
@@ -77,10 +80,10 @@
77
80
  /*
78
81
  * Symbolic values for proparallel column: these indicate whether a function
79
82
  * can be safely be run in a parallel backend, during parallelism but
80
- * necessarily in the master, or only in non-parallel mode.
83
+ * necessarily in the leader, or only in non-parallel mode.
81
84
  */
82
- #define PROPARALLEL_SAFE 's' /* can run in worker or master */
83
- #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel master only */
85
+ #define PROPARALLEL_SAFE 's' /* can run in worker or leader */
86
+ #define PROPARALLEL_RESTRICTED 'r' /* can run in parallel leader only */
84
87
  #define PROPARALLEL_UNSAFE 'u' /* banned while in parallel mode */
85
88
 
86
89
  /*
@@ -94,6 +97,5 @@
94
97
  #define PROARGMODE_VARIADIC 'v'
95
98
  #define PROARGMODE_TABLE 't'
96
99
 
97
- #define HEAP_TABLE_AM_HANDLER_OID 3
98
100
 
99
101
  #endif /* PG_PROC_D_H */
@@ -3,7 +3,7 @@
3
3
  * pg_publication.h
4
4
  * definition of the "publication" system catalog (pg_publication)
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/catalog/pg_publication.h
@@ -32,7 +32,7 @@ CATALOG(pg_publication,6104,PublicationRelationId)
32
32
 
33
33
  NameData pubname; /* name of the publication */
34
34
 
35
- Oid pubowner; /* publication owner */
35
+ Oid pubowner BKI_LOOKUP(pg_authid); /* publication owner */
36
36
 
37
37
  /*
38
38
  * indicates that this is special publication which should encompass all
@@ -63,6 +63,9 @@ CATALOG(pg_publication,6104,PublicationRelationId)
63
63
  */
64
64
  typedef FormData_pg_publication *Form_pg_publication;
65
65
 
66
+ DECLARE_UNIQUE_INDEX_PKEY(pg_publication_oid_index, 6110, PublicationObjectIndexId, on pg_publication using btree(oid oid_ops));
67
+ DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, PublicationNameIndexId, on pg_publication using btree(pubname name_ops));
68
+
66
69
  typedef struct PublicationActions
67
70
  {
68
71
  bool pubinsert;
@@ -71,6 +74,26 @@ typedef struct PublicationActions
71
74
  bool pubtruncate;
72
75
  } PublicationActions;
73
76
 
77
+ typedef struct PublicationDesc
78
+ {
79
+ PublicationActions pubactions;
80
+
81
+ /*
82
+ * true if the columns referenced in row filters which are used for UPDATE
83
+ * or DELETE are part of the replica identity or the publication actions
84
+ * do not include UPDATE or DELETE.
85
+ */
86
+ bool rf_valid_for_update;
87
+ bool rf_valid_for_delete;
88
+
89
+ /*
90
+ * true if the columns are part of the replica identity or the publication
91
+ * actions do not include UPDATE or DELETE.
92
+ */
93
+ bool cols_valid_for_update;
94
+ bool cols_valid_for_delete;
95
+ } PublicationDesc;
96
+
74
97
  typedef struct Publication
75
98
  {
76
99
  Oid oid;
@@ -80,6 +103,13 @@ typedef struct Publication
80
103
  PublicationActions pubactions;
81
104
  } Publication;
82
105
 
106
+ typedef struct PublicationRelInfo
107
+ {
108
+ Relation relation;
109
+ Node *whereClause;
110
+ List *columns;
111
+ } PublicationRelInfo;
112
+
83
113
  extern Publication *GetPublication(Oid pubid);
84
114
  extern Publication *GetPublicationByName(const char *pubname, bool missing_ok);
85
115
  extern List *GetRelationPublications(Oid relid);
@@ -103,13 +133,29 @@ typedef enum PublicationPartOpt
103
133
  extern List *GetPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt);
104
134
  extern List *GetAllTablesPublications(void);
105
135
  extern List *GetAllTablesPublicationRelations(bool pubviaroot);
136
+ extern List *GetPublicationSchemas(Oid pubid);
137
+ extern List *GetSchemaPublications(Oid schemaid);
138
+ extern List *GetSchemaPublicationRelations(Oid schemaid,
139
+ PublicationPartOpt pub_partopt);
140
+ extern List *GetAllSchemaPublicationRelations(Oid puboid,
141
+ PublicationPartOpt pub_partopt);
142
+ extern List *GetPubPartitionOptionRelations(List *result,
143
+ PublicationPartOpt pub_partopt,
144
+ Oid relid);
145
+ extern Oid GetTopMostAncestorInPublication(Oid puboid, List *ancestors,
146
+ int *ancestor_level);
106
147
 
107
148
  extern bool is_publishable_relation(Relation rel);
108
- extern ObjectAddress publication_add_relation(Oid pubid, Relation targetrel,
149
+ extern bool is_schema_publication(Oid pubid);
150
+ extern ObjectAddress publication_add_relation(Oid pubid, PublicationRelInfo *pri,
109
151
  bool if_not_exists);
152
+ extern ObjectAddress publication_add_schema(Oid pubid, Oid schemaid,
153
+ bool if_not_exists);
154
+
155
+ extern Bitmapset *pub_collist_to_bitmapset(Bitmapset *columns, Datum pubcols,
156
+ MemoryContext mcxt);
110
157
 
111
158
  extern Oid get_publication_oid(const char *pubname, bool missing_ok);
112
159
  extern char *get_publication_name(Oid pubid, bool missing_ok);
113
160
 
114
-
115
161
  #endif /* PG_PUBLICATION_H */
@@ -3,7 +3,7 @@
3
3
  * pg_publication_d.h
4
4
  * Macro definitions for pg_publication
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * NOTES
@@ -19,6 +19,8 @@
19
19
  #define PG_PUBLICATION_D_H
20
20
 
21
21
  #define PublicationRelationId 6104
22
+ #define PublicationObjectIndexId 6110
23
+ #define PublicationNameIndexId 6111
22
24
 
23
25
  #define Anum_pg_publication_oid 1
24
26
  #define Anum_pg_publication_pubname 2