pg_query 2.0.3 → 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 (557) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -0
  3. data/README.md +67 -29
  4. data/Rakefile +8 -23
  5. data/ext/pg_query/extconf.rb +21 -3
  6. data/ext/pg_query/include/pg_query.h +29 -4
  7. data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -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 +2 -2
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
  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 +80 -88
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
  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 +17 -2
  29. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  30. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
  31. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  32. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
  34. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
  36. data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
  37. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  38. data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
  39. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  40. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  42. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
  43. data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
  44. data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
  45. data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
  46. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
  47. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  48. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
  49. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  50. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
  52. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  53. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  54. data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
  58. data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
  60. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
  80. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
  81. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
  125. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
  126. data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
  127. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
  129. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
  130. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  132. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
  133. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
  134. data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
  135. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
  136. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  137. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
  138. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  139. data/ext/pg_query/include/postgres/common/int.h +437 -0
  140. data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
  141. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  142. data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
  143. data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
  144. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  145. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  146. data/ext/pg_query/include/postgres/common/string.h +44 -0
  147. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
  148. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
  149. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  150. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  151. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
  152. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  153. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  154. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  155. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
  156. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
  157. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
  158. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
  159. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  160. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  161. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
  162. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  163. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
  164. data/ext/pg_query/include/postgres/gram.h +1127 -0
  165. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  166. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
  167. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  168. data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
  169. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
  170. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  171. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
  172. data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
  173. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  181. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
  182. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  183. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  184. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
  185. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  186. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
  192. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
  193. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  195. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
  196. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
  203. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  205. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  206. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
  214. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
  215. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
  216. data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
  224. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  225. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  226. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  227. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  228. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
  229. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  230. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
  231. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
  232. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  233. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
  234. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  235. data/ext/pg_query/include/postgres/pgstat.h +778 -0
  236. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
  237. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
  238. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  239. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
  240. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
  241. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
  242. data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
  243. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
  245. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  248. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  249. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
  250. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  251. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  252. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  253. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  254. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
  255. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  256. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  257. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  258. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  259. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  260. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  261. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  264. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  268. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  269. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  270. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  276. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  278. data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
  279. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  280. data/ext/pg_query/include/postgres/postgres.h +579 -0
  281. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
  285. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
  289. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  290. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
  291. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
  292. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
  293. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
  294. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  295. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  296. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
  297. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
  298. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
  299. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
  300. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
  301. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
  304. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  305. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  306. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
  307. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
  308. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  309. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
  310. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
  311. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
  312. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
  313. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
  314. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
  315. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  316. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
  317. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  318. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
  320. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
  321. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
  323. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
  324. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
  325. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
  326. data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  329. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
  330. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
  331. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
  332. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
  333. data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  335. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
  336. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  337. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
  338. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
  339. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
  340. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  341. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  342. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
  343. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  344. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
  345. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
  346. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
  347. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
  348. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
  354. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
  355. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
  356. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
  357. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
  358. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
  359. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  360. data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
  361. data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
  362. data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
  363. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
  364. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
  365. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  367. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
  368. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
  369. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  370. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
  371. data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
  372. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  374. data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
  375. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
  376. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
  377. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
  378. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
  379. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
  381. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
  382. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
  383. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  384. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
  385. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  386. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
  387. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  388. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  389. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
  390. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
  391. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  392. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
  393. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
  395. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
  396. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
  397. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  398. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  399. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  400. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
  401. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
  402. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  403. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
  405. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
  407. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
  408. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
  409. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
  411. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
  412. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
  413. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
  414. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
  415. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
  416. data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
  417. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
  418. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
  419. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
  420. data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
  421. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  422. data/ext/pg_query/include/protobuf-c.h +7 -3
  423. data/ext/pg_query/pg_query.c +10 -1
  424. data/ext/pg_query/pg_query.pb-c.c +21026 -17002
  425. data/ext/pg_query/pg_query_deparse.c +1 -9896
  426. data/ext/pg_query/pg_query_fingerprint.c +162 -50
  427. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  428. data/ext/pg_query/pg_query_internal.h +1 -1
  429. data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
  430. data/ext/pg_query/pg_query_normalize.c +259 -64
  431. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  432. data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
  433. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  434. data/ext/pg_query/pg_query_parse.c +47 -5
  435. data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
  436. data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
  437. data/ext/pg_query/pg_query_ruby.c +6 -1
  438. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  439. data/ext/pg_query/pg_query_scan.c +3 -2
  440. data/ext/pg_query/pg_query_split.c +6 -5
  441. data/ext/pg_query/postgres_deparse.c +11067 -0
  442. data/ext/pg_query/postgres_deparse.h +9 -0
  443. data/ext/pg_query/protobuf-c.c +34 -27
  444. data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
  445. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  446. data/ext/pg_query/src_backend_commands_define.c +11 -1
  447. data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
  448. data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
  449. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
  450. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  451. data/ext/pg_query/src_backend_nodes_list.c +99 -12
  452. data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
  453. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
  454. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  455. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  456. data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
  457. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  458. data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
  459. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  460. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  461. data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
  462. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  463. data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
  464. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  465. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  466. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  467. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
  468. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  469. data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
  470. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
  471. data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
  472. data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
  473. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  474. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
  476. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  477. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
  478. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  479. data/ext/pg_query/src_common_encnames.c +4 -1
  480. data/ext/pg_query/src_common_hashfn.c +420 -0
  481. data/ext/pg_query/src_common_keywords.c +15 -2
  482. data/ext/pg_query/src_common_kwlist_d.h +545 -498
  483. data/ext/pg_query/src_common_kwlookup.c +1 -1
  484. data/ext/pg_query/src_common_psprintf.c +1 -1
  485. data/ext/pg_query/src_common_stringinfo.c +4 -4
  486. data/ext/pg_query/src_common_wchar.c +717 -113
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  493. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  494. data/ext/pg_query/src_port_pg_bitutils.c +103 -40
  495. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  496. data/ext/pg_query/src_port_qsort.c +12 -224
  497. data/ext/pg_query/src_port_snprintf.c +51 -29
  498. data/ext/pg_query/src_port_strerror.c +9 -19
  499. data/ext/pg_query/src_port_strlcpy.c +79 -0
  500. data/lib/pg_query/deparse.rb +7 -1
  501. data/lib/pg_query/filter_columns.rb +7 -5
  502. data/lib/pg_query/fingerprint.rb +21 -9
  503. data/lib/pg_query/node.rb +18 -13
  504. data/lib/pg_query/param_refs.rb +1 -1
  505. data/lib/pg_query/parse.rb +141 -50
  506. data/lib/pg_query/pg_query_pb.rb +175 -3031
  507. data/lib/pg_query/treewalker.rb +26 -2
  508. data/lib/pg_query/truncate.rb +54 -8
  509. data/lib/pg_query/version.rb +1 -1
  510. data/lib/pg_query.rb +0 -1
  511. metadata +443 -380
  512. data/ext/pg_query/guc-file.c +0 -0
  513. data/ext/pg_query/include/access/rmgr.h +0 -35
  514. data/ext/pg_query/include/access/xloginsert.h +0 -64
  515. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  516. data/ext/pg_query/include/catalog/genbki.h +0 -64
  517. data/ext/pg_query/include/catalog/indexing.h +0 -366
  518. data/ext/pg_query/include/commands/variable.h +0 -38
  519. data/ext/pg_query/include/common/ip.h +0 -37
  520. data/ext/pg_query/include/common/string.h +0 -19
  521. data/ext/pg_query/include/getaddrinfo.h +0 -162
  522. data/ext/pg_query/include/kwlist_d.h +0 -1072
  523. data/ext/pg_query/include/nodes/value.h +0 -61
  524. data/ext/pg_query/include/parser/gram.h +0 -1067
  525. data/ext/pg_query/include/parser/kwlist.h +0 -477
  526. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  527. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  528. data/ext/pg_query/include/parser/parse_target.h +0 -46
  529. data/ext/pg_query/include/parser/parser.h +0 -41
  530. data/ext/pg_query/include/pg_config_os.h +0 -8
  531. data/ext/pg_query/include/pgstat.h +0 -1487
  532. data/ext/pg_query/include/portability/instr_time.h +0 -256
  533. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  534. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  535. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  536. data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
  537. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  538. data/ext/pg_query/include/utils/dynahash.h +0 -19
  539. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  540. data/ext/pg_query/include/utils/pidfile.h +0 -56
  541. data/ext/pg_query/include/utils/ps_status.h +0 -25
  542. data/ext/pg_query/include/utils/regproc.h +0 -28
  543. data/ext/pg_query/include/utils/rls.h +0 -50
  544. data/ext/pg_query/include/utils/tzparser.h +0 -39
  545. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  546. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  547. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  548. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  549. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  550. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
  551. data/ext/pg_query/src_common_string.c +0 -86
  552. data/ext/pg_query/src_port_erand48.c +0 -127
  553. data/ext/pg_query/src_port_pgsleep.c +0 -69
  554. data/ext/pg_query/src_port_random.c +0 -31
  555. data/ext/pg_query/src_port_strnlen.c +0 -39
  556. data/lib/pg_query/json_field_names.rb +0 -1402
  557. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -3,7 +3,7 @@
