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
@@ -10,20 +10,36 @@
10
10
  * the link fields in the remainder would be wasted space. But usually,
11
11
  * it saves space to not have separately-allocated list nodes.)
12
12
  *
13
+ * The doubly-linked list comes in 2 forms. dlist_head defines a head of a
14
+ * doubly-linked list of dlist_nodes, whereas dclist_head defines the head of
15
+ * a doubly-linked list of dlist_nodes with an additional 'count' field to
16
+ * keep track of how many items are contained within the given list. For
17
+ * simplicity, dlist_head and dclist_head share the same node and iterator
18
+ * types. The functions to manipulate a dlist_head always have a name
19
+ * starting with "dlist", whereas functions to manipulate a dclist_head have a
20
+ * name starting with "dclist". dclist_head comes with an additional function
21
+ * (dclist_count) to return the number of entries in the list. dclists are
22
+ * able to store a maximum of PG_UINT32_MAX elements. It is up to the caller
23
+ * to ensure no more than this many items are added to a dclist.
24
+ *
13
25
  * None of the functions here allocate any memory; they just manipulate
14
- * externally managed memory. The APIs for singly and doubly linked lists
15
- * are identical as far as capabilities of both allow.
26
+ * externally managed memory. With the exception doubly-linked count lists
27
+ * providing the ability to obtain the number of items in the list, the APIs
28
+ * for singly and both doubly linked lists are identical as far as
29
+ * capabilities of both allow.
16
30
  *
17
31
  * Each list has a list header, which exists even when the list is empty.
18
32
  * An empty singly-linked list has a NULL pointer in its header.
19
- * There are two kinds of empty doubly linked lists: those that have been
20
- * initialized to NULL, and those that have been initialized to circularity.
33
+ *
34
+ * For both doubly-linked list types, there are two valid ways to represent an
35
+ * empty list. The head's 'next' pointer can either be NULL or the head's
36
+ * 'next' and 'prev' links can both point back to the list head (circular).
21
37
  * (If a dlist is modified and then all its elements are deleted, it will be
22
- * in the circular state.) We prefer circular dlists because there are some
38
+ * in the circular state.). We prefer circular dlists because there are some
23
39
  * operations that can be done without branches (and thus faster) on lists
24
40
  * that use circular representation. However, it is often convenient to
25
41
  * initialize list headers to zeroes rather than setting them up with an
26
- * explicit initialization function, so we also allow the other case.
42
+ * explicit initialization function, so we also allow the NULL initialization.
27
43
  *
28
44
  * EXAMPLES
29
45
  *
@@ -96,7 +112,7 @@
96
112
  * }
97
113
  *
98
114
  *
99
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
115
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
100
116
  * Portions Copyright (c) 1994, Regents of the University of California
101
117
  *
102
118
  * IDENTIFICATION
@@ -146,15 +162,17 @@ typedef struct dlist_head
146
162
 
147
163
 
148
164
  /*
149
- * Doubly linked list iterator.
165
+ * Doubly linked list iterator type for dlist_head and dclist_head types.
150
166
  *
151
- * Used as state in dlist_foreach() and dlist_reverse_foreach(). To get the
152
- * current element of the iteration use the 'cur' member.
167
+ * Used as state in dlist_foreach() and dlist_reverse_foreach() (and the
168
+ * dclist variant thereof).
169
+ *
170
+ * To get the current element of the iteration use the 'cur' member.
153
171
  *
154
172
  * Iterations using this are *not* allowed to change the list while iterating!
155
173
  *
156
174
  * NB: We use an extra "end" field here to avoid multiple evaluations of
157
- * arguments in the dlist_foreach() macro.
175
+ * arguments in the dlist_foreach() and dclist_foreach() macros.
158
176
  */
159
177
  typedef struct dlist_iter
160
178
  {
@@ -163,10 +181,12 @@ typedef struct dlist_iter
163
181
  } dlist_iter;
164
182
 
