pg_query 5.0.0 → 6.0.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 (898) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +1 -1
  4. data/Rakefile +3 -4
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +4 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2901 -1794
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +211 -24
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +272 -53
  14. data/ext/pg_query/include/postgres/access/amapi.h +299 -0
  15. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  16. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  17. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  18. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  19. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  20. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  21. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  22. data/ext/pg_query/include/postgres/access/genam.h +237 -0
  23. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  24. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  25. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  26. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  27. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  28. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  29. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  30. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  31. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  32. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  33. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  34. data/ext/pg_query/include/postgres/access/slru.h +221 -0
  35. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  36. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  37. data/ext/pg_query/include/postgres/access/table.h +28 -0
  38. data/ext/pg_query/include/postgres/access/tableam.h +2109 -0
  39. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  40. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  41. data/ext/pg_query/include/postgres/access/transam.h +375 -0
  42. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  43. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  44. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  45. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  46. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  47. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  48. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  49. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  50. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  51. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  52. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  53. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  54. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  55. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  56. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  57. data/ext/pg_query/include/postgres/c.h +1374 -0
  58. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  59. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  60. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  61. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  62. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  63. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  64. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  65. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  66. data/ext/pg_query/include/postgres/catalog/objectaddress.h +89 -0
  67. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  68. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  69. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  70. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  71. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  72. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  128. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  129. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  130. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  131. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  132. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  133. data/ext/pg_query/include/postgres/commands/event_trigger.h +91 -0
  134. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  135. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  136. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  137. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  138. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  139. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  140. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  141. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  142. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  143. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
  144. data/ext/pg_query/include/postgres/common/int.h +512 -0
  145. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  146. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  147. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  148. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  149. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  150. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  151. data/ext/pg_query/include/postgres/common/string.h +44 -0
  152. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  153. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  154. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  155. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  156. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  157. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  158. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  159. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  160. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  161. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  162. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  163. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  164. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  165. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  166. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  167. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  168. data/ext/pg_query/include/postgres/gram.h +1168 -0
  169. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  170. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  171. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  172. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  173. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  174. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  175. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  176. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  177. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  178. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  179. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  180. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  181. data/ext/pg_query/include/postgres/libpq/libpq-be.h +358 -0
  182. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  183. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  184. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  185. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  186. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  187. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  188. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  189. data/ext/pg_query/include/postgres/mb/pg_wchar.h +792 -0
  190. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  191. data/ext/pg_query/include/postgres/miscadmin.h +519 -0
  192. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  193. data/ext/pg_query/include/postgres/nodes/execnodes.h +2852 -0
  194. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  195. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  196. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  197. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  198. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  199. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  200. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  201. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  202. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  203. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  204. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3435 -0
  205. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  206. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  207. data/ext/pg_query/include/postgres/nodes/primnodes.h +2335 -0
  208. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  209. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  210. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  211. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  212. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  213. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  214. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  215. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  216. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  217. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  218. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  219. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  220. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  221. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  222. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  223. data/ext/pg_query/include/postgres/parser/parse_coerce.h +102 -0
  224. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  225. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  226. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  227. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  228. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  229. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  230. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  231. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  232. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  233. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  234. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  235. data/ext/pg_query/include/postgres/pg_config.h +977 -0
  236. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  237. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  238. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  239. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  240. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  241. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  242. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  243. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  244. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  245. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  246. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  247. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  248. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  249. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  250. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  251. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  252. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  253. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  254. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  255. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  256. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  257. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  258. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  259. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  260. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  261. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  262. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  263. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  264. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  266. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  267. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  268. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  269. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  270. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  271. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  272. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  273. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  274. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  275. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  276. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  277. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  278. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  279. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  280. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  281. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  282. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  283. data/ext/pg_query/include/postgres/port/win32_port.h +584 -0
  284. data/ext/pg_query/include/postgres/port.h +524 -0
  285. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  286. data/ext/pg_query/include/postgres/postgres.h +579 -0
  287. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  288. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  289. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  290. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  291. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  292. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  293. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  294. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  295. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  296. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  297. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  298. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  299. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  300. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  301. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  302. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  303. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +743 -0
  304. data/ext/pg_query/include/postgres/replication/slot.h +285 -0
  305. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  306. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  307. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  308. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  309. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  310. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  311. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  312. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  313. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  314. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  315. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  316. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  317. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  318. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  319. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  320. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  321. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  322. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  323. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  324. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  325. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  326. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  327. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  328. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  329. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  330. data/ext/pg_query/include/postgres/storage/lockdefs.h +59 -0
  331. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  332. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  333. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  334. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  335. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  336. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  337. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  338. data/ext/pg_query/include/postgres/storage/proc.h +491 -0
  339. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  340. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  341. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  342. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  343. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  344. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  345. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  346. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  347. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  348. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  349. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  350. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  351. data/ext/pg_query/include/postgres/storage/smgr.h +127 -0
  352. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  353. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  354. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  355. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  356. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  357. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  358. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  359. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  360. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  361. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  362. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  363. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  364. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  365. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  366. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  367. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  368. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  369. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  370. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  371. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  372. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  373. data/ext/pg_query/include/postgres/utils/catcache.h +230 -0
  374. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  375. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  376. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  377. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  378. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  379. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  380. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  381. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  382. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  383. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  384. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  385. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  386. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  387. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  388. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  389. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  390. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  391. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  392. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  393. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  394. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  395. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  396. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  397. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  398. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  399. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  400. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  401. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  402. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +808 -0
  403. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  404. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  405. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  406. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  407. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  408. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  409. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  410. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  411. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  412. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  413. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  414. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  415. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  416. data/ext/pg_query/include/postgres/utils/syscache.h +131 -0
  417. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  418. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  419. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  420. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  421. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  422. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  423. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  424. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  425. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  426. data/ext/pg_query/include/postgres/varatt.h +358 -0
  427. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  428. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  429. data/ext/pg_query/pg_query.c +9 -0
  430. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  431. data/ext/pg_query/pg_query_fingerprint.c +4 -5
  432. data/ext/pg_query/pg_query_normalize.c +42 -1
  433. data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
  434. data/ext/pg_query/pg_query_outfuncs_protobuf.c +1 -0
  435. data/ext/pg_query/pg_query_parse.c +1 -1
  436. data/ext/pg_query/pg_query_parse_plpgsql.c +18 -17
  437. data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
  438. data/ext/pg_query/pg_query_ruby.c +5 -0
  439. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
  440. data/ext/pg_query/pg_query_scan.c +1 -1
  441. data/ext/pg_query/pg_query_split.c +1 -1
  442. data/ext/pg_query/postgres_deparse.c +409 -21
  443. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  444. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  445. data/ext/pg_query/src_backend_commands_define.c +2 -3
  446. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  447. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  448. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  449. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  450. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  451. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  452. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  453. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  454. data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
  455. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  456. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  457. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  458. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  459. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  460. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  461. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  462. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  463. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  464. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  465. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  466. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  467. data/ext/pg_query/src_backend_utils_error_elog.c +60 -190
  468. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  469. data/ext/pg_query/src_backend_utils_init_globals.c +16 -4
  470. data/ext/pg_query/src_backend_utils_mb_mbutils.c +19 -81
  471. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -8
  472. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  473. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  474. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  476. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  477. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  478. data/ext/pg_query/src_common_encnames.c +43 -44
  479. data/ext/pg_query/src_common_hashfn.c +1 -1
  480. data/ext/pg_query/src_common_keywords.c +1 -1
  481. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  482. data/ext/pg_query/src_common_kwlookup.c +1 -1
  483. data/ext/pg_query/src_common_psprintf.c +3 -3
  484. data/ext/pg_query/src_common_stringinfo.c +18 -1
  485. data/ext/pg_query/src_common_wchar.c +45 -108
  486. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  493. data/ext/pg_query/src_port_pg_bitutils.c +251 -32
  494. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  495. data/ext/pg_query/src_port_snprintf.c +4 -4
  496. data/ext/pg_query/src_port_strerror.c +1 -3
  497. data/ext/pg_query/src_port_strlcpy.c +79 -0
  498. data/lib/pg_query/fingerprint.rb +2 -3
  499. data/lib/pg_query/node.rb +16 -11
  500. data/lib/pg_query/param_refs.rb +1 -1
  501. data/lib/pg_query/parse.rb +1 -1
  502. data/lib/pg_query/pg_query_pb.rb +26 -3
  503. data/lib/pg_query/treewalker.rb +52 -12
  504. data/lib/pg_query/truncate.rb +1 -1
  505. data/lib/pg_query/version.rb +1 -1
  506. metadata +444 -400
  507. data/ext/pg_query/guc-file.c +0 -0
  508. data/ext/pg_query/include/access/amapi.h +0 -292
  509. data/ext/pg_query/include/access/attmap.h +0 -54
  510. data/ext/pg_query/include/access/attnum.h +0 -64
  511. data/ext/pg_query/include/access/clog.h +0 -63
  512. data/ext/pg_query/include/access/commit_ts.h +0 -74
  513. data/ext/pg_query/include/access/detoast.h +0 -82
  514. data/ext/pg_query/include/access/genam.h +0 -233
  515. data/ext/pg_query/include/access/gin.h +0 -91
  516. data/ext/pg_query/include/access/htup.h +0 -89
  517. data/ext/pg_query/include/access/htup_details.h +0 -811
  518. data/ext/pg_query/include/access/itup.h +0 -170
  519. data/ext/pg_query/include/access/parallel.h +0 -82
  520. data/ext/pg_query/include/access/printtup.h +0 -35
  521. data/ext/pg_query/include/access/relation.h +0 -28
  522. data/ext/pg_query/include/access/relscan.h +0 -191
  523. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  524. data/ext/pg_query/include/access/sdir.h +0 -67
  525. data/ext/pg_query/include/access/skey.h +0 -151
  526. data/ext/pg_query/include/access/stratnum.h +0 -85
  527. data/ext/pg_query/include/access/sysattr.h +0 -29
  528. data/ext/pg_query/include/access/table.h +0 -28
  529. data/ext/pg_query/include/access/tableam.h +0 -2100
  530. data/ext/pg_query/include/access/toast_compression.h +0 -73
  531. data/ext/pg_query/include/access/transam.h +0 -375
  532. data/ext/pg_query/include/access/tsmapi.h +0 -82
  533. data/ext/pg_query/include/access/tupconvert.h +0 -54
  534. data/ext/pg_query/include/access/tupdesc.h +0 -154
  535. data/ext/pg_query/include/access/tupmacs.h +0 -207
  536. data/ext/pg_query/include/access/twophase.h +0 -65
  537. data/ext/pg_query/include/access/xact.h +0 -530
  538. data/ext/pg_query/include/access/xlog.h +0 -302
  539. data/ext/pg_query/include/access/xlog_internal.h +0 -404
  540. data/ext/pg_query/include/access/xlogbackup.h +0 -41
  541. data/ext/pg_query/include/access/xlogdefs.h +0 -82
  542. data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
  543. data/ext/pg_query/include/access/xlogreader.h +0 -444
  544. data/ext/pg_query/include/access/xlogrecord.h +0 -248
  545. data/ext/pg_query/include/access/xlogrecovery.h +0 -158
  546. data/ext/pg_query/include/archive/archive_module.h +0 -59
  547. data/ext/pg_query/include/c.h +0 -1379
  548. data/ext/pg_query/include/catalog/catalog.h +0 -45
  549. data/ext/pg_query/include/catalog/catversion.h +0 -62
  550. data/ext/pg_query/include/catalog/dependency.h +0 -270
  551. data/ext/pg_query/include/catalog/genbki.h +0 -143
  552. data/ext/pg_query/include/catalog/index.h +0 -214
  553. data/ext/pg_query/include/catalog/indexing.h +0 -54
  554. data/ext/pg_query/include/catalog/namespace.h +0 -190
  555. data/ext/pg_query/include/catalog/objectaccess.h +0 -267
  556. data/ext/pg_query/include/catalog/objectaddress.h +0 -89
  557. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
  558. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
  559. data/ext/pg_query/include/catalog/pg_am.h +0 -63
  560. data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
  561. data/ext/pg_query/include/catalog/pg_attribute.h +0 -223
  562. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
  563. data/ext/pg_query/include/catalog/pg_authid.h +0 -63
  564. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -59
  565. data/ext/pg_query/include/catalog/pg_class.h +0 -230
  566. data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
  567. data/ext/pg_query/include/catalog/pg_collation.h +0 -100
  568. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -63
  569. data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
  570. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
  571. data/ext/pg_query/include/catalog/pg_control.h +0 -258
  572. data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
  573. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
  574. data/ext/pg_query/include/catalog/pg_database.h +0 -124
  575. data/ext/pg_query/include/catalog/pg_database_d.h +0 -52
  576. data/ext/pg_query/include/catalog/pg_depend.h +0 -77
  577. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
  578. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
  579. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
  580. data/ext/pg_query/include/catalog/pg_index.h +0 -90
  581. data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
  582. data/ext/pg_query/include/catalog/pg_language.h +0 -72
  583. data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
  584. data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
  585. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
  586. data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
  587. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
  588. data/ext/pg_query/include/catalog/pg_operator.h +0 -107
  589. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
  590. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -64
  591. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -51
  592. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
  593. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
  594. data/ext/pg_query/include/catalog/pg_proc.h +0 -220
  595. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
  596. data/ext/pg_query/include/catalog/pg_publication.h +0 -158
  597. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
  598. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
  599. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
  600. data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
  601. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
  602. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
  603. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
  604. data/ext/pg_query/include/catalog/pg_transform.h +0 -48
  605. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
  606. data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
  607. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
  608. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
  609. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
  610. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
  611. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
  612. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
  613. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
  614. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
  615. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
  616. data/ext/pg_query/include/catalog/pg_type.h +0 -404
  617. data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
  618. data/ext/pg_query/include/catalog/storage.h +0 -50
  619. data/ext/pg_query/include/commands/async.h +0 -53
  620. data/ext/pg_query/include/commands/dbcommands.h +0 -37
  621. data/ext/pg_query/include/commands/defrem.h +0 -161
  622. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  623. data/ext/pg_query/include/commands/explain.h +0 -129
  624. data/ext/pg_query/include/commands/prepare.h +0 -61
  625. data/ext/pg_query/include/commands/tablespace.h +0 -69
  626. data/ext/pg_query/include/commands/trigger.h +0 -288
  627. data/ext/pg_query/include/commands/vacuum.h +0 -386
  628. data/ext/pg_query/include/common/cryptohash.h +0 -39
  629. data/ext/pg_query/include/common/file_perm.h +0 -56
  630. data/ext/pg_query/include/common/hashfn.h +0 -104
  631. data/ext/pg_query/include/common/int.h +0 -437
  632. data/ext/pg_query/include/common/ip.h +0 -33
  633. data/ext/pg_query/include/common/keywords.h +0 -29
  634. data/ext/pg_query/include/common/kwlookup.h +0 -44
  635. data/ext/pg_query/include/common/pg_prng.h +0 -61
  636. data/ext/pg_query/include/common/relpath.h +0 -97
  637. data/ext/pg_query/include/common/scram-common.h +0 -70
  638. data/ext/pg_query/include/common/sha2.h +0 -32
  639. data/ext/pg_query/include/common/string.h +0 -44
  640. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
  641. data/ext/pg_query/include/copyfuncs.funcs.c +0 -5013
  642. data/ext/pg_query/include/copyfuncs.switch.c +0 -938
  643. data/ext/pg_query/include/datatype/timestamp.h +0 -243
  644. data/ext/pg_query/include/equalfuncs.funcs.c +0 -3097
  645. data/ext/pg_query/include/equalfuncs.switch.c +0 -785
  646. data/ext/pg_query/include/executor/execdesc.h +0 -70
  647. data/ext/pg_query/include/executor/executor.h +0 -680
  648. data/ext/pg_query/include/executor/functions.h +0 -55
  649. data/ext/pg_query/include/executor/instrument.h +0 -118
  650. data/ext/pg_query/include/executor/spi.h +0 -213
  651. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  652. data/ext/pg_query/include/executor/tuptable.h +0 -494
  653. data/ext/pg_query/include/fmgr.h +0 -800
  654. data/ext/pg_query/include/foreign/fdwapi.h +0 -294
  655. data/ext/pg_query/include/funcapi.h +0 -360
  656. data/ext/pg_query/include/gram.h +0 -1127
  657. data/ext/pg_query/include/gramparse.h +0 -75
  658. data/ext/pg_query/include/jit/jit.h +0 -105
  659. data/ext/pg_query/include/kwlist_d.h +0 -1119
  660. data/ext/pg_query/include/lib/dshash.h +0 -115
  661. data/ext/pg_query/include/lib/ilist.h +0 -1159
  662. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  663. data/ext/pg_query/include/lib/simplehash.h +0 -1184
  664. data/ext/pg_query/include/lib/sort_template.h +0 -432
  665. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  666. data/ext/pg_query/include/libpq/auth.h +0 -37
  667. data/ext/pg_query/include/libpq/crypt.h +0 -47
  668. data/ext/pg_query/include/libpq/hba.h +0 -186
  669. data/ext/pg_query/include/libpq/libpq-be.h +0 -354
  670. data/ext/pg_query/include/libpq/libpq.h +0 -144
  671. data/ext/pg_query/include/libpq/pqcomm.h +0 -163
  672. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  673. data/ext/pg_query/include/libpq/pqsignal.h +0 -54
  674. data/ext/pg_query/include/libpq/sasl.h +0 -136
  675. data/ext/pg_query/include/libpq/scram.h +0 -37
  676. data/ext/pg_query/include/mb/pg_wchar.h +0 -772
  677. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  678. data/ext/pg_query/include/miscadmin.h +0 -507
  679. data/ext/pg_query/include/nodes/bitmapset.h +0 -126
  680. data/ext/pg_query/include/nodes/execnodes.h +0 -2768
  681. data/ext/pg_query/include/nodes/extensible.h +0 -164
  682. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  683. data/ext/pg_query/include/nodes/makefuncs.h +0 -121
  684. data/ext/pg_query/include/nodes/memnodes.h +0 -113
  685. data/ext/pg_query/include/nodes/miscnodes.h +0 -56
  686. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -222
  687. data/ext/pg_query/include/nodes/nodes.h +0 -446
  688. data/ext/pg_query/include/nodes/nodetags.h +0 -471
  689. data/ext/pg_query/include/nodes/params.h +0 -170
  690. data/ext/pg_query/include/nodes/parsenodes.h +0 -4050
  691. data/ext/pg_query/include/nodes/pathnodes.h +0 -3384
  692. data/ext/pg_query/include/nodes/pg_list.h +0 -635
  693. data/ext/pg_query/include/nodes/plannodes.h +0 -1592
  694. data/ext/pg_query/include/nodes/primnodes.h +0 -2041
  695. data/ext/pg_query/include/nodes/print.h +0 -34
  696. data/ext/pg_query/include/nodes/queryjumble.h +0 -86
  697. data/ext/pg_query/include/nodes/replnodes.h +0 -111
  698. data/ext/pg_query/include/nodes/supportnodes.h +0 -346
  699. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  700. data/ext/pg_query/include/nodes/value.h +0 -90
  701. data/ext/pg_query/include/optimizer/cost.h +0 -215
  702. data/ext/pg_query/include/optimizer/geqo.h +0 -90
  703. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  704. data/ext/pg_query/include/optimizer/optimizer.h +0 -202
  705. data/ext/pg_query/include/optimizer/paths.h +0 -266
  706. data/ext/pg_query/include/optimizer/planmain.h +0 -117
  707. data/ext/pg_query/include/parser/analyze.h +0 -64
  708. data/ext/pg_query/include/parser/kwlist.h +0 -498
  709. data/ext/pg_query/include/parser/parse_agg.h +0 -65
  710. data/ext/pg_query/include/parser/parse_coerce.h +0 -102
  711. data/ext/pg_query/include/parser/parse_expr.h +0 -25
  712. data/ext/pg_query/include/parser/parse_func.h +0 -74
  713. data/ext/pg_query/include/parser/parse_node.h +0 -357
  714. data/ext/pg_query/include/parser/parse_oper.h +0 -65
  715. data/ext/pg_query/include/parser/parse_relation.h +0 -129
  716. data/ext/pg_query/include/parser/parse_type.h +0 -61
  717. data/ext/pg_query/include/parser/parser.h +0 -68
  718. data/ext/pg_query/include/parser/parsetree.h +0 -61
  719. data/ext/pg_query/include/parser/scanner.h +0 -152
  720. data/ext/pg_query/include/parser/scansup.h +0 -27
  721. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  722. data/ext/pg_query/include/pg_config.h +0 -843
  723. data/ext/pg_query/include/pg_config_manual.h +0 -372
  724. data/ext/pg_query/include/pg_config_os.h +0 -8
  725. data/ext/pg_query/include/pg_getopt.h +0 -56
  726. data/ext/pg_query/include/pg_trace.h +0 -17
  727. data/ext/pg_query/include/pgstat.h +0 -778
  728. data/ext/pg_query/include/pgtime.h +0 -94
  729. data/ext/pg_query/include/pl_gram.h +0 -385
  730. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  731. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  732. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
  733. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
  734. data/ext/pg_query/include/plerrcodes.h +0 -998
  735. data/ext/pg_query/include/plpgsql.h +0 -1340
  736. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
  737. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  738. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  739. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  740. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  741. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  742. data/ext/pg_query/include/port/atomics.h +0 -519
  743. data/ext/pg_query/include/port/pg_bitutils.h +0 -339
  744. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  745. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  746. data/ext/pg_query/include/port/simd.h +0 -375
  747. data/ext/pg_query/include/port.h +0 -520
  748. data/ext/pg_query/include/portability/instr_time.h +0 -197
  749. data/ext/pg_query/include/postgres.h +0 -579
  750. data/ext/pg_query/include/postmaster/autovacuum.h +0 -80
  751. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  752. data/ext/pg_query/include/postmaster/bgworker.h +0 -162
  753. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  754. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  755. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  756. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  757. data/ext/pg_query/include/postmaster/pgarch.h +0 -36
  758. data/ext/pg_query/include/postmaster/postmaster.h +0 -81
  759. data/ext/pg_query/include/postmaster/startup.h +0 -41
  760. data/ext/pg_query/include/postmaster/syslogger.h +0 -103
  761. data/ext/pg_query/include/postmaster/walwriter.h +0 -23
  762. data/ext/pg_query/include/regex/regex.h +0 -189
  763. data/ext/pg_query/include/replication/logicallauncher.h +0 -34
  764. data/ext/pg_query/include/replication/logicalproto.h +0 -274
  765. data/ext/pg_query/include/replication/logicalworker.h +0 -32
  766. data/ext/pg_query/include/replication/origin.h +0 -73
  767. data/ext/pg_query/include/replication/reorderbuffer.h +0 -753
  768. data/ext/pg_query/include/replication/slot.h +0 -249
  769. data/ext/pg_query/include/replication/syncrep.h +0 -109
  770. data/ext/pg_query/include/replication/walreceiver.h +0 -478
  771. data/ext/pg_query/include/replication/walsender.h +0 -74
  772. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  773. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -35
  774. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -96
  775. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  776. data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +0 -5321
  777. data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +0 -3354
  778. data/ext/pg_query/include/storage/backendid.h +0 -37
  779. data/ext/pg_query/include/storage/block.h +0 -108
  780. data/ext/pg_query/include/storage/buf.h +0 -46
  781. data/ext/pg_query/include/storage/bufmgr.h +0 -393
  782. data/ext/pg_query/include/storage/bufpage.h +0 -510
  783. data/ext/pg_query/include/storage/condition_variable.h +0 -73
  784. data/ext/pg_query/include/storage/dsm.h +0 -61
  785. data/ext/pg_query/include/storage/dsm_impl.h +0 -79
  786. data/ext/pg_query/include/storage/fd.h +0 -202
  787. data/ext/pg_query/include/storage/fileset.h +0 -40
  788. data/ext/pg_query/include/storage/ipc.h +0 -84
  789. data/ext/pg_query/include/storage/item.h +0 -19
  790. data/ext/pg_query/include/storage/itemid.h +0 -184
  791. data/ext/pg_query/include/storage/itemptr.h +0 -245
  792. data/ext/pg_query/include/storage/large_object.h +0 -100
  793. data/ext/pg_query/include/storage/latch.h +0 -194
  794. data/ext/pg_query/include/storage/lmgr.h +0 -120
  795. data/ext/pg_query/include/storage/lock.h +0 -624
  796. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  797. data/ext/pg_query/include/storage/lwlock.h +0 -220
  798. data/ext/pg_query/include/storage/lwlocknames.h +0 -50
  799. data/ext/pg_query/include/storage/off.h +0 -57
  800. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  801. data/ext/pg_query/include/storage/pg_shmem.h +0 -92
  802. data/ext/pg_query/include/storage/pmsignal.h +0 -105
  803. data/ext/pg_query/include/storage/predicate.h +0 -87
  804. data/ext/pg_query/include/storage/proc.h +0 -466
  805. data/ext/pg_query/include/storage/procarray.h +0 -99
  806. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  807. data/ext/pg_query/include/storage/procsignal.h +0 -73
  808. data/ext/pg_query/include/storage/relfilelocator.h +0 -99
  809. data/ext/pg_query/include/storage/s_lock.h +0 -867
  810. data/ext/pg_query/include/storage/sharedfileset.h +0 -37
  811. data/ext/pg_query/include/storage/shm_mq.h +0 -86
  812. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  813. data/ext/pg_query/include/storage/shmem.h +0 -59
  814. data/ext/pg_query/include/storage/sinval.h +0 -153
  815. data/ext/pg_query/include/storage/sinvaladt.h +0 -45
  816. data/ext/pg_query/include/storage/smgr.h +0 -113
  817. data/ext/pg_query/include/storage/spin.h +0 -77
  818. data/ext/pg_query/include/storage/standby.h +0 -99
  819. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  820. data/ext/pg_query/include/storage/sync.h +0 -66
  821. data/ext/pg_query/include/tcop/cmdtag.h +0 -63
  822. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
  823. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  824. data/ext/pg_query/include/tcop/dest.h +0 -147
  825. data/ext/pg_query/include/tcop/fastpath.h +0 -20
  826. data/ext/pg_query/include/tcop/pquery.h +0 -51
  827. data/ext/pg_query/include/tcop/tcopprot.h +0 -94
  828. data/ext/pg_query/include/tcop/utility.h +0 -112
  829. data/ext/pg_query/include/tsearch/ts_cache.h +0 -96
  830. data/ext/pg_query/include/utils/acl.h +0 -278
  831. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  832. data/ext/pg_query/include/utils/array.h +0 -482
  833. data/ext/pg_query/include/utils/backend_progress.h +0 -45
  834. data/ext/pg_query/include/utils/backend_status.h +0 -342
  835. data/ext/pg_query/include/utils/builtins.h +0 -136
  836. data/ext/pg_query/include/utils/bytea.h +0 -28
  837. data/ext/pg_query/include/utils/catcache.h +0 -231
  838. data/ext/pg_query/include/utils/date.h +0 -118
  839. data/ext/pg_query/include/utils/datetime.h +0 -364
  840. data/ext/pg_query/include/utils/datum.h +0 -76
  841. data/ext/pg_query/include/utils/dsa.h +0 -127
  842. data/ext/pg_query/include/utils/elog.h +0 -545
  843. data/ext/pg_query/include/utils/errcodes.h +0 -354
  844. data/ext/pg_query/include/utils/expandeddatum.h +0 -170
  845. data/ext/pg_query/include/utils/expandedrecord.h +0 -241
  846. data/ext/pg_query/include/utils/float.h +0 -357
  847. data/ext/pg_query/include/utils/fmgroids.h +0 -3314
  848. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2871
  849. data/ext/pg_query/include/utils/fmgrtab.h +0 -49
  850. data/ext/pg_query/include/utils/guc.h +0 -442
  851. data/ext/pg_query/include/utils/guc_hooks.h +0 -163
  852. data/ext/pg_query/include/utils/guc_tables.h +0 -322
  853. data/ext/pg_query/include/utils/hsearch.h +0 -153
  854. data/ext/pg_query/include/utils/inval.h +0 -68
  855. data/ext/pg_query/include/utils/logtape.h +0 -77
  856. data/ext/pg_query/include/utils/lsyscache.h +0 -212
  857. data/ext/pg_query/include/utils/memdebug.h +0 -82
  858. data/ext/pg_query/include/utils/memutils.h +0 -186
  859. data/ext/pg_query/include/utils/memutils_internal.h +0 -136
  860. data/ext/pg_query/include/utils/memutils_memorychunk.h +0 -237
  861. data/ext/pg_query/include/utils/numeric.h +0 -105
  862. data/ext/pg_query/include/utils/palloc.h +0 -165
  863. data/ext/pg_query/include/utils/partcache.h +0 -103
  864. data/ext/pg_query/include/utils/pg_locale.h +0 -135
  865. data/ext/pg_query/include/utils/pgstat_internal.h +0 -814
  866. data/ext/pg_query/include/utils/pidfile.h +0 -56
  867. data/ext/pg_query/include/utils/plancache.h +0 -236
  868. data/ext/pg_query/include/utils/portal.h +0 -252
  869. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  870. data/ext/pg_query/include/utils/regproc.h +0 -39
  871. data/ext/pg_query/include/utils/rel.h +0 -712
  872. data/ext/pg_query/include/utils/relcache.h +0 -158
  873. data/ext/pg_query/include/utils/reltrigger.h +0 -81
  874. data/ext/pg_query/include/utils/resowner.h +0 -86
  875. data/ext/pg_query/include/utils/ruleutils.h +0 -52
  876. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  877. data/ext/pg_query/include/utils/snapmgr.h +0 -181
  878. data/ext/pg_query/include/utils/snapshot.h +0 -219
  879. data/ext/pg_query/include/utils/sortsupport.h +0 -391
  880. data/ext/pg_query/include/utils/syscache.h +0 -227
  881. data/ext/pg_query/include/utils/timeout.h +0 -95
  882. data/ext/pg_query/include/utils/timestamp.h +0 -147
  883. data/ext/pg_query/include/utils/tuplesort.h +0 -445
  884. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  885. data/ext/pg_query/include/utils/typcache.h +0 -209
  886. data/ext/pg_query/include/utils/varlena.h +0 -53
  887. data/ext/pg_query/include/utils/wait_event.h +0 -294
  888. data/ext/pg_query/include/utils/xml.h +0 -94
  889. data/ext/pg_query/include/varatt.h +0 -358
  890. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2220
  891. data/ext/pg_query/src_port_strnlen.c +0 -39
  892. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  893. /data/ext/pg_query/include/{commands → postgres/commands}/user.h +0 -0
  894. /data/ext/pg_query/include/{common → postgres/common}/unicode_nonspacing_table.h +0 -0
  895. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  896. /data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -0
  897. /data/ext/pg_query/include/{utils → postgres/utils}/probes.h +0 -0
  898. /data/ext/pg_query/include/{utils → postgres/utils}/ps_status.h +0 -0
