pg_query 5.1.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (479) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/include/pg_query.h +4 -3
  6. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  7. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  8. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  9. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  10. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  11. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  12. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  13. data/ext/pg_query/include/postgres/access/amapi.h +10 -3
  14. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  15. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  16. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  17. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  18. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  19. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  20. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  21. data/ext/pg_query/include/postgres/access/genam.h +8 -4
  22. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  23. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  24. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  25. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  26. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  27. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  28. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  29. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  30. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  31. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  32. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  33. data/ext/pg_query/include/postgres/access/slru.h +221 -0
  34. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  35. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  36. data/ext/pg_query/include/postgres/access/table.h +1 -1
  37. data/ext/pg_query/include/postgres/access/tableam.h +33 -24
  38. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  39. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  40. data/ext/pg_query/include/postgres/access/transam.h +7 -7
  41. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  42. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  44. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  45. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  46. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  47. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  48. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  49. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  50. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  51. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  53. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  54. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  55. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  56. data/ext/pg_query/include/postgres/c.h +31 -36
  57. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  58. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  59. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  60. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  61. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  62. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  63. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  64. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/objectaddress.h +1 -1
  66. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  67. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  68. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  69. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  70. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  71. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  72. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  73. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  75. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  76. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  77. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  78. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  79. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  81. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  82. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  83. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  84. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  85. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  86. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  87. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  88. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  90. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  91. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  102. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  108. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  110. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  111. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  112. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  113. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  117. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  118. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  119. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  122. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  128. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  129. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  130. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  131. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  132. data/ext/pg_query/include/postgres/commands/event_trigger.h +5 -2
  133. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  134. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  135. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  136. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  138. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  139. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  140. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  141. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  142. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
  143. data/ext/pg_query/include/postgres/common/int.h +79 -4
  144. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  145. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  146. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  147. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  148. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  149. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  150. data/ext/pg_query/include/postgres/common/string.h +1 -1
  151. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  152. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  153. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  154. data/ext/pg_query/include/postgres/datatype/timestamp.h +28 -2
  155. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  156. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  157. data/ext/pg_query/include/postgres/executor/execdesc.h +1 -1
  158. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  159. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  160. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  161. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  162. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  163. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  164. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  165. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  166. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  167. data/ext/pg_query/include/postgres/gram.h +871 -830
  168. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  169. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  170. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  171. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  172. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  173. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  174. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  175. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  176. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  177. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  178. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  179. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  180. data/ext/pg_query/include/postgres/libpq/libpq-be.h +29 -25
  181. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  182. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  183. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  184. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  185. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  186. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  187. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  188. data/ext/pg_query/include/postgres/mb/pg_wchar.h +102 -82
  189. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  190. data/ext/pg_query/include/postgres/miscadmin.h +64 -52
  191. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  192. data/ext/pg_query/include/postgres/nodes/execnodes.h +109 -25
  193. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  194. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  195. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  196. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  197. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  198. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  199. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  200. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  201. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  202. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  203. data/ext/pg_query/include/postgres/nodes/pathnodes.h +60 -9
  204. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  205. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  206. data/ext/pg_query/include/postgres/nodes/primnodes.h +344 -50
  207. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  209. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  210. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  211. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  212. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  213. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  214. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  215. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  216. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  217. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  218. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  219. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  220. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  221. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  222. data/ext/pg_query/include/postgres/parser/parse_coerce.h +2 -2
  223. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  224. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  225. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  226. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  227. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  229. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  230. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  231. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  232. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  233. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  234. data/ext/pg_query/include/postgres/pg_config.h +34 -34
  235. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  236. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  237. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  238. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  239. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  240. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  241. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  242. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  243. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  244. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  245. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  246. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  247. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  249. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  250. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  251. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  252. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  253. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  254. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  255. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  256. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  257. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  258. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  259. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  260. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  261. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  262. data/ext/pg_query/include/postgres/port/win32_port.h +1 -11
  263. data/ext/pg_query/include/postgres/port.h +7 -3
  264. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  265. data/ext/pg_query/include/postgres/postgres.h +1 -1
  266. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  267. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  268. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  269. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  270. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  271. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  272. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  273. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  274. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  275. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  276. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  277. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  278. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  279. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  280. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  281. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  282. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +18 -28
  283. data/ext/pg_query/include/postgres/replication/slot.h +41 -5
  284. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  285. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  286. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  287. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  288. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  289. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  290. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  291. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  292. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  293. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  294. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  295. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  296. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  297. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  299. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  300. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  301. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  302. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  305. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  306. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  307. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  308. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  309. data/ext/pg_query/include/postgres/storage/lockdefs.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  311. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  312. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  313. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  314. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  315. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  316. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  317. data/ext/pg_query/include/postgres/storage/proc.h +48 -23
  318. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  319. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  320. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  321. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  322. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  323. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  324. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  325. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  326. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  327. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  328. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  329. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  330. data/ext/pg_query/include/postgres/storage/smgr.h +41 -27
  331. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  333. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  334. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  335. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  336. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  337. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  338. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  339. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  340. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  341. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  342. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  343. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  344. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  345. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  346. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  347. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  348. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  349. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  350. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  351. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  352. data/ext/pg_query/include/postgres/utils/catcache.h +5 -6
  353. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  354. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  355. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  356. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  357. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  358. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  359. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  361. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  363. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  364. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  365. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  366. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  367. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  368. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  369. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  370. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  372. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  373. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  374. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  375. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  376. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  377. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  378. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  379. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  381. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +11 -17
  382. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  383. data/ext/pg_query/include/postgres/utils/portal.h +9 -9
  384. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  385. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  387. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  388. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  389. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  390. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  391. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  393. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  394. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/syscache.h +2 -98
  396. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  397. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  399. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  400. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  401. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  402. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  403. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  404. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  405. data/ext/pg_query/include/postgres/varatt.h +1 -1
  406. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  407. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  408. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  409. data/ext/pg_query/pg_query_normalize.c +42 -1
  410. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  411. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  412. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  413. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
  414. data/ext/pg_query/pg_query_scan.c +1 -1
  415. data/ext/pg_query/postgres_deparse.c +409 -21
  416. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  417. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  418. data/ext/pg_query/src_backend_commands_define.c +2 -3
  419. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  420. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  421. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  422. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  423. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  424. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  425. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  426. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  427. data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
  428. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  429. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  430. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  431. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  432. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  433. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  434. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  435. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  436. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  437. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  438. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  439. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  440. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  441. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  442. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  443. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  444. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  445. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  446. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  447. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  448. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  449. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  450. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  451. data/ext/pg_query/src_common_encnames.c +43 -44
  452. data/ext/pg_query/src_common_hashfn.c +1 -1
  453. data/ext/pg_query/src_common_keywords.c +1 -1
  454. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  455. data/ext/pg_query/src_common_kwlookup.c +1 -1
  456. data/ext/pg_query/src_common_psprintf.c +3 -3
  457. data/ext/pg_query/src_common_stringinfo.c +18 -1
  458. data/ext/pg_query/src_common_wchar.c +45 -108
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  462. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  463. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  466. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  467. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  468. data/ext/pg_query/src_port_snprintf.c +1 -1
  469. data/ext/pg_query/src_port_strerror.c +1 -3
  470. data/ext/pg_query/src_port_strlcpy.c +1 -1
  471. data/lib/pg_query/param_refs.rb +1 -1
  472. data/lib/pg_query/pg_query_pb.rb +26 -3
  473. data/lib/pg_query/treewalker.rb +38 -11
  474. data/lib/pg_query/truncate.rb +1 -1
  475. data/lib/pg_query/version.rb +1 -1
  476. metadata +25 -11
  477. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  478. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  479. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
