pg_query 5.1.0 → 6.0.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 (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