pg_query 4.2.1 → 5.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 (531) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +6 -8
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +27 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
  29. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
  30. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  31. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  32. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  34. data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
  36. data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
  37. data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
  38. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  39. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  40. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
  42. data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
  43. data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
  44. data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
  45. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
  46. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  47. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
  48. data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
  49. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
  50. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
  52. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  53. data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
  54. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
  58. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
  60. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  82. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
  125. data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
  126. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
  127. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
  129. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  130. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
  132. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
  133. data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
  134. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
  135. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  136. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
  137. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  138. data/ext/pg_query/include/postgres/common/int.h +437 -0
  139. data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
  140. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  141. data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
  142. data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
  143. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  144. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  145. data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
  146. data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
  147. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
  148. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  149. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  150. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
  151. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  152. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  153. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  154. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
  155. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
  156. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
  157. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
  158. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  159. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  160. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
  161. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  162. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
  163. data/ext/pg_query/include/postgres/gram.h +1127 -0
  164. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  165. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
  166. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  167. data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
  168. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
  169. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  170. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
  171. data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
  172. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  173. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
  181. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  182. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  183. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
  184. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  185. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
  186. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
  192. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  193. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
  195. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  196. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  203. data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
  204. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  205. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  206. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
  208. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
  214. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
  215. data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
  216. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  224. data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
  225. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  226. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  227. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
  228. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  229. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
  230. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
  231. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  232. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
  233. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  234. data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
  235. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
  236. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
  237. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  238. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
  239. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
  240. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
  241. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
  242. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  245. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  249. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  250. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  251. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  252. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
  253. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  254. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  255. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  256. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  257. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  258. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  259. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  260. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  261. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  264. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  268. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  269. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  270. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  275. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  276. data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
  277. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  278. data/ext/pg_query/include/postgres/postgres.h +579 -0
  279. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  280. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
  281. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  285. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
  289. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
  290. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
  291. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
  292. data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
  293. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  294. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
  295. data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
  296. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
  297. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
  298. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
  299. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
  300. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  301. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  304. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
  305. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
  306. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  307. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
  308. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
  309. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
  310. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
  311. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
  312. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
  313. data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
  314. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
  315. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  316. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  317. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
  318. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
  320. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
  321. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
  323. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
  324. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  325. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  326. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
  329. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
  330. data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
  331. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  332. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
  333. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
  335. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
  336. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
  337. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  338. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  339. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
  340. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  341. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
  342. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
  343. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
  344. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
  345. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
  346. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  347. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
  348. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
  354. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
  355. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
  356. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  357. data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
  358. data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
  359. data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
  360. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
  361. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
  362. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  363. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  364. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
  365. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  367. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
  368. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  369. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  370. data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
  371. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
  372. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
  374. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
  375. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  376. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
  377. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
  378. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
  379. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
  381. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  382. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
  383. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  384. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  385. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
  386. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
  387. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  388. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
  389. data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
  390. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
  391. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
  392. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
  393. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  395. data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
  396. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
  397. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
  398. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  399. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  400. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
  401. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  402. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
  403. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
  405. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
  407. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
  408. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
  409. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
  411. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
  412. data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
  413. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
  414. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
  415. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  416. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  417. data/ext/pg_query/pg_query.c +10 -1
  418. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  419. data/ext/pg_query/pg_query_deparse.c +1 -10635
  420. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  421. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  422. data/ext/pg_query/pg_query_internal.h +1 -1
  423. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  424. data/ext/pg_query/pg_query_normalize.c +1 -1
  425. data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
  426. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  427. data/ext/pg_query/pg_query_parse.c +47 -5
  428. data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
  429. data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
  430. data/ext/pg_query/pg_query_ruby.c +5 -0
  431. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  432. data/ext/pg_query/pg_query_scan.c +1 -1
  433. data/ext/pg_query/pg_query_split.c +3 -3
  434. data/ext/pg_query/postgres_deparse.c +11067 -0
  435. data/ext/pg_query/postgres_deparse.h +9 -0
  436. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  437. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  438. data/ext/pg_query/src_backend_commands_define.c +1 -1
  439. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  440. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  441. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  442. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  443. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  444. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  445. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  446. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  447. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  448. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  449. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  450. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  451. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  452. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  453. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  454. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  455. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  456. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  457. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  458. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  459. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  460. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  461. data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
  462. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  463. data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
  464. data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
  465. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  466. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  467. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  468. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  469. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  470. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  471. data/ext/pg_query/src_common_encnames.c +4 -1
  472. data/ext/pg_query/src_common_hashfn.c +1 -1
  473. data/ext/pg_query/src_common_keywords.c +1 -1
  474. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  475. data/ext/pg_query/src_common_kwlookup.c +1 -1
  476. data/ext/pg_query/src_common_psprintf.c +1 -1
  477. data/ext/pg_query/src_common_stringinfo.c +4 -4
  478. data/ext/pg_query/src_common_wchar.c +9 -8
  479. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  480. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  481. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  482. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  483. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  484. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  485. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  486. data/ext/pg_query/src_port_pg_bitutils.c +79 -5
  487. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  488. data/ext/pg_query/src_port_snprintf.c +6 -10
  489. data/ext/pg_query/src_port_strerror.c +1 -1
  490. data/ext/pg_query/src_port_strlcpy.c +79 -0
  491. data/lib/pg_query/fingerprint.rb +2 -3
  492. data/lib/pg_query/node.rb +16 -11
  493. data/lib/pg_query/parse.rb +1 -1
  494. data/lib/pg_query/pg_query_pb.rb +166 -3191
  495. data/lib/pg_query/treewalker.rb +23 -5
  496. data/lib/pg_query/version.rb +1 -1
  497. metadata +432 -380
  498. data/ext/pg_query/guc-file.c +0 -0
  499. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  500. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  501. data/ext/pg_query/include/commands/variable.h +0 -38
  502. data/ext/pg_query/include/common/ip.h +0 -31
  503. data/ext/pg_query/include/getaddrinfo.h +0 -162
  504. data/ext/pg_query/include/kwlist_d.h +0 -1095
  505. data/ext/pg_query/include/parser/gram.h +0 -1101
  506. data/ext/pg_query/include/pg_config_os.h +0 -8
  507. data/ext/pg_query/include/portability/instr_time.h +0 -256
  508. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  509. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  510. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  511. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  512. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  513. data/ext/pg_query/include/utils/dynahash.h +0 -20
  514. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  515. data/ext/pg_query/include/utils/pidfile.h +0 -56
  516. data/ext/pg_query/include/utils/ps_status.h +0 -25
  517. data/ext/pg_query/include/utils/rls.h +0 -50
  518. data/ext/pg_query/include/utils/tzparser.h +0 -39
  519. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  520. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  521. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  522. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  523. data/ext/pg_query/src_common_pg_prng.c +0 -152
  524. data/ext/pg_query/src_common_string.c +0 -92
  525. data/ext/pg_query/src_port_pgsleep.c +0 -69
  526. data/ext/pg_query/src_port_strnlen.c +0 -39
  527. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  528. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  529. /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
  530. /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
  531. /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
