pg_query 5.1.0 → 6.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 (490) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +20 -6
  11. data/ext/pg_query/include/pg_query.h +4 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  19. data/ext/pg_query/include/postgres/access/amapi.h +14 -3
  20. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  21. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  26. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  27. data/ext/pg_query/include/postgres/access/genam.h +17 -4
  28. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  29. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  30. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  31. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  32. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  33. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  34. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  35. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  37. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  38. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  41. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  42. data/ext/pg_query/include/postgres/access/table.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tableam.h +35 -25
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  46. data/ext/pg_query/include/postgres/access/transam.h +50 -7
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  51. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  53. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  62. data/ext/pg_query/include/postgres/c.h +32 -37
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  67. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  133. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
  139. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  140. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  142. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  143. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  144. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  145. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  146. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  147. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  148. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  149. data/ext/pg_query/include/postgres/common/int.h +79 -4
  150. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  151. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  152. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  153. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  154. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  155. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  156. data/ext/pg_query/include/postgres/common/string.h +1 -1
  157. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  158. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  159. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  160. data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
  161. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  162. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  163. data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
  164. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  165. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  166. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  167. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  168. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  169. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  170. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  171. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  172. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  173. data/ext/pg_query/include/postgres/gram.h +871 -830
  174. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  175. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  176. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  177. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  178. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  179. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  180. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  181. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  182. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  183. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  184. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  185. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  186. data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
  187. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  188. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  189. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  190. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  191. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  192. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  193. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  194. data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
  195. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  196. data/ext/pg_query/include/postgres/miscadmin.h +72 -52
  197. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  198. data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
  199. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  200. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  201. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  202. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  203. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  205. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  206. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  207. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  209. data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
  210. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  211. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  212. data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
  213. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  214. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  215. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  216. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  217. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  218. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  219. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  220. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  221. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  222. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  223. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  224. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  225. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  226. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  227. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
  229. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  230. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  231. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  232. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  233. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  234. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  235. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  236. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  237. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  238. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  239. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  240. data/ext/pg_query/include/postgres/pg_config.h +53 -45
  241. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  242. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  243. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  244. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  245. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  246. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  247. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  248. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  249. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  250. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  251. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  252. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  253. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  254. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  255. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  256. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  257. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  258. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  259. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  260. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  261. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  262. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  263. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  264. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  265. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  266. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  268. data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
  269. data/ext/pg_query/include/postgres/port.h +39 -4
  270. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  271. data/ext/pg_query/include/postgres/postgres.h +1 -1
  272. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  273. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  274. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  275. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  276. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  277. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  278. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  279. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  280. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  281. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  282. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  283. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  284. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  285. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  286. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  287. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  288. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
  289. data/ext/pg_query/include/postgres/replication/slot.h +45 -5
  290. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  291. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  292. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  293. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  294. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  295. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  296. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  297. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  299. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  300. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  301. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  302. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  305. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  306. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  307. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  308. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  309. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  311. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  312. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  313. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  314. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  315. data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
  316. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  317. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  318. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  319. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  320. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  321. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  322. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  323. data/ext/pg_query/include/postgres/storage/proc.h +48 -26
  324. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  325. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  326. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  327. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  328. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  329. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  330. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  331. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  333. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  334. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  335. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  336. data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
  337. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  338. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  339. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  340. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  341. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  342. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  343. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  344. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  345. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  346. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  347. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  348. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  349. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  350. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  351. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  352. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  353. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  354. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  355. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  356. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  357. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  358. data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
  359. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  361. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  363. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  364. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  365. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  366. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  367. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  368. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  369. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  370. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  372. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  373. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  374. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  375. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  376. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  377. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  378. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  379. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  381. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  382. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  383. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  384. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  385. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  387. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
  388. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  389. data/ext/pg_query/include/postgres/utils/portal.h +10 -10
  390. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  391. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  393. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  394. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  396. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  397. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  399. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  400. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  401. data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
  402. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  403. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  404. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  405. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  406. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  407. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  408. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  409. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  410. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  411. data/ext/pg_query/include/postgres/varatt.h +1 -1
  412. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  413. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  414. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  415. data/ext/pg_query/pg_query_normalize.c +42 -1
  416. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  417. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  418. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  419. data/ext/pg_query/pg_query_scan.c +1 -1
  420. data/ext/pg_query/postgres_deparse.c +601 -172
  421. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  422. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  423. data/ext/pg_query/src_backend_commands_define.c +2 -3
  424. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  425. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  426. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  427. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  428. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  429. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  430. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  431. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  432. data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
  433. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  434. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  435. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  436. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  437. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  438. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  439. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  440. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  441. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  442. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  443. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  444. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  445. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  446. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  447. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  448. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  449. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  450. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  451. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  452. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  453. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  454. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  455. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  456. data/ext/pg_query/src_common_encnames.c +43 -44
  457. data/ext/pg_query/src_common_hashfn.c +1 -1
  458. data/ext/pg_query/src_common_keywords.c +1 -1
  459. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  460. data/ext/pg_query/src_common_kwlookup.c +1 -1
  461. data/ext/pg_query/src_common_psprintf.c +3 -3
  462. data/ext/pg_query/src_common_stringinfo.c +18 -1
  463. data/ext/pg_query/src_common_wchar.c +92 -109
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  466. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  467. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  468. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  469. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  470. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  471. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  472. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  473. data/ext/pg_query/src_port_snprintf.c +15 -18
  474. data/ext/pg_query/src_port_strerror.c +1 -3
  475. data/ext/pg_query/src_port_strlcpy.c +1 -1
  476. data/lib/pg_query/fingerprint.rb +3 -5
  477. data/lib/pg_query/param_refs.rb +2 -2
  478. data/lib/pg_query/parse.rb +5 -7
  479. data/lib/pg_query/parse_error.rb +1 -0
  480. data/lib/pg_query/pg_query_pb.rb +27 -25
  481. data/lib/pg_query/scan.rb +1 -0
  482. data/lib/pg_query/treewalker.rb +38 -15
  483. data/lib/pg_query/truncate.rb +18 -20
  484. data/lib/pg_query/version.rb +1 -1
  485. metadata +31 -82
  486. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  487. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  488. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  489. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
  490. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -24,12 +24,14 @@
