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
@@ -3,7 +3,7 @@
3
3
  * simd.h
4
4
  * Support for platform-specific vector operations.
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/port/simd.h
@@ -79,6 +79,7 @@ static inline bool vector8_has_le(const Vector8 v, const uint8 c);
79
79
  static inline bool vector8_is_highbit_set(const Vector8 v);
80
80
  #ifndef USE_NO_SIMD
81
81
  static inline bool vector32_is_highbit_set(const Vector32 v);
82
+ static inline uint32 vector8_highbit_mask(const Vector8 v);
82
83
  #endif
83
84
 
84
85
  /* arithmetic operations */
@@ -96,6 +97,7 @@ static inline Vector8 vector8_ssub(const Vector8 v1, const Vector8 v2);
96
97
  */
97
98
  #ifndef USE_NO_SIMD
98
99
  static inline Vector8 vector8_eq(const Vector8 v1, const Vector8 v2);
100
+ static inline Vector8 vector8_min(const Vector8 v1, const Vector8 v2);
99
101
  static inline Vector32 vector32_eq(const Vector32 v1, const Vector32 v2);
100
102
  #endif
101
103
 
@@ -299,6 +301,36 @@ vector32_is_highbit_set(const Vector32 v)
299
301
  }
300
302
  #endif /* ! USE_NO_SIMD */
301
303
 
304
+ /*
305
+ * Return a bitmask formed from the high-bit of each element.
306
+ */
307
+ #ifndef USE_NO_SIMD
308
+ static inline uint32
309
+ vector8_highbit_mask(const Vector8 v)
310
+ {
311
+ #ifdef USE_SSE2
312
+ return (uint32) _mm_movemask_epi8(v);
313
+ #elif defined(USE_NEON)
314
+ /*
315
+ * Note: It would be faster to use vget_lane_u64 and vshrn_n_u16, but that
316
+ * returns a uint64, making it inconvenient to combine mask values from
317
+ * multiple vectors.
318
+ */
319
+ static const uint8 mask[16] = {
320
+ 1 << 0, 1 << 1, 1 << 2, 1 << 3,
321
+ 1 << 4, 1 << 5, 1 << 6, 1 << 7,
322
+ 1 << 0, 1 << 1, 1 << 2, 1 << 3,
323
+ 1 << 4, 1 << 5, 1 << 6, 1 << 7,
324
+ };
325
+
326
+ uint8x16_t masked = vandq_u8(vld1q_u8(mask), (uint8x16_t) vshrq_n_s8((int8x16_t) v, 7));
327
+ uint8x16_t maskedhi = vextq_u8(masked, masked, 8);
328
+
329
+ return (uint32) vaddvq_u16((uint16x8_t) vzip1q_u8(masked, maskedhi));
330
+ #endif
331
+ }
332
+ #endif /* ! USE_NO_SIMD */
333
+
302
334
  /*
303
335
  * Return the bitwise OR of the inputs
304
336
  */
@@ -372,4 +404,19 @@ vector32_eq(const Vector32 v1, const Vector32 v2)
372
404
  }
373
405
  #endif /* ! USE_NO_SIMD */
374
406
 
407
+ /*
408
+ * Given two vectors, return a vector with the minimum element of each.
409
+ */
410
+ #ifndef USE_NO_SIMD
411
+ static inline Vector8
412
+ vector8_min(const Vector8 v1, const Vector8 v2)
413
+ {
414
+ #ifdef USE_SSE2
415
+ return _mm_min_epu8(v1, v2);
416
+ #elif defined(USE_NEON)
417
+ return vminq_u8(v1, v2);
418
+ #endif
419
+ }
420
+ #endif /* ! USE_NO_SIMD */
421
+
375
422
  #endif /* SIMD_H */
@@ -23,4 +23,12 @@
23
23
  #define ERROR PGERROR
24
24
  #endif
25
25
 
26
+ /*
27
+ * We don't use the Windows gai_strerror[A] function because it is not
28
+ * thread-safe. We define our own in src/port/win32gai_strerror.c.
29
+ */
30
+ #undef gai_strerror
31
+
32
+ extern const char *gai_strerror(int ecode);
33
+
26
34
  #endif /* WIN32_SYS_SOCKET_H */