@@ -8,7 +8,7 @@
8
8
  * (null-terminated text) or arbitrary binary data. All storage is allocated
9
9
  * with palloc() (falling back to malloc in frontend code).
10
10
  *
11
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
12
12
  * Portions Copyright (c) 1994, Regents of the University of California
13
13
  *
14
14
  * src/include/lib/stringinfo.h
@@ -142,7 +142,7 @@ extern void appendStringInfoSpaces(StringInfo str, int count);
142
142
  * if necessary.
143
143
  */
144
144
  extern void appendBinaryStringInfo(StringInfo str,
145
- const char *data, int datalen);
145
+ const void *data, int datalen);
146
146
 
147
147
  /*------------------------
148
148
  * appendBinaryStringInfoNT
@@ -150,7 +150,7 @@ extern void appendBinaryStringInfo(StringInfo str,
150
150
  * if necessary. Does not ensure a trailing null-byte exists.
151
151
  */
152
152
  extern void appendBinaryStringInfoNT(StringInfo str,
153
- const char *data, int datalen);
153
+ const void *data, int datalen);
154
154
 
155
155
  /*------------------------
156
156
  * enlargeStringInfo
@@ -4,7 +4,7 @@
4
4
  * Definitions for network authentication routines
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/libpq/auth.h
@@ -18,7 +18,7 @@
18
18
 
19
19
  extern PGDLLIMPORT char *pg_krb_server_keyfile;
20
20
  extern PGDLLIMPORT bool pg_krb_caseins_users;
21
- extern PGDLLIMPORT char *pg_krb_realm;
21
+ extern PGDLLIMPORT bool pg_gss_accept_delegation;
22
22
 
23
23
  extern void ClientAuthentication(Port *port);
24
24
  extern void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
@@ -28,4 +28,10 @@ extern void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
28
28
  typedef void (*ClientAuthentication_hook_type) (Port *, int);
29
29
  extern PGDLLIMPORT ClientAuthentication_hook_type ClientAuthentication_hook;
30
30
 
31
+ /* hook type for password manglers */
32
+ typedef char *(*auth_password_hook_typ) (char *input);
33
+
34
+ /* Default LDAP password mutator hook, can be overridden by a shared library */
35
+ extern PGDLLIMPORT auth_password_hook_typ ldap_password_hook;
36
+
31
37
  #endif /* AUTH_H */
