pg_query 2.2.1 → 4.2.0

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 (465) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Rakefile +2 -2
  4. data/ext/pg_query/include/access/amapi.h +45 -1
  5. data/ext/pg_query/include/access/attmap.h +1 -1
  6. data/ext/pg_query/include/access/attnum.h +2 -2
  7. data/ext/pg_query/include/access/clog.h +4 -2
  8. data/ext/pg_query/include/access/commit_ts.h +6 -9
  9. data/ext/pg_query/include/access/detoast.h +1 -11
  10. data/ext/pg_query/include/access/genam.h +15 -12
  11. data/ext/pg_query/include/access/gin.h +2 -2
  12. data/ext/pg_query/include/access/htup.h +1 -1
  13. data/ext/pg_query/include/access/htup_details.h +75 -87
  14. data/ext/pg_query/include/access/itup.h +7 -1
  15. data/ext/pg_query/include/access/parallel.h +2 -2
  16. data/ext/pg_query/include/access/printtup.h +1 -1
  17. data/ext/pg_query/include/access/relation.h +1 -1
  18. data/ext/pg_query/include/access/relscan.h +17 -2
  19. data/ext/pg_query/include/access/rmgr.h +30 -3
  20. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  21. data/ext/pg_query/include/access/sdir.h +1 -1
  22. data/ext/pg_query/include/access/skey.h +1 -1
  23. data/ext/pg_query/include/access/stratnum.h +4 -2
  24. data/ext/pg_query/include/access/sysattr.h +1 -1
  25. data/ext/pg_query/include/access/table.h +2 -1
  26. data/ext/pg_query/include/access/tableam.h +272 -20
  27. data/ext/pg_query/include/access/toast_compression.h +73 -0
  28. data/ext/pg_query/include/access/transam.h +123 -13
  29. data/ext/pg_query/include/access/tupconvert.h +1 -1
  30. data/ext/pg_query/include/access/tupdesc.h +1 -1
  31. data/ext/pg_query/include/access/tupmacs.h +3 -3
  32. data/ext/pg_query/include/access/twophase.h +3 -1
  33. data/ext/pg_query/include/access/xact.h +73 -19
  34. data/ext/pg_query/include/access/xlog.h +60 -155
  35. data/ext/pg_query/include/access/xlog_internal.h +40 -13
  36. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  37. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  38. data/ext/pg_query/include/access/xlogreader.h +145 -39
  39. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  40. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  41. data/ext/pg_query/include/c.h +101 -44
  42. data/ext/pg_query/include/catalog/catalog.h +3 -1
  43. data/ext/pg_query/include/catalog/catversion.h +2 -2
  44. data/ext/pg_query/include/catalog/dependency.h +8 -16
  45. data/ext/pg_query/include/catalog/genbki.h +83 -5
  46. data/ext/pg_query/include/catalog/index.h +18 -3
  47. data/ext/pg_query/include/catalog/indexing.h +12 -324
  48. data/ext/pg_query/include/catalog/namespace.h +4 -2
  49. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  50. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  51. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  52. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  53. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  54. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  55. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  56. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  57. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  58. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  59. data/ext/pg_query/include/catalog/pg_class.h +44 -14
  60. data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
  61. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  62. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  63. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  64. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  65. data/ext/pg_query/include/catalog/pg_control.h +3 -5
  66. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  67. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  68. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  69. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  70. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  71. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  72. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  73. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  74. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  75. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  76. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  77. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  78. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  79. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  80. data/ext/pg_query/include/catalog/pg_operator.h +18 -15
  81. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  82. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  83. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  84. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  85. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  86. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  87. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  88. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  89. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  90. data/ext/pg_query/include/catalog/pg_publication.h +50 -7
  91. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  92. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  93. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  94. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  95. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  96. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  97. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  98. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  99. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  100. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  101. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  102. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  103. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  104. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  105. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  106. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  107. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  108. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  109. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  110. data/ext/pg_query/include/catalog/pg_type.h +55 -24
  111. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  112. data/ext/pg_query/include/catalog/storage.h +5 -3
  113. data/ext/pg_query/include/commands/async.h +3 -4
  114. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  115. data/ext/pg_query/include/commands/defrem.h +11 -24
  116. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  117. data/ext/pg_query/include/commands/explain.h +1 -1
  118. data/ext/pg_query/include/commands/prepare.h +1 -1
  119. data/ext/pg_query/include/commands/tablespace.h +2 -2
  120. data/ext/pg_query/include/commands/trigger.h +18 -16
  121. data/ext/pg_query/include/commands/user.h +2 -2
  122. data/ext/pg_query/include/commands/vacuum.h +88 -41
  123. data/ext/pg_query/include/commands/variable.h +1 -1
  124. data/ext/pg_query/include/common/file_perm.h +4 -4
  125. data/ext/pg_query/include/common/hashfn.h +1 -1
  126. data/ext/pg_query/include/common/ip.h +1 -7
  127. data/ext/pg_query/include/common/keywords.h +2 -6
  128. data/ext/pg_query/include/common/kwlookup.h +1 -1
  129. data/ext/pg_query/include/common/pg_prng.h +60 -0
  130. data/ext/pg_query/include/common/relpath.h +2 -2
  131. data/ext/pg_query/include/common/string.h +24 -1
  132. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  133. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  134. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  135. data/ext/pg_query/include/executor/execdesc.h +1 -1
  136. data/ext/pg_query/include/executor/executor.h +65 -22
  137. data/ext/pg_query/include/executor/functions.h +17 -3
  138. data/ext/pg_query/include/executor/instrument.h +33 -16
  139. data/ext/pg_query/include/executor/spi.h +41 -3
  140. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  141. data/ext/pg_query/include/executor/tuptable.h +1 -1
  142. data/ext/pg_query/include/fmgr.h +13 -7
  143. data/ext/pg_query/include/funcapi.h +16 -4
  144. data/ext/pg_query/include/getaddrinfo.h +1 -1
  145. data/ext/pg_query/include/jit/jit.h +11 -11
  146. data/ext/pg_query/include/kwlist_d.h +517 -494
  147. data/ext/pg_query/include/lib/dshash.h +112 -0
  148. data/ext/pg_query/include/lib/ilist.h +20 -1
  149. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  150. data/ext/pg_query/include/lib/simplehash.h +140 -15
  151. data/ext/pg_query/include/lib/sort_template.h +432 -0
  152. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  153. data/ext/pg_query/include/libpq/auth.h +6 -4
  154. data/ext/pg_query/include/libpq/crypt.h +5 -4
  155. data/ext/pg_query/include/libpq/hba.h +43 -4
  156. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  157. data/ext/pg_query/include/libpq/libpq.h +30 -20
  158. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  159. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  160. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  161. data/ext/pg_query/include/mb/pg_wchar.h +105 -23
  162. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  163. data/ext/pg_query/include/miscadmin.h +47 -41
  164. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  165. data/ext/pg_query/include/nodes/execnodes.h +270 -78
  166. data/ext/pg_query/include/nodes/extensible.h +4 -2
  167. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  168. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  169. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  170. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  171. data/ext/pg_query/include/nodes/nodes.h +30 -11
  172. data/ext/pg_query/include/nodes/params.h +1 -1
  173. data/ext/pg_query/include/nodes/parsenodes.h +322 -90
  174. data/ext/pg_query/include/nodes/pathnodes.h +243 -66
  175. data/ext/pg_query/include/nodes/pg_list.h +75 -69
  176. data/ext/pg_query/include/nodes/plannodes.h +111 -28
  177. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  178. data/ext/pg_query/include/nodes/print.h +1 -1
  179. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  180. data/ext/pg_query/include/nodes/value.h +58 -39
  181. data/ext/pg_query/include/optimizer/cost.h +9 -2
  182. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  183. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  184. data/ext/pg_query/include/optimizer/optimizer.h +25 -17
  185. data/ext/pg_query/include/optimizer/paths.h +6 -6
  186. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  187. data/ext/pg_query/include/parser/analyze.h +19 -5
  188. data/ext/pg_query/include/parser/gram.h +947 -913
  189. data/ext/pg_query/include/parser/gramparse.h +1 -1
  190. data/ext/pg_query/include/parser/kwlist.h +463 -453
  191. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  192. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  193. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  194. data/ext/pg_query/include/parser/parse_func.h +2 -1
  195. data/ext/pg_query/include/parser/parse_node.h +21 -9
  196. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  197. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  198. data/ext/pg_query/include/parser/parse_type.h +1 -1
  199. data/ext/pg_query/include/parser/parser.h +31 -4
  200. data/ext/pg_query/include/parser/parsetree.h +1 -1
  201. data/ext/pg_query/include/parser/scanner.h +1 -1
  202. data/ext/pg_query/include/parser/scansup.h +2 -5
  203. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  204. data/ext/pg_query/include/pg_config.h +83 -41
  205. data/ext/pg_query/include/pg_config_manual.h +74 -21
  206. data/ext/pg_query/include/pg_getopt.h +6 -6
  207. data/ext/pg_query/include/pg_query.h +5 -4
  208. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  209. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  210. data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
  211. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  212. data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
  213. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  214. data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
  215. data/ext/pg_query/include/pg_trace.h +1 -1
  216. data/ext/pg_query/include/pgstat.h +449 -1238
  217. data/ext/pg_query/include/pgtime.h +14 -4
  218. data/ext/pg_query/include/pl_gram.h +126 -128
  219. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  220. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  221. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  222. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  223. data/ext/pg_query/include/plerrcodes.h +9 -1
  224. data/ext/pg_query/include/plpgsql.h +52 -54
  225. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  226. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  227. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  228. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  229. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  230. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  231. data/ext/pg_query/include/port/atomics.h +1 -1
  232. data/ext/pg_query/include/port/pg_bitutils.h +40 -10
  233. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  234. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  235. data/ext/pg_query/include/port.h +71 -46
  236. data/ext/pg_query/include/portability/instr_time.h +1 -1
  237. data/ext/pg_query/include/postgres.h +60 -16
  238. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  239. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  240. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  241. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  242. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  243. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  244. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  245. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  246. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  247. data/ext/pg_query/include/postmaster/startup.h +39 -0
  248. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  249. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  250. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
  251. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  252. data/ext/pg_query/include/regex/regex.h +18 -16
  253. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  254. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  255. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  256. data/ext/pg_query/include/replication/origin.h +7 -7
  257. data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
  258. data/ext/pg_query/include/replication/slot.h +22 -11
  259. data/ext/pg_query/include/replication/syncrep.h +5 -5
  260. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  261. data/ext/pg_query/include/replication/walsender.h +8 -8
  262. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  263. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  264. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  265. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  266. data/ext/pg_query/include/storage/backendid.h +3 -3
  267. data/ext/pg_query/include/storage/block.h +4 -10
  268. data/ext/pg_query/include/storage/buf.h +1 -1
  269. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  270. data/ext/pg_query/include/storage/bufpage.h +6 -8
  271. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  272. data/ext/pg_query/include/storage/dsm.h +4 -1
  273. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  274. data/ext/pg_query/include/storage/fd.h +33 -3
  275. data/ext/pg_query/include/storage/fileset.h +40 -0
  276. data/ext/pg_query/include/storage/ipc.h +4 -1
  277. data/ext/pg_query/include/storage/item.h +1 -1
  278. data/ext/pg_query/include/storage/itemid.h +1 -1
  279. data/ext/pg_query/include/storage/itemptr.h +3 -1
  280. data/ext/pg_query/include/storage/large_object.h +2 -2
  281. data/ext/pg_query/include/storage/latch.h +9 -13
  282. data/ext/pg_query/include/storage/lmgr.h +2 -1
  283. data/ext/pg_query/include/storage/lock.h +11 -8
  284. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  285. data/ext/pg_query/include/storage/lwlock.h +5 -32
  286. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  287. data/ext/pg_query/include/storage/off.h +1 -1
  288. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  289. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  290. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  291. data/ext/pg_query/include/storage/predicate.h +4 -4
  292. data/ext/pg_query/include/storage/proc.h +173 -59
  293. data/ext/pg_query/include/storage/procarray.h +98 -0
  294. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  295. data/ext/pg_query/include/storage/procsignal.h +3 -7
  296. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  297. data/ext/pg_query/include/storage/s_lock.h +60 -21
  298. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  299. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  300. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  301. data/ext/pg_query/include/storage/shmem.h +1 -1
  302. data/ext/pg_query/include/storage/sinval.h +3 -3
  303. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  304. data/ext/pg_query/include/storage/smgr.h +10 -8
  305. data/ext/pg_query/include/storage/spin.h +2 -2
  306. data/ext/pg_query/include/storage/standby.h +13 -6
  307. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  308. data/ext/pg_query/include/storage/sync.h +7 -3
  309. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  310. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  311. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  312. data/ext/pg_query/include/tcop/dest.h +1 -1
  313. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  314. data/ext/pg_query/include/tcop/pquery.h +1 -1
  315. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  316. data/ext/pg_query/include/tcop/utility.h +7 -3
  317. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  318. data/ext/pg_query/include/utils/acl.h +24 -3
  319. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  320. data/ext/pg_query/include/utils/array.h +7 -2
  321. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  322. data/ext/pg_query/include/utils/backend_status.h +321 -0
  323. data/ext/pg_query/include/utils/builtins.h +10 -11
  324. data/ext/pg_query/include/utils/bytea.h +3 -2
  325. data/ext/pg_query/include/utils/catcache.h +1 -1
  326. data/ext/pg_query/include/utils/date.h +1 -1
  327. data/ext/pg_query/include/utils/datetime.h +8 -7
  328. data/ext/pg_query/include/utils/datum.h +9 -1
  329. data/ext/pg_query/include/utils/dsa.h +1 -1
  330. data/ext/pg_query/include/utils/dynahash.h +4 -3
  331. data/ext/pg_query/include/utils/elog.h +52 -21
  332. data/ext/pg_query/include/utils/errcodes.h +2 -0
  333. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  334. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  335. data/ext/pg_query/include/utils/float.h +7 -7
  336. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  337. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  338. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  339. data/ext/pg_query/include/utils/guc.h +69 -43
  340. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  341. data/ext/pg_query/include/utils/hsearch.h +15 -11
  342. data/ext/pg_query/include/utils/inval.h +4 -1
  343. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  344. data/ext/pg_query/include/utils/memdebug.h +1 -1
  345. data/ext/pg_query/include/utils/memutils.h +8 -3
  346. data/ext/pg_query/include/utils/numeric.h +19 -5
  347. data/ext/pg_query/include/utils/palloc.h +25 -3
  348. data/ext/pg_query/include/utils/partcache.h +1 -1
  349. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  350. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  351. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  352. data/ext/pg_query/include/utils/pidfile.h +1 -1
  353. data/ext/pg_query/include/utils/plancache.h +6 -5
  354. data/ext/pg_query/include/utils/portal.h +10 -12
  355. data/ext/pg_query/include/utils/ps_status.h +1 -1
  356. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  357. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  358. data/ext/pg_query/include/utils/regproc.h +14 -3
  359. data/ext/pg_query/include/utils/rel.h +71 -19
  360. data/ext/pg_query/include/utils/relcache.h +8 -5
  361. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  362. data/ext/pg_query/include/utils/resowner.h +1 -1
  363. data/ext/pg_query/include/utils/rls.h +2 -2
  364. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  365. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  366. data/ext/pg_query/include/utils/snapmgr.h +34 -14
  367. data/ext/pg_query/include/utils/snapshot.h +14 -1
  368. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  369. data/ext/pg_query/include/utils/syscache.h +6 -1
  370. data/ext/pg_query/include/utils/timeout.h +11 -4
  371. data/ext/pg_query/include/utils/timestamp.h +6 -5
  372. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  373. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  374. data/ext/pg_query/include/utils/typcache.h +24 -17
  375. data/ext/pg_query/include/utils/tzparser.h +1 -1
  376. data/ext/pg_query/include/utils/varlena.h +5 -3
  377. data/ext/pg_query/include/utils/wait_event.h +289 -0
  378. data/ext/pg_query/include/utils/xml.h +4 -4
  379. data/ext/pg_query/pg_query.pb-c.c +4302 -2304
  380. data/ext/pg_query/pg_query_deparse.c +986 -301
  381. data/ext/pg_query/pg_query_fingerprint.c +30 -10
  382. data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
  383. data/ext/pg_query/pg_query_normalize.c +1 -1
  384. data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
  385. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  386. data/ext/pg_query/pg_query_parse.c +1 -1
  387. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  388. data/ext/pg_query/pg_query_scan.c +2 -1
  389. data/ext/pg_query/pg_query_split.c +3 -2
  390. data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
  391. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  392. data/ext/pg_query/src_backend_commands_define.c +11 -1
  393. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  394. data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
  395. data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
  396. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  397. data/ext/pg_query/src_backend_nodes_list.c +74 -11
  398. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  399. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  400. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  401. data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
  402. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  403. data/ext/pg_query/src_backend_parser_scan.c +172 -209
  404. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  405. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  406. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  407. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  408. data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
  409. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  410. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  411. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  412. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  413. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
  414. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  415. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  416. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  417. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  418. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  419. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  420. data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
  421. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  422. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  423. data/ext/pg_query/src_common_encnames.c +1 -1
  424. data/ext/pg_query/src_common_hashfn.c +3 -3
  425. data/ext/pg_query/src_common_keywords.c +15 -2
  426. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  427. data/ext/pg_query/src_common_kwlookup.c +1 -1
  428. data/ext/pg_query/src_common_pg_prng.c +152 -0
  429. data/ext/pg_query/src_common_psprintf.c +1 -1
  430. data/ext/pg_query/src_common_string.c +7 -1
  431. data/ext/pg_query/src_common_stringinfo.c +1 -1
  432. data/ext/pg_query/src_common_wchar.c +701 -109
  433. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
  434. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  435. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
  436. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  437. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  438. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  440. data/ext/pg_query/src_port_pg_bitutils.c +41 -31
  441. data/ext/pg_query/src_port_pgsleep.c +1 -1
  442. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  443. data/ext/pg_query/src_port_qsort.c +12 -224
  444. data/ext/pg_query/src_port_snprintf.c +37 -13
  445. data/ext/pg_query/src_port_strerror.c +9 -19
  446. data/ext/pg_query/src_port_strnlen.c +1 -1
  447. data/lib/pg_query/filter_columns.rb +1 -1
  448. data/lib/pg_query/fingerprint.rb +5 -1
  449. data/lib/pg_query/node.rb +2 -2
  450. data/lib/pg_query/param_refs.rb +1 -1
  451. data/lib/pg_query/parse.rb +8 -7
  452. data/lib/pg_query/pg_query_pb.rb +1108 -942
  453. data/lib/pg_query/truncate.rb +1 -1
  454. data/lib/pg_query/version.rb +1 -1
  455. metadata +23 -13
  456. data/ext/pg_query/include/access/xloginsert.h +0 -64
  457. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  458. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  459. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  460. data/ext/pg_query/include/parser/parse_target.h +0 -46
  461. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  462. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
  463. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  464. data/ext/pg_query/src_port_erand48.c +0 -127
  465. data/ext/pg_query/src_port_random.c +0 -31
