pg_query 4.2.1 → 5.1.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 (531) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +6 -8
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +27 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
  29. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
  30. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  31. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  32. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  34. data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
  36. data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
  37. data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
  38. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  39. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  40. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
  42. data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
  43. data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
  44. data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
  45. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
  46. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  47. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
  48. data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
  49. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
  50. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
  52. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  53. data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
  54. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
  58. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
  60. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  82. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
  125. data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
  126. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
  127. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
  129. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  130. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
  132. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
  133. data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
  134. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
  135. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  136. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
  137. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  138. data/ext/pg_query/include/postgres/common/int.h +437 -0
  139. data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
  140. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  141. data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
  142. data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
  143. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  144. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  145. data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
  146. data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
  147. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
  148. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  149. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  150. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
  151. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  152. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  153. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  154. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
  155. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
  156. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
  157. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
  158. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  159. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  160. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
  161. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  162. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
  163. data/ext/pg_query/include/postgres/gram.h +1127 -0
  164. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  165. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
  166. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  167. data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
  168. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
  169. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  170. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
  171. data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
  172. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  173. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
  181. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  182. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  183. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
  184. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  185. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
  186. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
  192. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  193. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
  195. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  196. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  203. data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
  204. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  205. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  206. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
  208. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
  214. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
  215. data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
  216. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  224. data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
  225. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  226. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  227. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
  228. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  229. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
  230. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
  231. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  232. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
  233. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  234. data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
  235. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
  236. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
  237. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  238. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
  239. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
  240. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
  241. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
  242. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  245. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  249. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  250. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  251. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  252. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
  253. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  254. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  255. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  256. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  257. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  258. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  259. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  260. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  261. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  264. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  268. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  269. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  270. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  275. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  276. data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
  277. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  278. data/ext/pg_query/include/postgres/postgres.h +579 -0
  279. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  280. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
  281. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  285. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
  289. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
  290. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
  291. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
  292. data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
  293. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  294. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
  295. data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
  296. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
  297. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
  298. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
  299. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
  300. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  301. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  304. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
  305. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
  306. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  307. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
  308. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
  309. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
  310. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
  311. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
  312. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
  313. data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
  314. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
  315. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  316. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  317. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
  318. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
  320. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
  321. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
  323. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
  324. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  325. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  326. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
  329. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
  330. data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
  331. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  332. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
  333. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
  335. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
  336. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
  337. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  338. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  339. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
  340. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  341. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
  342. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
  343. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
  344. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
  345. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
  346. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  347. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
  348. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
  354. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
  355. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
  356. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  357. data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
  358. data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
  359. data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
  360. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
  361. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
  362. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  363. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  364. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
  365. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  367. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
  368. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  369. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  370. data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
  371. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
  372. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
  374. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
  375. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  376. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
  377. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
  378. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
  379. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
  381. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  382. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
  383. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  384. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  385. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
  386. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
  387. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  388. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
  389. data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
  390. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
  391. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
  392. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
  393. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  395. data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
  396. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
  397. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
  398. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  399. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  400. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
  401. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  402. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
  403. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
  405. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
  407. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
  408. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
  409. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
  411. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
  412. data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
  413. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
  414. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
  415. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  416. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  417. data/ext/pg_query/pg_query.c +10 -1
  418. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  419. data/ext/pg_query/pg_query_deparse.c +1 -10635
  420. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  421. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  422. data/ext/pg_query/pg_query_internal.h +1 -1
  423. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  424. data/ext/pg_query/pg_query_normalize.c +1 -1
  425. data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
  426. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  427. data/ext/pg_query/pg_query_parse.c +47 -5
  428. data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
  429. data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
  430. data/ext/pg_query/pg_query_ruby.c +5 -0
  431. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  432. data/ext/pg_query/pg_query_scan.c +1 -1
  433. data/ext/pg_query/pg_query_split.c +3 -3
  434. data/ext/pg_query/postgres_deparse.c +11067 -0
  435. data/ext/pg_query/postgres_deparse.h +9 -0
  436. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  437. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  438. data/ext/pg_query/src_backend_commands_define.c +1 -1
  439. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  440. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  441. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  442. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  443. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  444. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  445. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  446. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  447. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  448. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  449. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  450. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  451. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  452. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  453. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  454. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  455. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  456. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  457. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  458. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  459. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  460. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  461. data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
  462. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  463. data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
  464. data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
  465. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  466. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  467. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  468. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  469. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  470. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  471. data/ext/pg_query/src_common_encnames.c +4 -1
  472. data/ext/pg_query/src_common_hashfn.c +1 -1
  473. data/ext/pg_query/src_common_keywords.c +1 -1
  474. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  475. data/ext/pg_query/src_common_kwlookup.c +1 -1
  476. data/ext/pg_query/src_common_psprintf.c +1 -1
  477. data/ext/pg_query/src_common_stringinfo.c +4 -4
  478. data/ext/pg_query/src_common_wchar.c +9 -8
  479. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  480. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  481. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  482. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  483. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  484. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  485. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  486. data/ext/pg_query/src_port_pg_bitutils.c +79 -5
  487. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  488. data/ext/pg_query/src_port_snprintf.c +6 -10
  489. data/ext/pg_query/src_port_strerror.c +1 -1
  490. data/ext/pg_query/src_port_strlcpy.c +79 -0
  491. data/lib/pg_query/fingerprint.rb +2 -3
  492. data/lib/pg_query/node.rb +16 -11
  493. data/lib/pg_query/parse.rb +1 -1
  494. data/lib/pg_query/pg_query_pb.rb +166 -3191
  495. data/lib/pg_query/treewalker.rb +23 -5
  496. data/lib/pg_query/version.rb +1 -1
  497. metadata +432 -380
  498. data/ext/pg_query/guc-file.c +0 -0
  499. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  500. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  501. data/ext/pg_query/include/commands/variable.h +0 -38
  502. data/ext/pg_query/include/common/ip.h +0 -31
  503. data/ext/pg_query/include/getaddrinfo.h +0 -162
  504. data/ext/pg_query/include/kwlist_d.h +0 -1095
  505. data/ext/pg_query/include/parser/gram.h +0 -1101
  506. data/ext/pg_query/include/pg_config_os.h +0 -8
  507. data/ext/pg_query/include/portability/instr_time.h +0 -256
  508. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  509. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  510. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  511. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  512. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  513. data/ext/pg_query/include/utils/dynahash.h +0 -20
  514. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  515. data/ext/pg_query/include/utils/pidfile.h +0 -56
  516. data/ext/pg_query/include/utils/ps_status.h +0 -25
  517. data/ext/pg_query/include/utils/rls.h +0 -50
  518. data/ext/pg_query/include/utils/tzparser.h +0 -39
  519. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  520. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  521. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  522. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  523. data/ext/pg_query/src_common_pg_prng.c +0 -152
  524. data/ext/pg_query/src_common_string.c +0 -92
  525. data/ext/pg_query/src_port_pgsleep.c +0 -69
  526. data/ext/pg_query/src_port_strnlen.c +0 -39
  527. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  528. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  529. /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
  530. /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
  531. /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