3
3
  * pg_wchar.h
4
4
  * multibyte-character support
5
5
  *
6
- * Portions Copyright (c) 1996-2020, 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/mb/pg_wchar.h
@@ -19,6 +19,8 @@
19
19
  #ifndef PG_WCHAR_H
20
20
  #define PG_WCHAR_H
21
21
 
22
+ #include "port/simd.h"
23
+
22
24
  /*
23
25
  * The pg_wchar type
24
26
  */
@@ -306,15 +308,33 @@ typedef enum pg_enc
306
308
 
307
309
  /*
308
310
  * When converting strings between different encodings, we assume that space
309
- * for converted result is 4-to-1 growth in the worst case. The rate for
311
+ * for converted result is 4-to-1 growth in the worst case. The rate for
310
312
  * currently supported encoding pairs are within 3 (SJIS JIS X0201 half width
311
- * kanna -> UTF8 is the worst case). So "4" should be enough for the moment.
313
+ * kana -> UTF8 is the worst case). So "4" should be enough for the moment.
312
314
  *
313
315
  * Note that this is not the same as the maximum character width in any
314
316
  * particular encoding.
315
317
  */
316
318
  #define MAX_CONVERSION_GROWTH 4
317
319
 
320
+ /*
321
+ * Maximum byte length of a string that's required in any encoding to convert
322
+ * at least one character to any other encoding. In other words, if you feed
323
+ * MAX_CONVERSION_INPUT_LENGTH bytes to any encoding conversion function, it
324
+ * is guaranteed to be able to convert something without needing more input
325
+ * (assuming the input is valid).
326
+ *
327
+ * Currently, the maximum case is the conversion UTF8 -> SJIS JIS X0201 half
328
+ * width kana, where a pair of UTF-8 characters is converted into a single
329
+ * SHIFT_JIS_2004 character (the reverse of the worst case for
330
+ * MAX_CONVERSION_GROWTH). It needs 6 bytes of input. In theory, a
331
+ * user-defined conversion function might have more complicated cases, although
332
+ * for the reverse mapping you would probably also need to bump up
333
+ * MAX_CONVERSION_GROWTH. But there is no need to be stingy here, so make it
334
+ * generous.
335
+ */
336
+ #define MAX_CONVERSION_INPUT_LENGTH 16
337
+
318
338
  /*
319
339
  * Maximum byte length of the string equivalent to any one Unicode code point,
320
340
  * in any backend encoding. The current value assumes that a 4-byte UTF-8
@@ -341,7 +361,7 @@ typedef struct pg_enc2name
341
361
  #endif
342
362
  } pg_enc2name;
343
363
 
344
- extern const pg_enc2name pg_enc2name_tbl[];
364
+ extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
345
365
 
346
366
  /*
347
367
  * Encoding names for gettext
@@ -352,7 +372,7 @@ typedef struct pg_enc2gettext
352
372
  const char *name;
353
373
  } pg_enc2gettext;
354
374
 
355
- extern const pg_enc2gettext pg_enc2gettext_tbl[];
375
+ extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[];
356
376
 
357
377
  /*
358
378
  * pg_wchar stuff
@@ -371,7 +391,9 @@ typedef int (*mbdisplaylen_converter) (const unsigned char *mbstr);
371
391
 
372
392
  typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len);
373
393
 
374
- typedef int (*mbverifier) (const unsigned char *mbstr, int len);
394
+ typedef int (*mbchar_verifier) (const unsigned char *mbstr, int len);
395
+
396
+ typedef int (*mbstr_verifier) (const unsigned char *mbstr, int len);
375
397
 
376
398
  typedef struct
377
399
  {
@@ -381,11 +403,12 @@ typedef struct
381
403
  * to a multibyte */