@@ -9,7 +9,7 @@
9
9
  * polluting the namespace with lots of stuff...
10
10
  *
11
11
  *
12
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
13
13
  * Portions Copyright (c) 1994, Regents of the University of California
14
14
  *
15
15
  * src/include/c.h
@@ -98,11 +98,21 @@
98
98
  *
99
99
  * GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
100
100
  * GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
101
+ * Clang: https://clang.llvm.org/docs/AttributeReference.html
101
102
  * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html
102
103
  * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html
103
104
  * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html
104
105
  */
105
106
 
107
+ /*
108
+ * For compilers which don't support __has_attribute, we just define
109
+ * __has_attribute(x) to 0 so that we can define macros for various
110
+ * __attribute__s more easily below.
111
+ */
112
+ #ifndef __has_attribute
113
+ #define __has_attribute(attribute) 0
114
+ #endif
115
+
106
116
  /* only GCC supports the unused attribute */
107
117
  #ifdef __GNUC__
108
118
  #define pg_attribute_unused() __attribute__((unused))
@@ -110,6 +120,18 @@
110
120
  #define pg_attribute_unused()
111
121
  #endif
112
122
 
123
+ /*
124
+ * pg_nodiscard means the compiler should warn if the result of a function
125
+ * call is ignored. The name "nodiscard" is chosen in alignment with
126
+ * (possibly future) C and C++ standards. For maximum compatibility, use it
127
+ * as a function declaration specifier, so it goes before the return type.
128
+ */
129
+ #ifdef __GNUC__
130
+ #define pg_nodiscard __attribute__((warn_unused_result))
131
+ #else
132
+ #define pg_nodiscard
133
+ #endif
134
+
113
135
  /*
114
136
  * Place this macro before functions that should be allowed to make misaligned
115
137
  * accesses. Think twice before using it on non-x86-specific code!
@@ -190,6 +212,39 @@
190
212
  #define pg_noinline
191
213
  #endif
192
214
 
215
+ /*
216
+ * For now, just define pg_attribute_cold and pg_attribute_hot to be empty
217
+ * macros on minGW 8.1. There appears to be a compiler bug that results in
218
+ * compilation failure. At this time, we still have at least one buildfarm
219
+ * animal running that compiler, so this should make that green again. It's
220
+ * likely this compiler is not popular enough to warrant keeping this code
221
+ * around forever, so let's just remove it once the last buildfarm animal
222
+ * upgrades.
223
+ */
224
+ #if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1
225
+
226
+ #define pg_attribute_cold
227
+ #define pg_attribute_hot
228
+
229
+ #else
230
+ /*
231
+ * Marking certain functions as "hot" or "cold" can be useful to assist the
232
+ * compiler in arranging the assembly code in a more efficient way.
233
+ */
234
+ #if __has_attribute (cold)
235
+ #define pg_attribute_cold __attribute__((cold))
236
+ #else
237
+ #define pg_attribute_cold
238
+ #endif
239
+
240
+ #if __has_attribute (hot)
241
+ #define pg_attribute_hot __attribute__((hot))
242
+ #else
243
+ #define pg_attribute_hot
244
+ #endif
245
+
246
+ #endif /* defined(__MINGW64__) && __GNUC__ == 8 &&
247
+ * __GNUC_MINOR__ == 1 */
193
248
  /*
194
249
  * Mark a point as unreachable in a portable fashion. This should preferably
195
250
  * be something that the compiler understands, to aid code generation.
@@ -277,6 +332,13 @@
277
332
  #define dummyret char
278
333
  #endif
279
334
 
335
+ /*
336
+ * Generic function pointer. This can be used in the rare cases where it's
337
+ * necessary to cast a function pointer to a seemingly incompatible function
338
+ * pointer type while avoiding gcc's -Wcast-function-type warnings.
339
+ */
340
+ typedef void (*pg_funcptr_t) (void);
341
+
280
342
  /*
281
343
  * We require C99, hence the compiler should understand flexible array
282
344
  * members. However, for documentation purposes we still consider it to be
@@ -541,14 +603,6 @@ typedef uint32 CommandId;
541
603
  #define FirstCommandId ((CommandId) 0)
542
604
  #define InvalidCommandId (~(CommandId)0)
543
605
 
544
- /*
545
- * Array indexing support
546
- */
547
- #define MAXDIM 6
548
- typedef struct
549
- {
550
- int indx[MAXDIM];
551
- } IntArray;
552
606
 