@@ -6,7 +6,7 @@
6
6
  * backend's command progress counters, without ascribing meaning to the
7
7
  * individual fields. See commands/progress.h and system_views.sql for that.
8
8
  *
9
- * Copyright (c) 2001-2022, PostgreSQL Global Development Group
9
+ * Copyright (c) 2001-2023, PostgreSQL Global Development Group
10
10
  *
11
11
  * src/include/utils/backend_progress.h
12
12
  * ----------
@@ -36,6 +36,7 @@ typedef enum ProgressCommandType
36
36
  extern void pgstat_progress_start_command(ProgressCommandType cmdtype,
37
37
  Oid relid);
38
38
  extern void pgstat_progress_update_param(int index, int64 val);
39
+ extern void pgstat_progress_incr_param(int index, int64 incr);
39
40
  extern void pgstat_progress_update_multi_param(int nparam, const int *index,
40
41
  const int64 *val);
41
42
  extern void pgstat_progress_end_command(void);
@@ -2,7 +2,7 @@
2
2
  * backend_status.h
3
3
  * Definitions related to backend status reporting
4
4
  *
5
- * Copyright (c) 2001-2022, PostgreSQL Global Development Group
5
+ * Copyright (c) 2001-2023, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/utils/backend_status.h
8
8
  * ----------
@@ -13,6 +13,7 @@
13
13
  #include "datatype/timestamp.h"
14
14
  #include "libpq/pqcomm.h"
15
15
  #include "miscadmin.h" /* for BackendType */
16
+ #include "storage/backendid.h"
16
17
  #include "utils/backend_progress.h"
17
18
 
18
19
 
@@ -76,6 +77,7 @@ typedef struct PgBackendGSSStatus
76
77
  char gss_princ[NAMEDATALEN]; /* GSSAPI Principal used to auth */
77
78
  bool gss_auth; /* If GSSAPI authentication was used */
78
79
  bool gss_enc; /* If encryption is being used */
80
+ bool gss_delegation; /* If credentials delegated */
79
81
 
80
82
  } PgBackendGSSStatus;
81
83
 