@@ -3,7 +3,7 @@
3
3
  * crypt.h
4
4
  * Interface to libpq/crypt.c
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/libpq/crypt.h
@@ -77,8 +77,23 @@ typedef enum ClientCertName
77
77
  clientCertDN
78
78
  } ClientCertName;
79
79
 
80
+ /*
81
+ * A single string token lexed from an authentication configuration file
82
+ * (pg_ident.conf or pg_hba.conf), together with whether the token has
83
+ * been quoted. If "string" begins with a slash, it may optionally
84
+ * contain a regular expression (currently used for pg_ident.conf when
85
+ * building IdentLines and for pg_hba.conf when building HbaLines).
86
+ */
87
+ typedef struct AuthToken
88
+ {
89
+ char *string;
90
+ bool quoted;
91
+ regex_t *regex;
92
+ } AuthToken;
93
+
80
94
  typedef struct HbaLine
81
95
  {
96
+ char *sourcefile;
82
97
  int linenumber;
83
98
  char *rawline;
84
99
  ConnType conntype;
@@ -127,22 +142,10 @@ typedef struct IdentLine
127
142
  int linenumber;
128
143
 
129
144
  char *usermap;
130
- char *ident_user;
131
- char *pg_role;
132
- regex_t re;
145
+ AuthToken *system_user;
146
+ AuthToken *pg_user;
133
147
  } IdentLine;
134
148
 
135
- /*
136
- * A single string token lexed from an authentication configuration file
137
- * (pg_ident.conf or pg_hba.conf), together with whether the token has
138
- * been quoted.
139
- */
140
- typedef struct AuthToken
141
- {
142
- char *string;
143
- bool quoted;
144
- } AuthToken;
145
-
146
149
  /*
147
150
  * TokenizedAuthLine represents one line lexed from an authentication
148
151
  * configuration file. Each item in the "fields" list is a sub-list of
@@ -155,6 +158,7 @@ typedef struct AuthToken
155
158
  typedef struct TokenizedAuthLine
156
159
  {
157
160
  List *fields; /* List of lists of AuthTokens */
161
+ char *file_name; /* File name of origin */
158
162
  int line_num; /* Line number */
159
163
  char *raw_line; /* Raw line text */
160
164
  char *err_msg; /* Error message if any */
@@ -168,12 +172,15 @@ extern bool load_ident(void);
168
172
  extern const char *hba_authname(UserAuth auth_method);