382
404
  mblen_converter mblen; /* get byte length of a char */
383
405
  mbdisplaylen_converter dsplen; /* get display width of a char */
384
- mbverifier mbverify; /* verify multibyte sequence */
406
+ mbchar_verifier mbverifychar; /* verify multibyte character */
407
+ mbstr_verifier mbverifystr; /* verify multibyte string */
385
408
  int maxmblen; /* max bytes for a char in this encoding */
386
409
  } pg_wchar_tbl;
387
410
 
388
- extern const pg_wchar_tbl pg_wchar_table[];
411
+ extern PGDLLIMPORT const pg_wchar_tbl pg_wchar_table[];
389
412
 
390
413
  /*
391
414
  * Data structures for conversions between UTF-8 and other encodings
@@ -553,8 +576,10 @@ extern int pg_valid_server_encoding_id(int encoding);
553
576
  * earlier in this file are also available from libpgcommon.
554
577
  */
555
578
  extern int pg_encoding_mblen(int encoding, const char *mbstr);
579
+ extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr);
556
580
  extern int pg_encoding_dsplen(int encoding, const char *mbstr);
557
- extern int pg_encoding_verifymb(int encoding, const char *mbstr, int len);
581
+ extern int pg_encoding_verifymbchar(int encoding, const char *mbstr, int len);
582
+ extern int pg_encoding_verifymbstr(int encoding, const char *mbstr, int len);
558
583
  extern int pg_encoding_max_length(int encoding);
559
584
  extern int pg_valid_client_encoding(const char *name);
560
585
  extern int pg_valid_server_encoding(const char *name);
@@ -581,11 +606,11 @@ extern int pg_encoding_wchar2mb_with_len(int encoding,
581
606
  extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2);
582
607
  extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n);
583
608
  extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n);
