pg_query 5.1.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +20 -6
  11. data/ext/pg_query/include/pg_query.h +4 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  19. data/ext/pg_query/include/postgres/access/amapi.h +14 -3
  20. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  21. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  26. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  27. data/ext/pg_query/include/postgres/access/genam.h +17 -4
  28. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  29. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  30. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  31. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  32. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  33. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  34. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  35. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  37. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  38. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  41. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  42. data/ext/pg_query/include/postgres/access/table.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tableam.h +35 -25
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  46. data/ext/pg_query/include/postgres/access/transam.h +50 -7
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  51. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  53. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  62. data/ext/pg_query/include/postgres/c.h +32 -37
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  67. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  133. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
  139. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  140. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  142. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  143. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  144. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  145. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  146. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  147. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  148. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  149. data/ext/pg_query/include/postgres/common/int.h +79 -4
  150. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  151. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  152. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  153. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  154. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  155. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  156. data/ext/pg_query/include/postgres/common/string.h +1 -1
  157. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  158. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  159. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  160. data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
  161. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  162. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  163. data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
  164. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  165. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  166. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  167. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  168. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  169. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  170. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  171. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  172. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  173. data/ext/pg_query/include/postgres/gram.h +871 -830
  174. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  175. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  176. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  177. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  178. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  179. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  180. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  181. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  182. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  183. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  184. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  185. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  186. data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
  187. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  188. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  189. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  190. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  191. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  192. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  193. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  194. data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
  195. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  196. data/ext/pg_query/include/postgres/miscadmin.h +72 -52
  197. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  198. data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
  199. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  200. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  201. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  202. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  203. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  205. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  206. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  207. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  209. data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
  210. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  211. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  212. data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
  213. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  214. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  215. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  216. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  217. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  218. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  219. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  220. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  221. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  222. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  223. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  224. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  225. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  226. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  227. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
  229. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  230. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  231. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  232. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  233. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  234. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  235. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  236. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  237. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  238. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  239. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  240. data/ext/pg_query/include/postgres/pg_config.h +53 -45
  241. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  242. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  243. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  244. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  245. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  246. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  247. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  248. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  249. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  250. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  251. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  252. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  253. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  254. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  255. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  256. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  257. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  258. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  259. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  260. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  261. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  262. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  263. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  264. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  265. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  266. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  268. data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
  269. data/ext/pg_query/include/postgres/port.h +39 -4
  270. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  271. data/ext/pg_query/include/postgres/postgres.h +1 -1
  272. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  273. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  274. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  275. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  276. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  277. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  278. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  279. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  280. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  281. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  282. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  283. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  284. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  285. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  286. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  287. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  288. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
  289. data/ext/pg_query/include/postgres/replication/slot.h +45 -5
  290. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  291. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  292. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  293. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  294. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  295. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  296. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  297. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  299. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  300. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  301. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  302. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  305. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  306. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  307. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  308. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  309. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  311. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  312. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  313. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  314. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  315. data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
  316. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  317. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  318. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  319. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  320. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  321. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  322. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  323. data/ext/pg_query/include/postgres/storage/proc.h +48 -26
  324. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  325. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  326. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  327. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  328. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  329. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  330. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  331. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  333. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  334. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  335. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  336. data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
  337. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  338. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  339. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  340. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  341. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  342. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  343. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  344. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  345. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  346. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  347. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  348. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  349. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  350. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  351. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  352. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  353. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  354. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  355. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  356. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  357. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  358. data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
  359. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  361. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  363. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  364. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  365. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  366. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  367. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  368. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  369. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  370. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  372. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  373. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  374. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  375. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  376. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  377. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  378. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  379. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  381. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  382. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  383. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  384. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  385. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  387. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
  388. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  389. data/ext/pg_query/include/postgres/utils/portal.h +10 -10
  390. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  391. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  393. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  394. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  396. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  397. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  399. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  400. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  401. data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
  402. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  403. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  404. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  405. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  406. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  407. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  408. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  409. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  410. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  411. data/ext/pg_query/include/postgres/varatt.h +1 -1
  412. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  413. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  414. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  415. data/ext/pg_query/pg_query_normalize.c +42 -1
  416. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  417. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  418. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  419. data/ext/pg_query/pg_query_scan.c +1 -1
  420. data/ext/pg_query/postgres_deparse.c +601 -172
  421. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  422. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  423. data/ext/pg_query/src_backend_commands_define.c +2 -3
  424. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  425. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  426. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  427. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  428. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  429. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  430. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  431. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  432. data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
  433. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  434. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  435. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  436. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  437. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  438. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  439. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  440. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  441. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  442. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  443. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  444. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  445. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  446. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  447. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  448. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  449. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  450. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  451. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  452. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  453. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  454. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  455. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  456. data/ext/pg_query/src_common_encnames.c +43 -44
  457. data/ext/pg_query/src_common_hashfn.c +1 -1
  458. data/ext/pg_query/src_common_keywords.c +1 -1
  459. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  460. data/ext/pg_query/src_common_kwlookup.c +1 -1
  461. data/ext/pg_query/src_common_psprintf.c +3 -3
  462. data/ext/pg_query/src_common_stringinfo.c +18 -1
  463. data/ext/pg_query/src_common_wchar.c +92 -109
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  466. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  467. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  468. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  469. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  470. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  471. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  472. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  473. data/ext/pg_query/src_port_snprintf.c +15 -18
  474. data/ext/pg_query/src_port_strerror.c +1 -3
  475. data/ext/pg_query/src_port_strlcpy.c +1 -1
  476. data/lib/pg_query/fingerprint.rb +3 -5
  477. data/lib/pg_query/param_refs.rb +2 -2
  478. data/lib/pg_query/parse.rb +5 -7
  479. data/lib/pg_query/parse_error.rb +1 -0
  480. data/lib/pg_query/pg_query_pb.rb +27 -25
  481. data/lib/pg_query/scan.rb +1 -0
  482. data/lib/pg_query/treewalker.rb +38 -15
  483. data/lib/pg_query/truncate.rb +18 -20
  484. data/lib/pg_query/version.rb +1 -1
  485. metadata +31 -82
  486. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  487. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  488. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  489. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
  490. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -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