169
173
  extern void hba_getauthmethod(hbaPort *port);
170
174
  extern int check_usermap(const char *usermap_name,
171
- const char *pg_role, const char *auth_user,
175
+ const char *pg_user, const char *system_user,
172
176
  bool case_insensitive);
173
177
  extern HbaLine *parse_hba_line(TokenizedAuthLine *tok_line, int elevel);
174
178
  extern IdentLine *parse_ident_line(TokenizedAuthLine *tok_line, int elevel);
175
179
  extern bool pg_isblank(const char c);
176
- extern MemoryContext tokenize_auth_file(const char *filename, FILE *file,
177
- List **tok_lines, int elevel);
180
+ extern FILE *open_auth_file(const char *filename, int elevel, int depth,
181
+ char **err_msg);
182
+ extern void free_auth_file(FILE *file, int depth);
183
+ extern void tokenize_auth_file(const char *filename, FILE *file,
184
+ List **tok_lines, int elevel, int depth);
178
185
 
179
186
  #endif /* HBA_H */
@@ -8,7 +8,7 @@
8
8
  * Structs that need to be client-visible are in pqcomm.h.
9
9
  *
10
10
  *
11
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
12
12
  * Portions Copyright (c) 1994, Regents of the University of California
13
13
  *
14
14
  * src/include/libpq/libpq-be.h
@@ -23,9 +23,7 @@
23
23
  #include <openssl/ssl.h>
24
24
  #include <openssl/err.h>
25
25
  #endif
26
- #ifdef HAVE_NETINET_TCP_H
27
26
  #include <netinet/tcp.h>
28
- #endif
29
27
 
30
28
  #ifdef ENABLE_GSS
31
29
  #if defined(HAVE_GSSAPI_H)
@@ -33,14 +31,6 @@
33
31
  #else
34
32
  #include <gssapi/gssapi.h>
35
33
  #endif /* HAVE_GSSAPI_H */
36
- /*
37
- * GSSAPI brings in headers that set a lot of things in the global namespace on win32,
38
- * that doesn't match the msvc build. It gives a bunch of compiler warnings that we ignore,
39
- * but also defines a symbol that simply does not exist. Undefine it again.
40
- */
41
- #ifdef _MSC_VER
42
- #undef HAVE_GETADDRINFO
43
- #endif
44
34
  #endif /* ENABLE_GSS */
45
35
 
46
36
  #ifdef ENABLE_SSPI
@@ -94,10 +84,42 @@ typedef struct
94
84
  * GSSAPI auth was not used */
95
85
  bool auth; /* GSSAPI Authentication used */
96
86
  bool enc; /* GSSAPI encryption in use */
87
+ bool delegated_creds; /* GSSAPI Delegated credentials */
97
88
  #endif
98
89
  } pg_gssinfo;
99
90
  #endif
100
91
 
92
+ /*
93
+ * ClientConnectionInfo includes the fields describing the client connection
94
+ * that are copied over to parallel workers as nothing from Port does that.
95
+ * The same rules apply for allocations here as for Port (everything must be
96
+ * malloc'd or palloc'd in TopMemoryContext).
97
+ *
98
+ * If you add a struct member here, remember to also handle serialization in
99
+ * SerializeClientConnectionInfo() and co.
100
+ */
101
+ typedef struct ClientConnectionInfo
102
+ {
103
+ /*
104
+ * Authenticated identity. The meaning of this identifier is dependent on
105
+ * auth_method; it is the identity (if any) that the user presented during
106
+ * the authentication cycle, before they were assigned a database role.
107
+ * (It is effectively the "SYSTEM-USERNAME" of a pg_ident usermap --
108
+ * though the exact string in use may be different, depending on pg_hba
109
+ * options.)
110
+ *
111
+ * authn_id is NULL if the user has not actually been authenticated, for
112
+ * example if the "trust" auth method is in use.
113
+ */
114
+ const char *authn_id;
115
+
116
+ /*
117
+ * The HBA method that determined the above authn_id. This only has
118
+ * meaning if authn_id is not NULL; otherwise it's undefined.
119
+ */
120
+ UserAuth auth_method;
121
+ } ClientConnectionInfo;
122
+
101
123
  /*
102
124
  * This is used by the postmaster in its communication with frontends. It
103
125
  * contains all state information needed during this communication before the
@@ -158,19 +180,6 @@ typedef struct Port
158
180
  */