@@ -6,7 +6,7 @@
6
6
  * NOTE: for historical reasons, this does not correspond to pqcomm.c.
7
7
  * pqcomm.c's routines are declared in libpq.h.
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/libpq/pqcomm.h
@@ -21,6 +21,12 @@
21
21
  #include <netdb.h>
22
22
  #include <netinet/in.h>
23
23
 
24
+ /*
25
+ * The definitions for the request/response codes are kept in a separate file
26
+ * for ease of use in third party programs.
27
+ */
28
+ #include "libpq/protocol.h"
29
+
24
30
  typedef struct
25
31
  {
26
32
  struct sockaddr_storage addr;
@@ -103,8 +109,6 @@ typedef ProtocolVersion MsgType;
103
109
 
104
110
  typedef uint32 PacketLen;
105
111
 
106
- extern PGDLLIMPORT bool Db_user_namespace;
107
-
108
112
  /*
109
113
  * In protocol 3.0 and later, the startup packet length is not fixed, but
110
114
  * we set an arbitrary limit on it anyway. This is just to prevent simple
@@ -114,23 +118,6 @@ extern PGDLLIMPORT bool Db_user_namespace;
114
118
  #define MAX_STARTUP_PACKET_LENGTH 10000
115
119
 
116
120
 
117
- /* These are the authentication request codes sent by the backend. */
118
-
119
- #define AUTH_REQ_OK 0 /* User is authenticated */
120
- #define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
121
- #define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */
122
- #define AUTH_REQ_PASSWORD 3 /* Password */
123
- #define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
124
- #define AUTH_REQ_MD5 5 /* md5 password */
125
- /* 6 is available. It was used for SCM creds, not supported any more. */
126
- #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
127
- #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
128
- #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
129
- #define AUTH_REQ_SASL 10 /* Begin SASL authentication */
130
- #define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
131
- #define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
132
- #define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
133
-
134
121
  typedef uint32 AuthRequest;
135
122
 
136
123
 
@@ -152,6 +139,25 @@ typedef struct CancelRequestPacket
152
139
  uint32 cancelAuthCode; /* secret key to authorize cancel */
153
140
  } CancelRequestPacket;