@@ -6,7 +6,7 @@
6
6
  * Note this is read in MinGW as well as native Windows builds,
7
7
  * but not in Cygwin builds.
8
8
  *
9
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
10
10
  * Portions Copyright (c) 1994, Regents of the University of California
11
11
  *
12
12
  * src/include/port/win32_port.h
@@ -79,19 +79,9 @@
79
79
  /* Must be here to avoid conflicting with prototype in windows.h */
80
80
  #define mkdir(a,b) mkdir(a)
81
81
 
82
- #define ftruncate(a,b) chsize(a,b)
83
-
84
82
  /* Windows doesn't have fsync() as such, use _commit() */
85
83
  #define fsync(fd) _commit(fd)
86
84
 
87
- /*
88
- * For historical reasons, we allow setting wal_sync_method to
89
- * fsync_writethrough on Windows, even though it's really identical to fsync
90
- * (both code paths wind up at _commit()).
91
- */
92
- #define HAVE_FSYNC_WRITETHROUGH
93
- #define FSYNC_WRITETHROUGH_IS_FSYNC
94
-
95
85
  #define USES_WINSOCK
96
86
 
97
87
  /*
@@ -455,8 +445,6 @@ extern int _pglstat64(const char *name, struct stat *buf);
455
445
  #define strcoll_l _strcoll_l
456
446
  #define strxfrm_l _strxfrm_l
457
447
  #define wcscoll_l _wcscoll_l
458
- #define wcstombs_l _wcstombs_l
459
- #define mbstowcs_l _mbstowcs_l
460
448
 
461
449
  /*
462
450
  * Versions of libintl >= 0.18? try to replace setlocale() with a macro
@@ -3,7 +3,7 @@
3
3
  * port.h
4
4
  * Header for src/port/ compatibility functions.
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/port.h
@@ -53,6 +53,7 @@ extern char *first_path_var_separator(const char *pathlist);
53
53
  extern void join_path_components(char *ret_path,
54
54
  const char *head, const char *tail);
55
55
  extern void canonicalize_path(char *path);
56
+ extern void canonicalize_path_enc(char *path, int encoding);
56
57
  extern void make_native_path(char *filename);
57
58
  extern void cleanup_path(char *path);
58
59
  extern bool path_contains_parent_reference(const char *path);
@@ -137,7 +138,7 @@ extern int validate_exec(const char *path);
137
138
  extern int find_my_exec(const char *argv0, char *retpath);
138
139
  extern int find_other_exec(const char *argv0, const char *target,
139
140
  const char *versionstr, char *retpath);
140
- extern char *pipe_read_line(char *cmd, char *line, int maxsize);
141
+ extern char *pipe_read_line(char *cmd);
141
142
 
142
143
  /* Doesn't belong here, but this is used with find_other_exec(), so... */
143
144
  #define PG_BACKEND_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n"
@@ -306,6 +307,33 @@ extern bool rmtree(const char *path, bool rmtopdir);
306
307
 
307
308
  #if defined(WIN32) && !defined(__CYGWIN__)
308
309
 
310
+ /*
311
+ * We want the 64-bit variant of lseek().
312
+ *
313
+ * For Visual Studio, this must be after <io.h> to avoid messing up its
314
+ * lseek() and _lseeki64() function declarations.
315
+ *
316
+ * For MinGW there is already a macro, so we have to undefine it (depending on
317
+ * _FILE_OFFSET_BITS, it may point at its own lseek64, but we don't want to
318
+ * count on that being set).
319
+ */
320
+ #undef lseek
321
+ #define lseek(a,b,c) _lseeki64((a),(b),(c))
322
+
323
+ /*
324
+ * We want the 64-bit variant of chsize(). It sets errno and also returns it,
325
+ * so convert non-zero result to -1 to match POSIX.
326
+ *
327
+ * Prevent MinGW from declaring functions, and undefine its macro before we
328
+ * define our own.
329
+ */
330
+ #ifndef _MSC_VER
331
+ #define FTRUNCATE_DEFINED
332
+ #include <unistd.h>
333
+ #undef ftruncate
334
+ #endif
335
+ #define ftruncate(a,b) (_chsize_s((a),(b)) == 0 ? 0 : -1)
336
+
309
337
  /*
310
338
  * open() and fopen() replacements to allow deletion of open files and
311
339
  * passing of other special options.
@@ -432,12 +460,16 @@ extern size_t strlcpy(char *dst, const char *src, size_t siz);
432
460
  extern size_t strnlen(const char *str, size_t maxlen);
433
461
  #endif
434
462
 
435
- /* thread.c */
463
+ /* port/user.c */
436
464
  #ifndef WIN32