159
181
  HbaLine *hba;
160
182
 
161
- /*
162
- * Authenticated identity. The meaning of this identifier is dependent on
163
- * hba->auth_method; it is the identity (if any) that the user presented
164
- * during the authentication cycle, before they were assigned a database
165
- * role. (It is effectively the "SYSTEM-USERNAME" of a pg_ident usermap
166
- * -- though the exact string in use may be different, depending on pg_hba
167
- * options.)
168
- *
169
- * authn_id is NULL if the user has not actually been authenticated, for
170
- * example if the "trust" auth method is in use.
171
- */
172
- const char *authn_id;
173
-
174
183
  /*
175
184
  * TCP keepalive and user timeout settings.
176
185
  *
@@ -300,7 +309,7 @@ extern void be_tls_get_peer_serial(Port *port, char *ptr, size_t len);
300
309
  * This is not supported with old versions of OpenSSL that don't have
301
310
  * the X509_get_signature_nid() function.
302
311
  */
303
- #if defined(USE_OPENSSL) && defined(HAVE_X509_GET_SIGNATURE_NID)
312
+ #if defined(USE_OPENSSL) && (defined(HAVE_X509_GET_SIGNATURE_NID) || defined(HAVE_X509_GET_SIGNATURE_INFO))
304
313
  #define HAVE_BE_TLS_GET_CERTIFICATE_HASH
305
314
  extern char *be_tls_get_certificate_hash(Port *port, size_t *len);
306
315
  #endif
@@ -320,6 +329,7 @@ extern PGDLLIMPORT openssl_tls_init_hook_typ openssl_tls_init_hook;
320
329
  extern bool be_gssapi_get_auth(Port *port);
321
330
  extern bool be_gssapi_get_enc(Port *port);
322
331
  extern const char *be_gssapi_get_princ(Port *port);
332
+ extern bool be_gssapi_get_delegation(Port *port);
323
333
 
324
334
  /* Read and write to a GSSAPI-encrypted connection. */
325
335
  extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len);
@@ -327,6 +337,7 @@ extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len);
327
337
  #endif /* ENABLE_GSS */
328
338
 
329
339
  extern PGDLLIMPORT ProtocolVersion FrontendProtocol;
340
+ extern PGDLLIMPORT ClientConnectionInfo MyClientConnectionInfo;
330
341
 
331
342
  /* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */
332
343
 
@@ -4,7 +4,7 @@
4
4
  * POSTGRES LIBPQ buffer structure definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/libpq/libpq.h
@@ -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-2022, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2023, 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
@@ -17,54 +17,22 @@
17
17
  #define PQCOMM_H
18
18
 
19
19
  #include <sys/socket.h>
20
- #include <netdb.h>
21
- #ifdef HAVE_SYS_UN_H
22
20
  #include <sys/un.h>
23
- #endif
21
+ #include <netdb.h>
24
22
  #include <netinet/in.h>
25
23
 