553
607
  /* ----------------
554
608
  * Variable-length datatypes all share the 'struct varlena' header.
@@ -937,35 +991,6 @@ extern void ExceptionalCondition(const char *conditionName,
937
991
  */
938
992
  #define Abs(x) ((x) >= 0 ? (x) : -(x))
939
993
 
940
- /*
941
- * StrNCpy
942
- * Like standard library function strncpy(), except that result string
943
- * is guaranteed to be null-terminated --- that is, at most N-1 bytes
944
- * of the source string will be kept.
945
- * Also, the macro returns no result (too hard to do that without
946
- * evaluating the arguments multiple times, which seems worse).
947
- *
948
- * BTW: when you need to copy a non-null-terminated string (like a text
949
- * datum) and add a null, do not do it with StrNCpy(..., len+1). That
950
- * might seem to work, but it fetches one byte more than there is in the
951
- * text object. One fine day you'll have a SIGSEGV because there isn't
952
- * another byte before the end of memory. Don't laugh, we've had real
953
- * live bug reports from real live users over exactly this mistake.
954
- * Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead.
955
- */
956
- #define StrNCpy(dst,src,len) \
957
- do \
958
- { \
959
- char * _dst = (dst); \
960
- Size _len = (len); \
961
- \
962
- if (_len > 0) \
963
- { \
964
- strncpy(_dst, (src), _len); \
965
- _dst[_len-1] = '\0'; \
966
- } \
967
- } while (0)
968
-
969
994
 