@@ -247,6 +249,13 @@ typedef struct LocalPgBackendStatus
247
249
  */
248
250
  PgBackendStatus backendStatus;
249
251
 
252
+ /*
253
+ * The backend ID. For auxiliary processes, this will be set to a value
254
+ * greater than MaxBackends (since auxiliary processes do not have proper
255
+ * backend IDs).
256
+ */
257
+ BackendId backend_id;
258
+
250
259
  /*
251
260
  * The xid of the current transaction if available, InvalidTransactionId
252
261
  * if not.
@@ -258,6 +267,17 @@ typedef struct LocalPgBackendStatus
258
267
  * not.
259
268
  */
260
269
  TransactionId backend_xmin;
270
+
271
+ /*
272
+ * Number of cached subtransactions in the current session.
273
+ */
274
+ int backend_subxact_count;
275
+
276
+ /*
277
+ * The number of subtransactions in the current session which exceeded the
278
+ * cached subtransaction limit.
279
+ */
280
+ bool backend_subxact_overflowed;
261
281
  } LocalPgBackendStatus;
262
282
 
263
283
 
@@ -313,8 +333,9 @@ extern uint64 pgstat_get_my_query_id(void);
313
333
  * ----------
314
334
  */
315
335
  extern int pgstat_fetch_stat_numbackends(void);
316
- extern PgBackendStatus *pgstat_fetch_stat_beentry(int beid);
317
- extern LocalPgBackendStatus *pgstat_fetch_stat_local_beentry(int beid);
336
+ extern PgBackendStatus *pgstat_get_beentry_by_backend_id(BackendId beid);
337
+ extern LocalPgBackendStatus *pgstat_get_local_beentry_by_backend_id(BackendId beid);
338
+ extern LocalPgBackendStatus *pgstat_get_local_beentry_by_index(int idx);
318
339
  extern char *pgstat_clip_activity(const char *raw_activity);
319
340
 
320
341
 
@@ -4,7 +4,7 @@
4
4
  * Declarations for operations on built-in types.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/builtins.h
@@ -34,6 +34,8 @@ extern int errdomainconstraint(Oid datatypeOid, const char *conname);
34
34
  /* encode.c */
35
35
  extern uint64 hex_encode(const char *src, size_t len, char *dst);
36
36
  extern uint64 hex_decode(const char *src, size_t len, char *dst);
37
+ extern uint64 hex_decode_safe(const char *src, size_t len, char *dst,
38
+ Node *escontext);
37
39
 
38
40
  /* int.c */
39
41
  extern int2vector *buildint2vector(const int16 *int2s, int n);
@@ -44,13 +46,20 @@ extern int namestrcmp(Name name, const char *str);
44
46
 
45
47
  /* numutils.c */
46
48
  extern int16 pg_strtoint16(const char *s);
49
+ extern int16 pg_strtoint16_safe(const char *s, Node *escontext);
47
50
  extern int32 pg_strtoint32(const char *s);
51
+ extern int32 pg_strtoint32_safe(const char *s, Node *escontext);
48
52
  extern int64 pg_strtoint64(const char *s);
53
+ extern int64 pg_strtoint64_safe(const char *s, Node *escontext);
54
+ extern uint32 uint32in_subr(const char *s, char **endloc,
55
+ const char *typname, Node *escontext);
56
+ extern uint64 uint64in_subr(const char *s, char **endloc,
57
+ const char *typname, Node *escontext);
49
58
  extern int pg_itoa(int16 i, char *a);
50
- extern int pg_ultoa_n(uint32 l, char *a);
51
- extern int pg_ulltoa_n(uint64 l, char *a);
52
- extern int pg_ltoa(int32 l, char *a);
53
- extern int pg_lltoa(int64 ll, char *a);
59
+ extern int pg_ultoa_n(uint32 value, char *a);
60
+ extern int pg_ulltoa_n(uint64 value, char *a);
61
+ extern int pg_ltoa(int32 value, char *a);
62
+ extern int pg_lltoa(int64 value, char *a);
54
63
  extern char *pg_ultostr_zeropad(char *str, uint32 value, int32 minwidth);
55
64
  extern char *pg_ultostr(char *str, uint32 value);
56
65
 
@@ -64,7 +73,7 @@ extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive,
64
73
  Oid collation, bool *exact);
65
74
 
66
75
  /* ruleutils.c */
67
- extern PGDLLIMPORT __thread bool quote_all_identifiers;
76
+ extern PGDLLIMPORT __thread bool quote_all_identifiers;
68
77
  extern const char *quote_identifier(const char *ident);
69
78
  extern char *quote_qualified_identifier(const char *qualifier,
70
79
  const char *ident);