26
- #ifdef HAVE_STRUCT_SOCKADDR_STORAGE
27
-
28
- #ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
29
- #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
30
- #define ss_family __ss_family
31
- #else
32
- #error struct sockaddr_storage does not provide an ss_family member
33
- #endif
34
- #endif
35
-
36
- #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN
37
- #define ss_len __ss_len
38
- #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
39
- #endif
40
- #else /* !HAVE_STRUCT_SOCKADDR_STORAGE */
41
-
42
- /* Define a struct sockaddr_storage if we don't have one. */
43
-
44
- struct sockaddr_storage
45
- {
46
- union
47
- {
48
- struct sockaddr sa; /* get the system-dependent fields */
49
- int64 ss_align; /* ensures struct is properly aligned */
50
- char ss_pad[128]; /* ensures struct has desired size */
51
- } ss_stuff;
52
- };
53
-
54
- #define ss_family ss_stuff.sa.sa_family
55
- /* It should have an ss_len field if sockaddr has sa_len. */
56
- #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
57
- #define ss_len ss_stuff.sa.sa_len
58
- #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
59
- #endif
60
- #endif /* HAVE_STRUCT_SOCKADDR_STORAGE */
61
-
62
24
  typedef struct
63
25
  {
64
26
  struct sockaddr_storage addr;
65
27
  socklen_t salen;
66
28
  } SockAddr;
67
29
 
30
+ typedef struct
31
+ {
32
+ int family;
33
+ SockAddr addr;
34
+ } AddrInfo;
35
+
68
36
  /* Configure the UNIX socket location for the well known port. */
69
37
 
70
38
  #define UNIXSOCK_PATH(path, port, sockdir) \
@@ -154,13 +122,14 @@ extern PGDLLIMPORT bool Db_user_namespace;
154
122
  #define AUTH_REQ_PASSWORD 3 /* Password */
155
123
  #define AUTH_REQ_CRYPT 4 /* crypt password. Not supported any more. */
156
124
  #define AUTH_REQ_MD5 5 /* md5 password */
157
- #define AUTH_REQ_SCM_CREDS 6 /* transfer SCM credentials */
125
+ /* 6 is available. It was used for SCM creds, not supported any more. */
158
126
  #define AUTH_REQ_GSS 7 /* GSSAPI without wrap() */
159
127
  #define AUTH_REQ_GSS_CONT 8 /* Continue GSS exchanges */
160
128
  #define AUTH_REQ_SSPI 9 /* SSPI negotiate without wrap() */
161
129
  #define AUTH_REQ_SASL 10 /* Begin SASL authentication */
162
130
  #define AUTH_REQ_SASL_CONT 11 /* Continue SASL authentication */
163
131
  #define AUTH_REQ_SASL_FIN 12 /* Final SASL message */
132
+ #define AUTH_REQ_MAX AUTH_REQ_SASL_FIN /* maximum AUTH_REQ_* value */
164
133
 
165
134
  typedef uint32 AuthRequest;
166
135
 
@@ -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-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, 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
@@ -22,7 +22,7 @@ extern void pq_beginmessage_reuse(StringInfo buf, char msgtype);
22
22
  extern void pq_endmessage(StringInfo buf);
23
23
  extern void pq_endmessage_reuse(StringInfo buf);
24
24
 
25
- extern void pq_sendbytes(StringInfo buf, const char *data, int datalen);
25
+ extern void pq_sendbytes(StringInfo buf, const void *data, int datalen);
26
26
  extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen,
27
27
  bool countincludesself);
28
28
  extern void pq_sendtext(StringInfo buf, const char *str, int slen);
@@ -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-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, 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
@@ -15,15 +15,30 @@
15
15
 
16
16
  #include <signal.h>
17
17
 
18
- #ifndef WIN32
19
- #define PG_SETMASK(mask) sigprocmask(SIG_SETMASK, mask, NULL)
20
- #else
18
+ #ifdef WIN32
21
19
  /* Emulate POSIX sigset_t APIs on Windows */
22
20
  typedef int sigset_t;
23
21
 