970
995
  /* Get a bit mask of the bits set in non-long aligned addresses */
971
996
  #define LONG_ALIGN_MASK (sizeof(long) - 1)
@@ -1145,7 +1170,6 @@ typedef union PGAlignedXLogBlock
1145
1170
  #define STATUS_OK (0)
1146
1171
  #define STATUS_ERROR (-1)
1147
1172
  #define STATUS_EOF (-2)
1148
- #define STATUS_WAITING (2)
1149
1173
 
1150
1174
  /*
1151
1175
  * gettext support
@@ -1167,7 +1191,8 @@ typedef union PGAlignedXLogBlock
1167
1191
  * access to the original string and translated string, and for cases where
1168
1192
  * immediate translation is not possible, like when initializing global
1169
1193
  * variables.
1170
- * http://www.gnu.org/software/autoconf/manual/gettext/Special-cases.html
1194
+ *
1195
+ * https://www.gnu.org/software/gettext/manual/html_node/Special-cases.html
1171
1196
  */
1172
1197
  #define gettext_noop(x) (x)
1173
1198
 
@@ -1287,10 +1312,35 @@ extern long long strtoll(const char *str, char **endptr, int base);
1287
1312
  extern unsigned long long strtoull(const char *str, char **endptr, int base);
1288
1313
  #endif