@@ -4,7 +4,7 @@
4
4
  * Declarations for BYTEA data type support.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/bytea.h
@@ -10,7 +10,7 @@
10
10
  * guarantee that there can only be one matching row for a key combination.
11
11
  *
12
12
  *
13
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/utils/catcache.h
@@ -4,7 +4,7 @@
4
4
  * Definitions for the SQL "date" and "time" types.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/date.h
@@ -42,21 +42,49 @@ typedef struct
42
42
  #define DATE_IS_NOEND(j) ((j) == DATEVAL_NOEND)
43
43
  #define DATE_NOT_FINITE(j) (DATE_IS_NOBEGIN(j) || DATE_IS_NOEND(j))
44
44
 
45
+ #define MAX_TIME_PRECISION 6
46
+
45
47
  /*
46
- * Macros for fmgr-callable functions.
48
+ * Functions for fmgr-callable functions.
47
49
  *
48
50
  * For TimeADT, we make use of the same support routines as for int64.
49
51
  * Therefore TimeADT is pass-by-reference if and only if int64 is!
50
52
  */
51
- #define MAX_TIME_PRECISION 6
53
+ static inline DateADT
54
+ DatumGetDateADT(Datum X)
55
+ {
56
+ return (DateADT) DatumGetInt32(X);
57
+ }
58
+
59
+ static inline TimeADT
60
+ DatumGetTimeADT(Datum X)
61
+ {
62
+ return (TimeADT) DatumGetInt64(X);
63
+ }
52
64
 
53
- #define DatumGetDateADT(X) ((DateADT) DatumGetInt32(X))
54
- #define DatumGetTimeADT(X) ((TimeADT) DatumGetInt64(X))
55
- #define DatumGetTimeTzADTP(X) ((TimeTzADT *) DatumGetPointer(X))
65
+ static inline TimeTzADT *
66
+ DatumGetTimeTzADTP(Datum X)
67
+ {
68
+ return (TimeTzADT *) DatumGetPointer(X);
69
+ }
70
+
71
+ static inline Datum
72
+ DateADTGetDatum(DateADT X)
73
+ {
74
+ return Int32GetDatum(X);
75
+ }
56
76
 
57
- #define DateADTGetDatum(X) Int32GetDatum(X)
58
- #define TimeADTGetDatum(X) Int64GetDatum(X)
59
- #define TimeTzADTPGetDatum(X) PointerGetDatum(X)
77
+ static inline Datum
78
+ TimeADTGetDatum(TimeADT X)
79
+ {
80
+ return Int64GetDatum(X);
81
+ }
82
+
83
+ static inline Datum
84
+ TimeTzADTPGetDatum(const TimeTzADT *X)
85
+ {
86
+ return PointerGetDatum(X);
87
+ }
60
88
 
61
89
  #define PG_GETARG_DATEADT(n) DatumGetDateADT(PG_GETARG_DATUM(n))
62
90
  #define PG_GETARG_TIMEADT(n) DatumGetTimeADT(PG_GETARG_DATUM(n))
@@ -6,7 +6,7 @@
6
6
  * including date, and time.
7
7
  *
8
8
  *
9
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
10
10
  * Portions Copyright (c) 1994, Regents of the University of California
11
11
  *
12
12
  * src/include/utils/datetime.h
@@ -16,7 +16,6 @@
16
16
  #ifndef DATETIME_H
17
17
  #define DATETIME_H
18
18
 
19
- #include "nodes/nodes.h"
20
19
  #include "utils/timestamp.h"
21
20
 
22
21
  /* this struct is declared in utils/tzparser.h: */
@@ -276,13 +275,30 @@ extern PGDLLIMPORT const int day_tab[2][13];
276
275
  * Datetime input parsing routines (ParseDateTime, DecodeDateTime, etc)
277
276
  * return zero or a positive value on success. On failure, they return
278
277
  * one of these negative code values. DateTimeParseError may be used to
279
- * produce a correct ereport.
278
+ * produce a suitable error report. For some of these codes,
279
+ * DateTimeParseError requires additional information, which is carried
280
+ * in struct DateTimeErrorExtra.
280
281
  */
281
282
  #define DTERR_BAD_FORMAT (-1)
282
283
  #define DTERR_FIELD_OVERFLOW (-2)
283
284
  #define DTERR_MD_FIELD_OVERFLOW (-3) /* triggers hint about DateStyle */
284
285
  #define DTERR_INTERVAL_OVERFLOW (-4)
285
286
  #define DTERR_TZDISP_OVERFLOW (-5)