24
24
  * - pg_re_throw
25
25
  * - EmitErrorReport
26
26
  * - emit_log_hook
27
+ * - saved_timeval_set
28
+ * - formatted_log_time
27
29
  * - send_message_to_server_log
28
30
  * - send_message_to_frontend
29
31
  * - pgwin32_dispatch_queued_signals
30
32
  * - set_stack_entry_location
31
33
  * - matches_backtrace_functions
32
- * - backtrace_symbol_list
34
+ * - backtrace_function_list
33
35
  * - set_backtrace
34
36
  * - FreeErrorDataContents
35
37
  * - geterrcode
@@ -96,7 +98,7 @@
96
98
  * overflow.)
97
99
  *
98
100
  *
99
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
101
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
100
102
  * Portions Copyright (c) 1994, Regents of the University of California
101
103
  *
102
104
  *
@@ -119,13 +121,12 @@
119
121
  #include <execinfo.h>
120
122
  #endif
121
123
 
122
- #include "access/transam.h"
123
124
  #include "access/xact.h"
124
125
  #include "libpq/libpq.h"
125
126
  #include "libpq/pqformat.h"
126
127
  #include "mb/pg_wchar.h"
127
- #include "nodes/miscnodes.h"
128
128
  #include "miscadmin.h"
129
+ #include "nodes/miscnodes.h"
129
130
  #include "pgstat.h"
130
131
  #include "postmaster/bgworker.h"
131
132
  #include "postmaster/postmaster.h"
@@ -171,8 +172,8 @@ __thread emit_log_hook_type emit_log_hook = NULL;
171
172
 
172
173
 
173
174
 
174
- /* Processed form of backtrace_symbols GUC */
175
- static __thread char *backtrace_symbol_list;
175
+ /* Processed form of backtrace_functions GUC */
176
+ static __thread char *backtrace_function_list;
176
177
 
177
178
 
178
179
  #ifdef HAVE_SYSLOG
@@ -215,13 +216,15 @@ static __thread int recursion_depth = 0;
215
216
 
216
217
  /*
217
218
  * Saved timeval and buffers for formatted timestamps that might be used by
218
- * both log_line_prefix and csv logs.
219
+ * log_line_prefix, csv logs and JSON logs.
219
220
  */
220
221
 
222
+ static __thread bool saved_timeval_set = false;
221
223
 
222
224
 
223
225
  #define FORMATTED_TS_LEN 128
224
226
 
227
+ static __thread char formatted_log_time[FORMATTED_TS_LEN];
225
228
 
226
229
 
227
230
 