154
141
 
142
+ /* Application-Layer Protocol Negotiation is required for direct connections
143
+ * to avoid protocol confusion attacks (e.g https://alpaca-attack.com/).
144
+ *
145
+ * ALPN is specified in RFC 7301
146
+ *
147
+ * This string should be registered at:
148
+ * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
149
+ *
150
+ * OpenSSL uses this wire-format for the list of alpn protocols even in the
151
+ * API. Both server and client take the same format parameter but the client
152
+ * actually sends it to the server as-is and the server it specifies the
153
+ * preference order to use to choose the one selected to send back.
154
+ *
155
+ * c.f. https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_alpn_select_cb.html
156
+ *
157
+ * The #define can be used to initialize a char[] vector to use directly in the API
158
+ */
159
+ #define PG_ALPN_PROTOCOL "postgresql"
160
+ #define PG_ALPN_PROTOCOL_VECTOR { 10, 'p','o','s','t','g','r','e','s','q','l' }
155
161
 
156
162
  /*
157
163
  * A client can also start by sending a SSL or GSSAPI negotiation request to
@@ -3,7 +3,7 @@
3
3
  * pqformat.h
4
4
  * Definitions for formatting and parsing frontend/backend messages
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/libpq/pqformat.h
@@ -23,8 +23,7 @@ extern void pq_endmessage(StringInfo buf);
23
23
  extern void pq_endmessage_reuse(StringInfo buf);
24
24
 
25
25
  extern void pq_sendbytes(StringInfo buf, const void *data, int datalen);
26
- extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen,
27
- bool countincludesself);
26
+ extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen);
28
27
  extern void pq_sendtext(StringInfo buf, const char *str, int slen);
29
28
  extern void pq_sendstring(StringInfo buf, const char *str);
30
29
  extern void pq_send_ascii_string(StringInfo buf, const char *str);
@@ -3,7 +3,7 @@
3
3
  * pqsignal.h
4
4
  * Backend signal(2) support (see also src/port/pqsignal.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/libpq/pqsignal.h
@@ -0,0 +1,89 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * protocol.h
4
+ * Definitions of the request/response codes for the wire protocol.
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/libpq/protocol.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef PROTOCOL_H
15
+ #define PROTOCOL_H
16
+
17
+ /* These are the request codes sent by the frontend. */
18
+
19
+ #define PqMsg_Bind 'B'
20
+ #define PqMsg_Close 'C'
21
+ #define PqMsg_Describe 'D'
22
+ #define PqMsg_Execute 'E'
23
+ #define PqMsg_FunctionCall 'F'
24
+ #define PqMsg_Flush 'H'
25
+ #define PqMsg_Parse 'P'
26
+ #define PqMsg_Query 'Q'
27
+ #define PqMsg_Sync 'S'
28
+ #define PqMsg_Terminate 'X'
29
+ #define PqMsg_CopyFail 'f'
30
+ #define PqMsg_GSSResponse 'p'
31
+ #define PqMsg_PasswordMessage 'p'
32
+ #define PqMsg_SASLInitialResponse 'p'
33
+ #define PqMsg_SASLResponse 'p'
34
+
35
+
36
+ /* These are the response codes sent by the backend. */
37
+
38
+ #define PqMsg_ParseComplete '1'
39
+ #define PqMsg_BindComplete '2'
40
+ #define PqMsg_CloseComplete '3'
41
+ #define PqMsg_NotificationResponse 'A'
42
+ #define PqMsg_CommandComplete 'C'
43
+ #define PqMsg_DataRow 'D'
44
+ #define PqMsg_ErrorResponse 'E'
45
+ #define PqMsg_CopyInResponse 'G'
46
+ #define PqMsg_CopyOutResponse 'H'
47
+ #define PqMsg_EmptyQueryResponse 'I'
48
+ #define PqMsg_BackendKeyData 'K'
49
+ #define PqMsg_NoticeResponse 'N'
50
+ #define PqMsg_AuthenticationRequest 'R'
51
+ #define PqMsg_ParameterStatus 'S'
52
+ #define PqMsg_RowDescription 'T'
53
+ #define PqMsg_FunctionCallResponse 'V'
54
+ #define PqMsg_CopyBothResponse 'W'
55
+ #define PqMsg_ReadyForQuery 'Z'
56
+ #define PqMsg_NoData 'n'
57
+ #define PqMsg_PortalSuspended 's'
58
+ #define PqMsg_ParameterDescription 't'
59
+ #define PqMsg_NegotiateProtocolVersion 'v'
60
+
61
+
62
+ /* These are the codes sent by both the frontend and backend. */
63
+
64
+ #define PqMsg_CopyDone 'c'
65
+ #define PqMsg_CopyData 'd'
66
+
67
+
68
+ /* These are the codes sent by parallel workers to leader processes. */
69
+ #define PqMsg_Progress 'P'
70
+
71
+
72
+ /* These are the authentication request codes sent by the backend. */
73
+
74
+ #define AUTH_REQ_OK 0 /* User is authenticated */
75
+ #define AUTH_REQ_KRB4 1 /* Kerberos V4. Not supported any more. */
76
+ #define AUTH_REQ_KRB5 2 /* Kerberos V5. Not supported any more. */
77
+ #define AUTH_REQ_PASSWORD 3 /* Password */
78
+ #define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
79
+ #define AUTH_REQ_MD5 5 /* md5 password */
80
+ /* 6 is available. It was used for SCM creds, not supported any more. */
81
+ #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
82
+ #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
83
+ #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
84
+ #define AUTH_REQ_SASL 10 /* Begin SASL authentication */
85
+ #define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
86
+ #define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
87
+ #define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
88
+
89
+ #endif /* PROTOCOL_H */
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * See src/interfaces/libpq/fe-auth-sasl.h for the frontend counterpart.
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
  * src/include/libpq/sasl.h