584
- extern size_t pg_wchar_strlen(const pg_wchar *wstr);
609
+ extern size_t pg_wchar_strlen(const pg_wchar *str);
585
610
  extern int pg_mblen(const char *mbstr);
586
611
  extern int pg_dsplen(const char *mbstr);
587
612
  extern int pg_mbstrlen(const char *mbstr);
588
- extern int pg_mbstrlen_with_len(const char *mbstr, int len);
613
+ extern int pg_mbstrlen_with_len(const char *mbstr, int limit);
589
614
  extern int pg_mbcliplen(const char *mbstr, int len, int limit);
590
615
  extern int pg_encoding_mbcliplen(int encoding, const char *mbstr,
591
616
  int len, int limit);
@@ -612,6 +637,12 @@ extern int pg_bind_textdomain_codeset(const char *domainname);
612
637
  extern unsigned char *pg_do_encoding_conversion(unsigned char *src, int len,
613
638
  int src_encoding,
614
639
  int dest_encoding);
640
+ extern int pg_do_encoding_conversion_buf(Oid proc,
641
+ int src_encoding,
642
+ int dest_encoding,
643
+ unsigned char *src, int srclen,
644
+ unsigned char *dest, int destlen,
645
+ bool noError);
615
646
 
616
647
  extern char *pg_client_to_server(const char *s, int len);
617
648
  extern char *pg_server_to_client(const char *s, int len);
@@ -619,22 +650,23 @@ extern char *pg_any_to_server(const char *s, int len, int encoding);
619
650
  extern char *pg_server_to_any(const char *s, int len, int encoding);
620
651
 
621
652
  extern void pg_unicode_to_server(pg_wchar c, unsigned char *s);
653
+ extern bool pg_unicode_to_server_noerror(pg_wchar c, unsigned char *s);
622
654
 
623
655
  extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc);
624
656
  extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc);
625
657
 
626
- extern void UtfToLocal(const unsigned char *utf, int len,
658
+ extern int UtfToLocal(const unsigned char *utf, int len,
627
659
  unsigned char *iso,
628
660
  const pg_mb_radix_tree *map,
629
661
  const pg_utf_to_local_combined *cmap, int cmapsize,
630
662
  utf_local_conversion_func conv_func,
631
- int encoding);
632
- extern void LocalToUtf(const unsigned char *iso, int len,
663
+ int encoding, bool noError);
664
+ extern int LocalToUtf(const unsigned char *iso, int len,
633
665
  unsigned char *utf,
634
666
  const pg_mb_radix_tree *map,
635
667
  const pg_local_to_utf_combined *cmap, int cmapsize,
636
668
  utf_local_conversion_func conv_func,
637
- int encoding);
669
+ int encoding, bool noError);
638
670
 
639
671
  extern bool pg_verifymbstr(const char *mbstr, int len, bool noError);
640
672
  extern bool pg_verify_mbstr(int encoding, const char *mbstr, int len,
@@ -652,21 +684,89 @@ extern void report_invalid_encoding(int encoding, const char *mbstr, int len) pg
652
684
  extern void report_untranslatable_char(int src_encoding, int dest_encoding,
653
685
  const char *mbstr, int len) pg_attribute_noreturn();
654
686
 
655
- extern void local2local(const unsigned char *l, unsigned char *p, int len,
656
- int src_encoding, int dest_encoding, const unsigned char *tab);
657
- extern void latin2mic(const unsigned char *l, unsigned char *p, int len,
658
- int lc, int encoding);
659
- extern void mic2latin(const unsigned char *mic, unsigned char *p, int len,
660
- int lc, int encoding);
661
- extern void latin2mic_with_table(const unsigned char *l, unsigned char *p,
687
+ extern int local2local(const unsigned char *l, unsigned char *p, int len,
688
+ int src_encoding, int dest_encoding,
689
+ const unsigned char *tab, bool noError);
690
+ extern int latin2mic(const unsigned char *l, unsigned char *p, int len,
691
+ int lc, int encoding, bool noError);
692
+ extern int mic2latin(const unsigned char *mic, unsigned char *p, int len,
693
+ int lc, int encoding, bool noError);
694
+ extern int latin2mic_with_table(const unsigned char *l, unsigned char *p,
662
695
  int len, int lc, int encoding,
663
- const unsigned char *tab);
664
- extern void mic2latin_with_table(const unsigned char *mic, unsigned char *p,
696
+ const unsigned char *tab, bool noError);
697
+ extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p,
665
698
  int len, int lc, int encoding,
666
- const unsigned char *tab);
699
+ const unsigned char *tab, bool noError);
667
700
 
668
701
  #ifdef WIN32
669
702
  extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
670
703
  #endif
671
704
 
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
+
672
772
  #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-2020, 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/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-2020, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/miscadmin.h
@@ -57,6 +57,15 @@
57
57
  * allowing die interrupts: HOLD_CANCEL_INTERRUPTS() and