@@ -855,13 +858,13 @@ matches_backtrace_functions(const char *funcname)
855
858
  {
856
859
  const char *p;
857
860
 
858
- if (!backtrace_symbol_list || funcname == NULL || funcname[0] == '\0')
861
+ if (!backtrace_function_list || funcname == NULL || funcname[0] == '\0')
859
862
  return false;
860
863
 
861
- p = backtrace_symbol_list;
864
+ p = backtrace_function_list;
862
865
  for (;;)
863
866
  {
864
- if (*p == '\0') /* end of backtrace_symbol_list */
867
+ if (*p == '\0') /* end of backtrace_function_list */
865
868
  break;
866
869
 
867
870
  if (strcmp(funcname, p) == 0)
@@ -903,8 +906,6 @@ errcode(int sqlerrcode)
903
906
  */
904
907
  #ifdef EROFS
905
908
  #endif
906
- #if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */
907
- #endif
908
909
 
909
910
  /*
910
911
  * errcode_for_socket_access --- add SQLSTATE error code to the current error
@@ -1365,6 +1366,14 @@ geterrcode(void)
1365
1366
  return edata->sqlerrcode;
1366
1367
  }
1367
1368
 
1369
+ /*
1370
+ * geterrlevel --- return the currently set error level
1371
+ *
1372
+ * This is only intended for use in error callback subroutines, since there
1373
+ * is no other place outside elog.c where the concept is meaningful.
1374
+ */
1375
+
1376
+
1368
1377
  /*
1369
1378
  * geterrposition --- return the currently set error position (0 if none)
1370
1379
  *
@@ -1443,6 +1452,14 @@ EmitErrorReport(void)
1443
1452
  CHECK_STACK_DEPTH();
1444
1453
  oldcontext = MemoryContextSwitchTo(edata->assoc_context);
1445
1454
 
1455
+ /*
1456
+ * Reset the formatted timestamp fields before emitting any logs. This
1457
+ * includes all the log destinations and emit_log_hook, as the latter
1458
+ * could use log_line_prefix or the formatted timestamps.
1459
+ */
1460
+ saved_timeval_set = false;
1461
+ formatted_log_time[0] = '\0';
1462
+
1446
1463
  /*
1447
1464
  * Call hook before sending message to log. The hook function is allowed
1448
1465
  * to turn off edata->output_to_server, so we must recheck that afterward.
@@ -1502,7 +1519,21 @@ CopyErrorData(void)
1502
1519
  newedata = (ErrorData *) palloc(sizeof(ErrorData));
1503
1520
  memcpy(newedata, edata, sizeof(ErrorData));
1504
1521
 
1505
- /* Make copies of separately-allocated fields */
1522
+ /*
1523
+ * Make copies of separately-allocated strings. Note that we copy even
1524
+ * theoretically-constant strings such as filename. This is because those
1525
+ * could point into JIT-created code segments that might get unloaded at
1526
+ * transaction cleanup. In some cases we need the copied ErrorData to
1527
+ * survive transaction boundaries, so we'd better copy those strings too.
1528
+ */
1529
+ if (newedata->filename)
1530
+ newedata->filename = pstrdup(newedata->filename);
1531
+ if (newedata->funcname)
1532
+ newedata->funcname = pstrdup(newedata->funcname);
1533
+ if (newedata->domain)
1534
+ newedata->domain = pstrdup(newedata->domain);
1535
+ if (newedata->context_domain)
1536
+ newedata->context_domain = pstrdup(newedata->context_domain);
1506
1537
  if (newedata->message)
1507
1538
  newedata->message = pstrdup(newedata->message);
1508
1539
  if (newedata->detail)
@@ -1515,6 +1546,8 @@ CopyErrorData(void)
1515
1546
  newedata->context = pstrdup(newedata->context);
1516
1547
  if (newedata->backtrace)
1517
1548
  newedata->backtrace = pstrdup(newedata->backtrace);
1549
+ if (newedata->message_id)
1550
+ newedata->message_id = pstrdup(newedata->message_id);
1518
1551
  if (newedata->schema_name)
1519
1552
  newedata->schema_name = pstrdup(newedata->schema_name);
1520
1553
  if (newedata->table_name)
@@ -1596,7 +1629,7 @@ FlushErrorState(void)
1596
1629
  errordata_stack_depth = -1;
1597
1630
  recursion_depth = 0;
1598
1631
  /* Delete all data in ErrorContext */
1599
- MemoryContextResetAndDeleteChildren(ErrorContext);
1632
+ MemoryContextReset(ErrorContext);
1600
1633
  }
1601
1634
 
1602
1635
  /*
@@ -1906,34 +1939,6 @@ write_stderr(const char *fmt,...)
1906
1939
  }
1907
1940
 
1908
1941
 
1909
-
1910
-
1911
- /*
1912
- * Write a message to STDERR using only async-signal-safe functions. This can
1913
- * be used to safely emit a message from a signal handler.
1914
- *
1915
- * TODO: It is likely possible to safely do a limited amount of string
1916
- * interpolation (e.g., %s and %d), but that is not presently supported.
1917
- */
1918
-
1919
-
1920
-
1921
- /*
1922
- * Adjust the level of a recovery-related message per trace_recovery_messages.
1923
- *
1924
- * The argument is the default log level of the message, eg, DEBUG2. (This
1925
- * should only be applied to DEBUGn log messages, otherwise it's a no-op.)
1926
- * If the level is >= trace_recovery_messages, we return LOG, causing the
1927
- * message to be logged unconditionally (for most settings of
1928
- * log_min_messages). Otherwise, we return the argument unchanged.
1929
- * The message will then be shown based on the setting of log_min_messages.
1930
- *
1931
- * Intention is to keep this for at least the whole of the 9.0 production
1932
- * release, so we can more easily diagnose production problems in the field.
1933
- * It should go away eventually, though, because it's an ugly and
1934
- * hard-to-explain kluge.
1935
- */
1936
-
1937
1942
  #ifdef WIN32
1938
1943
  __thread volatile int pg_signal_queue;
1939
1944
 
@@ -9,7 +9,7 @@
9
9
  * fmgr.c
10
10
  * The Postgres function manager.
11
11
  *
12
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
13
13
  * Portions Copyright (c) 1994, Regents of the University of California
14
14
  *
15
15
  *
@@ -210,7 +210,9 @@ struct fmgr_security_definer_cache
210
210
  {
211
211
  FmgrInfo flinfo; /* lookup info for target function */
212
212
  Oid userid; /* userid to set, or InvalidOid */
213
- ArrayType *proconfig; /* GUC values to set, or NULL */
213
+ List *configNames; /* GUC names to set, or NIL */
214
+ List *configHandles; /* GUC handles to set, or NIL */
215
+ List *configValues; /* GUC values to set, or NIL */
214
216
  Datum arg; /* passthrough argument for plugin modules */
215
217
  };
216
218
 
@@ -13,7 +13,7 @@
13
13
  * globals.c
14
14
  * global variable declarations
15
15
  *
16
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
16
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
17
17
  * Portions Copyright (c) 1994, Regents of the University of California
18
18
  *
19
19
  *
@@ -32,7 +32,7 @@
32
32
  #include "libpq/libpq-be.h"
33
33
  #include "libpq/pqcomm.h"
34
34
  #include "miscadmin.h"
35
- #include "storage/backendid.h"
35
+ #include "storage/procnumber.h"
36
36
 
37
37
 
38
38
 
@@ -48,6 +48,7 @@ __thread volatile sig_atomic_t InterruptPending = false;
48
48
 
49
49
 
50
50
 
51
+
51
52
  __thread volatile uint32 InterruptHoldoffCount = 0;
52
53
 
53
54
  __thread volatile uint32 QueryCancelHoldoffCount = 0;
@@ -62,6 +63,7 @@ __thread volatile uint32 CritSectionCount = 0;
62
63
 
63
64
 
64
65
 
66
+
65
67
  /*
66
68
  * MyLatch points to the latch that should be used for signal handling by the
67
69
  * current process. It will either point to a process local latch if the
@@ -104,6 +106,8 @@ __thread volatile uint32 CritSectionCount = 0;
104
106
 
105
107
 
106
108
 
109
+
110
+
107
111
  /*
108
112
  * DatabasePath is the path (relative to DataDir) of my database's
109
113
  * primary directory, ie, its directory in the default tablespace.
@@ -127,7 +131,6 @@ __thread volatile uint32 CritSectionCount = 0;
127
131
 
128
132
 
129
133
 
130
-
131
134
  __thread bool ExitOnAnyError = false;
132
135
 
133
136
 
@@ -169,3 +172,12 @@ __thread bool ExitOnAnyError = false;
169
172
 
170
173
  /* working state for vacuum */
171
174
 
175
+
176
+ /* configurable SLRU buffer sizes */
177
+
178
+
179
+
180
+
181
+
182
+
183
+
@@ -47,7 +47,7 @@
47
47
  * the result is validly encoded according to the destination encoding.
48
48
  *
49
49
  *
50
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
50
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
51
51
  * Portions Copyright (c) 1994, Regents of the University of California
52
52
  *
53
53
  *
@@ -61,9 +61,8 @@
61
61
  #include "access/xact.h"
62
62
  #include "catalog/namespace.h"
63
63
  #include "mb/pg_wchar.h"
64
- #include "utils/builtins.h"
64
+ #include "utils/fmgrprotos.h"
65
65
  #include "utils/memutils.h"
66
- #include "utils/syscache.h"
67
66
  #include "varatt.h"
68
67
 
69
68
  /*
@@ -496,24 +495,18 @@ static bool
496
495
  raw_pg_bind_textdomain_codeset(const char *domainname, int encoding)
497
496
  {
498
497
  bool elog_ok = (CurrentMemoryContext != NULL);
499
- int i;
500
498
 
501
- for (i = 0; pg_enc2gettext_tbl[i].name != NULL; i++)
502
- {
503
- if (pg_enc2gettext_tbl[i].encoding == encoding)
504
- {
505
- if (bind_textdomain_codeset(domainname,
506
- pg_enc2gettext_tbl[i].name) != NULL)
507
- return true;
499
+ if (!PG_VALID_ENCODING(encoding) || pg_enc2gettext_tbl[encoding] == NULL)
500
+ return false;
508
501
 
509
- if (elog_ok)
510
- elog(LOG, "bind_textdomain_codeset failed");
511
- else
512
- write_stderr("bind_textdomain_codeset failed");
502
+ if (bind_textdomain_codeset(domainname,
503
+ pg_enc2gettext_tbl[encoding]) != NULL)
504
+ return true;
513
505
 
514
- break;
515
- }
516
- }
506
+ if (elog_ok)
507
+ elog(LOG, "bind_textdomain_codeset failed");
508
+ else
509
+ write_stderr("bind_textdomain_codeset failed");
517
510
 
518
511
  return false;
519
512
  }
@@ -18,7 +18,7 @@
18
18
  * their fields are intended to be constant, some fields change at runtime.
19
19
  *
20
20
  *
21
- * Copyright (c) 2000-2023, PostgreSQL Global Development Group
21
+ * Copyright (c) 2000-2024, PostgreSQL Global Development Group
22
22
  * Written by Peter Eisentraut <peter_e@gmx.net>.
23
23
  *
24
24
  * IDENTIFICATION
@@ -36,6 +36,7 @@
36
36
 
37
37
  #include "access/commit_ts.h"
38
38
  #include "access/gin.h"
39
+ #include "access/slru.h"
39
40
  #include "access/toast_compression.h"
40
41
  #include "access/twophase.h"
41
42
  #include "access/xlog_internal.h"
@@ -45,10 +46,12 @@
45
46
  #include "catalog/namespace.h"
46
47
  #include "catalog/storage.h"
47
48
  #include "commands/async.h"
49
+ #include "commands/event_trigger.h"
48
50
  #include "commands/tablespace.h"
49
51
  #include "commands/trigger.h"
50
52
  #include "commands/user.h"
51
53
  #include "commands/vacuum.h"
54
+ #include "common/file_utils.h"
52
55
  #include "common/scram-common.h"
53
56
  #include "jit/jit.h"
54
57
  #include "libpq/auth.h"
@@ -69,9 +72,11 @@
69
72
  #include "postmaster/postmaster.h"
70
73
  #include "postmaster/startup.h"
71
74
  #include "postmaster/syslogger.h"
75
+ #include "postmaster/walsummarizer.h"
72
76
  #include "postmaster/walwriter.h"
73
77
  #include "replication/logicallauncher.h"
74
78
  #include "replication/slot.h"
79
+ #include "replication/slotsync.h"
75
80
  #include "replication/syncrep.h"
76
81
  #include "storage/bufmgr.h"
77
82
  #include "storage/large_object.h"
@@ -85,11 +90,11 @@
85
90
  #include "utils/float.h"
86
91
  #include "utils/guc_hooks.h"
87
92
  #include "utils/guc_tables.h"
93
+ #include "utils/inval.h"
88
94
  #include "utils/memutils.h"
89
95
  #include "utils/pg_locale.h"
90
- #include "utils/portal.h"
96
+ #include "utils/plancache.h"
91
97
  #include "utils/ps_status.h"
92
- #include "utils/inval.h"
93
98
  #include "utils/xml.h"
94
99
 
95
100
  /* This value is normally passed in from the Makefile */
@@ -99,6 +104,7 @@
99
104
 
100
105
  /* XXX these should appear in other modules' header files */
101
106
  extern bool Log_disconnections;
107
+ extern bool Trace_connection_negotiation;
102
108
  extern int CommitDelay;
103
109
  extern int CommitSiblings;
104
110
  extern char *default_tablespace;
@@ -223,6 +229,8 @@ StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2),
223
229
 
