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
@@ -9,7 +9,7 @@
9
9
  * polluting the namespace with lots of stuff...
10
10
  *
11
11
  *
12
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
13
  * Portions Copyright (c) 1994, Regents of the University of California
14
14
  *
15
15
  * src/include/c.h
@@ -30,7 +30,7 @@
30
30
  * 2) bool, true, false
31
31
  * 3) standard system types
32
32
  * 4) IsValid macros for system types
33
- * 5) offsetof, lengthof, alignment
33
+ * 5) lengthof, alignment
34
34
  * 6) assertions
35
35
  * 7) widely useful macros
36
36
  * 8) random stuff
@@ -98,11 +98,21 @@
98
98
  *
99
99
  * GCC: https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
100
100
  * GCC: https://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html
101
+ * Clang: https://clang.llvm.org/docs/AttributeReference.html
101
102
  * Sunpro: https://docs.oracle.com/cd/E18659_01/html/821-1384/gjzke.html
102
103
  * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/function_attributes.html
103
104
  * XLC: https://www.ibm.com/support/knowledgecenter/SSGH2K_13.1.2/com.ibm.xlc131.aix.doc/language_ref/type_attrib.html
104
105
  */
105
106
 
107
+ /*
108
+ * For compilers which don't support __has_attribute, we just define
109
+ * __has_attribute(x) to 0 so that we can define macros for various
110
+ * __attribute__s more easily below.
111
+ */
112
+ #ifndef __has_attribute
113
+ #define __has_attribute(attribute) 0
114
+ #endif
115
+
106
116
  /* only GCC supports the unused attribute */
107
117
  #ifdef __GNUC__
108
118
  #define pg_attribute_unused() __attribute__((unused))
@@ -110,6 +120,41 @@
110
120
  #define pg_attribute_unused()
111
121
  #endif
112
122
 
123
+ /*
124
+ * pg_nodiscard means the compiler should warn if the result of a function
125
+ * call is ignored. The name "nodiscard" is chosen in alignment with
126
+ * (possibly future) C and C++ standards. For maximum compatibility, use it
127
+ * as a function declaration specifier, so it goes before the return type.
128
+ */
129
+ #ifdef __GNUC__
130
+ #define pg_nodiscard __attribute__((warn_unused_result))
131
+ #else
132
+ #define pg_nodiscard
133
+ #endif
134
+
135
+ /*
136
+ * Place this macro before functions that should be allowed to make misaligned
137
+ * accesses. Think twice before using it on non-x86-specific code!
138
+ * Testing can be done with "-fsanitize=alignment -fsanitize-trap=alignment"
139
+ * on clang, or "-fsanitize=alignment -fno-sanitize-recover=alignment" on gcc.
140
+ */
141
+ #if __clang_major__ >= 7 || __GNUC__ >= 8
142
+ #define pg_attribute_no_sanitize_alignment() __attribute__((no_sanitize("alignment")))
143
+ #else
144
+ #define pg_attribute_no_sanitize_alignment()
145
+ #endif
146
+
147
+ /*
148
+ * pg_attribute_nonnull means the compiler should warn if the function is
149
+ * called with the listed arguments set to NULL. If no arguments are
150
+ * listed, the compiler should warn if any pointer arguments are set to NULL.
151
+ */
152
+ #if __has_attribute (nonnull)
153
+ #define pg_attribute_nonnull(...) __attribute__((nonnull(__VA_ARGS__)))
154
+ #else
155
+ #define pg_attribute_nonnull(...)
156
+ #endif
157
+
113
158
  /*
114
159
  * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only
115
160
  * used in assert-enabled builds, to avoid compiler warnings about unused
@@ -136,6 +181,17 @@
136
181
  #define pg_attribute_noreturn() __attribute__((noreturn))
137
182
  #define pg_attribute_packed() __attribute__((packed))
138
183
  #define HAVE_PG_ATTRIBUTE_NORETURN 1
184
+ #elif defined(_MSC_VER)
185
+ /*
186
+ * MSVC supports aligned. noreturn is also possible but in MSVC it is
187
+ * declared before the definition while pg_attribute_noreturn() macro
188
+ * is currently used after the definition.
189
+ *
190
+ * Packing is also possible but only by wrapping the entire struct definition
191
+ * which doesn't fit into our current macro declarations.
192
+ */
193
+ #define pg_attribute_aligned(a) __declspec(align(a))
194
+ #define pg_attribute_noreturn()
139
195
  #else