287
+ #define DTERR_BAD_TIMEZONE (-6)
288
+ #define DTERR_BAD_ZONE_ABBREV (-7)
289
+
290
+ typedef struct DateTimeErrorExtra
291
+ {
292
+ /* Needed for DTERR_BAD_TIMEZONE and DTERR_BAD_ZONE_ABBREV: */
293
+ const char *dtee_timezone; /* incorrect time zone name */
294
+ /* Needed for DTERR_BAD_ZONE_ABBREV: */
295
+ const char *dtee_abbrev; /* relevant time zone abbreviation */
296
+ } DateTimeErrorExtra;
297
+
298
+ /* Result codes for DecodeTimezoneName() */
299
+ #define TZNAME_FIXED_OFFSET 0
300
+ #define TZNAME_DYNTZ 1
301
+ #define TZNAME_ZONE 2
286
302
 
287
303
 
288
304
  extern void GetCurrentDateTime(struct pg_tm *tm);
@@ -293,20 +309,21 @@ extern int date2j(int year, int month, int day);
293
309
  extern int ParseDateTime(const char *timestr, char *workbuf, size_t buflen,
294
310
  char **field, int *ftype,
295
311
  int maxfields, int *numfields);
296
- extern int DecodeDateTime(char **field, int *ftype,
297
- int nf, int *dtype,
298
- struct pg_tm *tm, fsec_t *fsec, int *tzp);
299
- extern int DecodeTimezone(char *str, int *tzp);
300
- extern int DecodeTimeOnly(char **field, int *ftype,
301
- int nf, int *dtype,
302
- struct pg_tm *tm, fsec_t *fsec, int *tzp);
312
+ extern int DecodeDateTime(char **field, int *ftype, int nf,
313
+ int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp,
314
+ DateTimeErrorExtra *extra);
315
+ extern int DecodeTimezone(const char *str, int *tzp);
316
+ extern int DecodeTimeOnly(char **field, int *ftype, int nf,
317
+ int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp,
318
+ DateTimeErrorExtra *extra);
303
319
  extern int DecodeInterval(char **field, int *ftype, int nf, int range,
304
320
  int *dtype, struct pg_itm_in *itm_in);
305
321
  extern int DecodeISO8601Interval(char *str,
306
322
  int *dtype, struct pg_itm_in *itm_in);
307
323
 
308
- extern void DateTimeParseError(int dterr, const char *str,
309
- const char *datatype) pg_attribute_noreturn();
324
+ extern void DateTimeParseError(int dterr, DateTimeErrorExtra *extra,
325
+ const char *str, const char *datatype,
326
+ struct Node *escontext);
310
327
 
311
328
  extern int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp);
312
329
  extern int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp);
@@ -322,14 +339,18 @@ extern void EncodeSpecialTimestamp(Timestamp dt, char *str);
322
339
  extern int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc,
323
340
  struct pg_tm *tm);
324
341
 
325
- extern int DecodeTimezoneAbbrev(int field, char *lowtoken,
326
- int *offset, pg_tz **tz);
327
- extern int DecodeSpecial(int field, char *lowtoken, int *val);
328
- extern int DecodeUnits(int field, char *lowtoken, int *val);
342
+ extern int DecodeTimezoneAbbrev(int field, const char *lowtoken,
343
+ int *ftype, int *offset, pg_tz **tz,
344
+ DateTimeErrorExtra *extra);
345
+ extern int DecodeSpecial(int field, const char *lowtoken, int *val);
346
+ extern int DecodeUnits(int field, const char *lowtoken, int *val);
347
+
348
+ extern int DecodeTimezoneName(const char *tzname, int *offset, pg_tz **tz);
349
+ extern pg_tz *DecodeTimezoneNameToTz(const char *tzname);
329
350
 
330
- extern int j2day(int jd);
351
+ extern int j2day(int date);
331
352
 
332
- extern Node *TemporalSimplify(int32 max_precis, Node *node);
353
+ extern struct Node *TemporalSimplify(int32 max_precis, struct Node *node);
333
354
 
334
355
  extern bool CheckDateTokenTables(void);
335
356
 
@@ -337,8 +358,7 @@ extern TimeZoneAbbrevTable *ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs,
337
358
  int n);
338
359
  extern void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl);
339
360
 
340
- extern void AdjustTimestampForTypmod(Timestamp *time, int32 typmod);
341
- extern bool AdjustTimestampForTypmodError(Timestamp *time, int32 typmod,
342
- bool *error);
361
+ extern bool AdjustTimestampForTypmod(Timestamp *time, int32 typmod,
362
+ struct Node *escontext);
343
363
 
344
364
  #endif /* DATETIME_H */
@@ -8,7 +8,7 @@
8
8
  * of the Datum. (We do it this way because in most situations the caller
9
9
  * can look up the info just once and use it for many per-datum operations.)