165
183
  /*
166
- * Doubly linked list iterator allowing some modifications while iterating.
184
+ * Doubly linked list iterator for both dlist_head and dclist_head types.
185
+ * This iterator type allows some modifications while iterating.
167
186
  *
168
- * Used as state in dlist_foreach_modify(). To get the current element of the
169
- * iteration use the 'cur' member.
187
+ * Used as state in dlist_foreach_modify() and dclist_foreach_modify().
188
+ *
189
+ * To get the current element of the iteration use the 'cur' member.
170
190
  *
171
191
  * Iterations using this are only allowed to change the list at the current
172
192
  * point of iteration. It is fine to delete the current node, but it is *not*
@@ -182,6 +202,19 @@ typedef struct dlist_mutable_iter
182
202
  dlist_node *end; /* last node we'll iterate to */
183
203
  } dlist_mutable_iter;
184
204
 
205
+ /*
206
+ * Head of a doubly linked list with a count of the number of items
207
+ *
208
+ * This internally makes use of a dlist to implement the actual list. When
209
+ * items are added or removed from the list the count is updated to reflect
210
+ * the current number of items in the list.
211
+ */
212
+ typedef struct dclist_head
213
+ {
214
+ dlist_head dlist; /* the actual list header */
215
+ uint32 count; /* the number of items in the list */
216
+ } dclist_head;
217
+
185
218
  /*
186
219
  * Node of a singly linked list.
187
220
  *
@@ -246,17 +279,19 @@ typedef struct slist_mutable_iter
246
279
 
247
280
  /* Static initializers */
248
281
  #define DLIST_STATIC_INIT(name) {{&(name).head, &(name).head}}
282
+ #define DCLIST_STATIC_INIT(name) {{{&(name).dlist.head, &(name).dlist.head}}, 0}
249
283
  #define SLIST_STATIC_INIT(name) {{NULL}}
250
284
 
251
285
 
252
286
  /* Prototypes for functions too big to be inline */
253
287
 
254
288
  /* Caution: this is O(n); consider using slist_delete_current() instead */
255
- extern void slist_delete(slist_head *head, slist_node *node);
289
+ extern void slist_delete(slist_head *head, const slist_node *node);
256
290
 
257
291
  #ifdef ILIST_DEBUG
258
- extern void dlist_check(dlist_head *head);
259
- extern void slist_check(slist_head *head);
292
+ extern void dlist_member_check(const dlist_head *head, const dlist_node *node);
293
+ extern void dlist_check(const dlist_head *head);
294
+ extern void slist_check(const slist_head *head);
260
295
  #else
261
296
  /*
262
297
  * These seemingly useless casts to void are here to keep the compiler quiet
@@ -264,6 +299,7 @@ extern void slist_check(slist_head *head);
264
299
  * in which functions the only point of passing the list head pointer is to be
265
300
  * able to run these checks.
266
301
  */
302
+ #define dlist_member_check(head, node) ((void) (head))
267
303
  #define dlist_check(head) ((void) (head))
268
304
  #define slist_check(head) ((void) (head))
269
305
  #endif /* ILIST_DEBUG */
@@ -280,13 +316,24 @@ dlist_init(dlist_head *head)
280
316
  head->head.next = head->head.prev = &head->head;
281
317
  }
282
318
 
319
+ /*
320
+ * Initialize a doubly linked list element.
321
+ *
322
+ * This is only needed when dlist_node_is_detached() may be needed.
323
+ */
324
+ static inline void
325
+ dlist_node_init(dlist_node *node)
326
+ {
327
+ node->next = node->prev = NULL;
328
+ }
329
+
283
330
  /*
284
331
  * Is the list empty?
285
332
  *
286
333
  * An empty list has either its first 'next' pointer set to NULL, or to itself.
287
334
  */
288
335
  static inline bool