@@ -575,6 +662,7 @@ extern int pg_valid_server_encoding_id(int encoding);
575
662
  * (in addition to the ones just above). The constant tables declared
576
663
  * earlier in this file are also available from libpgcommon.
577
664
  */
665
+ extern void pg_encoding_set_invalid(int encoding, char *dst);
578
666
  extern int pg_encoding_mblen(int encoding, const char *mbstr);
579
667
  extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr);
580
668
  extern int pg_encoding_dsplen(int encoding, const char *mbstr);
@@ -702,71 +790,4 @@ extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p,
702
790
  extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
703
791
  #endif
704
792
 
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
793
  #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,72 @@ 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, and cannot run transactions or
350
+ * even take heavyweight locks. There can be only one of each of these
351
+ * running at a time.
352
+ *
353
+ * If you modify these, make sure to update NUM_AUXILIARY_PROCS and the
354
+ * glossary in the docs.
355
+ */
356
+ B_ARCHIVER,
334
357
  B_BG_WRITER,
335
358
  B_CHECKPOINTER,
336
- B_LOGGER,
337
- B_STANDALONE_BACKEND,
338
359
  B_STARTUP,
339
360
  B_WAL_RECEIVER,
340
- B_WAL_SENDER,
361
+ B_WAL_SUMMARIZER,
341
362
  B_WAL_WRITER,
363
+
364
+ /*
365
+ * Logger is not connected to shared memory and does not have a PGPROC
366
+ * entry.
367
+ */
368
+ B_LOGGER,
342
369
  } BackendType;
343
370
 
344
- #define BACKEND_NUM_TYPES (B_WAL_WRITER + 1)
371
+ #define BACKEND_NUM_TYPES (B_LOGGER + 1)
345
372
 
346
373
  extern PGDLLIMPORT BackendType MyBackendType;
347
374
 