1289
1314
 
1290
- /* no special DLL markers on most ports */
1315
+ /*
1316
+ * Thin wrappers that convert strings to exactly 64-bit integers, matching our
1317
+ * definition of int64. (For the naming, compare that POSIX has
1318
+ * strtoimax()/strtoumax() which return intmax_t/uintmax_t.)
1319
+ */
1320
+ #ifdef HAVE_LONG_INT_64
1321
+ #define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base))
1322
+ #define strtou64(str, endptr, base) ((uint64) strtoul(str, endptr, base))
1323
+ #else
1324
+ #define strtoi64(str, endptr, base) ((int64) strtoll(str, endptr, base))
1325
+ #define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base))
1326
+ #endif
1327
+
1328
+ /*
1329
+ * Use "extern PGDLLIMPORT ..." to declare variables that are defined
1330
+ * in the core backend and need to be accessible by loadable modules.
1331
+ * No special marking is required on most ports.
1332
+ */
1291
1333
  #ifndef PGDLLIMPORT
1292
1334
  #define PGDLLIMPORT
1293
1335
  #endif
1336
+
1337
+ /*
1338
+ * Use "extern PGDLLEXPORT ..." to declare functions that are defined in
1339
+ * loadable modules and need to be callable by the core backend. (Usually,
1340
+ * this is not necessary because our build process automatically exports
1341
+ * such symbols, but sometimes manual marking is required.)
1342
+ * No special marking is required on most ports.
1343
+ */
1294
1344
  #ifndef PGDLLEXPORT