58
58
  * RESUME_CANCEL_INTERRUPTS().
59
59
  *
60
+ * Note that ProcessInterrupts() has also acquired a number of tasks that
61
+ * do not necessarily cause a query-cancel-or-die response. Hence, it's
62
+ * possible that it will just clear InterruptPending and return.
63
+ *
64
+ * INTERRUPTS_PENDING_CONDITION() can be checked to see whether an
65
+ * interrupt needs to be serviced, without trying to do so immediately.
66
+ * Some callers are also interested in INTERRUPTS_CAN_BE_PROCESSED(),
67
+ * which tells whether ProcessInterrupts is sure to clear the interrupt.
68
+ *
60
69
  * Special mechanisms are used to let an interrupt be accepted when we are
61
70
  * waiting for a lock or when we are waiting for command input (but, of
62
71
  * course, only if the interrupt holdoff counter is zero). See the
@@ -82,8 +91,12 @@ extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending;
82
91
  extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending;
83
92
  extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending;
84
93
  extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending;
94
+ extern PGDLLIMPORT volatile sig_atomic_t IdleSessionTimeoutPending;
85
95
  extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending;
96
+ extern PGDLLIMPORT volatile sig_atomic_t LogMemoryContextPending;
97
+ extern PGDLLIMPORT volatile sig_atomic_t IdleStatsUpdateTimeoutPending;
86
98
 
99
+ extern PGDLLIMPORT volatile sig_atomic_t CheckClientConnectionPending;
87
100
  extern PGDLLIMPORT volatile sig_atomic_t ClientConnectionLost;
88
101
 
89
102
  /* these are marked volatile because they are examined by signal handlers: */
@@ -94,24 +107,27 @@ extern PGDLLIMPORT __thread volatile uint32 CritSectionCount;
94
107
  /* in tcop/postgres.c */
95
108
  extern void ProcessInterrupts(void);
96
109
 
110
+ /* Test whether an interrupt is pending */
97
111
  #ifndef WIN32
112
+ #define INTERRUPTS_PENDING_CONDITION() \
113
+ (unlikely(InterruptPending))
114
+ #else
115
+ #define INTERRUPTS_PENDING_CONDITION() \
116
+ (unlikely(UNBLOCKED_SIGNAL_QUEUE()) ? pgwin32_dispatch_queued_signals() : 0, \
117
+ unlikely(InterruptPending))
118
+ #endif
98
119
 
120
+ /* Service interrupt, if one is pending and it's safe to service it now */
99
121
  #define CHECK_FOR_INTERRUPTS() \
100
122
  do { \
101
- if (unlikely(InterruptPending)) \
102
- ProcessInterrupts(); \
103
- } while(0)
104
- #else /* WIN32 */
105
-
106
- #define CHECK_FOR_INTERRUPTS() \
107
- do { \
108
- if (unlikely(UNBLOCKED_SIGNAL_QUEUE())) \
109
- pgwin32_dispatch_queued_signals(); \
110
- if (unlikely(InterruptPending)) \
123
+ if (INTERRUPTS_PENDING_CONDITION()) \
111
124
  ProcessInterrupts(); \
112
125
  } while(0)
113
- #endif /* WIN32 */
114
126
 
127
+ /* Is ProcessInterrupts() guaranteed to clear InterruptPending? */
128
+ #define INTERRUPTS_CAN_BE_PROCESSED() \
129
+ (InterruptHoldoffCount == 0 && CritSectionCount == 0 && \
130
+ QueryCancelHoldoffCount == 0)
115
131
 
116
132
  #define HOLD_INTERRUPTS() (InterruptHoldoffCount++)
117
133
 