289
- dlist_is_empty(dlist_head *head)
336
+ dlist_is_empty(const dlist_head *head)
290
337
  {
291
338
  dlist_check(head);
292
339
 
@@ -361,6 +408,41 @@ dlist_delete(dlist_node *node)
361
408
  node->next->prev = node->prev;
362
409
  }
363
410
 
411
+ /*
412
+ * Like dlist_delete(), but also sets next/prev to NULL to signal not being in
413
+ * a list.
414
+ */
415
+ static inline void
416
+ dlist_delete_thoroughly(dlist_node *node)
417
+ {
418
+ node->prev->next = node->next;
419
+ node->next->prev = node->prev;
420
+ node->next = NULL;
421
+ node->prev = NULL;
422
+ }
423
+
424
+ /*
425
+ * Same as dlist_delete, but performs checks in ILIST_DEBUG builds to ensure
426
+ * that 'node' belongs to 'head'.
427
+ */
428
+ static inline void
429
+ dlist_delete_from(dlist_head *head, dlist_node *node)
430
+ {
431
+ dlist_member_check(head, node);
432
+ dlist_delete(node);
433
+ }
434
+
435
+ /*
436
+ * Like dlist_delete_from, but also sets next/prev to NULL to signal not
437
+ * being in a list.
438
+ */
439
+ static inline void
440
+ dlist_delete_from_thoroughly(dlist_head *head, dlist_node *node)
441
+ {
442
+ dlist_member_check(head, node);
443
+ dlist_delete_thoroughly(node);
444
+ }
445
+
364
446
  /*
365
447
  * Remove and return the first node from a list (there must be one).
366
448
  */
@@ -394,12 +476,31 @@ dlist_move_head(dlist_head *head, dlist_node *node)
394
476
  dlist_check(head);
395
477
  }
396
478
 
479
+ /*
480
+ * Move element from its current position in the list to the tail position in
481
+ * the same list.
482
+ *
483
+ * Undefined behaviour if 'node' is not already part of the list.
484
+ */
485
+ static inline void
486
+ dlist_move_tail(dlist_head *head, dlist_node *node)
487
+ {
488
+ /* fast path if it's already at the tail */
489
+ if (head->head.prev == node)
490
+ return;
491
+
492
+ dlist_delete(node);
493
+ dlist_push_tail(head, node);
494
+
495
+ dlist_check(head);
496
+ }
497
+
397
498
  /*
398
499
  * Check whether 'node' has a following node.
399
500
  * Caution: unreliable if 'node' is not in the list.
400
501
  */
401
502
  static inline bool
402
- dlist_has_next(dlist_head *head, dlist_node *node)
503
+ dlist_has_next(const dlist_head *head, const dlist_node *node)
403
504
  {
404
505
  return node->next != &head->head;
405
506
  }
@@ -409,11 +510,26 @@ dlist_has_next(dlist_head *head, dlist_node *node)
409
510
  * Caution: unreliable if 'node' is not in the list.
410
511
  */
411
512
  static inline bool
412
- dlist_has_prev(dlist_head *head, dlist_node *node)
513
+ dlist_has_prev(const dlist_head *head, const dlist_node *node)
413
514
  {
414
515
  return node->prev != &head->head;
415
516
  }
416
517
 
518
+ /*
519
+ * Check if node is detached. A node is only detached if it either has been
520
+ * initialized with dlist_init_node(), or deleted with
521
+ * dlist_delete_thoroughly() / dlist_delete_from_thoroughly() /
522
+ * dclist_delete_from_thoroughly().
523
+ */
524
+ static inline bool
525
+ dlist_node_is_detached(const dlist_node *node)
526
+ {
527
+ Assert((node->next == NULL && node->prev == NULL) ||
528
+ (node->next != NULL && node->prev != NULL));
529
+
530
+ return node->next == NULL;
531
+ }
532
+
417
533
  /*
418
534
  * Return the next node in the list (there must be one).
419
535
  */