224
230
 
225
231
 
232
+
233
+
226
234
  StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2),
227
235
  "array length mismatch");
228
236
 
@@ -250,7 +258,7 @@ StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2)
250
258
  extern const struct config_enum_entry wal_level_options[];
251
259
  extern const struct config_enum_entry archive_mode_options[];
252
260
  extern const struct config_enum_entry recovery_target_action_options[];
253
- extern const struct config_enum_entry sync_method_options[];
261
+ extern const struct config_enum_entry wal_sync_method_options[];
254
262
  extern const struct config_enum_entry dynamic_shared_memory_options[];
255
263
 
256
264
  /*
@@ -265,6 +273,7 @@ extern const struct config_enum_entry dynamic_shared_memory_options[];
265
273
 
266
274
 
267
275
 
276
+
268
277
  /* this is sort of all three above
269
278
  * together */
270
279
 
@@ -292,7 +301,6 @@ __thread int log_min_messages = WARNING;
292
301
 
293
302
 
294
303
 
295
-
296
304
  __thread char *backtrace_functions;
297
305
 
298
306
 
@@ -328,6 +336,7 @@ __thread char *backtrace_functions;
328
336
 
329
337
 
330
338
 
339
+
331
340
  /*
332
341
  * These variables are all dummies that don't do anything, except in some
333
342
  * cases provide the value for SHOW to display. The real state is elsewhere
@@ -342,6 +351,7 @@ __thread char *backtrace_functions;
342
351
 
343
352
 
344
353
 
354
+
345
355
  #ifdef HAVE_SYSLOG
346
356
  #define DEFAULT_SYSLOG_FACILITY LOG_LOCAL0
347
357
  #else
@@ -410,7 +420,7 @@ StaticAssertDecl(lengthof(GucSource_Names) == (PGC_S_SESSION + 1),
410
420
  */