@@ -146,12 +162,12 @@ do { \
146
162
  * from utils/init/globals.c
147
163
  */
148
164
  extern PGDLLIMPORT pid_t PostmasterPid;
149
- extern PGDLLIMPORT __thread bool IsPostmasterEnvironment;
165
+ extern PGDLLIMPORT bool IsPostmasterEnvironment;
150
166
  extern PGDLLIMPORT bool IsUnderPostmaster;
151
167
  extern PGDLLIMPORT bool IsBackgroundWorker;
152
168
  extern PGDLLIMPORT bool IsBinaryUpgrade;
153
169
 
154
- extern PGDLLIMPORT __thread bool ExitOnAnyError;
170
+ extern PGDLLIMPORT __thread bool ExitOnAnyError;
155
171
 
156
172
  extern PGDLLIMPORT char *DataDir;
157
173
  extern PGDLLIMPORT int data_directory_mode;
@@ -167,15 +183,15 @@ extern PGDLLIMPORT pg_time_t MyStartTime;
167
183
  extern PGDLLIMPORT TimestampTz MyStartTimestamp;
168
184
  extern PGDLLIMPORT struct Port *MyProcPort;
169
185
  extern PGDLLIMPORT struct Latch *MyLatch;
170
- extern int32 MyCancelKey;
171
- extern int MyPMChildSlot;
186
+ extern PGDLLIMPORT int32 MyCancelKey;
187
+ extern PGDLLIMPORT int MyPMChildSlot;
172
188
 
173
- extern char OutputFileName[];
189
+ extern PGDLLIMPORT char OutputFileName[];
174
190
  extern PGDLLIMPORT char my_exec_path[];
175
- extern char pkglib_path[];
191
+ extern PGDLLIMPORT char pkglib_path[];
176
192
 
177
193
  #ifdef EXEC_BACKEND
178
- extern char postgres_exec_path[];
194
+ extern PGDLLIMPORT char postgres_exec_path[];
179
195
  #endif
180
196
 
181
197
  /*
@@ -240,40 +256,39 @@ extern PGDLLIMPORT int IntervalStyle;
240
256
 
241
257
  #define MAXTZLEN 10 /* max TZ name len, not counting tr. null */
242
258
 
243
- extern bool enableFsync;
259
+ extern PGDLLIMPORT bool enableFsync;
244
260
  extern PGDLLIMPORT bool allowSystemTableMods;
245
261
  extern PGDLLIMPORT int work_mem;
246
262
  extern PGDLLIMPORT double hash_mem_multiplier;
247
263
  extern PGDLLIMPORT int maintenance_work_mem;
248
264
  extern PGDLLIMPORT int max_parallel_maintenance_workers;
249
265
 
250
- extern int VacuumCostPageHit;
251
- extern int VacuumCostPageMiss;
252
- extern int VacuumCostPageDirty;
253
- extern int VacuumCostLimit;
254
- extern double VacuumCostDelay;
266
+ /*
267
+ * Upper and lower hard limits for the buffer access strategy ring size
268
+ * specified by the VacuumBufferUsageLimit GUC and BUFFER_USAGE_LIMIT option
269
+ * to VACUUM and ANALYZE.
270
+ */
271
+ #define MIN_BAS_VAC_RING_SIZE_KB 128
272
+ #define MAX_BAS_VAC_RING_SIZE_KB (16 * 1024 * 1024)
255
273
 
256
- extern int64 VacuumPageHit;
257
- extern int64 VacuumPageMiss;
258
- extern int64 VacuumPageDirty;
274
+ extern PGDLLIMPORT int VacuumBufferUsageLimit;
275
+ extern PGDLLIMPORT int VacuumCostPageHit;
276
+ extern PGDLLIMPORT int VacuumCostPageMiss;
277
+ extern PGDLLIMPORT int VacuumCostPageDirty;
278
+ extern PGDLLIMPORT int VacuumCostLimit;
279
+ extern PGDLLIMPORT double VacuumCostDelay;
259
280
 
260
- extern int VacuumCostBalance;
261
- extern bool VacuumCostActive;
281
+ extern PGDLLIMPORT int64 VacuumPageHit;
282
+ extern PGDLLIMPORT int64 VacuumPageMiss;
283
+ extern PGDLLIMPORT int64 VacuumPageDirty;
262
284
 
263
- extern double vacuum_cleanup_index_scale_factor;
285
+ extern PGDLLIMPORT int VacuumCostBalance;
286
+ extern PGDLLIMPORT bool VacuumCostActive;
264
287
 
265
288
 
266
289
  /* in tcop/postgres.c */
267
290
 
268
- #if defined(__ia64__) || defined(__ia64)
269
- typedef struct
270
- {
271
- char *stack_base_ptr;
272
- char *register_stack_base_ptr;
273
- } pg_stack_base_t;
274
- #else
275
291
  typedef char *pg_stack_base_t;
276
- #endif
277
292
 
278
293
  extern pg_stack_base_t set_stack_base(void);
279
294
  extern void restore_stack_base(pg_stack_base_t base);
@@ -285,8 +300,8 @@ extern void PreventCommandIfReadOnly(const char *cmdname);
285
300
  extern void PreventCommandIfParallelMode(const char *cmdname);
286
301
  extern void PreventCommandDuringRecovery(const char *cmdname);
287
302
 
288
- /* in utils/misc/guc.c */
289
- extern int trace_recovery_messages;
303
+ /* in utils/misc/guc_tables.c */
304
+ extern PGDLLIMPORT int trace_recovery_messages;
290
305
  extern int trace_recovery(int trace_level);
291
306
 
292
307
  /*****************************************************************************
@@ -299,33 +314,36 @@ extern int trace_recovery(int trace_level);
299
314
  #define SECURITY_RESTRICTED_OPERATION 0x0002
300
315
  #define SECURITY_NOFORCE_RLS 0x0004
301
316
 
302
- extern char *DatabasePath;
317
+ extern PGDLLIMPORT char *DatabasePath;
303
318
 
304
319
  /* now in utils/init/miscinit.c */
305
320
  extern void InitPostmasterChild(void);
306
321
  extern void InitStandaloneProcess(const char *argv0);
322
+ extern void InitProcessLocalLatch(void);
307
323
  extern void SwitchToSharedLatch(void);
308
324
  extern void SwitchBackToLocalLatch(void);
309
325
 
310
326
  typedef enum BackendType
311
327
  {
312
328
  B_INVALID = 0,
329
+ B_ARCHIVER,
313
330
  B_AUTOVAC_LAUNCHER,
314
331
  B_AUTOVAC_WORKER,
315
332
  B_BACKEND,
316
333
  B_BG_WORKER,
317
334
  B_BG_WRITER,
318
335
  B_CHECKPOINTER,
336
+ B_LOGGER,
337
+ B_STANDALONE_BACKEND,
319
338
  B_STARTUP,
320
339
  B_WAL_RECEIVER,
321
340
  B_WAL_SENDER,
322
341
  B_WAL_WRITER,
323
- B_ARCHIVER,
324
- B_STATS_COLLECTOR,
325
- B_LOGGER,
326
342
  } BackendType;
327
343
 
328
- extern BackendType MyBackendType;
344
+ #define BACKEND_NUM_TYPES (B_WAL_WRITER + 1)
345
+
346
+ extern PGDLLIMPORT BackendType MyBackendType;
329
347
 
330
348
  extern const char *GetBackendTypeDesc(BackendType backendType);
331
349
 
@@ -346,11 +364,14 @@ extern bool InSecurityRestrictedOperation(void);
346
364
  extern bool InNoForceRLSOperation(void);
347
365
  extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
348
366
  extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
349
- extern void InitializeSessionUserId(const char *rolename, Oid useroid);
367
+ extern void InitializeSessionUserId(const char *rolename, Oid roleid);
350
368
  extern void InitializeSessionUserIdStandalone(void);
351
369
  extern void SetSessionAuthorization(Oid userid, bool is_superuser);
352
370
  extern Oid GetCurrentRoleId(void);
353
371
  extern void SetCurrentRoleId(Oid roleid, bool is_superuser);
372
+ extern void InitializeSystemUser(const char *authn_id,
373
+ const char *auth_method);
374
+ extern const char *GetSystemUser(void);
354
375
 
355
376
  /* in utils/misc/superuser.c */
356
377
  extern bool superuser(void); /* current user is superuser */
@@ -388,7 +409,7 @@ typedef enum ProcessingMode
388
409
  NormalProcessing /* normal processing */
389
410
  } ProcessingMode;