375
+ #define AmRegularBackendProcess() (MyBackendType == B_BACKEND)
376
+ #define AmAutoVacuumLauncherProcess() (MyBackendType == B_AUTOVAC_LAUNCHER)
377
+ #define AmAutoVacuumWorkerProcess() (MyBackendType == B_AUTOVAC_WORKER)
378
+ #define AmBackgroundWorkerProcess() (MyBackendType == B_BG_WORKER)
379
+ #define AmWalSenderProcess() (MyBackendType == B_WAL_SENDER)
380
+ #define AmLogicalSlotSyncWorkerProcess() (MyBackendType == B_SLOTSYNC_WORKER)
381
+ #define AmArchiverProcess() (MyBackendType == B_ARCHIVER)
382
+ #define AmBackgroundWriterProcess() (MyBackendType == B_BG_WRITER)
383
+ #define AmCheckpointerProcess() (MyBackendType == B_CHECKPOINTER)
384
+ #define AmStartupProcess() (MyBackendType == B_STARTUP)
385
+ #define AmWalReceiverProcess() (MyBackendType == B_WAL_RECEIVER)
386
+ #define AmWalSummarizerProcess() (MyBackendType == B_WAL_SUMMARIZER)
387
+ #define AmWalWriterProcess() (MyBackendType == B_WAL_WRITER)
388
+
389
+ #define AmSpecialWorkerProcess() \
390
+ (AmAutoVacuumLauncherProcess() || \
391
+ AmLogicalSlotSyncWorkerProcess())
392
+
348
393
  extern const char *GetBackendTypeDesc(BackendType backendType);
349
394
 
350
395
  extern void SetDatabasePath(const char *path);
@@ -356,7 +401,9 @@ extern char *GetUserNameFromId(Oid roleid, bool noerr);
356
401
  extern Oid GetUserId(void);
357
402
  extern Oid GetOuterUserId(void);
358
403
  extern Oid GetSessionUserId(void);
404
+ extern bool GetSessionUserIsSuperuser(void);
359
405
  extern Oid GetAuthenticatedUserId(void);
406
+ extern void SetAuthenticatedUserId(Oid userid);
360
407
  extern void GetUserIdAndSecContext(Oid *userid, int *sec_context);
361
408
  extern void SetUserIdAndSecContext(Oid userid, int sec_context);
362
409
  extern bool InLocalUserIdChange(void);
@@ -364,7 +411,8 @@ extern bool InSecurityRestrictedOperation(void);
364
411
  extern bool InNoForceRLSOperation(void);
365
412
  extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
366
413
  extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
367
- extern void InitializeSessionUserId(const char *rolename, Oid roleid);
414
+ extern void InitializeSessionUserId(const char *rolename, Oid roleid,
415
+ bool bypass_login_check);
368
416
  extern void InitializeSessionUserIdStandalone(void);
369
417
  extern void SetSessionAuthorization(Oid userid, bool is_superuser);
370
418
  extern Oid GetCurrentRoleId(void);
@@ -406,7 +454,7 @@ typedef enum ProcessingMode
406
454
  {
407
455
  BootstrapProcessing, /* bootstrap creation of template database */
408
456
  InitProcessing, /* initializing system */
409
- NormalProcessing /* normal processing */
457
+ NormalProcessing, /* normal processing */
410
458
  } ProcessingMode;
411
459
 
412
460
  extern PGDLLIMPORT ProcessingMode Mode;
@@ -426,49 +474,21 @@ extern PGDLLIMPORT ProcessingMode Mode;
426
474
  } while(0)
427
475
 
428
476
 
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
477
  /*****************************************************************************
461
478
  * pinit.h -- *
462
479
  * POSTGRES initialization and cleanup definitions. *
463
480
  *****************************************************************************/
464
481
 
465
482
  /* in utils/init/postinit.c */
483
+ /* flags for InitPostgres() */
484
+ #define INIT_PG_LOAD_SESSION_LIBS 0x0001
485
+ #define INIT_PG_OVERRIDE_ALLOW_CONNS 0x0002
486
+ #define INIT_PG_OVERRIDE_ROLE_LOGIN 0x0004
466
487
  extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
467
488
  extern void InitializeMaxBackends(void);
468
489
  extern void InitPostgres(const char *in_dbname, Oid dboid,
469
490
  const char *username, Oid useroid,
470
- bool load_session_libraries,
471
- bool override_allow_connections,
491
+ bits32 flags,
472
492
  char *out_dbname);
473
493
  extern void BaseInit(void);
474
494