411
421
 
412
422
 
413
- StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 2),
423
+ StaticAssertDecl(lengthof(config_group_names) == (DEVELOPER_OPTIONS + 1),
414
424
  "array length mismatch");
415
425
 
416
426
  /*
@@ -17,7 +17,7 @@
17
17
  * operations such as pfree() and repalloc() to work correctly on a memory
18
18
  * chunk that was allocated by palloc_aligned().
19
19
  *
20
- * Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
20
+ * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group
21
21
  *
22
22
  * IDENTIFICATION
23
23
  * src/backend/utils/mmgr/alignedalloc.c
@@ -66,7 +66,7 @@ AlignedAllocFree(void *pointer)
66
66
  * memory will be uninitialized.
67
67
  */
68
68
  void *
69
- AlignedAllocRealloc(void *pointer, Size size)
69
+ AlignedAllocRealloc(void *pointer, Size size, int flags)
70
70
  {
71
71
  MemoryChunk *redirchunk = PointerGetMemoryChunk(pointer);
72
72
  Size alignto;
@@ -106,14 +106,17 @@ AlignedAllocRealloc(void *pointer, Size size)
106
106
  #endif
107
107
 
108
108
  ctx = GetMemoryChunkContext(unaligned);
109
- newptr = MemoryContextAllocAligned(ctx, size, alignto, 0);
109
+ newptr = MemoryContextAllocAligned(ctx, size, alignto, flags);
110
110
 
111
111
  /*
112
112
  * We may memcpy beyond the end of the original allocation request size,
113
113
  * so we must mark the entire allocation as defined.
114
114
  */
115
- VALGRIND_MAKE_MEM_DEFINED(pointer, old_size);
116
- memcpy(newptr, pointer, Min(size, old_size));
115
+ if (likely(newptr != NULL))
116
+ {
117
+ VALGRIND_MAKE_MEM_DEFINED(pointer, old_size);
118
+ memcpy(newptr, pointer, Min(size, old_size));
119
+ }
117
120
  pfree(unaligned);
118
121
 
119
122
  return newptr;