@@ -3,7 +3,7 @@
3
3
  * scram.h
4
4
  * Interface to libpq/scram.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/libpq/scram.h
@@ -3,7 +3,7 @@
3
3
  * pg_wchar.h
4
4
  * multibyte-character support
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/mb/pg_wchar.h
@@ -13,14 +13,15 @@
13
13
  * included by libpq client programs. In particular, a libpq client
14
14
  * should not assume that the encoding IDs used by the version of libpq
15
15
  * it's linked to match up with the IDs declared here.
16
+ * To help prevent mistakes, relevant functions that are exported by
17
+ * libpq have a physically different name when being referenced
18
+ * statically.
16
19
  *
17
20
  *-------------------------------------------------------------------------
18
21
  */
19
22
  #ifndef PG_WCHAR_H
20
23
  #define PG_WCHAR_H
21
24
 
22
- #include "port/simd.h"
23
-
24
25
  /*
25
26
  * The pg_wchar type
26
27
  */
@@ -223,11 +224,10 @@ typedef unsigned int pg_wchar;
223
224
  /*
224
225
  * PostgreSQL encoding identifiers
225
226
  *
226
- * WARNING: the order of this enum must be same as order of entries
227
- * in the pg_enc2name_tbl[] array (in src/common/encnames.c), and
228
- * in the pg_wchar_table[] array (in src/common/wchar.c)!
229
- *
230
- * If you add some encoding don't forget to check
227
+ * WARNING: If you add some encoding don't forget to update
228
+ * the pg_enc2name_tbl[] array (in src/common/encnames.c),
229
+ * the pg_enc2gettext_tbl[] array (in src/common/encnames.c) and
230
+ * the pg_wchar_table[] array (in src/common/wchar.c) and to check
231
231
  * PG_ENCODING_BE_LAST macro.
232
232
  *
233
233
  * PG_SQL_ASCII is default encoding and must be = 0.
@@ -366,13 +366,7 @@ extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
366
366
  /*
367
367
  * Encoding names for gettext
368
368
  */