10
10
  *
11
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
12
12
  * Portions Copyright (c) 1994, Regents of the University of California
13
13
  *
14
14
  * src/include/utils/datum.h
@@ -3,7 +3,7 @@
3
3
  * dsa.h
4
4
  * Dynamic shared memory areas.
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * IDENTIFICATION
@@ -99,6 +99,10 @@ typedef pg_atomic_uint64 dsa_pointer_atomic;
99
99
  */
100
100
  typedef dsm_handle dsa_handle;
101
101
 
102
+ /* Sentinel value to use for invalid dsa_handles. */
103
+ #define DSA_HANDLE_INVALID ((dsa_handle) DSM_HANDLE_INVALID)
104
+
105
+
102
106
  extern dsa_area *dsa_create(int tranche_id);
103
107
  extern dsa_area *dsa_create_in_place(void *place, size_t size,
104
108
  int tranche_id, dsm_segment *segment);
@@ -4,7 +4,7 @@
4
4
  * POSTGRES error reporting/logging definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/elog.h
@@ -16,6 +16,12 @@
16
16
 
17
17
  #include <setjmp.h>
18
18
 
19
+ #include "lib/stringinfo.h"
20
+
21
+ /* We cannot include nodes.h yet, so forward-declare struct Node */
22
+ struct Node;
23
+
24
+
19
25
  /* Error level codes */
20
26
  #define DEBUG5 10 /* Debugging messages, in categories of
21
27
  * decreasing detail. */
@@ -83,7 +89,7 @@
83
89
  */
84
90
  #if defined(errno) && defined(__linux__)
85
91
  #define pg_prevent_errno_in_scope() int __errno_location pg_attribute_unused()
86
- #elif defined(errno) && (defined(__darwin__) || defined(__freebsd__))
92
+ #elif defined(errno) && (defined(__darwin__) || defined(__FreeBSD__))
87
93
  #define pg_prevent_errno_in_scope() int __error pg_attribute_unused()
88
94
  #else
89
95
  #define pg_prevent_errno_in_scope()
@@ -138,7 +144,7 @@
138
144
  if (__builtin_constant_p(elevel) && (elevel) >= ERROR ? \
139
145
  errstart_cold(elevel, domain) : \
140
146
  errstart(elevel, domain)) \
141
- __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \
147
+ __VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
142
148
  if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \
143
149
  pg_unreachable(); \
144
150
  } while(0)
@@ -148,7 +154,7 @@
148
154
  const int elevel_ = (elevel); \
149
155
  pg_prevent_errno_in_scope(); \
150
156
  if (errstart(elevel_, domain)) \
151
- __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \
157
+ __VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
152
158
  if (elevel_ >= ERROR) \
153
159
  pg_unreachable(); \
154
160
  } while(0)
@@ -233,6 +239,63 @@ extern int getinternalerrposition(void);
233
239
  ereport(elevel, errmsg_internal(__VA_ARGS__))
234
240
 
235
241
 
242
+ /*----------
243
+ * Support for reporting "soft" errors that don't require a full transaction
244
+ * abort to clean up. This is to be used in this way:
245
+ * errsave(context,
246
+ * errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
247
+ * errmsg("invalid input syntax for type %s: \"%s\"",
248
+ * "boolean", in_str),
249
+ * ... other errxxx() fields as needed ...);
250
+ *
251
+ * "context" is a node pointer or NULL, and the remaining auxiliary calls
252
+ * provide the same error details as in ereport(). If context is not a
253
+ * pointer to an ErrorSaveContext node, then errsave(context, ...)
254
+ * behaves identically to ereport(ERROR, ...). If context is a pointer
255
+ * to an ErrorSaveContext node, then the information provided by the
256
+ * auxiliary calls is stored in the context node and control returns
257
+ * normally. The caller of errsave() must then do any required cleanup
258
+ * and return control back to its caller. That caller must check the
259
+ * ErrorSaveContext node to see whether an error occurred before
260
+ * it can trust the function's result to be meaningful.
261
+ *
262
+ * errsave_domain() allows a message domain to be specified; it is
263
+ * precisely analogous to ereport_domain().
264
+ *----------
265
+ */
266
+ #define errsave_domain(context, domain, ...) \
267
+ do { \
268
+ struct Node *context_ = (context); \
269
+ pg_prevent_errno_in_scope(); \
270
+ if (errsave_start(context_, domain)) \
271
+ __VA_ARGS__, errsave_finish(context_, __FILE__, __LINE__, __func__); \
272
+ } while(0)
273
+
274
+ #define errsave(context, ...) \
275
+ errsave_domain(context, TEXTDOMAIN, __VA_ARGS__)
276
+
277
+ /*
278
+ * "ereturn(context, dummy_value, ...);" is exactly the same as
279
+ * "errsave(context, ...); return dummy_value;". This saves a bit
280
+ * of typing in the common case where a function has no cleanup
281
+ * actions to take after reporting a soft error. "dummy_value"
282
+ * can be empty if the function returns void.
283
+ */
284
+ #define ereturn_domain(context, dummy_value, domain, ...) \
285
+ do { \
286
+ errsave_domain(context, domain, __VA_ARGS__); \
287
+ return dummy_value; \
288
+ } while(0)
289
+
290
+ #define ereturn(context, dummy_value, ...) \
291
+ ereturn_domain(context, dummy_value, TEXTDOMAIN, __VA_ARGS__)
292
+
293
+ extern bool errsave_start(struct Node *context, const char *domain);
294
+ extern void errsave_finish(struct Node *context,
295
+ const char *filename, int lineno,
296
+ const char *funcname);
297
+
298
+
236
299
  /* Support for constructing error strings separately from ereport() calls */