140
196
  /*
141
197
  * NB: aligned and packed are not given default definitions because they
@@ -178,6 +234,39 @@
178
234
  #define pg_noinline
179
235
  #endif
180
236
 
237
+ /*
238
+ * For now, just define pg_attribute_cold and pg_attribute_hot to be empty
239
+ * macros on minGW 8.1. There appears to be a compiler bug that results in
240
+ * compilation failure. At this time, we still have at least one buildfarm
241
+ * animal running that compiler, so this should make that green again. It's
242
+ * likely this compiler is not popular enough to warrant keeping this code
243
+ * around forever, so let's just remove it once the last buildfarm animal
244
+ * upgrades.
245
+ */
246
+ #if defined(__MINGW64__) && __GNUC__ == 8 && __GNUC_MINOR__ == 1
247
+
248
+ #define pg_attribute_cold
249
+ #define pg_attribute_hot
250
+
251
+ #else
252
+ /*
253
+ * Marking certain functions as "hot" or "cold" can be useful to assist the
254
+ * compiler in arranging the assembly code in a more efficient way.
255
+ */
256
+ #if __has_attribute (cold)
257
+ #define pg_attribute_cold __attribute__((cold))
258
+ #else
259
+ #define pg_attribute_cold
260
+ #endif
261
+
262
+ #if __has_attribute (hot)
263
+ #define pg_attribute_hot __attribute__((hot))
264
+ #else
265
+ #define pg_attribute_hot
266
+ #endif
267
+
268
+ #endif /* defined(__MINGW64__) && __GNUC__ == 8 &&
269
+ * __GNUC_MINOR__ == 1 */
181
270
  /*
182
271
  * Mark a point as unreachable in a portable fashion. This should preferably
183
272
  * be something that the compiler understands, to aid code generation.
@@ -235,7 +324,25 @@
235
324
  * pretty trivial: VA_ARGS_NARGS_() returns its 64th argument, and we set up
236
325
  * the call so that that is the appropriate one of the list of constants.
237
326
  * This idea is due to Laurent Deniau.
327
+ *
328
+ * MSVC has an implementation of __VA_ARGS__ that doesn't conform to the
329
+ * standard unless you use the /Zc:preprocessor compiler flag, but that
330
+ * isn't available before Visual Studio 2019. For now, use a different
331
+ * definition that also works on older compilers.
238
332
  */