24
- extern int pqsigsetmask(int mask);
25
-
26
- #define PG_SETMASK(mask) pqsigsetmask(*(mask))
22
+ #define SA_RESTART 1
23
+ #define SA_NODEFER 2
24
+
25
+ struct sigaction
26
+ {
27
+ void (*sa_handler) (int);
28
+ /* sa_sigaction not yet implemented */
29
+ sigset_t sa_mask;
30
+ int sa_flags;
31
+ };
32
+
33
+ extern int pqsigprocmask(int how, const sigset_t *set, sigset_t *oset);
34
+ extern int pqsigaction(int signum, const struct sigaction *act,
35
+ struct sigaction *oldact);
36
+
37
+ #define SIG_BLOCK 1
38
+ #define SIG_UNBLOCK 2
39
+ #define SIG_SETMASK 3
40
+ #define sigprocmask(how, set, oset) pqsigprocmask((how), (set), (oset))
41
+ #define sigaction(signum, act, oldact) pqsigaction((signum), (act), (oldact))
27
42
  #define sigemptyset(set) (*(set) = 0)
28
43
  #define sigfillset(set) (*(set) = ~0)
29
44
  #define sigaddset(set, signum) (*(set) |= (sigmask(signum)))
@@ -36,7 +51,4 @@ extern PGDLLIMPORT sigset_t StartupBlockSig;
36
51
 
37
52
  extern void pqinitmask(void);
38
53
 
39
- /* pqsigfunc is declared in src/include/port.h */
40
- extern pqsigfunc pqsignal_pm(int signo, pqsigfunc func);
41
-
42
54
  #endif /* PQSIGNAL_H */