1295
1345
  #define PGDLLEXPORT
1296
1346
  #endif
@@ -1310,14 +1360,21 @@ extern unsigned long long strtoull(const char *str, char **endptr, int base);
1310
1360
 
1311
1361
  /*
1312
1362
  * When there is no sigsetjmp, its functionality is provided by plain
1313
- * setjmp. Incidentally, nothing provides setjmp's functionality in
1314
- * that case. We now support the case only on Windows.
1363
+ * setjmp. We now support the case only on Windows. However, it seems
1364
+ * that MinGW-64 has some longstanding issues in its setjmp support,
1365
+ * so on that toolchain we cheat and use gcc's builtins.
1315
1366
  */
1316
1367
  #ifdef WIN32
1368
+ #ifdef __MINGW64__
1369
+ typedef intptr_t sigjmp_buf[5];
1370
+ #define sigsetjmp(x,y) __builtin_setjmp(x)
1371
+ #define siglongjmp __builtin_longjmp
1372
+ #else /* !__MINGW64__ */
1317
1373
  #define sigjmp_buf jmp_buf
1318
1374
  #define sigsetjmp(x,y) setjmp(x)
1319
1375
  #define siglongjmp longjmp
1320
- #endif
1376
+ #endif /* __MINGW64__ */
1377
+ #endif /* WIN32 */
1321
1378
 
1322
1379
  /* EXEC_BACKEND defines */
1323
1380
  #ifdef EXEC_BACKEND
@@ -4,7 +4,7 @@
4
4
  * prototypes for functions in backend/catalog/catalog.c
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/catalog.h
@@ -34,6 +34,8 @@ extern bool IsReservedName(const char *name);
34
34
 
35
35
  extern bool IsSharedRelation(Oid relationId);
36
36
 
37
+ extern bool IsPinnedObject(Oid classId, Oid objectId);
38
+
37
39
  extern Oid GetNewOidWithIndex(Relation relation, Oid indexId,
38
40
  AttrNumber oidcolumn);
39
41
  extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class,
@@ -34,7 +34,7 @@
34
34
  * database contents or layout, such as altering tuple headers.
35
35
  *
36
36
  *
37
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
37
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
38
38
  * Portions Copyright (c) 1994, Regents of the University of California
39
39
  *
40
40
  * src/include/catalog/catversion.h
@@ -53,6 +53,6 @@
53
53
  */
54
54
 
55
55
  /* yyyymmddN */
56
- #define CATALOG_VERSION_NO 202007201
56
+ #define CATALOG_VERSION_NO 202209061
57
57
 
58
58
  #endif
@@ -4,7 +4,7 @@
4
4
  * Routines to support inter-object dependencies.
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/dependency.h
@@ -36,8 +36,7 @@ typedef enum DependencyType
36
36
  DEPENDENCY_PARTITION_PRI = 'P',
37
37
  DEPENDENCY_PARTITION_SEC = 'S',
38
38
  DEPENDENCY_EXTENSION = 'e',
39
- DEPENDENCY_AUTO_EXTENSION = 'x',
40
- DEPENDENCY_PIN = 'p'
39
+ DEPENDENCY_AUTO_EXTENSION = 'x'
41
40
  } DependencyType;
42
41
 
43
42
  /*
@@ -47,27 +46,21 @@ typedef enum DependencyType
47
46
  * unless the dependent object is dropped at the same time. There are some
48
47
  * additional rules however:
49
48
  *
50
- * (a) For a SHARED_DEPENDENCY_PIN entry, there is no dependent object --
51
- * rather, the referenced object is an essential part of the system. This
52
- * applies to the initdb-created superuser. Entries of this type are only
53
- * created by initdb; objects in this category don't need further pg_shdepend
54
- * entries if more objects come to depend on them.
55
- *
56
- * (b) a SHARED_DEPENDENCY_OWNER entry means that the referenced object is
49
+ * (a) a SHARED_DEPENDENCY_OWNER entry means that the referenced object is
57
50
  * the role owning the dependent object. The referenced object must be
58
51
  * a pg_authid entry.
59
52
  *
60
- * (c) a SHARED_DEPENDENCY_ACL entry means that the referenced object is
53
+ * (b) a SHARED_DEPENDENCY_ACL entry means that the referenced object is
61
54
  * a role mentioned in the ACL field of the dependent object. The referenced
62
55
  * object must be a pg_authid entry. (SHARED_DEPENDENCY_ACL entries are not
63
56
  * created for the owner of an object; hence two objects may be linked by
64
57
  * one or the other, but not both, of these dependency types.)
65
58
  *
66
- * (d) a SHARED_DEPENDENCY_POLICY entry means that the referenced object is
59
+ * (c) a SHARED_DEPENDENCY_POLICY entry means that the referenced object is
67
60
  * a role mentioned in a policy object. The referenced object must be a
68
61
  * pg_authid entry.
69
62
  *
70
- * (e) a SHARED_DEPENDENCY_TABLESPACE entry means that the referenced
63
+ * (d) a SHARED_DEPENDENCY_TABLESPACE entry means that the referenced
71
64
  * object is a tablespace mentioned in a relation without storage. The
72
65
  * referenced object must be a pg_tablespace entry. (Relations that have
73
66
  * storage don't need this: they are protected by the existence of a physical
@@ -78,7 +71,6 @@ typedef enum DependencyType
78
71
  */