@@ -543,6 +659,322 @@ dlist_tail_node(dlist_head *head)
543
659
  (iter).cur != (iter).end; \
544
660
  (iter).cur = (iter).cur->prev)
545
661
 
662
+ /* doubly-linked count list implementation */
663
+
664
+ /*
665
+ * dclist_init
666
+ * Initialize a doubly linked count list.
667
+ *
668
+ * Previous state will be thrown away without any cleanup.
669
+ */
670
+ static inline void
671
+ dclist_init(dclist_head *head)
672
+ {
673
+ dlist_init(&head->dlist);
674
+ head->count = 0;
675
+ }
676
+
677
+ /*
678
+ * dclist_is_empty
679
+ * Returns true if the list is empty, otherwise false.
680
+ */
681
+ static inline bool
682
+ dclist_is_empty(const dclist_head *head)
683
+ {
684
+ Assert(dlist_is_empty(&head->dlist) == (head->count == 0));
685
+ return (head->count == 0);
686
+ }
687
+
688
+ /*
689
+ * dclist_push_head
690
+ * Insert a node at the beginning of the list.
691
+ */
692
+ static inline void
693
+ dclist_push_head(dclist_head *head, dlist_node *node)
694
+ {
695
+ if (head->dlist.head.next == NULL) /* convert NULL header to circular */
696
+ dclist_init(head);
697
+
698
+ dlist_push_head(&head->dlist, node);
699
+ head->count++;
700
+
701
+ Assert(head->count > 0); /* count overflow check */
702
+ }
703
+
704
+ /*
705
+ * dclist_push_tail
706
+ * Insert a node at the end of the list.
707
+ */
708
+ static inline void
709
+ dclist_push_tail(dclist_head *head, dlist_node *node)
710
+ {
711
+ if (head->dlist.head.next == NULL) /* convert NULL header to circular */
712
+ dclist_init(head);
713
+
714
+ dlist_push_tail(&head->dlist, node);
715
+ head->count++;
716
+
717
+ Assert(head->count > 0); /* count overflow check */
718
+ }
719
+
720
+ /*
721
+ * dclist_insert_after
722
+ * Insert a node after another *in the same list*
723
+ *
724
+ * Caution: 'after' must be a member of 'head'.
725
+ */
726
+ static inline void
727
+ dclist_insert_after(dclist_head *head, dlist_node *after, dlist_node *node)
728
+ {
729
+ dlist_member_check(&head->dlist, after);
730
+ Assert(head->count > 0); /* must be at least 1 already */
731
+
732
+ dlist_insert_after(after, node);
733
+ head->count++;
734
+
735
+ Assert(head->count > 0); /* count overflow check */
736
+ }
737
+
738
+ /*
739
+ * dclist_insert_before
740
+ * Insert a node before another *in the same list*
741
+ *
742
+ * Caution: 'before' must be a member of 'head'.
743
+ */
744
+ static inline void
745
+ dclist_insert_before(dclist_head *head, dlist_node *before, dlist_node *node)
746
+ {
747
+ dlist_member_check(&head->dlist, before);
748
+ Assert(head->count > 0); /* must be at least 1 already */
749
+
750
+ dlist_insert_before(before, node);
751
+ head->count++;
752
+
753
+ Assert(head->count > 0); /* count overflow check */
754
+ }
755
+
756
+ /*
757
+ * dclist_delete_from
758
+ * Deletes 'node' from 'head'.
759
+ *
760
+ * Caution: 'node' must be a member of 'head'.
761
+ */
762
+ static inline void
763
+ dclist_delete_from(dclist_head *head, dlist_node *node)
764
+ {
765
+ Assert(head->count > 0);
766
+
767
+ dlist_delete_from(&head->dlist, node);
768
+ head->count--;
769
+ }
770
+
771
+ /*
772
+ * Like dclist_delete_from(), but also sets next/prev to NULL to signal not
773
+ * being in a list.
774
+ */
775
+ static inline void
776
+ dclist_delete_from_thoroughly(dclist_head *head, dlist_node *node)
777
+ {
778
+ Assert(head->count > 0);
779
+
780
+ dlist_delete_from_thoroughly(&head->dlist, node);
781
+ head->count--;
782
+ }
783
+
784
+ /*
785
+ * dclist_pop_head_node
786
+ * Remove and return the first node from a list (there must be one).
787
+ */
788
+ static inline dlist_node *
789
+ dclist_pop_head_node(dclist_head *head)
790
+ {
791
+ dlist_node *node;
792
+
793
+ Assert(head->count > 0);
794
+
795
+ node = dlist_pop_head_node(&head->dlist);
796
+ head->count--;
797
+ return node;
798
+ }
799
+
800
+ /*
801
+ * dclist_move_head
802
+ * Move 'node' from its current position in the list to the head position
803
+ * in 'head'.
804
+ *
805
+ * Caution: 'node' must be a member of 'head'.
806
+ */
807
+ static inline void
808
+ dclist_move_head(dclist_head *head, dlist_node *node)
809
+ {
810
+ dlist_member_check(&head->dlist, node);
811
+ Assert(head->count > 0);
812
+
813
+ dlist_move_head(&head->dlist, node);
814
+ }
815
+
816
+ /*
817
+ * dclist_move_tail
818
+ * Move 'node' from its current position in the list to the tail position
819
+ * in 'head'.
820
+ *
821
+ * Caution: 'node' must be a member of 'head'.
822
+ */
823
+ static inline void
824
+ dclist_move_tail(dclist_head *head, dlist_node *node)
825
+ {
826
+ dlist_member_check(&head->dlist, node);
827
+ Assert(head->count > 0);
828
+
829
+ dlist_move_tail(&head->dlist, node);
830
+ }
831
+
832
+ /*
833
+ * dclist_has_next
834
+ * Check whether 'node' has a following node.
835
+ *
836
+ * Caution: 'node' must be a member of 'head'.
837
+ */
838
+ static inline bool
839
+ dclist_has_next(const dclist_head *head, const dlist_node *node)
840
+ {
841
+ dlist_member_check(&head->dlist, node);
842
+ Assert(head->count > 0);
843
+
844
+ return dlist_has_next(&head->dlist, node);
845
+ }
846
+
847
+ /*
848
+ * dclist_has_prev
849
+ * Check whether 'node' has a preceding node.
850
+ *
851
+ * Caution: 'node' must be a member of 'head'.
852
+ */
853
+ static inline bool
854
+ dclist_has_prev(const dclist_head *head, const dlist_node *node)
855
+ {
856
+ dlist_member_check(&head->dlist, node);
857
+ Assert(head->count > 0);
858
+
859
+ return dlist_has_prev(&head->dlist, node);
860
+ }
861
+
862
+ /*
863
+ * dclist_next_node
864
+ * Return the next node in the list (there must be one).
865
+ */
866
+ static inline dlist_node *
867
+ dclist_next_node(dclist_head *head, dlist_node *node)
868
+ {
869
+ Assert(head->count > 0);
870
+
871
+ return dlist_next_node(&head->dlist, node);
872
+ }
873
+
874
+ /*
875
+ * dclist_prev_node
876
+ * Return the prev node in the list (there must be one).
877
+ */
878
+ static inline dlist_node *
879
+ dclist_prev_node(dclist_head *head, dlist_node *node)
880
+ {
881
+ Assert(head->count > 0);
882
+
883
+ return dlist_prev_node(&head->dlist, node);
884
+ }
885
+
886
+ /* internal support function to get address of head element's struct */
887
+ static inline void *
888
+ dclist_head_element_off(dclist_head *head, size_t off)
889
+ {
890
+ Assert(!dclist_is_empty(head));
891
+
892
+ return (char *) head->dlist.head.next - off;
893
+ }
894
+
895
+ /*
896
+ * dclist_head_node
897
+ * Return the first node in the list (there must be one).
898
+ */
899
+ static inline dlist_node *
900
+ dclist_head_node(dclist_head *head)
901
+ {
902
+ Assert(head->count > 0);
903
+
904
+ return (dlist_node *) dlist_head_element_off(&head->dlist, 0);
905
+ }
906
+
907
+ /* internal support function to get address of tail element's struct */
908
+ static inline void *
909
+ dclist_tail_element_off(dclist_head *head, size_t off)
910
+ {
911
+ Assert(!dclist_is_empty(head));
912
+
913
+ return (char *) head->dlist.head.prev - off;
914
+ }
915
+
916
+ /*
917
+ * Return the last node in the list (there must be one).
918
+ */
919
+ static inline dlist_node *
920
+ dclist_tail_node(dclist_head *head)
921
+ {
922
+ Assert(head->count > 0);
923
+
924
+ return (dlist_node *) dlist_tail_element_off(&head->dlist, 0);
925
+ }
926
+
927
+ /*
928
+ * dclist_count
929
+ * Returns the stored number of entries in 'head'
930
+ */
931
+ static inline uint32
932
+ dclist_count(const dclist_head *head)
933
+ {
934
+ Assert(dlist_is_empty(&head->dlist) == (head->count == 0));
935
+
936
+ return head->count;
937
+ }
938
+
939
+ /*
940
+ * Return the containing struct of 'type' where 'membername' is the dlist_node
941
+ * pointed at by 'ptr'.
942
+ *
943
+ * This is used to convert a dlist_node * back to its containing struct.
944
+ *
945
+ * Note: This is effectively just the same as dlist_container, so reuse that.
946
+ */
947
+ #define dclist_container(type, membername, ptr) \
948
+ dlist_container(type, membername, ptr)
949
+
950
+ /*
951
+ * Return the address of the first element in the list.
952
+ *
953
+ * The list must not be empty.
954
+ */
955
+ #define dclist_head_element(type, membername, lhead) \
956
+ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \
957
+ (type *) dclist_head_element_off(lhead, offsetof(type, membername)))
958
+
959
+ /*
960
+ * Return the address of the last element in the list.
961
+ *
962
+ * The list must not be empty.
963
+ */
964
+ #define dclist_tail_element(type, membername, lhead) \
965
+ (AssertVariableIsOfTypeMacro(((type *) NULL)->membername, dlist_node), \
966
+ ((type *) dclist_tail_element_off(lhead, offsetof(type, membername))))
967
+
968
+
969
+ /* Iterators for dclists */
970
+ #define dclist_foreach(iter, lhead) \
971
+ dlist_foreach(iter, &((lhead)->dlist))
972
+
973
+ #define dclist_foreach_modify(iter, lhead) \
974
+ dlist_foreach_modify(iter, &((lhead)->dlist))
975
+
976
+ #define dclist_reverse_foreach(iter, lhead) \
977
+ dlist_reverse_foreach(iter, &((lhead)->dlist))
546
978
 
547
979
  /* singly linked list implementation */
548
980
 
@@ -560,7 +992,7 @@ slist_init(slist_head *head)
560
992
  * Is the list empty?
561
993
  */
562
994
  static inline bool
563
- slist_is_empty(slist_head *head)
995
+ slist_is_empty(const slist_head *head)
564
996
  {
565
997
  slist_check(head);
566
998
 
@@ -608,7 +1040,7 @@ slist_pop_head_node(slist_head *head)
608
1040
  * Check whether 'node' has a following node.
609
1041
  */
610
1042
  static inline bool
611
- slist_has_next(slist_head *head, slist_node *node)
1043
+ slist_has_next(const slist_head *head, const slist_node *node)
612
1044
  {
613
1045
  slist_check(head);
614
1046
 
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * A Pairing Heap implementation
5
5
  *
6
- * Portions Copyright (c) 2012-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2012-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/lib/pairingheap.h
9
9
  */