@@ -0,0 +1,136 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * sasl.h
4
+ * Defines the SASL mechanism interface for the backend.
5
+ *
6
+ * Each SASL mechanism defines a frontend and a backend callback structure.
7
+ *
8
+ * See src/interfaces/libpq/fe-auth-sasl.h for the frontend counterpart.
9
+ *
10
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1994, Regents of the University of California
12
+ *
13
+ * src/include/libpq/sasl.h
14
+ *
15
+ *-------------------------------------------------------------------------
16
+ */
17
+
18
+ #ifndef PG_SASL_H
19
+ #define PG_SASL_H
20
+
21
+ #include "lib/stringinfo.h"
22
+ #include "libpq/libpq-be.h"
23
+
24
+ /* Status codes for message exchange */
25
+ #define PG_SASL_EXCHANGE_CONTINUE 0
26
+ #define PG_SASL_EXCHANGE_SUCCESS 1
27
+ #define PG_SASL_EXCHANGE_FAILURE 2
28
+
29
+ /*
30
+ * Backend SASL mechanism callbacks.
31
+ *
32
+ * To implement a backend mechanism, declare a pg_be_sasl_mech struct with
33
+ * appropriate callback implementations. Then pass the mechanism to
34
+ * CheckSASLAuth() during ClientAuthentication(), once the server has decided
35
+ * which authentication method to use.
36
+ */
37
+ typedef struct pg_be_sasl_mech
38
+ {
39
+ /*---------
40
+ * get_mechanisms()
41
+ *
42
+ * Retrieves the list of SASL mechanism names supported by this
43
+ * implementation.
44
+ *
45
+ * Input parameters:
46
+ *
47
+ * port: The client Port
48
+ *
49
+ * Output parameters:
50
+ *
51
+ * buf: A StringInfo buffer that the callback should populate with
52
+ * supported mechanism names. The names are appended into this
53
+ * StringInfo, each one ending with '\0' bytes.
54
+ *---------
55
+ */
56
+ void (*get_mechanisms) (Port *port, StringInfo buf);
57
+
58
+ /*---------
59
+ * init()
60
+ *
61
+ * Initializes mechanism-specific state for a connection. This callback
62
+ * must return a pointer to its allocated state, which will be passed
63
+ * as-is as the first argument to the other callbacks.
64
+ *
65
+ * Input parameters:
66
+ *
67
+ * port: The client Port.
68
+ *
69
+ * mech: The actual mechanism name in use by the client.
70
+ *
71
+ * shadow_pass: The stored secret for the role being authenticated, or
72
+ * NULL if one does not exist. Mechanisms that do not use
73
+ * shadow entries may ignore this parameter. If a
74
+ * mechanism uses shadow entries but shadow_pass is NULL,
75
+ * the implementation must continue the exchange as if the
76
+ * user existed and the password did not match, to avoid
77
+ * disclosing valid user names.
78
+ *---------
79
+ */
80
+ void *(*init) (Port *port, const char *mech, const char *shadow_pass);
81
+
82
+ /*---------
83
+ * exchange()
84
+ *
85
+ * Produces a server challenge to be sent to the client. The callback
86
+ * must return one of the PG_SASL_EXCHANGE_* values, depending on
87
+ * whether the exchange continues, has finished successfully, or has
88
+ * failed.
89
+ *
90
+ * Input parameters:
91
+ *
92
+ * state: The opaque mechanism state returned by init()
93
+ *
94
+ * input: The response data sent by the client, or NULL if the
95
+ * mechanism is client-first but the client did not send an
96
+ * initial response. (This can only happen during the first
97
+ * message from the client.) This is guaranteed to be
98
+ * null-terminated for safety, but SASL allows embedded
99
+ * nulls in responses, so mechanisms must be careful to
100
+ * check inputlen.
101
+ *
102
+ * inputlen: The length of the challenge data sent by the server, or
103
+ * -1 if the client did not send an initial response
104
+ *
105
+ * Output parameters, to be set by the callback function:
106
+ *
107
+ * output: A palloc'd buffer containing either the server's next
108
+ * challenge (if PG_SASL_EXCHANGE_CONTINUE is returned) or
109
+ * the server's outcome data (if PG_SASL_EXCHANGE_SUCCESS is
110
+ * returned and the mechanism requires data to be sent during
111
+ * a successful outcome). The callback should set this to
112
+ * NULL if the exchange is over and no output should be sent,
113
+ * which should correspond to either PG_SASL_EXCHANGE_FAILURE
114
+ * or a PG_SASL_EXCHANGE_SUCCESS with no outcome data.
115
+ *
116
+ * outputlen: The length of the challenge data. Ignored if *output is
117
+ * NULL.
118
+ *
119
+ * logdetail: Set to an optional DETAIL message to be printed to the
120
+ * server log, to disambiguate failure modes. (The client
121
+ * will only ever see the same generic authentication
122
+ * failure message.) Ignored if the exchange is completed
123
+ * with PG_SASL_EXCHANGE_SUCCESS.
124
+ *---------
125
+ */
126
+ int (*exchange) (void *state,
127
+ const char *input, int inputlen,
128
+ char **output, int *outputlen,
129
+ const char **logdetail);
130
+ } pg_be_sasl_mech;
131
+
132
+ /* Common implementation for auth.c */
133
+ extern int CheckSASLAuth(const pg_be_sasl_mech *mech, Port *port,
134
+ char *shadow_pass, const char **logdetail);
135
+
136
+ #endif /* PG_SASL_H */
@@ -0,0 +1,37 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * scram.h
4
+ * Interface to libpq/scram.c
5
+ *
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * src/include/libpq/scram.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef PG_SCRAM_H
14
+ #define PG_SCRAM_H
15
+
16
+ #include "common/cryptohash.h"
17
+ #include "lib/stringinfo.h"
18
+ #include "libpq/libpq-be.h"
19
+ #include "libpq/sasl.h"
20
+
21
+ /* Number of iterations when generating new secrets */
22
+ extern PGDLLIMPORT int scram_sha_256_iterations;
23
+
24
+ /* SASL implementation callbacks */
25
+ extern PGDLLIMPORT const pg_be_sasl_mech pg_be_scram_mech;
26
+
27
+ /* Routines to handle and check SCRAM-SHA-256 secret */
28
+ extern char *pg_be_scram_build_secret(const char *password);
29
+ extern bool parse_scram_secret(const char *secret,
30
+ int *iterations,
31
+ pg_cryptohash_type *hash_type,
32
+ int *key_length, char **salt,
33
+ uint8 *stored_key, uint8 *server_key);
34
+ extern bool scram_verify_plain_password(const char *username,
35
+ const char *password, const char *secret);
36
+
37
+ #endif /* PG_SCRAM_H */