369
- typedef struct pg_enc2gettext
370
- {
371
- pg_enc encoding;
372
- const char *name;
373
- } pg_enc2gettext;
374
-
375
- extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[];
369
+ extern PGDLLIMPORT const char *pg_enc2gettext_tbl[];
376
370
 
377
371
  /*
378
372
  * pg_wchar stuff
@@ -561,6 +555,99 @@ surrogate_pair_to_codepoint(pg_wchar first, pg_wchar second)
561
555
  return ((first & 0x3FF) << 10) + 0x10000 + (second & 0x3FF);
562
556
  }
563
557
 
558
+ /*
559
+ * Convert a UTF-8 character to a Unicode code point.
560
+ * This is a one-character version of pg_utf2wchar_with_len.
561
+ *
562
+ * No error checks here, c must point to a long-enough string.
563
+ */
564
+ static inline pg_wchar
565
+ utf8_to_unicode(const unsigned char *c)
566
+ {
567
+ if ((*c & 0x80) == 0)
568
+ return (pg_wchar) c[0];
569
+ else if ((*c & 0xe0) == 0xc0)
570
+ return (pg_wchar) (((c[0] & 0x1f) << 6) |
571
+ (c[1] & 0x3f));
572
+ else if ((*c & 0xf0) == 0xe0)
573
+ return (pg_wchar) (((c[0] & 0x0f) << 12) |
574
+ ((c[1] & 0x3f) << 6) |
575
+ (c[2] & 0x3f));
576
+ else if ((*c & 0xf8) == 0xf0)
577
+ return (pg_wchar) (((c[0] & 0x07) << 18) |
578
+ ((c[1] & 0x3f) << 12) |
579
+ ((c[2] & 0x3f) << 6) |
580
+ (c[3] & 0x3f));
581
+ else
582
+ /* that is an invalid code on purpose */
583
+ return 0xffffffff;
584
+ }
585
+
586
+ /*
587
+ * Map a Unicode code point to UTF-8. utf8string must have at least
588
+ * unicode_utf8len(c) bytes available.
589
+ */
590
+ static inline unsigned char *
591
+ unicode_to_utf8(pg_wchar c, unsigned char *utf8string)
592
+ {
593
+ if (c <= 0x7F)
594
+ {
595
+ utf8string[0] = c;
596
+ }
597
+ else if (c <= 0x7FF)
598
+ {
599
+ utf8string[0] = 0xC0 | ((c >> 6) & 0x1F);
600
+ utf8string[1] = 0x80 | (c & 0x3F);
601
+ }
602
+ else if (c <= 0xFFFF)
603
+ {
604
+ utf8string[0] = 0xE0 | ((c >> 12) & 0x0F);
605
+ utf8string[1] = 0x80 | ((c >> 6) & 0x3F);
606
+ utf8string[2] = 0x80 | (c & 0x3F);
607
+ }
608
+ else
609
+ {
610
+ utf8string[0] = 0xF0 | ((c >> 18) & 0x07);
611
+ utf8string[1] = 0x80 | ((c >> 12) & 0x3F);
612
+ utf8string[2] = 0x80 | ((c >> 6) & 0x3F);
613
+ utf8string[3] = 0x80 | (c & 0x3F);
614
+ }
615
+
616
+ return utf8string;
617
+ }
618
+
619
+ /*
620
+ * Number of bytes needed to represent the given char in UTF8.
621
+ */
622
+ static inline int
623
+ unicode_utf8len(pg_wchar c)
624
+ {
625
+ if (c <= 0x7F)
626
+ return 1;
627
+ else if (c <= 0x7FF)
628
+ return 2;
629
+ else if (c <= 0xFFFF)
630
+ return 3;
631
+ else
632
+ return 4;
633
+ }
634
+
635
+ /*
636
+ * The functions in this list are exported by libpq, and we need to be sure
637
+ * that we know which calls are satisfied by libpq and which are satisfied
638
+ * by static linkage to libpgcommon. (This is because we might be using a
639
+ * libpq.so that's of a different major version and has encoding IDs that
640
+ * differ from the current version's.) The nominal function names are what
641
+ * are actually used in and exported by libpq, while the names exported by
642
+ * libpgcommon.a and libpgcommon_srv.a end in "_private".
643
+ */
644
+ #if defined(USE_PRIVATE_ENCODING_FUNCS) || !defined(FRONTEND)
645
+ #define pg_char_to_encoding pg_char_to_encoding_private
646
+ #define pg_encoding_to_char pg_encoding_to_char_private
647
+ #define pg_valid_server_encoding pg_valid_server_encoding_private
648
+ #define pg_valid_server_encoding_id pg_valid_server_encoding_id_private
649
+ #define pg_utf_mblen pg_utf_mblen_private
650
+ #endif
564
651
 