390
411
 
391
- extern ProcessingMode Mode;
412
+ extern PGDLLIMPORT ProcessingMode Mode;
392
413
 
393
414
  #define IsBootstrapProcessingMode() (Mode == BootstrapProcessing)
394
415
  #define IsInitProcessingMode() (Mode == InitProcessing)
@@ -398,7 +419,7 @@ extern ProcessingMode Mode;
398
419
 
399
420
  #define SetProcessingMode(mode) \
400
421
  do { \
401
- AssertArg((mode) == BootstrapProcessing || \
422
+ Assert((mode) == BootstrapProcessing || \
402
423
  (mode) == InitProcessing || \
403
424
  (mode) == NormalProcessing); \
404
425
  Mode = (mode); \
@@ -408,16 +429,17 @@ extern ProcessingMode Mode;
408
429
  /*
409
430
  * Auxiliary-process type identifiers. These used to be in bootstrap.h
410
431
  * but it seems saner to have them here, with the ProcessingMode stuff.
411
- * The MyAuxProcType global is defined and set in bootstrap.c.
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.
412
435
  */
413
436
 
414
437
  typedef enum
415
438
  {
416
439
  NotAnAuxProcess = -1,
417
- CheckerProcess = 0,
418
- BootstrapProcess,
419
- StartupProcess,
440
+ StartupProcess = 0,
420
441
  BgWriterProcess,
442
+ ArchiverProcess,
421
443
  CheckpointerProcess,
422
444
  WalWriterProcess,
423
445
  WalReceiverProcess,
@@ -425,11 +447,11 @@ typedef enum
425
447
  NUM_AUXPROCTYPES /* Must be last! */
426
448
  } AuxProcType;
427
449
 
428
- extern AuxProcType MyAuxProcType;
450
+ extern PGDLLIMPORT AuxProcType MyAuxProcType;
429
451
 
430
- #define AmBootstrapProcess() (MyAuxProcType == BootstrapProcess)
431
452
  #define AmStartupProcess() (MyAuxProcType == StartupProcess)
432
453
  #define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
454
+ #define AmArchiverProcess() (MyAuxProcType == ArchiverProcess)
433
455
  #define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess)
434
456
  #define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess)
435
457
  #define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess)
@@ -443,16 +465,21 @@ extern AuxProcType MyAuxProcType;
443
465
  /* in utils/init/postinit.c */
444
466
  extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
445
467
  extern void InitializeMaxBackends(void);
446
- extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username,
447
- Oid useroid, char *out_dbname, bool override_allow_connections);
468
+ extern void InitPostgres(const char *in_dbname, Oid dboid,
469
+ const char *username, Oid useroid,
470
+ bool load_session_libraries,
471
+ bool override_allow_connections,
472
+ char *out_dbname);
448
473
  extern void BaseInit(void);
449
474
 
450
475
  /* in utils/init/miscinit.c */
451
- extern bool IgnoreSystemIndexes;
476
+ extern PGDLLIMPORT bool IgnoreSystemIndexes;
452
477
  extern PGDLLIMPORT bool process_shared_preload_libraries_in_progress;
453
- extern char *session_preload_libraries_string;
454
- extern char *shared_preload_libraries_string;
455
- extern char *local_preload_libraries_string;
478
+ extern PGDLLIMPORT bool process_shared_preload_libraries_done;
479
+ extern PGDLLIMPORT bool process_shmem_requests_in_progress;
480
+ extern PGDLLIMPORT char *session_preload_libraries_string;
481
+ extern PGDLLIMPORT char *shared_preload_libraries_string;
482
+ extern PGDLLIMPORT char *local_preload_libraries_string;
456
483
 
457
484
  extern void CreateDataDirLockFile(bool amPostmaster);
458
485
  extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster,
@@ -463,14 +490,18 @@ extern bool RecheckDataDirLockFile(void);
463
490
  extern void ValidatePgVersion(const char *path);
464
491
  extern void process_shared_preload_libraries(void);
465
492
  extern void process_session_preload_libraries(void);
493
+ extern void process_shmem_requests(void);
466
494
  extern void pg_bindtextdomain(const char *domain);
467
495
  extern bool has_rolreplication(Oid roleid);
468
496
 
469
- /* in access/transam/xlog.c */
470
- extern bool BackupInProgress(void);
471
- extern void CancelBackup(void);
497
+ typedef void (*shmem_request_hook_type) (void);
498
+ extern PGDLLIMPORT shmem_request_hook_type shmem_request_hook;
499
+
500
+ extern Size EstimateClientConnectionInfoSpace(void);
501
+ extern void SerializeClientConnectionInfo(Size maxsize, char *start_address);
502
+ extern void RestoreClientConnectionInfo(char *conninfo);
472
503
 
473
504
  /* in executor/nodeHash.c */
474
- extern int get_hash_mem(void);
505
+ extern size_t get_hash_memory_limit(void);
475
506
 
476
507
  #endif /* MISCADMIN_H */
@@ -5,13 +5,11 @@
5
5
  *
6
6
  * A bitmap set can represent any set of nonnegative integers, although
7
7
  * it is mainly intended for sets where the maximum value is not large,
8
- * say at most a few hundred. By convention, a NULL pointer is always
9
- * accepted by all operations to represent the empty set. (But beware
10
- * that this is not the only representation of the empty set. Use
11
- * bms_is_empty() in preference to testing for NULL.)
8
+ * say at most a few hundred. By convention, we always represent the
9
+ * empty set by a NULL pointer.
12
10
  *
13
11
  *
14
- * Copyright (c) 2003-2020, PostgreSQL Global Development Group
12
+ * Copyright (c) 2003-2023, PostgreSQL Global Development Group
15
13
  *
16
14
  * src/include/nodes/bitmapset.h
17
15
  *
@@ -20,6 +18,8 @@
20
18
  #ifndef BITMAPSET_H
21
19
  #define BITMAPSET_H
22
20
 
21
+ #include "nodes/nodes.h"
22
+
23
23
  /*
24
24
  * Forward decl to save including pg_list.h
25
25
  */
@@ -48,6 +48,9 @@ typedef int32 signedbitmapword; /* must be the matching signed type */
48
48
 
49
49
  typedef struct Bitmapset
50
50
  {
51
+ pg_node_attr(custom_copy_equal, special_read_write, no_query_jumble)
52
+
53
+ NodeTag type;
51
54
  int nwords; /* number of words in array */
52
55
  bitmapword words[FLEXIBLE_ARRAY_MEMBER]; /* really [nwords] */
53
56
  } Bitmapset;
@@ -97,7 +100,9 @@ extern int bms_num_members(const Bitmapset *a);
97
100
 
98
101
  /* optimized tests when we don't need to know exact membership count: */
99
102
  extern BMS_Membership bms_membership(const Bitmapset *a);
100
- extern bool bms_is_empty(const Bitmapset *a);
103
+
104
+ /* NULL is now the only allowed representation of an empty bitmapset */
105
+ #define bms_is_empty(a) ((a) == NULL)
101
106
 
102
107
  /* these routines recycle (modify or free) their non-const inputs: */
103
108
 
@@ -110,7 +115,6 @@ extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b);
110
115
  extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b);
111
116
 
112
117
  /* support for iterating through the integer elements of a set: */
113
- extern int bms_first_member(Bitmapset *a);
114
118
  extern int bms_next_member(const Bitmapset *a, int prevbit);
115
119
  extern int bms_prev_member(const Bitmapset *a, int prevbit);
116
120