237
300
 
238
301
  extern void pre_format_elog_string(int errnumber, const char *domain);
@@ -248,7 +311,7 @@ typedef struct ErrorContextCallback
248
311
  void *arg;
249
312
  } ErrorContextCallback;
250
313
 
251
- extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
314
+ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
252
315
 
253
316
 
254
317
  /*----------
@@ -308,39 +371,47 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
308
371
  * pedantry; we have seen bugs from compilers improperly optimizing code
309
372
  * away when such a variable was not marked. Beware that gcc's -Wclobbered
310
373
  * warnings are just about entirely useless for catching such oversights.
374
+ *
375
+ * Each of these macros accepts an optional argument which can be specified
376
+ * to apply a suffix to the variables declared within the macros. This suffix
377
+ * can be used to avoid the compiler emitting warnings about shadowed
378
+ * variables when compiling with -Wshadow in situations where nested PG_TRY()
379
+ * statements are required. The optional suffix may contain any character
380
+ * that's allowed in a variable name. The suffix, if specified, must be the
381
+ * same within each component macro of the given PG_TRY() statement.
311
382
  *----------
312
383
  */
313
- #define PG_TRY() \
384
+ #define PG_TRY(...) \
314
385
  do { \
315
- sigjmp_buf *_save_exception_stack = PG_exception_stack; \
316
- ErrorContextCallback *_save_context_stack = error_context_stack; \
317
- sigjmp_buf _local_sigjmp_buf; \
318
- bool _do_rethrow = false; \
319
- if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \
386
+ sigjmp_buf *_save_exception_stack##__VA_ARGS__ = PG_exception_stack; \
387
+ ErrorContextCallback *_save_context_stack##__VA_ARGS__ = error_context_stack; \
388
+ sigjmp_buf _local_sigjmp_buf##__VA_ARGS__; \
389
+ bool _do_rethrow##__VA_ARGS__ = false; \
390
+ if (sigsetjmp(_local_sigjmp_buf##__VA_ARGS__, 0) == 0) \
320
391
  { \
321
- PG_exception_stack = &_local_sigjmp_buf
392
+ PG_exception_stack = &_local_sigjmp_buf##__VA_ARGS__
322
393
 
323
- #define PG_CATCH() \
394
+ #define PG_CATCH(...) \
324
395
  } \
325
396
  else \
326
397
  { \
327
- PG_exception_stack = _save_exception_stack; \
328
- error_context_stack = _save_context_stack
398
+ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
399
+ error_context_stack = _save_context_stack##__VA_ARGS__
329
400
 
330
- #define PG_FINALLY() \
401
+ #define PG_FINALLY(...) \
331
402
  } \
332
403
  else \
333
- _do_rethrow = true; \
404
+ _do_rethrow##__VA_ARGS__ = true; \
334
405
  { \
335
- PG_exception_stack = _save_exception_stack; \
336
- error_context_stack = _save_context_stack
406
+ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
407
+ error_context_stack = _save_context_stack##__VA_ARGS__
337
408
 
338
- #define PG_END_TRY() \
409
+ #define PG_END_TRY(...) \
339
410
  } \
340
- if (_do_rethrow) \
411
+ if (_do_rethrow##__VA_ARGS__) \
341
412
  PG_RE_THROW(); \
342
- PG_exception_stack = _save_exception_stack; \
343
- error_context_stack = _save_context_stack; \
413
+ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
414
+ error_context_stack = _save_context_stack##__VA_ARGS__; \
344
415
  } while (0)
345
416
 
346
417
  /*
@@ -355,7 +426,7 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
355
426
  (pg_re_throw(), pg_unreachable())
356
427
  #endif
357
428
 
358
- extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack;
429
+ extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack;
359
430
 
360
431
 
361
432
  /* Stuff that error handlers might want to use */
@@ -412,7 +483,7 @@ extern char *GetErrorContextStack(void);
412
483
 
413
484
  /* Hook for intercepting messages before they are sent to the server log */
414
485
  typedef void (*emit_log_hook_type) (ErrorData *edata);
415
- extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook;
486
+ extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook;
416
487
 
417
488
 
418
489
  /* GUC-configurable parameters */
@@ -439,6 +510,8 @@ extern PGDLLIMPORT bool syslog_split_messages;
439
510
  #define LOG_DESTINATION_JSONLOG 16
440
511
 
441
512
  /* Other exported functions */
513
+ extern void log_status_format(StringInfo buf, const char *format,
514
+ ErrorData *edata);
442
515
  extern void DebugFileOpen(void);
443
516
  extern char *unpack_sql_state(int sql_state);
444
517
  extern bool in_error_recursion_trouble(void);
@@ -456,10 +529,6 @@ extern void write_pipe_chunks(char *data, int len, int dest);
456
529
  extern void write_csvlog(ErrorData *edata);
457
530
  extern void write_jsonlog(ErrorData *edata);
458
531
 
459
- #ifdef HAVE_SYSLOG
460
- extern void set_syslog_parameters(const char *ident, int facility);
461
- #endif
462
-
463
532
  /*
464
533
  * Write errors to stderr (or by equal means when stderr is
465
534
  * not available). Used before ereport/elog can be used
@@ -467,4 +536,10 @@ extern void set_syslog_parameters(const char *ident, int facility);
467
536
  */
468
537
  extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2);
469
538
 
539
+ /*
540
+ * Write a message to STDERR using only async-signal-safe functions. This can
541
+ * be used to safely emit a message from a signal handler.
542
+ */
543
+ extern void write_stderr_signal_safe(const char *fmt);
544
+
470
545
  #endif /* ELOG_H */
@@ -34,7 +34,7 @@
34
34
  * value if they fail partway through.
35
35
  *
36
36
  *
37
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
37
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
38
38
  * Portions Copyright (c) 1994, Regents of the University of California
39
39
  *
40
40
  * src/include/utils/expandeddatum.h
@@ -44,6 +44,8 @@
44
44
  #ifndef EXPANDEDDATUM_H
45
45
  #define EXPANDEDDATUM_H
46
46
 
47
+ #include "varatt.h"
48
+
47
49
  /* Size of an EXTERNAL datum that contains a pointer to an expanded object */
48
50
  #define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded))
49
51
 
@@ -133,8 +135,17 @@ struct ExpandedObjectHeader
133
135
  * (More of these might be worth inlining later.)
134
136
  */
135
137
 
136
- #define EOHPGetRWDatum(eohptr) PointerGetDatum((eohptr)->eoh_rw_ptr)
137
- #define EOHPGetRODatum(eohptr) PointerGetDatum((eohptr)->eoh_ro_ptr)
138
+ static inline Datum
139
+ EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr)
140
+ {
141
+ return PointerGetDatum(eohptr->eoh_rw_ptr);
142
+ }
143
+
144
+ static inline Datum
145
+ EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr)
146
+ {
147
+ return PointerGetDatum(eohptr->eoh_ro_ptr);
148
+ }
138
149
 
139
150
  /* Does the Datum represent a writable expanded object? */
140
151
  #define DatumIsReadWriteExpandedObject(d, isnull, typlen) \
@@ -3,7 +3,7 @@
3
3
  * expandedrecord.h
4
4
  * Declarations for composite expanded objects.
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/utils/expandedrecord.h
@@ -138,10 +138,20 @@ typedef struct ExpandedRecordHeader
138
138
  MemoryContextCallback er_mcb;
139
139
  } ExpandedRecordHeader;
140
140
 
141
- /* fmgr macros for expanded record objects */
141
+ /* fmgr functions and macros for expanded record objects */
142
+ static inline Datum
143
+ ExpandedRecordGetDatum(const ExpandedRecordHeader *erh)
144
+ {
145
+ return EOHPGetRWDatum(&erh->hdr);
146
+ }
147
+
148
+ static inline Datum
149
+ ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh)
150
+ {
151
+ return EOHPGetRODatum(&erh->hdr);
152
+ }
153
+
142
154
  #define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n))
143
- #define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr)
144
- #define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr)
145
155
  #define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x))
146
156
 
147
157
  /* assorted other macros */