565
652
  /*
566
653
  * These functions are considered part of libpq's exported API and
@@ -702,71 +789,4 @@ extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p,
702
789
  extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
703
790
  #endif
704
791
 
705
-
706
- /*
707
- * Verify a chunk of bytes for valid ASCII.
708
- *
709
- * Returns false if the input contains any zero bytes or bytes with the
710
- * high-bit set. Input len must be a multiple of the chunk size (8 or 16).
711
- */
712
- static inline bool
713
- is_valid_ascii(const unsigned char *s, int len)
714
- {
715
- const unsigned char *const s_end = s + len;
716
- Vector8 chunk;
717
- Vector8 highbit_cum = vector8_broadcast(0);
718
- #ifdef USE_NO_SIMD
719
- Vector8 zero_cum = vector8_broadcast(0x80);
720
- #endif
721
-
722
- Assert(len % sizeof(chunk) == 0);
723
-
724
- while (s < s_end)
725
- {
726
- vector8_load(&chunk, s);
727
-
728
- /* Capture any zero bytes in this chunk. */
729
- #ifdef USE_NO_SIMD
730
-
731
- /*
732
- * First, add 0x7f to each byte. This sets the high bit in each byte,
733
- * unless it was a zero. If any resulting high bits are zero, the
734
- * corresponding high bits in the zero accumulator will be cleared.
735
- *
736
- * If none of the bytes in the chunk had the high bit set, the max
737
- * value each byte can have after the addition is 0x7f + 0x7f = 0xfe,
738
- * and we don't need to worry about carrying over to the next byte. If
739
- * any input bytes did have the high bit set, it doesn't matter
740
- * because we check for those separately.
741
- */
742
- zero_cum &= (chunk + vector8_broadcast(0x7F));
743
- #else
744
-
745
- /*
746
- * Set all bits in each lane of the highbit accumulator where input
747
- * bytes are zero.
748
- */
749
- highbit_cum = vector8_or(highbit_cum,
750
- vector8_eq(chunk, vector8_broadcast(0)));
751
- #endif
752
-
753
- /* Capture all set bits in this chunk. */
754
- highbit_cum = vector8_or(highbit_cum, chunk);
755
-
756
- s += sizeof(chunk);
757
- }
758
-
759
- /* Check if any high bits in the high bit accumulator got set. */
760
- if (vector8_is_highbit_set(highbit_cum))
761
- return false;
762
-
763
- #ifdef USE_NO_SIMD
764
- /* Check if any high bits in the zero accumulator got cleared. */
765
- if (zero_cum != vector8_broadcast(0x80))
766
- return false;
767
- #endif
768
-
769
- return true;
770
- }
771
-
772
792
  #endif /* PG_WCHAR_H */
@@ -3,7 +3,7 @@
3
3
  * stringinfo_mb.h
4
4
  * multibyte support for StringInfo
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/mb/stringinfo_mb.h
@@ -10,7 +10,7 @@
10
10
  * Over time, this has also become the preferred place for widely known
11
11
  * resource-limitation stuff, such as work_mem and check_stack_depth().
12
12
  *
13
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/miscadmin.h
@@ -91,6 +91,7 @@ extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending;
91
91
  extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending;
92
92
  extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending;
93
93
  extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending;
94
+ extern PGDLLIMPORT volatile sig_atomic_t TransactionTimeoutPending;
94
95
  extern PGDLLIMPORT volatile sig_atomic_t IdleSessionTimeoutPending;
95
96
  extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending;
96
97
  extern PGDLLIMPORT volatile sig_atomic_t LogMemoryContextPending;
