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
@@ -86,7 +86,7 @@
86
86
  * when using the SysV semaphore code.
87
87
  *
88
88
  *
89
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
89
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
90
90
  * Portions Copyright (c) 1994, Regents of the University of California
91
91
  *
92
92
  * src/include/storage/s_lock.h
@@ -142,7 +142,7 @@ typedef unsigned char slock_t;
142
142
  static __inline__ int
143
143
  tas(volatile slock_t *lock)
144
144
  {
145
- register slock_t _res = 1;
145
+ slock_t _res = 1;
146
146
 
147
147
  /*
148
148
  * Use a non-locking test before asserting the bus lock. Note that the
@@ -223,7 +223,7 @@ typedef unsigned char slock_t;
223
223
  static __inline__ int
224
224
  tas(volatile slock_t *lock)
225
225
  {
226
- register slock_t _res = 1;
226
+ slock_t _res = 1;
227
227
 
228
228
  __asm__ __volatile__(
229
229
  " lock \n"
@@ -250,77 +250,13 @@ spin_delay(void)
250
250
  #endif /* __x86_64__ */
251
251
 
252
252
 
253
- #if defined(__ia64__) || defined(__ia64)
254
- /*
255
- * Intel Itanium, gcc or Intel's compiler.
256
- *
257
- * Itanium has weak memory ordering, but we rely on the compiler to enforce
258
- * strict ordering of accesses to volatile data. In particular, while the
259
- * xchg instruction implicitly acts as a memory barrier with 'acquire'
260
- * semantics, we do not have an explicit memory fence instruction in the
261
- * S_UNLOCK macro. We use a regular assignment to clear the spinlock, and
262
- * trust that the compiler marks the generated store instruction with the
263
- * ".rel" opcode.
264
- *
265
- * Testing shows that assumption to hold on gcc, although I could not find
266
- * any explicit statement on that in the gcc manual. In Intel's compiler,
267
- * the -m[no-]serialize-volatile option controls that, and testing shows that
268
- * it is enabled by default.
269
- *
270
- * While icc accepts gcc asm blocks on x86[_64], this is not true on ia64
271
- * (at least not in icc versions before 12.x). So we have to carry a separate
272
- * compiler-intrinsic-based implementation for it.
273
- */
274
- #define HAS_TEST_AND_SET
275
-
276
- typedef unsigned int slock_t;
277
-
278
- #define TAS(lock) tas(lock)
279
-
280
- /* On IA64, it's a win to use a non-locking test before the xchg proper */
281
- #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock))
282
-
283
- #ifndef __INTEL_COMPILER
284
-
285
- static __inline__ int
286
- tas(volatile slock_t *lock)
287
- {
288
- long int ret;
289
-
290
- __asm__ __volatile__(
291
- " xchg4 %0=%1,%2 \n"
292
- : "=r"(ret), "+m"(*lock)
293
- : "r"(1)
294
- : "memory");
295
- return (int) ret;
296
- }
297
-
298
- #else /* __INTEL_COMPILER */
299
-
300
- static __inline__ int
301
- tas(volatile slock_t *lock)
302
- {
303
- int ret;
304
-
305
- ret = _InterlockedExchange(lock,1); /* this is a xchg asm macro */
306
-
307
- return ret;
308
- }
309
-
310
- /* icc can't use the regular gcc S_UNLOCK() macro either in this case */
311
- #define S_UNLOCK(lock) \
312
- do { __memory_barrier(); *(lock) = 0; } while (0)
313
-
314
- #endif /* __INTEL_COMPILER */
315
- #endif /* __ia64__ || __ia64 */
316
-
317
253
  /*
318
254
  * On ARM and ARM64, we use __sync_lock_test_and_set(int *, int) if available.
319
255
  *
320
256
  * We use the int-width variant of the builtin because it works on more chips
321
257
  * than other widths.
322
258
  */
323
- #if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(__aarch64)
259
+ #if defined(__arm__) || defined(__arm) || defined(__aarch64__)
324
260
  #ifdef HAVE_GCC__SYNC_INT32_TAS
325
261
  #define HAS_TEST_AND_SET
326
262
 
@@ -336,8 +272,25 @@ tas(volatile slock_t *lock)
336
272
 
337
273
  #define S_UNLOCK(lock) __sync_lock_release(lock)
338
274
 
275
+ /*
276
+ * Using an ISB instruction to delay in spinlock loops appears beneficial on
277
+ * high-core-count ARM64 processors. It seems mostly a wash for smaller gear,
278
+ * and ISB doesn't exist at all on pre-v7 ARM chips.
279
+ */
280
+ #if defined(__aarch64__)
281
+
282
+ #define SPIN_DELAY() spin_delay()
283
+
284
+ static __inline__ void
285
+ spin_delay(void)
286
+ {
287
+ __asm__ __volatile__(
288
+ " isb; \n");
289
+ }
290
+
291
+ #endif /* __aarch64__ */
339
292
  #endif /* HAVE_GCC__SYNC_INT32_TAS */
340
- #endif /* __arm__ || __arm || __aarch64__ || __aarch64 */
293
+ #endif /* __arm__ || __arm || __aarch64__ */
341
294
 
342
295
 
343
296
  /* S/390 and S/390x Linux (32- and 64-bit zSeries) */
@@ -368,7 +321,7 @@ tas(volatile slock_t *lock)
368
321
  /*
369
322
  * Solaris has always run sparc processors in TSO (total store) mode, but
370
323
  * linux didn't use to and the *BSDs still don't. So, be careful about
371
- * acquire/release semantics. The CPU will treat superfluous membars as
324
+ * acquire/release semantics. The CPU will treat superfluous members as
372
325
  * NOPs, so it's just code space.
373
326
  */
374
327
  #define HAS_TEST_AND_SET
@@ -380,7 +333,7 @@ typedef unsigned char slock_t;
380
333
  static __inline__ int
381
334
  tas(volatile slock_t *lock)
382
335
  {
383
- register slock_t _res;
336
+ slock_t _res;
384
337
 
385
338
  /*
386
339
  * See comment in src/backend/port/tas/sunstudio_sparc.s for why this
@@ -459,7 +412,8 @@ typedef unsigned int slock_t;
459
412
  *
460
413
  * NOTE: per the Enhanced PowerPC Architecture manual, v1.0 dated 7-May-2002,
461
414
  * an isync is a sufficient synchronization barrier after a lwarx/stwcx loop.
462
- * On newer machines, we can use lwsync instead for better performance.
415
+ * But if the spinlock is in ordinary memory, we can use lwsync instead for
416
+ * better performance.
463
417
  *
464
418
  * Ordinarily, we'd code the branches here using GNU-style local symbols, that
465
419
  * is "1f" referencing "1:" and so on. But some people run gcc on AIX with
@@ -474,23 +428,15 @@ tas(volatile slock_t *lock)
474
428
  int _res;
475
429
 
476
430
  __asm__ __volatile__(
477
- #ifdef USE_PPC_LWARX_MUTEX_HINT
478
431
  " lwarx %0,0,%3,1 \n"
479
- #else
480
- " lwarx %0,0,%3 \n"
481
- #endif
482
432
  " cmpwi %0,0 \n"
483
433
  " bne $+16 \n" /* branch to li %1,1 */
484
434
  " addi %0,%0,1 \n"
485
435
  " stwcx. %0,0,%3 \n"
486
- " beq $+12 \n" /* branch to lwsync/isync */
436
+ " beq $+12 \n" /* branch to lwsync */
487
437
  " li %1,1 \n"
488
438
  " b $+12 \n" /* branch to end of asm sequence */
489
- #ifdef USE_PPC_LWSYNC
490
439
  " lwsync \n"
491
- #else
492
- " isync \n"
493
- #endif
494
440
  " li %1,0 \n"
495
441
 
496
442
  : "=&b"(_t), "=r"(_res), "+m"(*lock)
@@ -501,107 +447,18 @@ tas(volatile slock_t *lock)
501
447
 
502
448
  /*
503
449
  * PowerPC S_UNLOCK is almost standard but requires a "sync" instruction.
504
- * On newer machines, we can use lwsync instead for better performance.
450
+ * But we can use lwsync instead for better performance.
505
451
  */
506
- #ifdef USE_PPC_LWSYNC
507
452
  #define S_UNLOCK(lock) \
508
453
  do \
509
454
  { \
510
455
  __asm__ __volatile__ (" lwsync \n" ::: "memory"); \
511
456
  *((volatile slock_t *) (lock)) = 0; \
512
457
  } while (0)
513
- #else
514
- #define S_UNLOCK(lock) \
515
- do \
516
- { \
517
- __asm__ __volatile__ (" sync \n" ::: "memory"); \
518
- *((volatile slock_t *) (lock)) = 0; \
519
- } while (0)
520
- #endif /* USE_PPC_LWSYNC */
521
458
 
522
459
  #endif /* powerpc */
523
460
 
524
461
 
525
- /* Linux Motorola 68k */
526
- #if (defined(__mc68000__) || defined(__m68k__)) && defined(__linux__)
527
- #define HAS_TEST_AND_SET
528
-
529
- typedef unsigned char slock_t;
530
-
531
- #define TAS(lock) tas(lock)
532
-
533
- static __inline__ int
534
- tas(volatile slock_t *lock)
535
- {
536
- register int rv;
537
-
538
- __asm__ __volatile__(
539
- " clrl %0 \n"
540
- " tas %1 \n"
541
- " sne %0 \n"
542
- : "=d"(rv), "+m"(*lock)
543
- : /* no inputs */
544
- : "memory", "cc");
545
- return rv;
546
- }
547
-
548
- #endif /* (__mc68000__ || __m68k__) && __linux__ */
549
-
550
-
551
- /* Motorola 88k */
552
- #if defined(__m88k__)
553
- #define HAS_TEST_AND_SET
554
-
555
- typedef unsigned int slock_t;
556
-
557
- #define TAS(lock) tas(lock)
558
-
559
- static __inline__ int
560
- tas(volatile slock_t *lock)
561
- {
562
- register slock_t _res = 1;
563
-
564
- __asm__ __volatile__(
565
- " xmem %0, %2, %%r0 \n"
566
- : "+r"(_res), "+m"(*lock)
567
- : "r"(lock)
568
- : "memory");
569
- return (int) _res;
570
- }
571
-
572
- #endif /* __m88k__ */
573
-
574
-
575
- /*
576
- * VAXen -- even multiprocessor ones
577
- * (thanks to Tom Ivar Helbekkmo)
578
- */
579
- #if defined(__vax__)
580
- #define HAS_TEST_AND_SET
581
-
582
- typedef unsigned char slock_t;
583
-
584
- #define TAS(lock) tas(lock)
585
-
586
- static __inline__ int
587
- tas(volatile slock_t *lock)
588
- {
589
- register int _res;
590
-
591
- __asm__ __volatile__(
592
- " movl $1, %0 \n"
593
- " bbssi $0, (%2), 1f \n"
594
- " clrl %0 \n"
595
- "1: \n"
596
- : "=&r"(_res), "+m"(*lock)
597
- : "r"(lock)
598
- : "memory");
599
- return _res;
600
- }
601
-
602
- #endif /* __vax__ */
603
-
604
-
605
462
  #if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
606
463
  #define HAS_TEST_AND_SET
607
464
 
@@ -631,9 +488,9 @@ typedef unsigned int slock_t;
631
488
  static __inline__ int
632
489
  tas(volatile slock_t *lock)
633
490
  {
634
- register volatile slock_t *_l = lock;
635
- register int _res;
636
- register int _tmp;
491
+ volatile slock_t *_l = lock;
492
+ int _res;
493
+ int _tmp;
637
494
 
638
495
  __asm__ __volatile__(
639
496
  " .set push \n"
@@ -673,95 +530,13 @@ do \
673
530
  #endif /* __mips__ && !__sgi */
674
531
 
675
532
 
676
- #if defined(__m32r__) && defined(HAVE_SYS_TAS_H) /* Renesas' M32R */
677
- #define HAS_TEST_AND_SET
678
-
679
- #include <sys/tas.h>
680
-
681
- typedef int slock_t;
682
-
683
- #define TAS(lock) tas(lock)
684
-
685
- #endif /* __m32r__ */
686
-
687
-
688
- #if defined(__sh__) /* Renesas' SuperH */
689
- #define HAS_TEST_AND_SET
690
-
691
- typedef unsigned char slock_t;
692
-
693
- #define TAS(lock) tas(lock)
694
-
695
- static __inline__ int
696
- tas(volatile slock_t *lock)
697
- {
698
- register int _res;
699
-
700
- /*
701
- * This asm is coded as if %0 could be any register, but actually SuperH
702
- * restricts the target of xor-immediate to be R0. That's handled by
703
- * the "z" constraint on _res.
704
- */
705
- __asm__ __volatile__(
706
- " tas.b @%2 \n"
707
- " movt %0 \n"
708
- " xor #1,%0 \n"
709
- : "=z"(_res), "+m"(*lock)
710
- : "r"(lock)
711
- : "memory", "t");
712
- return _res;
713
- }
714
-
715
- #endif /* __sh__ */
716
-
717
-
718
- /* These live in s_lock.c, but only for gcc */
719
-
720
-
721
- #if defined(__m68k__) && !defined(__linux__) /* non-Linux Motorola 68k */
722
- #define HAS_TEST_AND_SET
723
-
724
- typedef unsigned char slock_t;
725
- #endif
726
-
727
- /*
728
- * Default implementation of S_UNLOCK() for gcc/icc.
729
- *
730
- * Note that this implementation is unsafe for any platform that can reorder
731
- * a memory access (either load or store) after a following store. That
732
- * happens not to be possible on x86 and most legacy architectures (some are
733
- * single-processor!), but many modern systems have weaker memory ordering.
734
- * Those that do must define their own version of S_UNLOCK() rather than
735
- * relying on this one.
736
- */
737
- #if !defined(S_UNLOCK)
738
- #define S_UNLOCK(lock) \
739
- do { __asm__ __volatile__("" : : : "memory"); *(lock) = 0; } while (0)
740
- #endif
741
-
742
- #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */
743
-
744
-
745
-
746
- /*
747
- * ---------------------------------------------------------------------
748
- * Platforms that use non-gcc inline assembly:
749
- * ---------------------------------------------------------------------
750
- */
751
-
752
- #if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
753
-
754
-
755
- #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC, GCC and HP compilers */
533
+ #if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
756
534
  /*
757
535
  * HP's PA-RISC
758
536
  *
759
- * See src/backend/port/hpux/tas.c.template for details about LDCWX. Because
760
- * LDCWX requires a 16-byte-aligned address, we declare slock_t as a 16-byte
761
- * struct. The active word in the struct is whichever has the aligned address;
762
- * the other three words just sit at -1.
763
- *
764
- * When using gcc, we can inline the required assembly code.
537
+ * Because LDCWX requires a 16-byte-aligned address, we declare slock_t as a
538
+ * 16-byte struct. The active word in the struct is whichever has the aligned
539
+ * address; the other three words just sit at -1.
765
540
  */
766
541
  #define HAS_TEST_AND_SET
767
542
 
@@ -772,14 +547,27 @@ typedef struct
772
547
 
773
548
  #define TAS_ACTIVE_WORD(lock) ((volatile int *) (((uintptr_t) (lock) + 15) & ~15))
774
549
 
775
- #if defined(__GNUC__)
776
-
777
550
  static __inline__ int
778
551
  tas(volatile slock_t *lock)
779
552
  {
780
553
  volatile int *lockword = TAS_ACTIVE_WORD(lock);
781
- register int lockval;
554
+ int lockval;
782
555
 
556
+ /*
557
+ * The LDCWX instruction atomically clears the target word and
558
+ * returns the previous value. Hence, if the instruction returns
559
+ * 0, someone else has already acquired the lock before we tested
560
+ * it (i.e., we have failed).
561
+ *
562
+ * Notice that this means that we actually clear the word to set
563
+ * the lock and set the word to clear the lock. This is the
564
+ * opposite behavior from the SPARC LDSTUB instruction. For some
565
+ * reason everything that H-P does is rather baroque...
566
+ *
567
+ * For details about the LDCWX instruction, see the "Precision
568
+ * Architecture and Instruction Reference Manual" (09740-90014 of June
569
+ * 1987), p. 5-38.
570
+ */
783
571
  __asm__ __volatile__(
784
572
  " ldcwx 0(0,%2),%0 \n"
785
573
  : "=r"(lockval), "+m"(*lockword)
@@ -788,23 +576,12 @@ tas(volatile slock_t *lock)
788
576
  return (lockval == 0);
789
577
  }
790
578
 
791
- /*
792
- * The hppa implementation doesn't follow the rules of this files and provides
793
- * a gcc specific implementation outside of the above defined(__GNUC__). It
794
- * does so to avoid duplication between the HP compiler and gcc. So undefine
795
- * the generic fallback S_UNLOCK from above.
796
- */
797
- #ifdef S_UNLOCK
798
- #undef S_UNLOCK
799
- #endif
800
579
  #define S_UNLOCK(lock) \
801
580
  do { \
802
581
  __asm__ __volatile__("" : : : "memory"); \
803
582
  *TAS_ACTIVE_WORD(lock) = -1; \
804
583
  } while (0)
805
584
 
806
- #endif /* __GNUC__ */
807
-
808
585
  #define S_INIT_LOCK(lock) \
809
586
  do { \
810
587
  volatile slock_t *lock_ = (lock); \
@@ -819,32 +596,75 @@ tas(volatile slock_t *lock)
819
596
  #endif /* __hppa || __hppa__ */
820
597
 
821
598
 
822
- #if defined(__hpux) && defined(__ia64) && !defined(__GNUC__)
823
599
  /*
824
- * HP-UX on Itanium, non-gcc/icc compiler
825
- *
826
- * We assume that the compiler enforces strict ordering of loads/stores on
827
- * volatile data (see comments on the gcc-version earlier in this file).
828
- * Note that this assumption does *not* hold if you use the
829
- * +Ovolatile=__unordered option on the HP-UX compiler, so don't do that.
830
- *
831
- * See also Implementing Spinlocks on the Intel Itanium Architecture and
832
- * PA-RISC, by Tor Ekqvist and David Graves, for more information. As of
833
- * this writing, version 1.0 of the manual is available at:
834
- * http://h21007.www2.hp.com/portal/download/files/unprot/itanium/spinlocks.pdf
600
+ * If we have no platform-specific knowledge, but we found that the compiler
601
+ * provides __sync_lock_test_and_set(), use that. Prefer the int-width
602
+ * version over the char-width version if we have both, on the rather dubious
603
+ * grounds that that's known to be more likely to work in the ARM ecosystem.
604
+ * (But we dealt with ARM above.)
835
605
  */
606
+ #if !defined(HAS_TEST_AND_SET)
607
+
608
+ #if defined(HAVE_GCC__SYNC_INT32_TAS)
836
609
  #define HAS_TEST_AND_SET
837
610
 
838
- typedef unsigned int slock_t;
611
+ #define TAS(lock) tas(lock)
839
612
 
840
- #include <ia64/sys/inline.h>
841
- #define TAS(lock) _Asm_xchg(_SZ_W, lock, 1, _LDHINT_NONE)
842
- /* On IA64, it's a win to use a non-locking test before the xchg proper */
843
- #define TAS_SPIN(lock) (*(lock) ? 1 : TAS(lock))
613
+ typedef int slock_t;
614
+
615
+ static __inline__ int
616
+ tas(volatile slock_t *lock)
617
+ {
618
+ return __sync_lock_test_and_set(lock, 1);
619
+ }
620
+
621
+ #define S_UNLOCK(lock) __sync_lock_release(lock)
622
+
623
+ #elif defined(HAVE_GCC__SYNC_CHAR_TAS)
624
+ #define HAS_TEST_AND_SET
625
+
626
+ #define TAS(lock) tas(lock)
627
+
628
+ typedef char slock_t;
629
+
630
+ static __inline__ int
631
+ tas(volatile slock_t *lock)
632
+ {
633
+ return __sync_lock_test_and_set(lock, 1);
634
+ }
635
+
636
+ #define S_UNLOCK(lock) __sync_lock_release(lock)
637
+
638
+ #endif /* HAVE_GCC__SYNC_INT32_TAS */
639
+
640
+ #endif /* !defined(HAS_TEST_AND_SET) */
641
+
642
+
643
+ /*
644
+ * Default implementation of S_UNLOCK() for gcc/icc.
645
+ *
646
+ * Note that this implementation is unsafe for any platform that can reorder
647
+ * a memory access (either load or store) after a following store. That
648
+ * happens not to be possible on x86 and most legacy architectures (some are
649
+ * single-processor!), but many modern systems have weaker memory ordering.
650
+ * Those that do must define their own version of S_UNLOCK() rather than
651
+ * relying on this one.
652
+ */
653
+ #if !defined(S_UNLOCK)
844
654
  #define S_UNLOCK(lock) \
845
- do { _Asm_mf(); (*(lock)) = 0; } while (0)
655
+ do { __asm__ __volatile__("" : : : "memory"); *(lock) = 0; } while (0)
656
+ #endif
657
+
658
+ #endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */
659
+
846
660
 
847
- #endif /* HPUX on IA64, non gcc/icc */
661
+ /*
662
+ * ---------------------------------------------------------------------
663
+ * Platforms that use non-gcc inline assembly:
664
+ * ---------------------------------------------------------------------
665
+ */
666
+
667
+ #if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
848
668
 
849
669
  #if defined(_AIX) /* AIX */
850
670
  /*
@@ -953,7 +773,7 @@ extern int tas_sema(volatile slock_t *lock);
953
773
 
954
774
  #if !defined(S_LOCK)
955
775
  #define S_LOCK(lock) \
956
- (TAS(lock) ? s_lock((lock), __FILE__, __LINE__, PG_FUNCNAME_MACRO) : 0)
776
+ (TAS(lock) ? s_lock((lock), __FILE__, __LINE__, __func__) : 0)
957
777
  #endif /* S_LOCK */
958
778
 
959
779
  #if !defined(S_LOCK_FREE)
@@ -1001,7 +821,7 @@ extern int tas(volatile slock_t *lock); /* in port/.../tas.s, or
1001
821
  #define TAS_SPIN(lock) TAS(lock)
1002
822
  #endif /* TAS_SPIN */
1003
823
 
1004
- extern slock_t dummy_spinlock;
824
+ extern PGDLLIMPORT slock_t dummy_spinlock;
1005
825
 
1006
826
  /*
1007
827
  * Platform-independent out-of-line support routines
@@ -1040,8 +860,8 @@ init_spin_delay(SpinDelayStatus *status,
1040
860
  status->func = func;
1041
861
  }
1042
862
 
1043
- #define init_local_spin_delay(status) init_spin_delay(status, __FILE__, __LINE__, PG_FUNCNAME_MACRO)
1044
- void perform_spin_delay(SpinDelayStatus *status);
1045
- void finish_spin_delay(SpinDelayStatus *status);
863
+ #define init_local_spin_delay(status) init_spin_delay(status, __FILE__, __LINE__, __func__)
864
+ extern void perform_spin_delay(SpinDelayStatus *status);
865
+ extern void finish_spin_delay(SpinDelayStatus *status);
1046
866
 
1047
867
  #endif /* S_LOCK_H */
@@ -4,7 +4,7 @@
4
4
  * Shared temporary file management.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, 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/storage/sharedfileset.h
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include "storage/dsm.h"
19
19
  #include "storage/fd.h"
20
+ #include "storage/fileset.h"
20
21
  #include "storage/spin.h"
21
22
 
22
23
  /*
@@ -24,22 +25,13 @@
24
25
  */
25
26
  typedef struct SharedFileSet
26
27
  {
27
- pid_t creator_pid; /* PID of the creating process */
28
- uint32 number; /* per-PID identifier */
28
+ FileSet fs;
29
29
  slock_t mutex; /* mutex protecting the reference count */
30
30
  int refcnt; /* number of attached backends */
31
- int ntablespaces; /* number of tablespaces to use */
32
- Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that
33
- * it's rare that there more than temp
34
- * tablespaces. */
35
31
  } SharedFileSet;
36
32
 
37
33
  extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg);
38
34
  extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg);
39
- extern File SharedFileSetCreate(SharedFileSet *fileset, const char *name);
40
- extern File SharedFileSetOpen(SharedFileSet *fileset, const char *name);
41
- extern bool SharedFileSetDelete(SharedFileSet *fileset, const char *name,
42
- bool error_on_failure);
43
35
  extern void SharedFileSetDeleteAll(SharedFileSet *fileset);
44
36
 
45
37
  #endif
@@ -3,7 +3,7 @@
3
3
  * shm_mq.h
4
4
  * single-reader, single-writer shared memory message queue
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/storage/shm_mq.h
@@ -70,9 +70,10 @@ extern shm_mq *shm_mq_get_queue(shm_mq_handle *mqh);
70
70
 
71
71
  /* Send or receive messages. */
72
72
  extern shm_mq_result shm_mq_send(shm_mq_handle *mqh,
73
- Size nbytes, const void *data, bool nowait);
74
- extern shm_mq_result shm_mq_sendv(shm_mq_handle *mqh,
75
- shm_mq_iovec *iov, int iovcnt, bool nowait);
73
+ Size nbytes, const void *data, bool nowait,
74
+ bool force_flush);
75
+ extern shm_mq_result shm_mq_sendv(shm_mq_handle *mqh, shm_mq_iovec *iov,
76
+ int iovcnt, bool nowait, bool force_flush);
76
77
  extern shm_mq_result shm_mq_receive(shm_mq_handle *mqh,
77
78
  Size *nbytesp, void **datap, bool nowait);
78
79
 
@@ -12,7 +12,7 @@
12
12
  * other data structure within the segment and only put the pointer to
13
13
  * the data structure itself in the table of contents.
14
14
  *
15
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
16
16
  * Portions Copyright (c) 1994, Regents of the University of California
17
17
  *
18
18
  * src/include/storage/shm_toc.h
@@ -11,7 +11,7 @@
11
11
  * at the same address. This means shared memory pointers can be passed
12
12
  * around directly between different processes.
13
13
  *
14
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
15
15
  * Portions Copyright (c) 1994, Regents of the University of California
16
16
  *
17
17
  * src/include/storage/shmem.h
@@ -24,13 +24,6 @@
24
24
  #include "utils/hsearch.h"
25
25
 
26
26
 
27
- /* shmqueue.c */
28
- typedef struct SHM_QUEUE
29
- {
30
- struct SHM_QUEUE *prev;
31
- struct SHM_QUEUE *next;
32
- } SHM_QUEUE;
33
-
34
27
  /* shmem.c */
35
28
  extern void InitShmemAccess(void *seghdr);
36
29
  extern void InitShmemAllocation(void);
@@ -63,19 +56,4 @@ typedef struct
63
56
  Size allocated_size; /* # bytes actually allocated */
64
57
  } ShmemIndexEnt;
65
58
 
66
- /*
67
- * prototypes for functions in shmqueue.c
68
- */
69
- extern void SHMQueueInit(SHM_QUEUE *queue);
70
- extern void SHMQueueElemInit(SHM_QUEUE *queue);
71
- extern void SHMQueueDelete(SHM_QUEUE *queue);
72
- extern void SHMQueueInsertBefore(SHM_QUEUE *queue, SHM_QUEUE *elem);
73
- extern void SHMQueueInsertAfter(SHM_QUEUE *queue, SHM_QUEUE *elem);
74
- extern Pointer SHMQueueNext(const SHM_QUEUE *queue, const SHM_QUEUE *curElem,
75
- Size linkOffset);
76
- extern Pointer SHMQueuePrev(const SHM_QUEUE *queue, const SHM_QUEUE *curElem,
77
- Size linkOffset);
78
- extern bool SHMQueueEmpty(const SHM_QUEUE *queue);
79
- extern bool SHMQueueIsDetached(const SHM_QUEUE *queue);
80
-
81
59
  #endif /* SHMEM_H */