79
72
  typedef enum SharedDependencyType
80
73
  {
81
- SHARED_DEPENDENCY_PIN = 'p',
82
74
  SHARED_DEPENDENCY_OWNER = 'o',
83
75
  SHARED_DEPENDENCY_ACL = 'a',
84
76
  SHARED_DEPENDENCY_POLICY = 'r',
@@ -128,8 +120,10 @@ typedef enum ObjectClass
128
120
  OCLASS_DEFACL, /* pg_default_acl */
129
121
  OCLASS_EXTENSION, /* pg_extension */
130
122
  OCLASS_EVENT_TRIGGER, /* pg_event_trigger */
123
+ OCLASS_PARAMETER_ACL, /* pg_parameter_acl */
131
124
  OCLASS_POLICY, /* pg_policy */
132
125
  OCLASS_PUBLICATION, /* pg_publication */
126
+ OCLASS_PUBLICATION_NAMESPACE, /* pg_publication_namespace */
133
127
  OCLASS_PUBLICATION_REL, /* pg_publication_rel */
134
128
  OCLASS_SUBSCRIPTION, /* pg_subscription */
135
129
  OCLASS_TRANSFORM /* pg_transform */
@@ -230,8 +224,6 @@ extern bool sequenceIsOwned(Oid seqId, char deptype, Oid *tableId, int32 *colId)
230
224
  extern List *getOwnedSequences(Oid relid);
231
225
  extern Oid getIdentitySequence(Oid relid, AttrNumber attnum, bool missing_ok);
232
226
 
233
- extern Oid get_constraint_index(Oid constraintId);
234
-
235
227
  extern Oid get_index_constraint(Oid indexId);
236
228
 
237
229
  extern List *get_index_ref_constraints(Oid indexId);
@@ -9,7 +9,7 @@
9
9
  * bootstrap file from these header files.)
10
10
  *
11
11
  *
12
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
13
13
  * Portions Copyright (c) 1994, Regents of the University of California
14
14
  *
15
15
  * src/include/catalog/genbki.h
@@ -36,18 +36,96 @@
36
36
  /* Specifies a default value for auto-generated array types */
37
37
  #define BKI_ARRAY_DEFAULT(value)
38
38
  /*
39
- * Indicates how to perform name lookups, typically for an OID or
40
- * OID-array field
39
+ * Indicates that the attribute contains OIDs referencing the named catalog;
40
+ * can be applied to columns of oid, regproc, oid[], or oidvector type.
41
+ * genbki.pl uses this to know how to perform name lookups in the initial
42
+ * data (if any), and it also feeds into regression-test validity checks.
43
+ * The _OPT suffix indicates that values can be zero instead of
44
+ * a valid OID reference.
41
45
  */
42
46
  #define BKI_LOOKUP(catalog)