@@ -164,7 +165,6 @@ do { \
164
165
  extern PGDLLIMPORT pid_t PostmasterPid;
165
166
  extern PGDLLIMPORT bool IsPostmasterEnvironment;
166
167
  extern PGDLLIMPORT bool IsUnderPostmaster;
167
- extern PGDLLIMPORT bool IsBackgroundWorker;
168
168
  extern PGDLLIMPORT bool IsBinaryUpgrade;
169
169
 
170
170
  extern PGDLLIMPORT __thread bool ExitOnAnyError;
@@ -178,6 +178,14 @@ extern PGDLLIMPORT int MaxConnections;
178
178
  extern PGDLLIMPORT int max_worker_processes;
179
179
  extern PGDLLIMPORT int max_parallel_workers;
180
180
 
181
+ extern PGDLLIMPORT int commit_timestamp_buffers;
182
+ extern PGDLLIMPORT int multixact_member_buffers;
183
+ extern PGDLLIMPORT int multixact_offset_buffers;
184
+ extern PGDLLIMPORT int notify_buffers;
185
+ extern PGDLLIMPORT int serializable_buffers;
186
+ extern PGDLLIMPORT int subtransaction_buffers;
187
+ extern PGDLLIMPORT int transaction_buffers;
188
+
181
189
  extern PGDLLIMPORT int MyProcPid;
182
190
  extern PGDLLIMPORT pg_time_t MyStartTime;
183
191
  extern PGDLLIMPORT TimestampTz MyStartTimestamp;
@@ -194,15 +202,12 @@ extern PGDLLIMPORT char pkglib_path[];
194
202
  extern PGDLLIMPORT char postgres_exec_path[];
195
203
  #endif
196
204
 
197
- /*
198
- * done in storage/backendid.h for now.
199
- *
200
- * extern BackendId MyBackendId;
201
- */
202
205
  extern PGDLLIMPORT Oid MyDatabaseId;
203
206
 
204
207
  extern PGDLLIMPORT Oid MyDatabaseTableSpace;
205
208
 
209
+ extern PGDLLIMPORT bool MyDatabaseHasLoginEventTriggers;
210
+
206
211
  /*
207
212
  * Date/Time Configuration
208
213
  *
@@ -300,10 +305,6 @@ extern void PreventCommandIfReadOnly(const char *cmdname);
300
305
  extern void PreventCommandIfParallelMode(const char *cmdname);
301
306
  extern void PreventCommandDuringRecovery(const char *cmdname);
302
307
 
303
- /* in utils/misc/guc_tables.c */
304
- extern PGDLLIMPORT int trace_recovery_messages;
305
- extern int trace_recovery(int trace_level);
306
-
307
308
  /*****************************************************************************
308
309
  * pdir.h -- *
309
310
  * POSTGRES directory path definitions. *
@@ -323,28 +324,66 @@ extern void InitProcessLocalLatch(void);
323
324
  extern void SwitchToSharedLatch(void);
324
325
  extern void SwitchBackToLocalLatch(void);
325
326
 
327
+ /*
328
+ * MyBackendType indicates what kind of a backend this is.
329
+ *
330
+ * If you add entries, please also update the child_process_kinds array in
331
+ * launch_backend.c.
332
+ */
326
333
  typedef enum BackendType
327
334
  {
328
335
  B_INVALID = 0,
329
- B_ARCHIVER,
336
+
337
+ /* Backends and other backend-like processes */
338
+ B_BACKEND,
330
339
  B_AUTOVAC_LAUNCHER,
331
340
  B_AUTOVAC_WORKER,
332
- B_BACKEND,
333
341
  B_BG_WORKER,
342
+ B_WAL_SENDER,
343
+ B_SLOTSYNC_WORKER,
344
+
345
+ B_STANDALONE_BACKEND,
346
+
347
+ /*
348
+ * Auxiliary processes. These have PGPROC entries, but they are not
349
+ * attached to any particular database. There can be only one of each of
350
+ * these running at a time.
351
+ *
352
+ * If you modify these, make sure to update NUM_AUXILIARY_PROCS and the
353
+ * glossary in the docs.
354
+ */
355
+ B_ARCHIVER,
334
356
  B_BG_WRITER,
335
357
  B_CHECKPOINTER,
336
- B_LOGGER,
337
- B_STANDALONE_BACKEND,
338
358
  B_STARTUP,
339
359
  B_WAL_RECEIVER,
340
- B_WAL_SENDER,
360
+ B_WAL_SUMMARIZER,
341
361
  B_WAL_WRITER,
362
+
363
+ /*
364
+ * Logger is not connected to shared memory and does not have a PGPROC
365
+ * entry.
366
+ */
367
+ B_LOGGER,
342
368
  } BackendType;
343
369
 
344
- #define BACKEND_NUM_TYPES (B_WAL_WRITER + 1)
370
+ #define BACKEND_NUM_TYPES (B_LOGGER + 1)
345
371
 
346
372
  extern PGDLLIMPORT BackendType MyBackendType;
347
373
 
374
+ #define AmAutoVacuumLauncherProcess() (MyBackendType == B_AUTOVAC_LAUNCHER)
375
+ #define AmAutoVacuumWorkerProcess() (MyBackendType == B_AUTOVAC_WORKER)
376
+ #define AmBackgroundWorkerProcess() (MyBackendType == B_BG_WORKER)
377
+ #define AmWalSenderProcess() (MyBackendType == B_WAL_SENDER)
378
+ #define AmLogicalSlotSyncWorkerProcess() (MyBackendType == B_SLOTSYNC_WORKER)
379
+ #define AmArchiverProcess() (MyBackendType == B_ARCHIVER)
380
+ #define AmBackgroundWriterProcess() (MyBackendType == B_BG_WRITER)
381
+ #define AmCheckpointerProcess() (MyBackendType == B_CHECKPOINTER)
382
+ #define AmStartupProcess() (MyBackendType == B_STARTUP)
383
+ #define AmWalReceiverProcess() (MyBackendType == B_WAL_RECEIVER)
384
+ #define AmWalSummarizerProcess() (MyBackendType == B_WAL_SUMMARIZER)
385
+ #define AmWalWriterProcess() (MyBackendType == B_WAL_WRITER)
386
+
348
387
  extern const char *GetBackendTypeDesc(BackendType backendType);
349
388
 
350
389
  extern void SetDatabasePath(const char *path);
@@ -364,7 +403,8 @@ extern bool InSecurityRestrictedOperation(void);
364
403
  extern bool InNoForceRLSOperation(void);
365
404
  extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
366
405
  extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
367
- extern void InitializeSessionUserId(const char *rolename, Oid roleid);
406
+ extern void InitializeSessionUserId(const char *rolename, Oid roleid,
407
+ bool bypass_login_check);
368
408
  extern void InitializeSessionUserIdStandalone(void);
369
409
  extern void SetSessionAuthorization(Oid userid, bool is_superuser);
370
410
  extern Oid GetCurrentRoleId(void);
@@ -406,7 +446,7 @@ typedef enum ProcessingMode
406
446
  {
407
447
  BootstrapProcessing, /* bootstrap creation of template database */
408
448
  InitProcessing, /* initializing system */
409
- NormalProcessing /* normal processing */
449
+ NormalProcessing, /* normal processing */
410
450
  } ProcessingMode;
411
451
 
412
452
  extern PGDLLIMPORT ProcessingMode Mode;
@@ -426,49 +466,21 @@ extern PGDLLIMPORT ProcessingMode Mode;
426
466
  } while(0)