437
465
  extern bool pg_get_user_name(uid_t user_id, char *buffer, size_t buflen);
438
466
  extern bool pg_get_user_home_dir(uid_t user_id, char *buffer, size_t buflen);
439
467
  #endif
440
468
 
469
+ /*
470
+ * Callers should use the qsort() macro defined below instead of calling
471
+ * pg_qsort() directly.
472
+ */
441
473
  extern void pg_qsort(void *base, size_t nel, size_t elsize,
442
474
  int (*cmp) (const void *, const void *));
443
475
  extern int pg_qsort_strcmp(const void *a, const void *b);
@@ -484,7 +516,10 @@ extern int pg_check_dir(const char *dir);
484
516
  /* port/pgmkdirp.c */
485
517
  extern int pg_mkdir_p(char *path, int omode);
486
518
 
487
- /* port/pqsignal.c */
519
+ /* port/pqsignal.c (see also interfaces/libpq/legacy-pqsignal.c) */
520
+ #ifdef FRONTEND
521
+ #define pqsignal pqsignal_fe
522
+ #endif
488
523
  typedef void (*pqsigfunc) (SIGNAL_ARGS);
489
524
  extern pqsigfunc pqsignal(int signo, pqsigfunc func);
490
525
 
@@ -47,7 +47,7 @@
47
47
  * Beware of multiple evaluations of the macro arguments.
48
48
  *
49
49
  *
50
- * Copyright (c) 2001-2023, PostgreSQL Global Development Group
50
+ * Copyright (c) 2001-2024, PostgreSQL Global Development Group
51
51
  *
52
52
  * src/include/portability/instr_time.h
53
53
  *
@@ -7,7 +7,7 @@
7
7
  * Client-side code should include postgres_fe.h instead.
8
8
  *
9
9
  *
10
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1995, Regents of the University of California
12
12
  *
13
13
  * src/include/postgres.h
@@ -4,7 +4,7 @@
4
4
  * header file for integrated autovacuum daemon
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/postmaster/autovacuum.h
@@ -22,7 +22,7 @@
22
22
  */
23
23
  typedef enum
24
24
  {
25
- AVW_BRINSummarizeRange
25
+ AVW_BRINSummarizeRange,
26
26
  } AutoVacuumWorkItemType;
27
27
 
28
28
 
@@ -49,26 +49,15 @@ extern PGDLLIMPORT int Log_autovacuum_min_duration;
49
49
 
50
50
  /* Status inquiry functions */
51
51
  extern bool AutoVacuumingActive(void);
52
- extern bool IsAutoVacuumLauncherProcess(void);
53
- extern bool IsAutoVacuumWorkerProcess(void);
54
52
 
55
- #define IsAnyAutoVacuumProcess() \
56
- (IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess())
57
-
58
- /* Functions to start autovacuum process, called from postmaster */
53
+ /* called from postmaster at server startup */
59
54
  extern void autovac_init(void);
60
- extern int StartAutoVacLauncher(void);
61
- extern int StartAutoVacWorker(void);
62
55
 
63
56
  /* called from postmaster when a worker could not be forked */
64
57
  extern void AutoVacWorkerFailed(void);
65
58
 