47
+ #define BKI_LOOKUP_OPT(catalog)
48
+
49
+ /*
50
+ * These lines are processed by genbki.pl to create the statements
51
+ * the bootstrap parser will turn into BootstrapToastTable commands.
52
+ * Each line specifies the system catalog that needs a toast table,
53
+ * the OID to assign to the toast table, and the OID to assign to the
54
+ * toast table's index. The reason we hard-wire these OIDs is that we
55
+ * need stable OIDs for shared relations, and that includes toast tables
56
+ * of shared relations.
57
+ *
58
+ * The DECLARE_TOAST_WITH_MACRO variant is used when C macros are needed
59
+ * for the toast table/index OIDs (usually only for shared catalogs).
60
+ *
61
+ * The macro definitions are just to keep the C compiler from spitting up.
62
+ */
63
+ #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
64
+ #define DECLARE_TOAST_WITH_MACRO(name,toastoid,indexoid,toastoidmacro,indexoidmacro) extern int no_such_variable
65
+
66
+ /*
67
+ * These lines are processed by genbki.pl to create the statements
68
+ * the bootstrap parser will turn into DefineIndex calls.
69
+ *
70
+ * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX or
71
+ * DECLARE_UNIQUE_INDEX_PKEY. ("PKEY" marks the index as being the catalog's
72
+ * primary key; currently this is only cosmetically different from a regular
73
+ * unique index. By convention, we usually make a catalog's OID column its
74
+ * pkey, if it has one.) The first two arguments are the index's name and
75
+ * OID, the rest is much like a standard 'create index' SQL command.
76
+ *
77
+ * For each index, we also provide a #define for its OID. References to
78
+ * the index in the C code should always use these #defines, not the actual
79
+ * index name (much less the numeric OID).
80
+ *
81
+ * The macro definitions are just to keep the C compiler from spitting up.
82
+ */
83
+ #define DECLARE_INDEX(name,oid,oidmacro,decl) extern int no_such_variable
84
+ #define DECLARE_UNIQUE_INDEX(name,oid,oidmacro,decl) extern int no_such_variable
85
+ #define DECLARE_UNIQUE_INDEX_PKEY(name,oid,oidmacro,decl) extern int no_such_variable
86
+
87
+ /*
88
+ * These lines inform genbki.pl about manually-assigned OIDs that do not
89
+ * correspond to any entry in the catalog *.dat files, but should be subject
90
+ * to uniqueness verification and renumber_oids.pl renumbering. A C macro
91
+ * to #define the given name is emitted into the corresponding *_d.h file.
92
+ */
93
+ #define DECLARE_OID_DEFINING_MACRO(name,oid) extern int no_such_variable
94
+
95
+ /*
96
+ * These lines are processed by genbki.pl to create a table for use
97
+ * by the pg_get_catalog_foreign_keys() function. We do not have any
98
+ * mechanism that actually enforces foreign-key relationships in the
99
+ * system catalogs, but it is still useful to record the intended
100
+ * relationships in a machine-readable form.
101
+ *
102
+ * The keyword is DECLARE_FOREIGN_KEY[_OPT] or DECLARE_ARRAY_FOREIGN_KEY[_OPT].
103
+ * The first argument is a parenthesized list of the referencing columns;
104
+ * the second, the name of the referenced table; the third, a parenthesized
105
+ * list of the referenced columns. Use of the ARRAY macros means that the
106
+ * last referencing column is an array, each of whose elements is supposed
107
+ * to match some entry in the last referenced column. Use of the OPT suffix
108
+ * indicates that the referencing column(s) can be zero instead of a valid
109
+ * reference.
110
+ *
111
+ * Columns that are marked with a BKI_LOOKUP rule do not need an explicit
112
+ * DECLARE_FOREIGN_KEY macro, as genbki.pl can infer the FK relationship
113
+ * from that. Thus, these macros are only needed in special cases.
114
+ *
115
+ * The macro definitions are just to keep the C compiler from spitting up.
116
+ */
117
+ #define DECLARE_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable
118
+ #define DECLARE_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable
119
+ #define DECLARE_ARRAY_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable
120
+ #define DECLARE_ARRAY_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable
43
121
 
44
122
  /* The following are never defined; they are here only for documentation. */
45
123
 
46
124
  /*
47
125
  * Variable-length catalog fields (except possibly the first not nullable one)
48
126
  * should not be visible in C structures, so they are made invisible by #ifdefs
49
- * of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is
50
- * handled.
127
+ * of an undefined symbol. See also the BOOTCOL_NULL_AUTO code in bootstrap.c
128
+ * for how this is handled.
51
129
  */
52
130
  #undef CATALOG_VARLEN
53
131
 
@@ -4,7 +4,7 @@
4
4
  * prototypes for catalog/index.c.
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/index.h
@@ -29,6 +29,20 @@ typedef enum
29
29
  INDEX_DROP_SET_DEAD
30
30
  } IndexStateFlagsAction;
31
31
 
32
+ /* options for REINDEX */
33
+ typedef struct ReindexParams
34
+ {
35
+ bits32 options; /* bitmask of REINDEXOPT_* */
36
+ Oid tablespaceOid; /* New tablespace to move indexes to.
37
+ * InvalidOid to do nothing. */
38
+ } ReindexParams;
39
+
40
+ /* flag bits for ReindexParams->flags */
41
+ #define REINDEXOPT_VERBOSE 0x01 /* print progress info */
42
+ #define REINDEXOPT_REPORT_PROGRESS 0x02 /* report pgstat progress */
43
+ #define REINDEXOPT_MISSING_OK 0x04 /* skip missing relations */
44
+ #define REINDEXOPT_CONCURRENTLY 0x08 /* concurrent mode */
45
+
32
46
  /* state info for validate_index bulkdelete callback */
33
47
  typedef struct ValidateIndexState
34
48
  {
@@ -80,6 +94,7 @@ extern Oid index_create(Relation heapRelation,
80
94
 
81
95
  extern Oid index_concurrently_create_copy(Relation heapRelation,
82
96
  Oid oldIndexId,
97
+ Oid tablespaceOid,
83
98
  const char *newName);
84
99
 
85
100
  extern void index_concurrently_build(Oid heapRelationId,
@@ -134,7 +149,7 @@ extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action);
134
149
  extern Oid IndexGetRelation(Oid indexId, bool missing_ok);
135
150
 
136
151
  extern void reindex_index(Oid indexId, bool skip_constraint_checks,
137
- char relpersistence, int options);
152
+ char relpersistence, ReindexParams *params);
138
153
 
139
154
  /* Flag bits for reindex_relation(): */
140
155
  #define REINDEX_REL_PROCESS_TOAST 0x01
@@ -143,7 +158,7 @@ extern void reindex_index(Oid indexId, bool skip_constraint_checks,
143
158
  #define REINDEX_REL_FORCE_INDEXES_UNLOGGED 0x08
144
159
  #define REINDEX_REL_FORCE_INDEXES_PERMANENT 0x10
145
160
 
146
- extern bool reindex_relation(Oid relid, int flags, int options);
161
+ extern bool reindex_relation(Oid relid, int flags, ReindexParams *params);
147
162
 
148
163
  extern bool ReindexIsProcessingHeap(Oid heapOid);
149
164
  extern bool ReindexIsProcessingIndex(Oid indexOid);