427
467
 
428
468
 
429
- /*
430
- * Auxiliary-process type identifiers. These used to be in bootstrap.h
431
- * but it seems saner to have them here, with the ProcessingMode stuff.
432
- * The MyAuxProcType global is defined and set in auxprocess.c.
433
- *
434
- * Make sure to list in the glossary any items you add here.
435
- */
436
-
437
- typedef enum
438
- {
439
- NotAnAuxProcess = -1,
440
- StartupProcess = 0,
441
- BgWriterProcess,
442
- ArchiverProcess,
443
- CheckpointerProcess,
444
- WalWriterProcess,
445
- WalReceiverProcess,
446
-
447
- NUM_AUXPROCTYPES /* Must be last! */
448
- } AuxProcType;
449
-
450
- extern PGDLLIMPORT AuxProcType MyAuxProcType;
451
-
452
- #define AmStartupProcess() (MyAuxProcType == StartupProcess)
453
- #define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
454
- #define AmArchiverProcess() (MyAuxProcType == ArchiverProcess)
455
- #define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess)
456
- #define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess)
457
- #define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess)
458
-
459
-
460
469
  /*****************************************************************************
461
470
  * pinit.h -- *
462
471
  * POSTGRES initialization and cleanup definitions. *
463
472
  *****************************************************************************/
464
473
 
465
474
  /* in utils/init/postinit.c */
475
+ /* flags for InitPostgres() */
476
+ #define INIT_PG_LOAD_SESSION_LIBS 0x0001
477
+ #define INIT_PG_OVERRIDE_ALLOW_CONNS 0x0002
478
+ #define INIT_PG_OVERRIDE_ROLE_LOGIN 0x0004
466
479
  extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
467
480
  extern void InitializeMaxBackends(void);
468
481
  extern void InitPostgres(const char *in_dbname, Oid dboid,
469
482
  const char *username, Oid useroid,
470
- bool load_session_libraries,
471
- bool override_allow_connections,
483
+ bits32 flags,
472
484
  char *out_dbname);
473
485
  extern void BaseInit(void);
474
486