66
- #ifdef EXEC_BACKEND
67
- extern void AutoVacLauncherMain(int argc, char *argv[]) pg_attribute_noreturn();
68
- extern void AutoVacWorkerMain(int argc, char *argv[]) pg_attribute_noreturn();
69
- extern void AutovacuumWorkerIAm(void);
70
- extern void AutovacuumLauncherIAm(void);
71
- #endif
59
+ extern void AutoVacLauncherMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
60
+ extern void AutoVacWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
72
61
 
73
62
  extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type,
74
63
  Oid relationId, BlockNumber blkno);
@@ -31,7 +31,7 @@
31
31
  * different) code.
32
32
  *
33
33
  *
34
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
34
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
35
35
  * Portions Copyright (c) 1994, Regents of the University of California
36
36
  *
37
37
  * IDENTIFICATION
@@ -78,7 +78,7 @@ typedef enum
78
78
  {
79
79
  BgWorkerStart_PostmasterStart,
80
80
  BgWorkerStart_ConsistentState,
81
- BgWorkerStart_RecoveryFinished
81
+ BgWorkerStart_RecoveryFinished,
82
82
  } BgWorkerStartTime;
83
83
 
84
84
  #define BGW_DEFAULT_RESTART_INTERVAL 60
@@ -93,7 +93,7 @@ typedef struct BackgroundWorker
93
93
  int bgw_flags;
94
94
  BgWorkerStartTime bgw_start_time;
95
95
  int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */
96
- char bgw_library_name[BGW_MAXLEN];
96
+ char bgw_library_name[MAXPGPATH];
97
97
  char bgw_function_name[BGW_MAXLEN];
98
98
  Datum bgw_main_arg;
99
99
  char bgw_extra[BGW_EXTRALEN];
@@ -105,7 +105,7 @@ typedef enum BgwHandleStatus
105
105
  BGWH_STARTED, /* worker is running */
106
106
  BGWH_NOT_YET_STARTED, /* worker hasn't been started yet */
107
107
  BGWH_STOPPED, /* worker has exited */
108
- BGWH_POSTMASTER_DIED /* postmaster died; worker status unclear */
108
+ BGWH_POSTMASTER_DIED, /* postmaster died; worker status unclear */
109
109
  } BgwHandleStatus;
110
110
 
111
111
  struct BackgroundWorkerHandle;
@@ -150,9 +150,11 @@ extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, ui
150
150
  * Flags to BackgroundWorkerInitializeConnection et al
151
151
  *
152
152
  *
153
- * Allow bypassing datallowconn restrictions when connecting to database
153
+ * Allow bypassing datallowconn restrictions and login check when connecting
154
+ * to database
154
155
  */
155
- #define BGWORKER_BYPASS_ALLOWCONN 1
156
+ #define BGWORKER_BYPASS_ALLOWCONN 0x0001
157
+ #define BGWORKER_BYPASS_ROLELOGINCHECK 0x0002
156
158
 
157
159
 
158
160
  /* Block/unblock signals in a background worker process */
@@ -2,7 +2,7 @@
2
2
  * bgworker_internals.h
3
3
  * POSTGRES pluggable background workers internals
4
4
  *
5
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
5
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
6
6
  * Portions Copyright (c) 1994, Regents of the University of California
7
7
  *
8
8
  * IDENTIFICATION
@@ -54,11 +54,7 @@ extern void BackgroundWorkerStopNotifications(pid_t pid);
54
54
  extern void ForgetUnstartedBackgroundWorkers(void);
55
55
  extern void ResetBackgroundWorkerCrashTimes(void);
56
56
 
57
- /* Function to start a background worker, called from postmaster.c */
58
- extern void StartBackgroundWorker(void) pg_attribute_noreturn();
59
-
60
- #ifdef EXEC_BACKEND
61
- extern BackgroundWorker *BackgroundWorkerEntry(int slotno);
62
- #endif
57
+ /* Entry point for background worker processes */
58
+ extern void BackgroundWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
63
59
 
64
60
  #endif /* BGWORKER_INTERNALS_H */
@@ -6,7 +6,7 @@
6
6
  * The bgwriter process used to handle checkpointing duties too. Now