333
+ #ifdef _MSC_VER
334
+ #define EXPAND(args) args
335
+ #define VA_ARGS_NARGS(...) \
336
+ VA_ARGS_NARGS_ EXPAND((__VA_ARGS__, \
337
+ 63,62,61,60, \
338
+ 59,58,57,56,55,54,53,52,51,50, \
339
+ 49,48,47,46,45,44,43,42,41,40, \
340
+ 39,38,37,36,35,34,33,32,31,30, \
341
+ 29,28,27,26,25,24,23,22,21,20, \
342
+ 19,18,17,16,15,14,13,12,11,10, \
343
+ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
344
+ #else
345
+
239
346
  #define VA_ARGS_NARGS(...) \
240
347
  VA_ARGS_NARGS_(__VA_ARGS__, \
241
348
  63,62,61,60, \
@@ -245,6 +352,8 @@
245
352
  29,28,27,26,25,24,23,22,21,20, \
246
353
  19,18,17,16,15,14,13,12,11,10, \
247
354
  9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
355
+ #endif
356
+
248
357
  #define VA_ARGS_NARGS_( \
249
358
  _01,_02,_03,_04,_05,_06,_07,_08,_09,_10, \
250
359
  _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
@@ -256,14 +365,11 @@
256
365
  (N)
257
366
 
258
367
  /*
259
- * dummyret is used to set return values in macros that use ?: to make
260
- * assignments. gcc wants these to be void, other compilers like char
368
+ * Generic function pointer. This can be used in the rare cases where it's
369
+ * necessary to cast a function pointer to a seemingly incompatible function
370
+ * pointer type while avoiding gcc's -Wcast-function-type warnings.
261
371
  */
262
- #ifdef __GNUC__ /* GNU cc */
263
- #define dummyret void
264
- #else
265
- #define dummyret char
266
- #endif
372
+ typedef void (*pg_funcptr_t) (void);
267
373
 
268
374
  /*
269
375
  * We require C99, hence the compiler should understand flexible array
@@ -275,15 +381,32 @@
275
381
  */
276
382
  #define FLEXIBLE_ARRAY_MEMBER /* empty */
277
383
 
278
- /* Which __func__ symbol do we have, if any? */
279
- #ifdef HAVE_FUNCNAME__FUNC
280
- #define PG_FUNCNAME_MACRO __func__
281
- #else
282
- #ifdef HAVE_FUNCNAME__FUNCTION
283
- #define PG_FUNCNAME_MACRO __FUNCTION__
284
- #else
285
- #define PG_FUNCNAME_MACRO NULL
286
- #endif
384
+ /*
385
+ * Does the compiler support #pragma GCC system_header? We optionally use it
386
+ * to avoid warnings that we can't fix (e.g. in the perl headers).
387
+ * See https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html
388
+ *
389
+ * Headers for which we do not want to show compiler warnings can,
390
+ * conditionally, use #pragma GCC system_header to avoid warnings. Obviously
391
+ * this should only be used for external headers over which we do not have
392
+ * control.
393
+ *
394
+ * Support for the pragma is tested here, instead of during configure, as gcc
395
+ * also warns about the pragma being used in a .c file. It's surprisingly hard
396
+ * to get autoconf to use .h as the file-ending. Looks like gcc has
397
+ * implemented the pragma since the 2000, so this test should suffice.
398
+ *
399
+ *
400
+ * Alternatively, we could add the include paths for problematic headers with
401
+ * -isystem, but that is a larger hammer and is harder to search for.
402
+ *
403
+ * A more granular alternative would be to use #pragma GCC diagnostic
404
+ * push/ignored/pop, but gcc warns about unknown warnings being ignored, so
405
+ * every to-be-ignored-temporarily compiler warning would require its own
406
+ * pg_config.h symbol and #ifdef.
407
+ */
408
+ #ifdef __GNUC__
409
+ #define HAVE_PRAGMA_GCC_SYSTEM_HEADER 1
287
410
  #endif
288
411
 
289
412
 
@@ -529,14 +652,6 @@ typedef uint32 CommandId;
529
652
  #define FirstCommandId ((CommandId) 0)
530
653
  #define InvalidCommandId (~(CommandId)0)
531
654
 
532
- /*
533
- * Array indexing support
534
- */
535
- #define MAXDIM 6
536
- typedef struct
537
- {
538
- int indx[MAXDIM];
539
- } IntArray;
540
655
 
541
656
  /* ----------------
542
657
  * Variable-length datatypes all share the 'struct varlena' header.
@@ -647,20 +762,9 @@ typedef NameData *Name;
647
762
 
648
763
 
649
764
  /* ----------------------------------------------------------------
650
- * Section 5: offsetof, lengthof, alignment
765
+ * Section 5: lengthof, alignment
651
766
  * ----------------------------------------------------------------
652
767
  */
653
- /*
654
- * offsetof
655
- * Offset of a structure/union field within that structure/union.
656
- *
657
- * XXX This is supposed to be part of stddef.h, but isn't on
658
- * some systems (like SunOS 4).
659
- */
660
- #ifndef offsetof
661
- #define offsetof(type, field) ((long) &((type *)0)->field)
662
- #endif /* offsetof */
663
-
664
768
  /*
665
769
  * lengthof
666
770
  * Number of elements in an array.
@@ -737,80 +841,42 @@ typedef NameData *Name;
737
841
 
738
842
  #define Assert(condition) ((void)true)
739
843
  #define AssertMacro(condition) ((void)true)
740
- #define AssertArg(condition) ((void)true)
741
- #define AssertState(condition) ((void)true)
742
- #define AssertPointerAlignment(ptr, bndr) ((void)true)
743
- #define Trap(condition, errorType) ((void)true)
744
- #define TrapMacro(condition, errorType) (true)
745
844
 
746
845
  #elif defined(FRONTEND)
747
846
 
748
847
  #include <assert.h>
749
848
  #define Assert(p) assert(p)
750
849
  #define AssertMacro(p) ((void) assert(p))
751
- #define AssertArg(condition) assert(condition)
752
- #define AssertState(condition) assert(condition)
753
- #define AssertPointerAlignment(ptr, bndr) ((void)true)
754
850
 
755
851
  #else /* USE_ASSERT_CHECKING && !FRONTEND */
756
852
 
757
853
  /*
758
- * Trap
759
- * Generates an exception if the given condition is true.
854
+ * Assert
855
+ * Generates a fatal exception if the given condition is false.
760
856
  */
761
- #define Trap(condition, errorType) \
857
+ #define Assert(condition) \
762
858
  do { \
763
- if (condition) \
764
- ExceptionalCondition(#condition, (errorType), \
765
- __FILE__, __LINE__); \
859
+ if (!(condition)) \
860
+ ExceptionalCondition(#condition, __FILE__, __LINE__); \
766
861
  } while (0)
767
862
 
768
863
  /*
769
- * TrapMacro is the same as Trap but it's intended for use in macros:
864
+ * AssertMacro is the same as Assert but it's suitable for use in
865
+ * expression-like macros, for example:
770
866
  *
771
867
  * #define foo(x) (AssertMacro(x != 0), bar(x))
772
- *
773
- * Isn't CPP fun?
774
868
  */
775
- #define TrapMacro(condition, errorType) \
776
- ((bool) (! (condition) || \
777
- (ExceptionalCondition(#condition, (errorType), \
778
- __FILE__, __LINE__), 0)))
779
-
780
- #define Assert(condition) \
781
- do { \
782
- if (!(condition)) \
783
- ExceptionalCondition(#condition, "FailedAssertion", \
784
- __FILE__, __LINE__); \
785
- } while (0)
786
-
787
869
  #define AssertMacro(condition) \
788
870
  ((void) ((condition) || \
789
- (ExceptionalCondition(#condition, "FailedAssertion", \
790
- __FILE__, __LINE__), 0)))
791
-
792
- #define AssertArg(condition) \
793
- do { \
794
- if (!(condition)) \
795
- ExceptionalCondition(#condition, "BadArgument", \
796
- __FILE__, __LINE__); \
797
- } while (0)
871
+ (ExceptionalCondition(#condition, __FILE__, __LINE__), 0)))
798
872
 
799
- #define AssertState(condition) \
800
- do { \
801
- if (!(condition)) \
802
- ExceptionalCondition(#condition, "BadState", \
803
- __FILE__, __LINE__); \
804
- } while (0)
873
+ #endif /* USE_ASSERT_CHECKING && !FRONTEND */
805
874
 
806
875
  /*
807
876
  * Check that `ptr' is `bndr' aligned.
808
877
  */
809
878
  #define AssertPointerAlignment(ptr, bndr) \
810
- Trap(TYPEALIGN(bndr, (uintptr_t)(ptr)) != (uintptr_t)(ptr), \
811
- "UnalignedPointer")
812
-
813
- #endif /* USE_ASSERT_CHECKING && !FRONTEND */
879
+ Assert(TYPEALIGN(bndr, (uintptr_t)(ptr)) == (uintptr_t)(ptr))
814
880
 
815
881
  /*
816
882
  * ExceptionalCondition is compiled into the backend whether or not
@@ -820,7 +886,6 @@ typedef NameData *Name;
820
886
  */
821
887
  #ifndef FRONTEND
822
888
  extern void ExceptionalCondition(const char *conditionName,
823
- const char *errorType,
824
889
  const char *fileName, int lineNumber) pg_attribute_noreturn();
825
890
  #endif
826
891
 
@@ -830,47 +895,50 @@ extern void ExceptionalCondition(const char *conditionName,
830
895
  * If the "condition" (a compile-time-constant expression) evaluates to false,
831
896
  * throw a compile error using the "errmessage" (a string literal).
832
897
  *
833
- * gcc 4.6 and up supports _Static_assert(), but there are bizarre syntactic
834
- * placement restrictions. Macros StaticAssertStmt() and StaticAssertExpr()
898
+ * C11 has _Static_assert(), and most C99 compilers already support that. For
899
+ * portability, we wrap it into StaticAssertDecl(). _Static_assert() is a
900
+ * "declaration", and so it must be placed where for example a variable
901
+ * declaration would be valid. As long as we compile with
902
+ * -Wno-declaration-after-statement, that also means it cannot be placed after
903
+ * statements in a function. Macros StaticAssertStmt() and StaticAssertExpr()
835
904
  * make it safe to use as a statement or in an expression, respectively.
836
- * The macro StaticAssertDecl() is suitable for use at file scope (outside of
837
- * any function).
838
905
  *
839
- * Otherwise we fall back on a kluge that assumes the compiler will complain
840
- * about a negative width for a struct bit-field. This will not include a
841
- * helpful error message, but it beats not getting an error at all.
906
+ * For compilers without _Static_assert(), we fall back on a kluge that
907
+ * assumes the compiler will complain about a negative width for a struct
908
+ * bit-field. This will not include a helpful error message, but it beats not
909
+ * getting an error at all.
842
910
  */
843
911
  #ifndef __cplusplus
844
912
  #ifdef HAVE__STATIC_ASSERT
913
+ #define StaticAssertDecl(condition, errmessage) \
914
+ _Static_assert(condition, errmessage)
845
915
  #define StaticAssertStmt(condition, errmessage) \
846
916
  do { _Static_assert(condition, errmessage); } while(0)
847
917
  #define StaticAssertExpr(condition, errmessage) \
848
918
  ((void) ({ StaticAssertStmt(condition, errmessage); true; }))
849
- #define StaticAssertDecl(condition, errmessage) \
850
- _Static_assert(condition, errmessage)
851
919
  #else /* !HAVE__STATIC_ASSERT */
920
+ #define StaticAssertDecl(condition, errmessage) \
921
+ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
852
922
  #define StaticAssertStmt(condition, errmessage) \
853
923
  ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; }))
854
924
  #define StaticAssertExpr(condition, errmessage) \
855
925
  StaticAssertStmt(condition, errmessage)
856
- #define StaticAssertDecl(condition, errmessage) \
857
- extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
858
926
  #endif /* HAVE__STATIC_ASSERT */
859
927
  #else /* C++ */
860
928
  #if defined(__cpp_static_assert) && __cpp_static_assert >= 200410
929
+ #define StaticAssertDecl(condition, errmessage) \
930
+ static_assert(condition, errmessage)
861
931
  #define StaticAssertStmt(condition, errmessage) \
862
932
  static_assert(condition, errmessage)
863
933
  #define StaticAssertExpr(condition, errmessage) \
864
934
  ({ static_assert(condition, errmessage); })
865
- #define StaticAssertDecl(condition, errmessage) \
866
- static_assert(condition, errmessage)
867
935
  #else /* !__cpp_static_assert */
936
+ #define StaticAssertDecl(condition, errmessage) \
937
+ extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
868
938
  #define StaticAssertStmt(condition, errmessage) \
869
939
  do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0)
870
940
  #define StaticAssertExpr(condition, errmessage) \
871
941
  ((void) ({ StaticAssertStmt(condition, errmessage); }))
872
- #define StaticAssertDecl(condition, errmessage) \
873
- extern void static_assert_func(int static_assert_failure[(condition) ? 1 : -1])
874
942
  #endif /* __cpp_static_assert */
875
943
  #endif /* C++ */
876
944
 
@@ -919,41 +987,6 @@ extern void ExceptionalCondition(const char *conditionName,
919
987
  */
920
988
  #define Min(x, y) ((x) < (y) ? (x) : (y))
921
989
 
922
- /*
923
- * Abs
924
- * Return the absolute value of the argument.
925
- */
926
- #define Abs(x) ((x) >= 0 ? (x) : -(x))
927
-
928
- /*
929
- * StrNCpy
930
- * Like standard library function strncpy(), except that result string
931
- * is guaranteed to be null-terminated --- that is, at most N-1 bytes
932
- * of the source string will be kept.
933
- * Also, the macro returns no result (too hard to do that without
934
- * evaluating the arguments multiple times, which seems worse).
935
- *
936
- * BTW: when you need to copy a non-null-terminated string (like a text
937
- * datum) and add a null, do not do it with StrNCpy(..., len+1). That
938
- * might seem to work, but it fetches one byte more than there is in the
939
- * text object. One fine day you'll have a SIGSEGV because there isn't
940
- * another byte before the end of memory. Don't laugh, we've had real
941
- * live bug reports from real live users over exactly this mistake.
942
- * Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead.
943
- */
944
- #define StrNCpy(dst,src,len) \
945
- do \
946
- { \
947
- char * _dst = (dst); \
948
- Size _len = (len); \
949
- \
950
- if (_len > 0) \
951
- { \
952
- strncpy(_dst, (src), _len); \
953
- _dst[_len-1] = '\0'; \
954
- } \
955
- } while (0)
956
-
957
990
 
958
991
  /* Get a bit mask of the bits set in non-long aligned addresses */
959
992
  #define LONG_ALIGN_MASK (sizeof(long) - 1)
@@ -1076,10 +1109,6 @@ extern void ExceptionalCondition(const char *conditionName,
1076
1109
  * ----------------------------------------------------------------
1077
1110
  */
1078
1111
 
1079
- #ifdef HAVE_STRUCT_SOCKADDR_UN
1080
- #define HAVE_UNIX_SOCKETS 1
1081
- #endif
1082
-
1083
1112
  /*
1084
1113
  * Invert the sign of a qsort-style comparison result, ie, exchange negative
1085
1114
  * and positive integer values, being careful not to get the wrong answer
@@ -1090,14 +1119,11 @@ extern void ExceptionalCondition(const char *conditionName,
1090
1119
 
1091
1120
  /*
1092
1121
  * Use this, not "char buf[BLCKSZ]", to declare a field or local variable
1093
- * holding a page buffer, if that page might be accessed as a page and not
1094
- * just a string of bytes. Otherwise the variable might be under-aligned,
1095
- * causing problems on alignment-picky hardware. (In some places, we use
1096
- * this to declare buffers even though we only pass them to read() and
1097
- * write(), because copying to/from aligned buffers is usually faster than
1098
- * using unaligned buffers.) We include both "double" and "int64" in the
1099
- * union to ensure that the compiler knows the value must be MAXALIGN'ed
1100
- * (cf. configure's computation of MAXIMUM_ALIGNOF).
1122
+ * holding a page buffer, if that page might be accessed as a page. Otherwise
1123
+ * the variable might be under-aligned, causing problems on alignment-picky
1124
+ * hardware. We include both "double" and "int64" in the union to ensure that
1125
+ * the compiler knows the value must be MAXALIGN'ed (cf. configure's
1126
+ * computation of MAXIMUM_ALIGNOF).
1101
1127
  */
1102
1128
  typedef union PGAlignedBlock
1103
1129
  {
@@ -1106,9 +1132,30 @@ typedef union PGAlignedBlock
1106
1132
  int64 force_align_i64;
1107
1133
  } PGAlignedBlock;
1108
1134
 
1135
+ /*
1136
+ * Use this to declare a field or local variable holding a page buffer, if that
1137
+ * page might be accessed as a page or passed to an SMgr I/O function. If
1138
+ * allocating using the MemoryContext API, the aligned allocation functions
1139
+ * should be used with PG_IO_ALIGN_SIZE. This alignment may be more efficient
1140
+ * for I/O in general, but may be strictly required on some platforms when
1141
+ * using direct I/O.
1142
+ */
1143
+ typedef union PGIOAlignedBlock
1144
+ {
1145
+ #ifdef pg_attribute_aligned
1146
+ pg_attribute_aligned(PG_IO_ALIGN_SIZE)
1147
+ #endif
1148
+ char data[BLCKSZ];
1149
+ double force_align_d;
1150
+ int64 force_align_i64;
1151
+ } PGIOAlignedBlock;
1152
+
1109
1153
  /* Same, but for an XLOG_BLCKSZ-sized buffer */
1110
1154
  typedef union PGAlignedXLogBlock
1111
1155
  {
1156
+ #ifdef pg_attribute_aligned
1157
+ pg_attribute_aligned(PG_IO_ALIGN_SIZE)
1158
+ #endif
1112
1159
  char data[XLOG_BLCKSZ];
1113
1160
  double force_align_d;
1114
1161
  int64 force_align_i64;
@@ -1133,7 +1180,6 @@ typedef union PGAlignedXLogBlock
1133
1180
  #define STATUS_OK (0)
1134
1181
  #define STATUS_ERROR (-1)
1135
1182
  #define STATUS_EOF (-2)
1136
- #define STATUS_WAITING (2)
1137
1183
 
1138
1184
  /*
1139
1185
  * gettext support
@@ -1155,7 +1201,8 @@ typedef union PGAlignedXLogBlock
1155
1201
  * access to the original string and translated string, and for cases where
1156
1202
  * immediate translation is not possible, like when initializing global
1157
1203
  * variables.
1158
- * http://www.gnu.org/software/autoconf/manual/gettext/Special-cases.html
1204
+ *
1205
+ * https://www.gnu.org/software/gettext/manual/html_node/Special-cases.html
1159
1206
  */
1160
1207
  #define gettext_noop(x) (x)
1161
1208
 
@@ -1242,46 +1289,56 @@ typedef union PGAlignedXLogBlock
1242
1289
  * standard C library.
1243
1290
  */
1244
1291
 
1245
- #if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC
1292
+ #if !HAVE_DECL_FDATASYNC
1246
1293
  extern int fdatasync(int fildes);
1247
1294
  #endif
1248
1295
 
1249
- /* Older platforms may provide strto[u]ll functionality under other names */
1250
- #if !defined(HAVE_STRTOLL) && defined(HAVE___STRTOLL)
1251
- #define strtoll __strtoll
1252
- #define HAVE_STRTOLL 1
1253
- #endif
1254
-
1255
- #if !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ)
1256
- #define strtoll strtoq
1257
- #define HAVE_STRTOLL 1
1258
- #endif
1259
-
1260
- #if !defined(HAVE_STRTOULL) && defined(HAVE___STRTOULL)
1261
- #define strtoull __strtoull
1262
- #define HAVE_STRTOULL 1
1263
- #endif
1264
-
1265
- #if !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ)
1266
- #define strtoull strtouq
1267
- #define HAVE_STRTOULL 1
1268
- #endif
1269
-
1270
- #if defined(HAVE_STRTOLL) && !HAVE_DECL_STRTOLL
1271
- extern long long strtoll(const char *str, char **endptr, int base);
1296
+ /*
1297
+ * Thin wrappers that convert strings to exactly 64-bit integers, matching our
1298
+ * definition of int64. (For the naming, compare that POSIX has
1299
+ * strtoimax()/strtoumax() which return intmax_t/uintmax_t.)
1300
+ */
1301
+ #ifdef HAVE_LONG_INT_64
1302
+ #define strtoi64(str, endptr, base) ((int64) strtol(str, endptr, base))
1303
+ #define strtou64(str, endptr, base) ((uint64) strtoul(str, endptr, base))
1304
+ #else
1305
+ #define strtoi64(str, endptr, base) ((int64) strtoll(str, endptr, base))
1306
+ #define strtou64(str, endptr, base) ((uint64) strtoull(str, endptr, base))
1272
1307
  #endif
1273
1308
 
1274
- #if defined(HAVE_STRTOULL) && !HAVE_DECL_STRTOULL
1275
- extern unsigned long long strtoull(const char *str, char **endptr, int base);
1309
+ /*
1310
+ * Similarly, wrappers around labs()/llabs() matching our int64.
1311
+ */
1312
+ #ifdef HAVE_LONG_INT_64
1313
+ #define i64abs(i) labs(i)
1314
+ #else
1315
+ #define i64abs(i) llabs(i)
1276
1316
  #endif
1277
1317
 
1278
- /* no special DLL markers on most ports */
1318
+ /*
1319
+ * Use "extern PGDLLIMPORT ..." to declare variables that are defined
1320
+ * in the core backend and need to be accessible by loadable modules.
1321
+ * No special marking is required on most ports.
1322
+ */
1279
1323
  #ifndef PGDLLIMPORT
1280
1324
  #define PGDLLIMPORT
1281
1325
  #endif
1326
+
1327
+ /*
1328
+ * Use "extern PGDLLEXPORT ..." to declare functions that are defined in
1329
+ * loadable modules and need to be callable by the core backend or other
1330
+ * loadable modules.
1331
+ * If the compiler knows __attribute__((visibility("*"))), we use that,
1332
+ * unless we already have a platform-specific definition. Otherwise,
1333
+ * no special marking is required.
1334
+ */
1282
1335
  #ifndef PGDLLEXPORT
1336
+ #ifdef HAVE_VISIBILITY_ATTRIBUTE
1337
+ #define PGDLLEXPORT __attribute__((visibility("default")))
1338
+ #else
1283
1339
  #define PGDLLEXPORT
1284
1340
  #endif
1341
+ #endif
1285
1342
 
1286
1343
  /*
1287
1344
  * The following is used as the arg list for signal handlers. Any ports
@@ -1298,21 +1355,21 @@ extern unsigned long long strtoull(const char *str, char **endptr, int base);
1298
1355
 
1299
1356
  /*
1300
1357
  * When there is no sigsetjmp, its functionality is provided by plain
1301
- * setjmp. Incidentally, nothing provides setjmp's functionality in
1302
- * that case. We now support the case only on Windows.
1358
+ * setjmp. We now support the case only on Windows. However, it seems
1359
+ * that MinGW-64 has some longstanding issues in its setjmp support,
1360
+ * so on that toolchain we cheat and use gcc's builtins.
1303
1361
  */
1304
1362
  #ifdef WIN32
1363
+ #ifdef __MINGW64__
1364
+ typedef intptr_t sigjmp_buf[5];
1365
+ #define sigsetjmp(x,y) __builtin_setjmp(x)
1366
+ #define siglongjmp __builtin_longjmp
1367
+ #else /* !__MINGW64__ */
1305
1368
  #define sigjmp_buf jmp_buf
1306
1369
  #define sigsetjmp(x,y) setjmp(x)
1307
1370
  #define siglongjmp longjmp
1308
- #endif
1309
-
1310
- /* EXEC_BACKEND defines */
1311
- #ifdef EXEC_BACKEND
1312
- #define NON_EXEC_STATIC
1313
- #else
1314
- #define NON_EXEC_STATIC static
1315
- #endif
1371
+ #endif /* __MINGW64__ */
1372
+ #endif /* WIN32 */
1316
1373
 
1317
1374
  /* /port compatibility functions */
1318
1375
  #include "port.h"
@@ -4,7 +4,7 @@
4
4
  * prototypes for functions in backend/catalog/catalog.c
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/catalog/catalog.h
@@ -34,9 +34,12 @@ extern bool IsReservedName(const char *name);
34
34
 
35
35
  extern bool IsSharedRelation(Oid relationId);
36
36
 
37
+ extern bool IsPinnedObject(Oid classId, Oid objectId);
38
+
37
39
  extern Oid GetNewOidWithIndex(Relation relation, Oid indexId,
38
40
  AttrNumber oidcolumn);
39
- extern Oid GetNewRelFileNode(Oid reltablespace, Relation pg_class,
40
- char relpersistence);
41
+ extern RelFileNumber GetNewRelFileNumber(Oid reltablespace,
42
+ Relation pg_class,
43
+ char relpersistence);
41
44
 
42
45
  #endif /* CATALOG_H */