@@ -0,0 +1,686 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * pg_list.h
4
+ * interface for PostgreSQL generic list package
5
+ *
6
+ * Once upon a time, parts of Postgres were written in Lisp and used real
7
+ * cons-cell lists for major data structures. When that code was rewritten
8
+ * in C, we initially had a faithful emulation of cons-cell lists, which
9
+ * unsurprisingly was a performance bottleneck. A couple of major rewrites
10
+ * later, these data structures are actually simple expansible arrays;
11
+ * but the "List" name and a lot of the notation survives.
12
+ *
13
+ * One important concession to the original implementation is that an empty
14
+ * list is always represented by a null pointer (preferentially written NIL).
15
+ * Non-empty lists have a header, which will not be relocated as long as the
16
+ * list remains non-empty, and an expansible data array.
17
+ *
18
+ * We support four types of lists:
19
+ *
20
+ * T_List: lists of pointers
21
+ * (in practice usually pointers to Nodes, but not always;
22
+ * declared as "void *" to minimize casting annoyances)
23
+ * T_IntList: lists of integers
24
+ * T_OidList: lists of Oids
25
+ * T_XidList: lists of TransactionIds
26
+ * (the XidList infrastructure is less complete than the other cases)
27
+ *
28
+ * (At the moment, ints, Oids, and XIDs are the same size, but they may not
29
+ * always be so; be careful to use the appropriate list type for your data.)
30
+ *
31
+ *
32
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
33
+ * Portions Copyright (c) 1994, Regents of the University of California
34
+ *
35
+ * src/include/nodes/pg_list.h
36
+ *
37
+ *-------------------------------------------------------------------------
38
+ */
39
+ #ifndef PG_LIST_H
40
+ #define PG_LIST_H
41
+
42
+ #include "nodes/nodes.h"
43
+
44
+
45
+ typedef union ListCell
46
+ {
47
+ void *ptr_value;
48
+ int int_value;
49
+ Oid oid_value;
50
+ TransactionId xid_value;
51
+ } ListCell;
52
+
53
+ typedef struct List
54
+ {
55
+ NodeTag type; /* T_List, T_IntList, T_OidList, or T_XidList */
56
+ int length; /* number of elements currently present */
57
+ int max_length; /* allocated length of elements[] */
58
+ ListCell *elements; /* re-allocatable array of cells */
59
+ /* We may allocate some cells along with the List header: */
60
+ ListCell initial_elements[FLEXIBLE_ARRAY_MEMBER];
61
+ /* If elements == initial_elements, it's not a separate allocation */
62
+ } List;
63
+
64
+ /*
65
+ * The *only* valid representation of an empty list is NIL; in other
66
+ * words, a non-NIL list is guaranteed to have length >= 1.
67
+ */
68
+ #define NIL ((List *) NULL)
69
+
70
+ /*
71
+ * State structs for various looping macros below.
72
+ */
73
+ typedef struct ForEachState
74
+ {
75
+ const List *l; /* list we're looping through */
76
+ int i; /* current element index */
77
+ } ForEachState;
78
+
79
+ typedef struct ForBothState
80
+ {
81
+ const List *l1; /* lists we're looping through */
82
+ const List *l2;
83
+ int i; /* common element index */
84
+ } ForBothState;
85
+
86
+ typedef struct ForBothCellState
87
+ {
88
+ const List *l1; /* lists we're looping through */
89
+ const List *l2;
90
+ int i1; /* current element indexes */
91
+ int i2;
92
+ } ForBothCellState;
93
+
94
+ typedef struct ForThreeState
95
+ {
96
+ const List *l1; /* lists we're looping through */
97
+ const List *l2;
98
+ const List *l3;
99
+ int i; /* common element index */
100
+ } ForThreeState;
101
+
102
+ typedef struct ForFourState
103
+ {
104
+ const List *l1; /* lists we're looping through */
105
+ const List *l2;
106
+ const List *l3;
107
+ const List *l4;
108
+ int i; /* common element index */
109
+ } ForFourState;
110
+
111
+ typedef struct ForFiveState
112
+ {
113
+ const List *l1; /* lists we're looping through */
114
+ const List *l2;
115
+ const List *l3;
116
+ const List *l4;
117
+ const List *l5;
118
+ int i; /* common element index */
119
+ } ForFiveState;
120
+
121
+ /*
122
+ * These routines are small enough, and used often enough, to justify being
123
+ * inline.
124
+ */
125
+
126
+ /* Fetch address of list's first cell; NULL if empty list */
127
+ static inline ListCell *
128
+ list_head(const List *l)
129
+ {
130
+ return l ? &l->elements[0] : NULL;
131
+ }
132
+
133
+ /* Fetch address of list's last cell; NULL if empty list */
134
+ static inline ListCell *
135
+ list_tail(const List *l)
136
+ {
137
+ return l ? &l->elements[l->length - 1] : NULL;
138
+ }
139
+
140
+ /* Fetch address of list's second cell, if it has one, else NULL */
141
+ static inline ListCell *
142
+ list_second_cell(const List *l)
143
+ {
144
+ if (l && l->length >= 2)
145
+ return &l->elements[1];
146
+ else
147
+ return NULL;
148
+ }
149
+
150
+ /* Fetch list's length */
151
+ static inline int
152
+ list_length(const List *l)
153
+ {
154
+ return l ? l->length : 0;
155
+ }
156
+
157
+ /*
158
+ * Macros to access the data values within List cells.
159
+ *
160
+ * Note that with the exception of the "xxx_node" macros, these are
161
+ * lvalues and can be assigned to.
162
+ *
163
+ * NB: There is an unfortunate legacy from a previous incarnation of
164
+ * the List API: the macro lfirst() was used to mean "the data in this
165
+ * cons cell". To avoid changing every usage of lfirst(), that meaning
166
+ * has been kept. As a result, lfirst() takes a ListCell and returns
167
+ * the data it contains; to get the data in the first cell of a
168
+ * List, use linitial(). Worse, lsecond() is more closely related to
169
+ * linitial() than lfirst(): given a List, lsecond() returns the data
170
+ * in the second list cell.
171
+ */
172
+ #define lfirst(lc) ((lc)->ptr_value)
173
+ #define lfirst_int(lc) ((lc)->int_value)
174
+ #define lfirst_oid(lc) ((lc)->oid_value)
175
+ #define lfirst_xid(lc) ((lc)->xid_value)
176
+ #define lfirst_node(type,lc) castNode(type, lfirst(lc))
177
+
178
+ #define linitial(l) lfirst(list_nth_cell(l, 0))
179
+ #define linitial_int(l) lfirst_int(list_nth_cell(l, 0))
180
+ #define linitial_oid(l) lfirst_oid(list_nth_cell(l, 0))
181
+ #define linitial_node(type,l) castNode(type, linitial(l))
182
+
183
+ #define lsecond(l) lfirst(list_nth_cell(l, 1))
184
+ #define lsecond_int(l) lfirst_int(list_nth_cell(l, 1))
185
+ #define lsecond_oid(l) lfirst_oid(list_nth_cell(l, 1))
186
+ #define lsecond_node(type,l) castNode(type, lsecond(l))
187
+
188
+ #define lthird(l) lfirst(list_nth_cell(l, 2))
189
+ #define lthird_int(l) lfirst_int(list_nth_cell(l, 2))
190
+ #define lthird_oid(l) lfirst_oid(list_nth_cell(l, 2))
191
+ #define lthird_node(type,l) castNode(type, lthird(l))
192
+
193
+ #define lfourth(l) lfirst(list_nth_cell(l, 3))
194
+ #define lfourth_int(l) lfirst_int(list_nth_cell(l, 3))
195
+ #define lfourth_oid(l) lfirst_oid(list_nth_cell(l, 3))
196
+ #define lfourth_node(type,l) castNode(type, lfourth(l))
197
+
198
+ #define llast(l) lfirst(list_last_cell(l))
199
+ #define llast_int(l) lfirst_int(list_last_cell(l))
200
+ #define llast_oid(l) lfirst_oid(list_last_cell(l))
201
+ #define llast_xid(l) lfirst_xid(list_last_cell(l))
202
+ #define llast_node(type,l) castNode(type, llast(l))
203
+
204
+ /*
205
+ * Convenience macros for building fixed-length lists
206
+ */
207
+ #define list_make_ptr_cell(v) ((ListCell) {.ptr_value = (v)})
208
+ #define list_make_int_cell(v) ((ListCell) {.int_value = (v)})
209
+ #define list_make_oid_cell(v) ((ListCell) {.oid_value = (v)})
210
+ #define list_make_xid_cell(v) ((ListCell) {.xid_value = (v)})
211
+
212
+ #define list_make1(x1) \
213
+ list_make1_impl(T_List, list_make_ptr_cell(x1))
214
+ #define list_make2(x1,x2) \
215
+ list_make2_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2))
216
+ #define list_make3(x1,x2,x3) \
217
+ list_make3_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \
218
+ list_make_ptr_cell(x3))
219
+ #define list_make4(x1,x2,x3,x4) \
220
+ list_make4_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \
221
+ list_make_ptr_cell(x3), list_make_ptr_cell(x4))
222
+ #define list_make5(x1,x2,x3,x4,x5) \
223
+ list_make5_impl(T_List, list_make_ptr_cell(x1), list_make_ptr_cell(x2), \
224
+ list_make_ptr_cell(x3), list_make_ptr_cell(x4), \
225
+ list_make_ptr_cell(x5))
226
+
227
+ #define list_make1_int(x1) \
228
+ list_make1_impl(T_IntList, list_make_int_cell(x1))
229
+ #define list_make2_int(x1,x2) \
230
+ list_make2_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2))
231
+ #define list_make3_int(x1,x2,x3) \
232
+ list_make3_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \
233
+ list_make_int_cell(x3))
234
+ #define list_make4_int(x1,x2,x3,x4) \
235
+ list_make4_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \
236
+ list_make_int_cell(x3), list_make_int_cell(x4))
237
+ #define list_make5_int(x1,x2,x3,x4,x5) \
238
+ list_make5_impl(T_IntList, list_make_int_cell(x1), list_make_int_cell(x2), \
239
+ list_make_int_cell(x3), list_make_int_cell(x4), \
240
+ list_make_int_cell(x5))
241
+
242
+ #define list_make1_oid(x1) \
243
+ list_make1_impl(T_OidList, list_make_oid_cell(x1))
244
+ #define list_make2_oid(x1,x2) \
245
+ list_make2_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2))
246
+ #define list_make3_oid(x1,x2,x3) \
247
+ list_make3_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \
248
+ list_make_oid_cell(x3))
249
+ #define list_make4_oid(x1,x2,x3,x4) \
250
+ list_make4_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \
251
+ list_make_oid_cell(x3), list_make_oid_cell(x4))
252
+ #define list_make5_oid(x1,x2,x3,x4,x5) \
253
+ list_make5_impl(T_OidList, list_make_oid_cell(x1), list_make_oid_cell(x2), \
254
+ list_make_oid_cell(x3), list_make_oid_cell(x4), \
255
+ list_make_oid_cell(x5))
256
+
257
+ #define list_make1_xid(x1) \
258
+ list_make1_impl(T_XidList, list_make_xid_cell(x1))
259
+ #define list_make2_xid(x1,x2) \
260
+ list_make2_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2))
261
+ #define list_make3_xid(x1,x2,x3) \
262
+ list_make3_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2), \
263
+ list_make_xid_cell(x3))
264
+ #define list_make4_xid(x1,x2,x3,x4) \
265
+ list_make4_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2), \
266
+ list_make_xid_cell(x3), list_make_xid_cell(x4))
267
+ #define list_make5_xid(x1,x2,x3,x4,x5) \
268
+ list_make5_impl(T_XidList, list_make_xid_cell(x1), list_make_xid_cell(x2), \
269
+ list_make_xid_cell(x3), list_make_xid_cell(x4), \
270
+ list_make_xid_cell(x5))
271
+
272
+ /*
273
+ * Locate the n'th cell (counting from 0) of the list.
274
+ * It is an assertion failure if there is no such cell.
275
+ */
276
+ static inline ListCell *
277
+ list_nth_cell(const List *list, int n)
278
+ {
279
+ Assert(list != NIL);
280
+ Assert(n >= 0 && n < list->length);
281
+ return &list->elements[n];
282
+ }
283
+
284
+ /*
285
+ * Return the last cell in a non-NIL List.
286
+ */
287
+ static inline ListCell *
288
+ list_last_cell(const List *list)
289
+ {
290
+ Assert(list != NIL);
291
+ return &list->elements[list->length - 1];
292
+ }
293
+
294
+ /*
295
+ * Return the pointer value contained in the n'th element of the
296
+ * specified list. (List elements begin at 0.)
297
+ */
298
+ static inline void *
299
+ list_nth(const List *list, int n)
300
+ {
301
+ Assert(IsA(list, List));
302
+ return lfirst(list_nth_cell(list, n));
303
+ }
304
+
305
+ /*
306
+ * Return the integer value contained in the n'th element of the
307
+ * specified list.
308
+ */
309
+ static inline int
310
+ list_nth_int(const List *list, int n)
311
+ {
312
+ Assert(IsA(list, IntList));
313
+ return lfirst_int(list_nth_cell(list, n));
314
+ }
315
+
316
+ /*
317
+ * Return the OID value contained in the n'th element of the specified
318
+ * list.
319
+ */
320
+ static inline Oid
321
+ list_nth_oid(const List *list, int n)
322
+ {
323
+ Assert(IsA(list, OidList));
324
+ return lfirst_oid(list_nth_cell(list, n));
325
+ }
326
+
327
+ #define list_nth_node(type,list,n) castNode(type, list_nth(list, n))
328
+
329
+ /*
330
+ * Get the given ListCell's index (from 0) in the given List.
331
+ */
332
+ static inline int
333
+ list_cell_number(const List *l, const ListCell *c)
334
+ {
335
+ Assert(c >= &l->elements[0] && c < &l->elements[l->length]);
336
+ return c - l->elements;
337
+ }
338
+
339
+ /*
340
+ * Get the address of the next cell after "c" within list "l", or NULL if none.
341
+ */
342
+ static inline ListCell *
343
+ lnext(const List *l, const ListCell *c)
344
+ {
345
+ Assert(c >= &l->elements[0] && c < &l->elements[l->length]);
346
+ c++;
347
+ if (c < &l->elements[l->length])
348
+ return (ListCell *) c;
349
+ else
350
+ return NULL;
351
+ }
352
+
353
+ /*
354
+ * foreach -
355
+ * a convenience macro for looping through a list
356
+ *
357
+ * "cell" must be the name of a "ListCell *" variable; it's made to point
358
+ * to each List element in turn. "cell" will be NULL after normal exit from
359
+ * the loop, but an early "break" will leave it pointing at the current
360
+ * List element.
361
+ *
362
+ * Beware of changing the List object while the loop is iterating.
363
+ * The current semantics are that we examine successive list indices in
364
+ * each iteration, so that insertion or deletion of list elements could
365
+ * cause elements to be re-visited or skipped unexpectedly. Previous
366
+ * implementations of foreach() behaved differently. However, it's safe
367
+ * to append elements to the List (or in general, insert them after the
368
+ * current element); such new elements are guaranteed to be visited.
369
+ * Also, the current element of the List can be deleted, if you use
370
+ * foreach_delete_current() to do so. BUT: either of these actions will
371
+ * invalidate the "cell" pointer for the remainder of the current iteration.
372
+ */
373
+ #define foreach(cell, lst) \
374
+ for (ForEachState cell##__state = {(lst), 0}; \
375
+ (cell##__state.l != NIL && \
376
+ cell##__state.i < cell##__state.l->length) ? \
377
+ (cell = &cell##__state.l->elements[cell##__state.i], true) : \
378
+ (cell = NULL, false); \
379
+ cell##__state.i++)
380
+
381
+ /*
382
+ * foreach_delete_current -
383
+ * delete the current list element from the List associated with a
384
+ * surrounding foreach() or foreach_*() loop, returning the new List
385
+ * pointer; pass the name of the iterator variable.
386
+ *
387
+ * This is similar to list_delete_cell(), but it also adjusts the loop's state
388
+ * so that no list elements will be missed. Do not delete elements from an
389
+ * active foreach or foreach_* loop's list in any other way!
390
+ */
391
+ #define foreach_delete_current(lst, var_or_cell) \
392
+ ((List *) (var_or_cell##__state.l = list_delete_nth_cell(lst, var_or_cell##__state.i--)))
393
+
394
+ /*
395
+ * foreach_current_index -
396
+ * get the zero-based list index of a surrounding foreach() or foreach_*()
397
+ * loop's current element; pass the name of the iterator variable.
398
+ *
399
+ * Beware of using this after foreach_delete_current(); the value will be
400
+ * out of sync for the rest of the current loop iteration. Anyway, since
401
+ * you just deleted the current element, the value is pretty meaningless.
402
+ */
403
+ #define foreach_current_index(var_or_cell) (var_or_cell##__state.i)
404
+
405
+ /*
406
+ * for_each_from -
407
+ * Like foreach(), but start from the N'th (zero-based) list element,
408
+ * not necessarily the first one.
409
+ *
410
+ * It's okay for N to exceed the list length, but not for it to be negative.
411
+ *
412
+ * The caveats for foreach() apply equally here.
413
+ */
414
+ #define for_each_from(cell, lst, N) \
415
+ for (ForEachState cell##__state = for_each_from_setup(lst, N); \
416
+ (cell##__state.l != NIL && \
417
+ cell##__state.i < cell##__state.l->length) ? \
418
+ (cell = &cell##__state.l->elements[cell##__state.i], true) : \
419
+ (cell = NULL, false); \
420
+ cell##__state.i++)
421
+
422
+ static inline ForEachState
423
+ for_each_from_setup(const List *lst, int N)
424
+ {
425
+ ForEachState r = {lst, N};
426
+
427
+ Assert(N >= 0);
428
+ return r;
429
+ }
430
+
431
+ /*
432
+ * for_each_cell -
433
+ * a convenience macro which loops through a list starting from a
434
+ * specified cell
435
+ *
436
+ * The caveats for foreach() apply equally here.
437
+ */
438
+ #define for_each_cell(cell, lst, initcell) \
439
+ for (ForEachState cell##__state = for_each_cell_setup(lst, initcell); \
440
+ (cell##__state.l != NIL && \
441
+ cell##__state.i < cell##__state.l->length) ? \
442
+ (cell = &cell##__state.l->elements[cell##__state.i], true) : \
443
+ (cell = NULL, false); \
444
+ cell##__state.i++)
445
+
446
+ static inline ForEachState
447
+ for_each_cell_setup(const List *lst, const ListCell *initcell)
448
+ {
449
+ ForEachState r = {lst,
450
+ initcell ? list_cell_number(lst, initcell) : list_length(lst)};
451
+
452
+ return r;
453
+ }
454
+
455
+ /*
456
+ * Convenience macros that loop through a list without needing a separate
457
+ * "ListCell *" variable. Instead, the macros declare a locally-scoped loop
458
+ * variable with the provided name and the appropriate type.
459
+ *
460
+ * Since the variable is scoped to the loop, it's not possible to detect an
461
+ * early break by checking its value after the loop completes, as is common
462
+ * practice. If you need to do this, you can either use foreach() instead or
463
+ * manually track early breaks with a separate variable declared outside of the
464
+ * loop.
465
+ *
466
+ * Note that the caveats described in the comment above the foreach() macro
467
+ * also apply to these convenience macros.
468
+ */
469
+ #define foreach_ptr(type, var, lst) foreach_internal(type, *, var, lst, lfirst)
470
+ #define foreach_int(var, lst) foreach_internal(int, , var, lst, lfirst_int)
471
+ #define foreach_oid(var, lst) foreach_internal(Oid, , var, lst, lfirst_oid)
472
+ #define foreach_xid(var, lst) foreach_internal(TransactionId, , var, lst, lfirst_xid)
473
+
474
+ /*
475
+ * The internal implementation of the above macros. Do not use directly.
476
+ *
477
+ * This macro actually generates two loops in order to declare two variables of
478
+ * different types. The outer loop only iterates once, so we expect optimizing
479
+ * compilers will unroll it, thereby optimizing it away.
480
+ */
481
+ #define foreach_internal(type, pointer, var, lst, func) \
482
+ for (type pointer var = 0, pointer var##__outerloop = (type pointer) 1; \
483
+ var##__outerloop; \
484
+ var##__outerloop = 0) \
485
+ for (ForEachState var##__state = {(lst), 0}; \
486
+ (var##__state.l != NIL && \
487
+ var##__state.i < var##__state.l->length && \
488
+ (var = func(&var##__state.l->elements[var##__state.i]), true)); \
489
+ var##__state.i++)
490
+
491
+ /*
492
+ * foreach_node -
493
+ * The same as foreach_ptr, but asserts that the element is of the specified
494
+ * node type.
495
+ */
496
+ #define foreach_node(type, var, lst) \
497
+ for (type * var = 0, *var##__outerloop = (type *) 1; \
498
+ var##__outerloop; \
499
+ var##__outerloop = 0) \
500
+ for (ForEachState var##__state = {(lst), 0}; \
501
+ (var##__state.l != NIL && \
502
+ var##__state.i < var##__state.l->length && \
503
+ (var = lfirst_node(type, &var##__state.l->elements[var##__state.i]), true)); \
504
+ var##__state.i++)
505
+
506
+ /*
507
+ * forboth -
508
+ * a convenience macro for advancing through two linked lists
509
+ * simultaneously. This macro loops through both lists at the same
510
+ * time, stopping when either list runs out of elements. Depending
511
+ * on the requirements of the call site, it may also be wise to
512
+ * assert that the lengths of the two lists are equal. (But, if they
513
+ * are not, some callers rely on the ending cell values being separately
514
+ * NULL or non-NULL as defined here; don't try to optimize that.)
515
+ *
516
+ * The caveats for foreach() apply equally here.
517
+ */
518
+ #define forboth(cell1, list1, cell2, list2) \
519
+ for (ForBothState cell1##__state = {(list1), (list2), 0}; \
520
+ multi_for_advance_cell(cell1, cell1##__state, l1, i), \
521
+ multi_for_advance_cell(cell2, cell1##__state, l2, i), \
522
+ (cell1 != NULL && cell2 != NULL); \
523
+ cell1##__state.i++)
524
+
525
+ #define multi_for_advance_cell(cell, state, l, i) \
526
+ (cell = (state.l != NIL && state.i < state.l->length) ? \
527
+ &state.l->elements[state.i] : NULL)
528
+
529
+ /*
530
+ * for_both_cell -
531
+ * a convenience macro which loops through two lists starting from the
532
+ * specified cells of each. This macro loops through both lists at the same
533
+ * time, stopping when either list runs out of elements. Depending on the
534
+ * requirements of the call site, it may also be wise to assert that the
535
+ * lengths of the two lists are equal, and initcell1 and initcell2 are at
536
+ * the same position in the respective lists.
537
+ *
538
+ * The caveats for foreach() apply equally here.
539
+ */
540
+ #define for_both_cell(cell1, list1, initcell1, cell2, list2, initcell2) \
541
+ for (ForBothCellState cell1##__state = \
542
+ for_both_cell_setup(list1, initcell1, list2, initcell2); \
543
+ multi_for_advance_cell(cell1, cell1##__state, l1, i1), \
544
+ multi_for_advance_cell(cell2, cell1##__state, l2, i2), \
545
+ (cell1 != NULL && cell2 != NULL); \
546
+ cell1##__state.i1++, cell1##__state.i2++)
547
+
548
+ static inline ForBothCellState
549
+ for_both_cell_setup(const List *list1, const ListCell *initcell1,
550
+ const List *list2, const ListCell *initcell2)
551
+ {
552
+ ForBothCellState r = {list1, list2,
553
+ initcell1 ? list_cell_number(list1, initcell1) : list_length(list1),
554
+ initcell2 ? list_cell_number(list2, initcell2) : list_length(list2)};
555
+
556
+ return r;
557
+ }
558
+
559
+ /*
560
+ * forthree -
561
+ * the same for three lists
562
+ */
563
+ #define forthree(cell1, list1, cell2, list2, cell3, list3) \
564
+ for (ForThreeState cell1##__state = {(list1), (list2), (list3), 0}; \
565
+ multi_for_advance_cell(cell1, cell1##__state, l1, i), \
566
+ multi_for_advance_cell(cell2, cell1##__state, l2, i), \
567
+ multi_for_advance_cell(cell3, cell1##__state, l3, i), \
568
+ (cell1 != NULL && cell2 != NULL && cell3 != NULL); \
569
+ cell1##__state.i++)
570
+
571
+ /*
572
+ * forfour -
573
+ * the same for four lists
574
+ */
575
+ #define forfour(cell1, list1, cell2, list2, cell3, list3, cell4, list4) \
576
+ for (ForFourState cell1##__state = {(list1), (list2), (list3), (list4), 0}; \
577
+ multi_for_advance_cell(cell1, cell1##__state, l1, i), \
578
+ multi_for_advance_cell(cell2, cell1##__state, l2, i), \
579
+ multi_for_advance_cell(cell3, cell1##__state, l3, i), \
580
+ multi_for_advance_cell(cell4, cell1##__state, l4, i), \
581
+ (cell1 != NULL && cell2 != NULL && cell3 != NULL && cell4 != NULL); \
582
+ cell1##__state.i++)
583
+
584
+ /*
585
+ * forfive -
586
+ * the same for five lists
587
+ */
588
+ #define forfive(cell1, list1, cell2, list2, cell3, list3, cell4, list4, cell5, list5) \
589
+ for (ForFiveState cell1##__state = {(list1), (list2), (list3), (list4), (list5), 0}; \
590
+ multi_for_advance_cell(cell1, cell1##__state, l1, i), \
591
+ multi_for_advance_cell(cell2, cell1##__state, l2, i), \
592
+ multi_for_advance_cell(cell3, cell1##__state, l3, i), \
593
+ multi_for_advance_cell(cell4, cell1##__state, l4, i), \
594
+ multi_for_advance_cell(cell5, cell1##__state, l5, i), \
595
+ (cell1 != NULL && cell2 != NULL && cell3 != NULL && \
596
+ cell4 != NULL && cell5 != NULL); \
597
+ cell1##__state.i++)
598
+
599
+ /* Functions in src/backend/nodes/list.c */
600
+
601
+ extern List *list_make1_impl(NodeTag t, ListCell datum1);
602
+ extern List *list_make2_impl(NodeTag t, ListCell datum1, ListCell datum2);
603
+ extern List *list_make3_impl(NodeTag t, ListCell datum1, ListCell datum2,
604
+ ListCell datum3);
605
+ extern List *list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2,
606
+ ListCell datum3, ListCell datum4);
607
+ extern List *list_make5_impl(NodeTag t, ListCell datum1, ListCell datum2,
608
+ ListCell datum3, ListCell datum4,
609
+ ListCell datum5);
610
+
611
+ extern pg_nodiscard List *lappend(List *list, void *datum);
612
+ extern pg_nodiscard List *lappend_int(List *list, int datum);
613
+ extern pg_nodiscard List *lappend_oid(List *list, Oid datum);
614
+ extern pg_nodiscard List *lappend_xid(List *list, TransactionId datum);
615
+
616
+ extern pg_nodiscard List *list_insert_nth(List *list, int pos, void *datum);
617
+ extern pg_nodiscard List *list_insert_nth_int(List *list, int pos, int datum);
618
+ extern pg_nodiscard List *list_insert_nth_oid(List *list, int pos, Oid datum);
619
+
620
+ extern pg_nodiscard List *lcons(void *datum, List *list);
621
+ extern pg_nodiscard List *lcons_int(int datum, List *list);
622
+ extern pg_nodiscard List *lcons_oid(Oid datum, List *list);
623
+
624
+ extern pg_nodiscard List *list_concat(List *list1, const List *list2);
625
+ extern pg_nodiscard List *list_concat_copy(const List *list1, const List *list2);
626
+
627
+ extern pg_nodiscard List *list_truncate(List *list, int new_size);
628
+
629
+ extern bool list_member(const List *list, const void *datum);
630
+ extern bool list_member_ptr(const List *list, const void *datum);
631
+ extern bool list_member_int(const List *list, int datum);
632
+ extern bool list_member_oid(const List *list, Oid datum);
633
+ extern bool list_member_xid(const List *list, TransactionId datum);
634
+
635
+ extern pg_nodiscard List *list_delete(List *list, void *datum);
636
+ extern pg_nodiscard List *list_delete_ptr(List *list, void *datum);
637
+ extern pg_nodiscard List *list_delete_int(List *list, int datum);
638
+ extern pg_nodiscard List *list_delete_oid(List *list, Oid datum);
639
+ extern pg_nodiscard List *list_delete_first(List *list);
640
+ extern pg_nodiscard List *list_delete_last(List *list);
641
+ extern pg_nodiscard List *list_delete_first_n(List *list, int n);
642
+ extern pg_nodiscard List *list_delete_nth_cell(List *list, int n);
643
+ extern pg_nodiscard List *list_delete_cell(List *list, ListCell *cell);
644
+
645
+ extern List *list_union(const List *list1, const List *list2);
646
+ extern List *list_union_ptr(const List *list1, const List *list2);
647
+ extern List *list_union_int(const List *list1, const List *list2);
648
+ extern List *list_union_oid(const List *list1, const List *list2);
649
+
650
+ extern List *list_intersection(const List *list1, const List *list2);
651
+ extern List *list_intersection_int(const List *list1, const List *list2);
652
+
653
+ /* currently, there's no need for list_intersection_ptr etc */
654
+
655
+ extern List *list_difference(const List *list1, const List *list2);
656
+ extern List *list_difference_ptr(const List *list1, const List *list2);
657
+ extern List *list_difference_int(const List *list1, const List *list2);
658
+ extern List *list_difference_oid(const List *list1, const List *list2);
659
+
660
+ extern pg_nodiscard List *list_append_unique(List *list, void *datum);
661
+ extern pg_nodiscard List *list_append_unique_ptr(List *list, void *datum);
662
+ extern pg_nodiscard List *list_append_unique_int(List *list, int datum);
663
+ extern pg_nodiscard List *list_append_unique_oid(List *list, Oid datum);
664
+
665
+ extern pg_nodiscard List *list_concat_unique(List *list1, const List *list2);
666
+ extern pg_nodiscard List *list_concat_unique_ptr(List *list1, const List *list2);
667
+ extern pg_nodiscard List *list_concat_unique_int(List *list1, const List *list2);
668
+ extern pg_nodiscard List *list_concat_unique_oid(List *list1, const List *list2);
669
+
670
+ extern void list_deduplicate_oid(List *list);
671
+
672
+ extern void list_free(List *list);
673
+ extern void list_free_deep(List *list);
674
+
675
+ extern pg_nodiscard List *list_copy(const List *oldlist);
676
+ extern pg_nodiscard List *list_copy_head(const List *oldlist, int len);
677
+ extern pg_nodiscard List *list_copy_tail(const List *oldlist, int nskip);
678
+ extern pg_nodiscard List *list_copy_deep(const List *oldlist);
679
+
680
+ typedef int (*list_sort_comparator) (const ListCell *a, const ListCell *b);
681
+ extern void list_sort(List *list, list_sort_comparator cmp);
682
+
683
+ extern int list_int_cmp(const ListCell *p1, const ListCell *p2);
684
+ extern int list_oid_cmp(const ListCell *p1, const ListCell *p2);
685
+
686
+ #endif /* PG_LIST_H */