7
7
  * there is a separate process, but we did not bother to split this header.
8
8
  *
9
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
10
10
  *
11
11
  * src/include/postmaster/bgwriter.h
12
12
  *
@@ -27,8 +27,8 @@ extern PGDLLIMPORT int CheckPointTimeout;
27
27
  extern PGDLLIMPORT int CheckPointWarning;
28
28
  extern PGDLLIMPORT double CheckPointCompletionTarget;
29
29
 
30
- extern void BackgroundWriterMain(void) pg_attribute_noreturn();
31
- extern void CheckpointerMain(void) pg_attribute_noreturn();
30
+ extern void BackgroundWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
31
+ extern void CheckpointerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
32
32
 
33
33
  extern void RequestCheckpoint(int flags);
34
34
  extern void CheckpointWriteDelay(int flags, double progress);
@@ -7,7 +7,7 @@
7
7
  * have their own implementations, but we provide a few generic things
8
8
  * here to facilitate code reuse.
9
9
  *
10
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1994, Regents of the University of California
12
12
  *
13
13
  * IDENTIFICATION
@@ -3,7 +3,7 @@
3
3
  * pgarch.h
4
4
  * Exports from postmaster/pgarch.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/postmaster/pgarch.h
@@ -29,7 +29,7 @@
29
29
  extern Size PgArchShmemSize(void);
30
30
  extern void PgArchShmemInit(void);
31
31
  extern bool PgArchCanRestart(void);
32
- extern void PgArchiverMain(void) pg_attribute_noreturn();
32
+ extern void PgArchiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
33
33
  extern void PgArchWakeup(void);
34
34
  extern void PgArchForceDirScan(void);
35
35
 
@@ -3,7 +3,7 @@
3
3
  * postmaster.h
4
4
  * Exports from postmaster/postmaster.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/postmaster/postmaster.h
@@ -13,6 +13,8 @@
13
13
  #ifndef _POSTMASTER_H
14
14
  #define _POSTMASTER_H
15
15
 
16
+ #include "miscadmin.h"
17
+
16
18
  /* GUC options */
17
19
  extern PGDLLIMPORT bool EnableSSL;
18
20
  extern PGDLLIMPORT int SuperuserReservedConnections;
@@ -50,6 +52,8 @@ extern PGDLLIMPORT int postmaster_alive_fds[2];
50
52
 
51
53
  extern PGDLLIMPORT const char *progname;
52
54
 
55
+ extern PGDLLIMPORT bool LoadedSSL;
56
+
53
57
  extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
54
58
  extern void ClosePostmasterPorts(bool am_syslogger);
55
59
  extern void InitProcessGlobals(void);
@@ -58,12 +62,28 @@ extern int MaxLivePostmasterChildren(void);
58
62
 
59
63
  extern bool PostmasterMarkPIDForWorkerNotify(int);
60
64
 
61
- #ifdef EXEC_BACKEND
62
- extern pid_t postmaster_forkexec(int argc, char *argv[]);
63
- extern void SubPostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
65
+ extern void processCancelRequest(int backendPID, int32 cancelAuthCode);
64
66
 
67
+ #ifdef EXEC_BACKEND
65
68
  extern Size ShmemBackendArraySize(void);
66
69
  extern void ShmemBackendArrayAllocation(void);
70
+
71
+ #ifdef WIN32
72
+ extern void pgwin32_register_deadchild_callback(HANDLE procHandle, DWORD procId);
73
+ #endif
74
+ #endif
75
+
76
+ /* defined in globals.c */
77
+ extern PGDLLIMPORT struct ClientSocket *MyClientSocket;
78
+
79
+ /* prototypes for functions in launch_backend.c */
80
+ extern pid_t postmaster_child_launch(BackendType child_type,
81
+ char *startup_data,
82
+ size_t startup_data_len,
83
+ struct ClientSocket *client_sock);
84
+ const char *PostmasterChildName(BackendType child_type);
85
+ #ifdef EXEC_BACKEND
86
+ extern void SubPostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
67
87
  #endif
68
88
 
69
89
  /*
@@ -72,7 +92,7 @@ extern void ShmemBackendArrayAllocation(void);
72
92
  * by using a 64bit state; but it's unlikely to be worthwhile as 2^18-1
73
93
  * backends exceed currently realistic configurations. Even if that limitation
74
94
  * were removed, we still could not a) exceed 2^23-1 because inval.c stores
75
- * the backend ID as a 3-byte signed integer, b) INT_MAX/4 because some places
95
+ * the ProcNumber as a 3-byte signed integer, b) INT_MAX/4 because some places
76
96
  * compute 4*MaxBackends without any overflow check. This is rechecked in the
77
97
  * relevant GUC check hooks and in RegisterBackgroundWorker().
78
98
  */
@@ -3,7 +3,7 @@
3
3
  * startup.h
4
4
  * Exports from postmaster/startup.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/startup.h
9
9
  *
@@ -26,7 +26,7 @@
26
26
  extern PGDLLIMPORT int log_startup_progress_interval;
27
27
 
28
28
  extern void HandleStartupProcInterrupts(void);
29
- extern void StartupProcessMain(void) pg_attribute_noreturn();
29
+ extern void StartupProcessMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
30
30
  extern void PreRestoreCommand(void);
31
31
  extern void PostRestoreCommand(void);
32
32
  extern bool IsPromoteSignaled(void);
@@ -3,7 +3,7 @@
3
3
  * syslogger.h
4
4
  * Exports from postmaster/syslogger.c.
5
5
  *
6
- * Copyright (c) 2004-2023, PostgreSQL Global Development Group
6
+ * Copyright (c) 2004-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/syslogger.h
9
9
  *
@@ -86,9 +86,7 @@ extern int SysLogger_Start(void);
86
86
 
87
87
  extern void write_syslogger_file(const char *buffer, int count, int destination);
88
88
 
89
- #ifdef EXEC_BACKEND
90
- extern void SysLoggerMain(int argc, char *argv[]) pg_attribute_noreturn();
91
- #endif
89
+ extern void SysLoggerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
92
90
 
93
91
  extern bool CheckLogrotateSignal(void);
94
92
  extern void RemoveLogrotateSignalFiles(void);
@@ -0,0 +1,35 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * walsummarizer.h
4
+ *
5
+ * Header file for background WAL summarization process.
6
+ *
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
+ *
9
+ * IDENTIFICATION
10
+ * src/include/postmaster/walsummarizer.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef WALSUMMARIZER_H
15
+ #define WALSUMMARIZER_H
16
+
17
+ #include "access/xlogdefs.h"
18
+
19
+ extern PGDLLIMPORT bool summarize_wal;
20
+ extern PGDLLIMPORT int wal_summary_keep_time;
21
+
22
+ extern Size WalSummarizerShmemSize(void);
23
+ extern void WalSummarizerShmemInit(void);
24
+ extern void WalSummarizerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
25
+
26
+ extern void GetWalSummarizerState(TimeLineID *summarized_tli,
27
+ XLogRecPtr *summarized_lsn,
28
+ XLogRecPtr *pending_lsn,
29
+ int *summarizer_pid);
30
+ extern XLogRecPtr GetOldestUnsummarizedLSN(TimeLineID *tli,
31
+ bool *lsn_is_exact);
32
+ extern void SetWalSummarizerLatch(void);
33
+ extern void WaitForWalSummarization(XLogRecPtr lsn);
34
+
35
+ #endif
@@ -3,7 +3,7 @@
3
3
  * walwriter.h
4
4
  * Exports from postmaster/walwriter.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/walwriter.h
9
9
  *
@@ -18,6 +18,6 @@
18
18
  extern PGDLLIMPORT int WalWriterDelay;
19
19
  extern PGDLLIMPORT int WalWriterFlushAfter;
20
20
 
21
- extern void WalWriterMain(void) pg_attribute_noreturn();
21
+ extern void WalWriterMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
22
22
 
23
23
  #endif /* _WALWRITER_H */