gitlab-pg_query 1.3.1 → 2.0.4

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 (480) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +217 -99
  3. data/README.md +92 -69
  4. data/Rakefile +85 -5
  5. data/ext/pg_query/extconf.rb +3 -40
  6. data/ext/pg_query/guc-file.c +0 -0
  7. data/ext/pg_query/include/access/amapi.h +246 -0
  8. data/ext/pg_query/include/access/attmap.h +52 -0
  9. data/ext/pg_query/include/access/attnum.h +64 -0
  10. data/ext/pg_query/include/access/clog.h +61 -0
  11. data/ext/pg_query/include/access/commit_ts.h +77 -0
  12. data/ext/pg_query/include/access/detoast.h +92 -0
  13. data/ext/pg_query/include/access/genam.h +228 -0
  14. data/ext/pg_query/include/access/gin.h +78 -0
  15. data/ext/pg_query/include/access/htup.h +89 -0
  16. data/ext/pg_query/include/access/htup_details.h +819 -0
  17. data/ext/pg_query/include/access/itup.h +161 -0
  18. data/ext/pg_query/include/access/parallel.h +82 -0
  19. data/ext/pg_query/include/access/printtup.h +35 -0
  20. data/ext/pg_query/include/access/relation.h +28 -0
  21. data/ext/pg_query/include/access/relscan.h +176 -0
  22. data/ext/pg_query/include/access/rmgr.h +35 -0
  23. data/ext/pg_query/include/access/rmgrlist.h +49 -0
  24. data/ext/pg_query/include/access/sdir.h +58 -0
  25. data/ext/pg_query/include/access/skey.h +151 -0
  26. data/ext/pg_query/include/access/stratnum.h +83 -0
  27. data/ext/pg_query/include/access/sysattr.h +29 -0
  28. data/ext/pg_query/include/access/table.h +27 -0
  29. data/ext/pg_query/include/access/tableam.h +1825 -0
  30. data/ext/pg_query/include/access/transam.h +265 -0
  31. data/ext/pg_query/include/access/tupconvert.h +51 -0
  32. data/ext/pg_query/include/access/tupdesc.h +154 -0
  33. data/ext/pg_query/include/access/tupmacs.h +247 -0
  34. data/ext/pg_query/include/access/twophase.h +61 -0
  35. data/ext/pg_query/include/access/xact.h +463 -0
  36. data/ext/pg_query/include/access/xlog.h +398 -0
  37. data/ext/pg_query/include/access/xlog_internal.h +330 -0
  38. data/ext/pg_query/include/access/xlogdefs.h +109 -0
  39. data/ext/pg_query/include/access/xloginsert.h +64 -0
  40. data/ext/pg_query/include/access/xlogreader.h +327 -0
  41. data/ext/pg_query/include/access/xlogrecord.h +227 -0
  42. data/ext/pg_query/include/bootstrap/bootstrap.h +62 -0
  43. data/ext/pg_query/include/c.h +1322 -0
  44. data/ext/pg_query/include/catalog/catalog.h +42 -0
  45. data/ext/pg_query/include/catalog/catversion.h +58 -0
  46. data/ext/pg_query/include/catalog/dependency.h +275 -0
  47. data/ext/pg_query/include/catalog/genbki.h +64 -0
  48. data/ext/pg_query/include/catalog/index.h +199 -0
  49. data/ext/pg_query/include/catalog/indexing.h +366 -0
  50. data/ext/pg_query/include/catalog/namespace.h +188 -0
  51. data/ext/pg_query/include/catalog/objectaccess.h +197 -0
  52. data/ext/pg_query/include/catalog/objectaddress.h +84 -0
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +176 -0
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +77 -0
  55. data/ext/pg_query/include/catalog/pg_am.h +60 -0
  56. data/ext/pg_query/include/catalog/pg_am_d.h +45 -0
  57. data/ext/pg_query/include/catalog/pg_attribute.h +204 -0
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +59 -0
  59. data/ext/pg_query/include/catalog/pg_authid.h +58 -0
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +49 -0
  61. data/ext/pg_query/include/catalog/pg_class.h +200 -0
  62. data/ext/pg_query/include/catalog/pg_class_d.h +103 -0
  63. data/ext/pg_query/include/catalog/pg_collation.h +73 -0
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +45 -0
  65. data/ext/pg_query/include/catalog/pg_constraint.h +247 -0
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +67 -0
  67. data/ext/pg_query/include/catalog/pg_control.h +250 -0
  68. data/ext/pg_query/include/catalog/pg_conversion.h +72 -0
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +35 -0
  70. data/ext/pg_query/include/catalog/pg_depend.h +73 -0
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +34 -0
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +51 -0
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +34 -0
  74. data/ext/pg_query/include/catalog/pg_index.h +80 -0
  75. data/ext/pg_query/include/catalog/pg_index_d.h +56 -0
  76. data/ext/pg_query/include/catalog/pg_language.h +67 -0
  77. data/ext/pg_query/include/catalog/pg_language_d.h +39 -0
  78. data/ext/pg_query/include/catalog/pg_namespace.h +59 -0
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +34 -0
  80. data/ext/pg_query/include/catalog/pg_opclass.h +85 -0
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +49 -0
  82. data/ext/pg_query/include/catalog/pg_operator.h +102 -0
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +106 -0
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +60 -0
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +47 -0
  86. data/ext/pg_query/include/catalog/pg_partitioned_table.h +63 -0
  87. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +35 -0
  88. data/ext/pg_query/include/catalog/pg_proc.h +211 -0
  89. data/ext/pg_query/include/catalog/pg_proc_d.h +99 -0
  90. data/ext/pg_query/include/catalog/pg_publication.h +115 -0
  91. data/ext/pg_query/include/catalog/pg_publication_d.h +36 -0
  92. data/ext/pg_query/include/catalog/pg_replication_origin.h +57 -0
  93. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +29 -0
  94. data/ext/pg_query/include/catalog/pg_statistic.h +275 -0
  95. data/ext/pg_query/include/catalog/pg_statistic_d.h +194 -0
  96. data/ext/pg_query/include/catalog/pg_statistic_ext.h +74 -0
  97. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +40 -0
  98. data/ext/pg_query/include/catalog/pg_transform.h +45 -0
  99. data/ext/pg_query/include/catalog/pg_transform_d.h +32 -0
  100. data/ext/pg_query/include/catalog/pg_trigger.h +137 -0
  101. data/ext/pg_query/include/catalog/pg_trigger_d.h +106 -0
  102. data/ext/pg_query/include/catalog/pg_ts_config.h +50 -0
  103. data/ext/pg_query/include/catalog/pg_ts_config_d.h +32 -0
  104. data/ext/pg_query/include/catalog/pg_ts_dict.h +54 -0
  105. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +33 -0
  106. data/ext/pg_query/include/catalog/pg_ts_parser.h +57 -0
  107. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +35 -0
  108. data/ext/pg_query/include/catalog/pg_ts_template.h +48 -0
  109. data/ext/pg_query/include/catalog/pg_ts_template_d.h +32 -0
  110. data/ext/pg_query/include/catalog/pg_type.h +372 -0
  111. data/ext/pg_query/include/catalog/pg_type_d.h +285 -0
  112. data/ext/pg_query/include/catalog/storage.h +48 -0
  113. data/ext/pg_query/include/commands/async.h +54 -0
  114. data/ext/pg_query/include/commands/dbcommands.h +35 -0
  115. data/ext/pg_query/include/commands/defrem.h +173 -0
  116. data/ext/pg_query/include/commands/event_trigger.h +88 -0
  117. data/ext/pg_query/include/commands/explain.h +127 -0
  118. data/ext/pg_query/include/commands/prepare.h +61 -0
  119. data/ext/pg_query/include/commands/tablespace.h +67 -0
  120. data/ext/pg_query/include/commands/trigger.h +277 -0
  121. data/ext/pg_query/include/commands/user.h +37 -0
  122. data/ext/pg_query/include/commands/vacuum.h +293 -0
  123. data/ext/pg_query/include/commands/variable.h +38 -0
  124. data/ext/pg_query/include/common/file_perm.h +56 -0
  125. data/ext/pg_query/include/common/hashfn.h +104 -0
  126. data/ext/pg_query/include/common/ip.h +37 -0
  127. data/ext/pg_query/include/common/keywords.h +33 -0
  128. data/ext/pg_query/include/common/kwlookup.h +44 -0
  129. data/ext/pg_query/include/common/relpath.h +90 -0
  130. data/ext/pg_query/include/common/string.h +19 -0
  131. data/ext/pg_query/include/common/unicode_combining_table.h +196 -0
  132. data/ext/pg_query/include/datatype/timestamp.h +197 -0
  133. data/ext/pg_query/include/executor/execdesc.h +70 -0
  134. data/ext/pg_query/include/executor/executor.h +614 -0
  135. data/ext/pg_query/include/executor/functions.h +41 -0
  136. data/ext/pg_query/include/executor/instrument.h +101 -0
  137. data/ext/pg_query/include/executor/spi.h +175 -0
  138. data/ext/pg_query/include/executor/tablefunc.h +67 -0
  139. data/ext/pg_query/include/executor/tuptable.h +487 -0
  140. data/ext/pg_query/include/fmgr.h +775 -0
  141. data/ext/pg_query/include/funcapi.h +348 -0
  142. data/ext/pg_query/include/getaddrinfo.h +162 -0
  143. data/ext/pg_query/include/jit/jit.h +105 -0
  144. data/ext/pg_query/include/kwlist_d.h +1072 -0
  145. data/ext/pg_query/include/lib/ilist.h +727 -0
  146. data/ext/pg_query/include/lib/pairingheap.h +102 -0
  147. data/ext/pg_query/include/lib/simplehash.h +1059 -0
  148. data/ext/pg_query/include/lib/stringinfo.h +161 -0
  149. data/ext/pg_query/include/libpq/auth.h +29 -0
  150. data/ext/pg_query/include/libpq/crypt.h +46 -0
  151. data/ext/pg_query/include/libpq/hba.h +140 -0
  152. data/ext/pg_query/include/libpq/libpq-be.h +326 -0
  153. data/ext/pg_query/include/libpq/libpq.h +133 -0
  154. data/ext/pg_query/include/libpq/pqcomm.h +208 -0
  155. data/ext/pg_query/include/libpq/pqformat.h +210 -0
  156. data/ext/pg_query/include/libpq/pqsignal.h +42 -0
  157. data/ext/pg_query/include/mb/pg_wchar.h +672 -0
  158. data/ext/pg_query/include/mb/stringinfo_mb.h +24 -0
  159. data/ext/pg_query/include/miscadmin.h +476 -0
  160. data/ext/pg_query/include/nodes/bitmapset.h +122 -0
  161. data/ext/pg_query/include/nodes/execnodes.h +2520 -0
  162. data/ext/pg_query/include/nodes/extensible.h +160 -0
  163. data/ext/pg_query/include/nodes/lockoptions.h +61 -0
  164. data/ext/pg_query/include/nodes/makefuncs.h +108 -0
  165. data/ext/pg_query/include/nodes/memnodes.h +108 -0
  166. data/ext/pg_query/include/nodes/nodeFuncs.h +162 -0
  167. data/ext/pg_query/include/nodes/nodes.h +842 -0
  168. data/ext/pg_query/include/nodes/params.h +170 -0
  169. data/ext/pg_query/include/nodes/parsenodes.h +3579 -0
  170. data/ext/pg_query/include/nodes/pathnodes.h +2556 -0
  171. data/ext/pg_query/include/nodes/pg_list.h +605 -0
  172. data/ext/pg_query/include/nodes/plannodes.h +1251 -0
  173. data/ext/pg_query/include/nodes/primnodes.h +1541 -0
  174. data/ext/pg_query/include/nodes/print.h +34 -0
  175. data/ext/pg_query/include/nodes/tidbitmap.h +75 -0
  176. data/ext/pg_query/include/nodes/value.h +61 -0
  177. data/ext/pg_query/include/optimizer/cost.h +206 -0
  178. data/ext/pg_query/include/optimizer/geqo.h +88 -0
  179. data/ext/pg_query/include/optimizer/geqo_gene.h +45 -0
  180. data/ext/pg_query/include/optimizer/optimizer.h +199 -0
  181. data/ext/pg_query/include/optimizer/paths.h +249 -0
  182. data/ext/pg_query/include/optimizer/planmain.h +119 -0
  183. data/ext/pg_query/include/parser/analyze.h +49 -0
  184. data/ext/pg_query/include/parser/gram.h +1067 -0
  185. data/ext/pg_query/include/parser/gramparse.h +75 -0
  186. data/ext/pg_query/include/parser/kwlist.h +477 -0
  187. data/ext/pg_query/include/parser/parse_agg.h +68 -0
  188. data/ext/pg_query/include/parser/parse_clause.h +54 -0
  189. data/ext/pg_query/include/parser/parse_coerce.h +97 -0
  190. data/ext/pg_query/include/parser/parse_collate.h +27 -0
  191. data/ext/pg_query/include/parser/parse_expr.h +26 -0
  192. data/ext/pg_query/include/parser/parse_func.h +73 -0
  193. data/ext/pg_query/include/parser/parse_node.h +327 -0
  194. data/ext/pg_query/include/parser/parse_oper.h +67 -0
  195. data/ext/pg_query/include/parser/parse_relation.h +123 -0
  196. data/ext/pg_query/include/parser/parse_target.h +46 -0
  197. data/ext/pg_query/include/parser/parse_type.h +60 -0
  198. data/ext/pg_query/include/parser/parser.h +41 -0
  199. data/ext/pg_query/include/parser/parsetree.h +61 -0
  200. data/ext/pg_query/include/parser/scanner.h +152 -0
  201. data/ext/pg_query/include/parser/scansup.h +30 -0
  202. data/ext/pg_query/include/partitioning/partdefs.h +26 -0
  203. data/ext/pg_query/include/pg_config.h +989 -0
  204. data/ext/pg_query/include/pg_config_ext.h +8 -0
  205. data/ext/pg_query/include/pg_config_manual.h +350 -0
  206. data/ext/pg_query/include/pg_config_os.h +8 -0
  207. data/ext/pg_query/include/pg_getopt.h +56 -0
  208. data/ext/pg_query/include/pg_query.h +121 -0
  209. data/ext/pg_query/include/pg_query_enum_defs.c +2454 -0
  210. data/ext/pg_query/include/pg_query_fingerprint_conds.c +875 -0
  211. data/ext/pg_query/include/pg_query_fingerprint_defs.c +12413 -0
  212. data/ext/pg_query/include/pg_query_json_helper.c +61 -0
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +686 -0
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +2437 -0
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +222 -0
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +2878 -0
  217. data/ext/pg_query/include/pg_trace.h +17 -0
  218. data/ext/pg_query/include/pgstat.h +1487 -0
  219. data/ext/pg_query/include/pgtime.h +84 -0
  220. data/ext/pg_query/include/pl_gram.h +385 -0
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +52 -0
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +114 -0
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +112 -0
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +246 -0
  225. data/ext/pg_query/include/plerrcodes.h +990 -0
  226. data/ext/pg_query/include/plpgsql.h +1347 -0
  227. data/ext/pg_query/include/port.h +524 -0
  228. data/ext/pg_query/include/port/atomics.h +524 -0
  229. data/ext/pg_query/include/port/atomics/arch-arm.h +26 -0
  230. data/ext/pg_query/include/port/atomics/arch-ppc.h +254 -0
  231. data/ext/pg_query/include/port/atomics/arch-x86.h +252 -0
  232. data/ext/pg_query/include/port/atomics/fallback.h +170 -0
  233. data/ext/pg_query/include/port/atomics/generic-gcc.h +286 -0
  234. data/ext/pg_query/include/port/atomics/generic.h +401 -0
  235. data/ext/pg_query/include/port/pg_bitutils.h +226 -0
  236. data/ext/pg_query/include/port/pg_bswap.h +161 -0
  237. data/ext/pg_query/include/port/pg_crc32c.h +101 -0
  238. data/ext/pg_query/include/portability/instr_time.h +256 -0
  239. data/ext/pg_query/include/postgres.h +764 -0
  240. data/ext/pg_query/include/postgres_ext.h +74 -0
  241. data/ext/pg_query/include/postmaster/autovacuum.h +83 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +161 -0
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +64 -0
  244. data/ext/pg_query/include/postmaster/bgwriter.h +45 -0
  245. data/ext/pg_query/include/postmaster/fork_process.h +17 -0
  246. data/ext/pg_query/include/postmaster/interrupt.h +32 -0
  247. data/ext/pg_query/include/postmaster/pgarch.h +39 -0
  248. data/ext/pg_query/include/postmaster/postmaster.h +77 -0
  249. data/ext/pg_query/include/postmaster/syslogger.h +98 -0
  250. data/ext/pg_query/include/postmaster/walwriter.h +21 -0
  251. data/ext/pg_query/include/protobuf-c.h +1106 -0
  252. data/ext/pg_query/include/protobuf-c/protobuf-c.h +1106 -0
  253. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +10846 -0
  254. data/ext/pg_query/include/protobuf/pg_query.pb.h +124718 -0
  255. data/ext/pg_query/include/regex/regex.h +184 -0
  256. data/ext/pg_query/include/replication/logicallauncher.h +31 -0
  257. data/ext/pg_query/include/replication/logicalproto.h +110 -0
  258. data/ext/pg_query/include/replication/logicalworker.h +19 -0
  259. data/ext/pg_query/include/replication/origin.h +73 -0
  260. data/ext/pg_query/include/replication/reorderbuffer.h +467 -0
  261. data/ext/pg_query/include/replication/slot.h +219 -0
  262. data/ext/pg_query/include/replication/syncrep.h +115 -0
  263. data/ext/pg_query/include/replication/walreceiver.h +340 -0
  264. data/ext/pg_query/include/replication/walsender.h +74 -0
  265. data/ext/pg_query/include/rewrite/prs2lock.h +46 -0
  266. data/ext/pg_query/include/rewrite/rewriteHandler.h +40 -0
  267. data/ext/pg_query/include/rewrite/rewriteManip.h +87 -0
  268. data/ext/pg_query/include/rewrite/rewriteSupport.h +26 -0
  269. data/ext/pg_query/include/storage/backendid.h +37 -0
  270. data/ext/pg_query/include/storage/block.h +121 -0
  271. data/ext/pg_query/include/storage/buf.h +46 -0
  272. data/ext/pg_query/include/storage/bufmgr.h +292 -0
  273. data/ext/pg_query/include/storage/bufpage.h +459 -0
  274. data/ext/pg_query/include/storage/condition_variable.h +62 -0
  275. data/ext/pg_query/include/storage/dsm.h +61 -0
  276. data/ext/pg_query/include/storage/dsm_impl.h +75 -0
  277. data/ext/pg_query/include/storage/fd.h +168 -0
  278. data/ext/pg_query/include/storage/ipc.h +81 -0
  279. data/ext/pg_query/include/storage/item.h +19 -0
  280. data/ext/pg_query/include/storage/itemid.h +184 -0
  281. data/ext/pg_query/include/storage/itemptr.h +206 -0
  282. data/ext/pg_query/include/storage/large_object.h +100 -0
  283. data/ext/pg_query/include/storage/latch.h +190 -0
  284. data/ext/pg_query/include/storage/lmgr.h +114 -0
  285. data/ext/pg_query/include/storage/lock.h +612 -0
  286. data/ext/pg_query/include/storage/lockdefs.h +59 -0
  287. data/ext/pg_query/include/storage/lwlock.h +232 -0
  288. data/ext/pg_query/include/storage/lwlocknames.h +51 -0
  289. data/ext/pg_query/include/storage/off.h +57 -0
  290. data/ext/pg_query/include/storage/pg_sema.h +61 -0
  291. data/ext/pg_query/include/storage/pg_shmem.h +90 -0
  292. data/ext/pg_query/include/storage/pmsignal.h +94 -0
  293. data/ext/pg_query/include/storage/predicate.h +87 -0
  294. data/ext/pg_query/include/storage/proc.h +333 -0
  295. data/ext/pg_query/include/storage/proclist_types.h +51 -0
  296. data/ext/pg_query/include/storage/procsignal.h +75 -0
  297. data/ext/pg_query/include/storage/relfilenode.h +99 -0
  298. data/ext/pg_query/include/storage/s_lock.h +1047 -0
  299. data/ext/pg_query/include/storage/sharedfileset.h +45 -0
  300. data/ext/pg_query/include/storage/shm_mq.h +85 -0
  301. data/ext/pg_query/include/storage/shm_toc.h +58 -0
  302. data/ext/pg_query/include/storage/shmem.h +81 -0
  303. data/ext/pg_query/include/storage/sinval.h +153 -0
  304. data/ext/pg_query/include/storage/sinvaladt.h +43 -0
  305. data/ext/pg_query/include/storage/smgr.h +109 -0
  306. data/ext/pg_query/include/storage/spin.h +77 -0
  307. data/ext/pg_query/include/storage/standby.h +91 -0
  308. data/ext/pg_query/include/storage/standbydefs.h +74 -0
  309. data/ext/pg_query/include/storage/sync.h +62 -0
  310. data/ext/pg_query/include/tcop/cmdtag.h +58 -0
  311. data/ext/pg_query/include/tcop/cmdtaglist.h +217 -0
  312. data/ext/pg_query/include/tcop/deparse_utility.h +108 -0
  313. data/ext/pg_query/include/tcop/dest.h +149 -0
  314. data/ext/pg_query/include/tcop/fastpath.h +21 -0
  315. data/ext/pg_query/include/tcop/pquery.h +45 -0
  316. data/ext/pg_query/include/tcop/tcopprot.h +89 -0
  317. data/ext/pg_query/include/tcop/utility.h +108 -0
  318. data/ext/pg_query/include/tsearch/ts_cache.h +98 -0
  319. data/ext/pg_query/include/utils/acl.h +312 -0
  320. data/ext/pg_query/include/utils/aclchk_internal.h +45 -0
  321. data/ext/pg_query/include/utils/array.h +458 -0
  322. data/ext/pg_query/include/utils/builtins.h +127 -0
  323. data/ext/pg_query/include/utils/bytea.h +27 -0
  324. data/ext/pg_query/include/utils/catcache.h +231 -0
  325. data/ext/pg_query/include/utils/date.h +90 -0
  326. data/ext/pg_query/include/utils/datetime.h +343 -0
  327. data/ext/pg_query/include/utils/datum.h +68 -0
  328. data/ext/pg_query/include/utils/dsa.h +123 -0
  329. data/ext/pg_query/include/utils/dynahash.h +19 -0
  330. data/ext/pg_query/include/utils/elog.h +439 -0
  331. data/ext/pg_query/include/utils/errcodes.h +352 -0
  332. data/ext/pg_query/include/utils/expandeddatum.h +159 -0
  333. data/ext/pg_query/include/utils/expandedrecord.h +231 -0
  334. data/ext/pg_query/include/utils/float.h +356 -0
  335. data/ext/pg_query/include/utils/fmgroids.h +2657 -0
  336. data/ext/pg_query/include/utils/fmgrprotos.h +2646 -0
  337. data/ext/pg_query/include/utils/fmgrtab.h +48 -0
  338. data/ext/pg_query/include/utils/guc.h +443 -0
  339. data/ext/pg_query/include/utils/guc_tables.h +272 -0
  340. data/ext/pg_query/include/utils/hsearch.h +149 -0
  341. data/ext/pg_query/include/utils/inval.h +64 -0
  342. data/ext/pg_query/include/utils/lsyscache.h +197 -0
  343. data/ext/pg_query/include/utils/memdebug.h +82 -0
  344. data/ext/pg_query/include/utils/memutils.h +225 -0
  345. data/ext/pg_query/include/utils/numeric.h +76 -0
  346. data/ext/pg_query/include/utils/palloc.h +136 -0
  347. data/ext/pg_query/include/utils/partcache.h +102 -0
  348. data/ext/pg_query/include/utils/pg_locale.h +119 -0
  349. data/ext/pg_query/include/utils/pg_lsn.h +29 -0
  350. data/ext/pg_query/include/utils/pidfile.h +56 -0
  351. data/ext/pg_query/include/utils/plancache.h +235 -0
  352. data/ext/pg_query/include/utils/portal.h +241 -0
  353. data/ext/pg_query/include/utils/probes.h +114 -0
  354. data/ext/pg_query/include/utils/ps_status.h +25 -0
  355. data/ext/pg_query/include/utils/queryenvironment.h +74 -0
  356. data/ext/pg_query/include/utils/regproc.h +28 -0
  357. data/ext/pg_query/include/utils/rel.h +644 -0
  358. data/ext/pg_query/include/utils/relcache.h +151 -0
  359. data/ext/pg_query/include/utils/reltrigger.h +81 -0
  360. data/ext/pg_query/include/utils/resowner.h +86 -0
  361. data/ext/pg_query/include/utils/rls.h +50 -0
  362. data/ext/pg_query/include/utils/ruleutils.h +44 -0
  363. data/ext/pg_query/include/utils/sharedtuplestore.h +61 -0
  364. data/ext/pg_query/include/utils/snapmgr.h +158 -0
  365. data/ext/pg_query/include/utils/snapshot.h +206 -0
  366. data/ext/pg_query/include/utils/sortsupport.h +276 -0
  367. data/ext/pg_query/include/utils/syscache.h +219 -0
  368. data/ext/pg_query/include/utils/timeout.h +88 -0
  369. data/ext/pg_query/include/utils/timestamp.h +116 -0
  370. data/ext/pg_query/include/utils/tuplesort.h +277 -0
  371. data/ext/pg_query/include/utils/tuplestore.h +91 -0
  372. data/ext/pg_query/include/utils/typcache.h +202 -0
  373. data/ext/pg_query/include/utils/tzparser.h +39 -0
  374. data/ext/pg_query/include/utils/varlena.h +39 -0
  375. data/ext/pg_query/include/utils/xml.h +84 -0
  376. data/ext/pg_query/include/xxhash.h +5445 -0
  377. data/ext/pg_query/include/xxhash/xxhash.h +5445 -0
  378. data/ext/pg_query/pg_query.c +104 -0
  379. data/ext/pg_query/pg_query.pb-c.c +37628 -0
  380. data/ext/pg_query/pg_query_deparse.c +9959 -0
  381. data/ext/pg_query/pg_query_fingerprint.c +295 -0
  382. data/ext/pg_query/pg_query_fingerprint.h +8 -0
  383. data/ext/pg_query/pg_query_internal.h +24 -0
  384. data/ext/pg_query/pg_query_json_plpgsql.c +738 -0
  385. data/ext/pg_query/pg_query_json_plpgsql.h +9 -0
  386. data/ext/pg_query/pg_query_normalize.c +439 -0
  387. data/ext/pg_query/pg_query_outfuncs.h +10 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +297 -0
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +237 -0
  390. data/ext/pg_query/pg_query_parse.c +148 -0
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +460 -0
  392. data/ext/pg_query/pg_query_readfuncs.h +11 -0
  393. data/ext/pg_query/pg_query_readfuncs_protobuf.c +142 -0
  394. data/ext/pg_query/pg_query_ruby.c +108 -12
  395. data/ext/pg_query/pg_query_scan.c +173 -0
  396. data/ext/pg_query/pg_query_split.c +221 -0
  397. data/ext/pg_query/protobuf-c.c +3660 -0
  398. data/ext/pg_query/src_backend_catalog_namespace.c +1051 -0
  399. data/ext/pg_query/src_backend_catalog_pg_proc.c +142 -0
  400. data/ext/pg_query/src_backend_commands_define.c +117 -0
  401. data/ext/pg_query/src_backend_libpq_pqcomm.c +651 -0
  402. data/ext/pg_query/src_backend_nodes_bitmapset.c +513 -0
  403. data/ext/pg_query/src_backend_nodes_copyfuncs.c +6013 -0
  404. data/ext/pg_query/src_backend_nodes_equalfuncs.c +4003 -0
  405. data/ext/pg_query/src_backend_nodes_extensible.c +99 -0
  406. data/ext/pg_query/src_backend_nodes_list.c +922 -0
  407. data/ext/pg_query/src_backend_nodes_makefuncs.c +417 -0
  408. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +1363 -0
  409. data/ext/pg_query/src_backend_nodes_value.c +84 -0
  410. data/ext/pg_query/src_backend_parser_gram.c +47456 -0
  411. data/ext/pg_query/src_backend_parser_parse_expr.c +313 -0
  412. data/ext/pg_query/src_backend_parser_parser.c +497 -0
  413. data/ext/pg_query/src_backend_parser_scan.c +7091 -0
  414. data/ext/pg_query/src_backend_parser_scansup.c +160 -0
  415. data/ext/pg_query/src_backend_postmaster_postmaster.c +2230 -0
  416. data/ext/pg_query/src_backend_storage_ipc_ipc.c +192 -0
  417. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +370 -0
  418. data/ext/pg_query/src_backend_tcop_postgres.c +776 -0
  419. data/ext/pg_query/src_backend_utils_adt_datum.c +326 -0
  420. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +98 -0
  421. data/ext/pg_query/src_backend_utils_adt_format_type.c +136 -0
  422. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +1683 -0
  423. data/ext/pg_query/src_backend_utils_error_assert.c +74 -0
  424. data/ext/pg_query/src_backend_utils_error_elog.c +1748 -0
  425. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +570 -0
  426. data/ext/pg_query/src_backend_utils_hash_dynahash.c +1086 -0
  427. data/ext/pg_query/src_backend_utils_init_globals.c +168 -0
  428. data/ext/pg_query/src_backend_utils_mb_mbutils.c +839 -0
  429. data/ext/pg_query/src_backend_utils_misc_guc.c +1831 -0
  430. data/ext/pg_query/src_backend_utils_mmgr_aset.c +1560 -0
  431. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +1006 -0
  432. data/ext/pg_query/src_common_encnames.c +158 -0
  433. data/ext/pg_query/src_common_keywords.c +39 -0
  434. data/ext/pg_query/src_common_kwlist_d.h +1081 -0
  435. data/ext/pg_query/src_common_kwlookup.c +91 -0
  436. data/ext/pg_query/src_common_psprintf.c +158 -0
  437. data/ext/pg_query/src_common_string.c +86 -0
  438. data/ext/pg_query/src_common_stringinfo.c +336 -0
  439. data/ext/pg_query/src_common_wchar.c +1651 -0
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1133 -0
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +877 -0
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +6533 -0
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +107 -0
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +123 -0
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +671 -0
  446. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +255 -0
  447. data/ext/pg_query/src_port_erand48.c +127 -0
  448. data/ext/pg_query/src_port_pg_bitutils.c +246 -0
  449. data/ext/pg_query/src_port_pgsleep.c +69 -0
  450. data/ext/pg_query/src_port_pgstrcasecmp.c +83 -0
  451. data/ext/pg_query/src_port_qsort.c +240 -0
  452. data/ext/pg_query/src_port_random.c +31 -0
  453. data/ext/pg_query/src_port_snprintf.c +1449 -0
  454. data/ext/pg_query/src_port_strerror.c +324 -0
  455. data/ext/pg_query/src_port_strnlen.c +39 -0
  456. data/ext/pg_query/xxhash.c +43 -0
  457. data/lib/pg_query.rb +7 -4
  458. data/lib/pg_query/constants.rb +21 -0
  459. data/lib/pg_query/deparse.rb +15 -1581
  460. data/lib/pg_query/filter_columns.rb +88 -85
  461. data/lib/pg_query/fingerprint.rb +122 -87
  462. data/lib/pg_query/json_field_names.rb +1402 -0
  463. data/lib/pg_query/node.rb +31 -0
  464. data/lib/pg_query/param_refs.rb +42 -37
  465. data/lib/pg_query/parse.rb +220 -203
  466. data/lib/pg_query/parse_error.rb +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +3211 -0
  468. data/lib/pg_query/scan.rb +23 -0
  469. data/lib/pg_query/treewalker.rb +24 -40
  470. data/lib/pg_query/truncate.rb +71 -42
  471. data/lib/pg_query/version.rb +2 -2
  472. metadata +472 -11
  473. data/ext/pg_query/pg_query_ruby.h +0 -10
  474. data/lib/pg_query/deep_dup.rb +0 -16
  475. data/lib/pg_query/deparse/alter_table.rb +0 -42
  476. data/lib/pg_query/deparse/interval.rb +0 -105
  477. data/lib/pg_query/deparse/keywords.rb +0 -159
  478. data/lib/pg_query/deparse/rename.rb +0 -41
  479. data/lib/pg_query/legacy_parsetree.rb +0 -109
  480. data/lib/pg_query/node_types.rb +0 -296
@@ -0,0 +1,842 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * nodes.h
4
+ * Definitions for tagged nodes.
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/nodes/nodes.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef NODES_H
15
+ #define NODES_H
16
+
17
+ /*
18
+ * The first field of every node is NodeTag. Each node created (with makeNode)
19
+ * will have one of the following tags as the value of its first field.
20
+ *
21
+ * Note that inserting or deleting node types changes the numbers of other
22
+ * node types later in the list. This is no problem during development, since
23
+ * the node numbers are never stored on disk. But don't do it in a released
24
+ * branch, because that would represent an ABI break for extensions.
25
+ */
26
+ typedef enum NodeTag
27
+ {
28
+ T_Invalid = 0,
29
+
30
+ /*
31
+ * TAGS FOR EXECUTOR NODES (execnodes.h)
32
+ */
33
+ T_IndexInfo,
34
+ T_ExprContext,
35
+ T_ProjectionInfo,
36
+ T_JunkFilter,
37
+ T_OnConflictSetState,
38
+ T_ResultRelInfo,
39
+ T_EState,
40
+ T_TupleTableSlot,
41
+
42
+ /*
43
+ * TAGS FOR PLAN NODES (plannodes.h)
44
+ */
45
+ T_Plan,
46
+ T_Result,
47
+ T_ProjectSet,
48
+ T_ModifyTable,
49
+ T_Append,
50
+ T_MergeAppend,
51
+ T_RecursiveUnion,
52
+ T_BitmapAnd,
53
+ T_BitmapOr,
54
+ T_Scan,
55
+ T_SeqScan,
56
+ T_SampleScan,
57
+ T_IndexScan,
58
+ T_IndexOnlyScan,
59
+ T_BitmapIndexScan,
60
+ T_BitmapHeapScan,
61
+ T_TidScan,
62
+ T_SubqueryScan,
63
+ T_FunctionScan,
64
+ T_ValuesScan,
65
+ T_TableFuncScan,
66
+ T_CteScan,
67
+ T_NamedTuplestoreScan,
68
+ T_WorkTableScan,
69
+ T_ForeignScan,
70
+ T_CustomScan,
71
+ T_Join,
72
+ T_NestLoop,
73
+ T_MergeJoin,
74
+ T_HashJoin,
75
+ T_Material,
76
+ T_Sort,
77
+ T_IncrementalSort,
78
+ T_Group,
79
+ T_Agg,
80
+ T_WindowAgg,
81
+ T_Unique,
82
+ T_Gather,
83
+ T_GatherMerge,
84
+ T_Hash,
85
+ T_SetOp,
86
+ T_LockRows,
87
+ T_Limit,
88
+ /* these aren't subclasses of Plan: */
89
+ T_NestLoopParam,
90
+ T_PlanRowMark,
91
+ T_PartitionPruneInfo,
92
+ T_PartitionedRelPruneInfo,
93
+ T_PartitionPruneStepOp,
94
+ T_PartitionPruneStepCombine,
95
+ T_PlanInvalItem,
96
+
97
+ /*
98
+ * TAGS FOR PLAN STATE NODES (execnodes.h)
99
+ *
100
+ * These should correspond one-to-one with Plan node types.
101
+ */
102
+ T_PlanState,
103
+ T_ResultState,
104
+ T_ProjectSetState,
105
+ T_ModifyTableState,
106
+ T_AppendState,
107
+ T_MergeAppendState,
108
+ T_RecursiveUnionState,
109
+ T_BitmapAndState,
110
+ T_BitmapOrState,
111
+ T_ScanState,
112
+ T_SeqScanState,
113
+ T_SampleScanState,
114
+ T_IndexScanState,
115
+ T_IndexOnlyScanState,
116
+ T_BitmapIndexScanState,
117
+ T_BitmapHeapScanState,
118
+ T_TidScanState,
119
+ T_SubqueryScanState,
120
+ T_FunctionScanState,
121
+ T_TableFuncScanState,
122
+ T_ValuesScanState,
123
+ T_CteScanState,
124
+ T_NamedTuplestoreScanState,
125
+ T_WorkTableScanState,
126
+ T_ForeignScanState,
127
+ T_CustomScanState,
128
+ T_JoinState,
129
+ T_NestLoopState,
130
+ T_MergeJoinState,
131
+ T_HashJoinState,
132
+ T_MaterialState,
133
+ T_SortState,
134
+ T_IncrementalSortState,
135
+ T_GroupState,
136
+ T_AggState,
137
+ T_WindowAggState,
138
+ T_UniqueState,
139
+ T_GatherState,
140
+ T_GatherMergeState,
141
+ T_HashState,
142
+ T_SetOpState,
143
+ T_LockRowsState,
144
+ T_LimitState,
145
+
146
+ /*
147
+ * TAGS FOR PRIMITIVE NODES (primnodes.h)
148
+ */
149
+ T_Alias,
150
+ T_RangeVar,
151
+ T_TableFunc,
152
+ T_Expr,
153
+ T_Var,
154
+ T_Const,
155
+ T_Param,
156
+ T_Aggref,
157
+ T_GroupingFunc,
158
+ T_WindowFunc,
159
+ T_SubscriptingRef,
160
+ T_FuncExpr,
161
+ T_NamedArgExpr,
162
+ T_OpExpr,
163
+ T_DistinctExpr,
164
+ T_NullIfExpr,
165
+ T_ScalarArrayOpExpr,
166
+ T_BoolExpr,
167
+ T_SubLink,
168
+ T_SubPlan,
169
+ T_AlternativeSubPlan,
170
+ T_FieldSelect,
171
+ T_FieldStore,
172
+ T_RelabelType,
173
+ T_CoerceViaIO,
174
+ T_ArrayCoerceExpr,
175
+ T_ConvertRowtypeExpr,
176
+ T_CollateExpr,
177
+ T_CaseExpr,
178
+ T_CaseWhen,
179
+ T_CaseTestExpr,
180
+ T_ArrayExpr,
181
+ T_RowExpr,
182
+ T_RowCompareExpr,
183
+ T_CoalesceExpr,
184
+ T_MinMaxExpr,
185
+ T_SQLValueFunction,
186
+ T_XmlExpr,
187
+ T_NullTest,
188
+ T_BooleanTest,
189
+ T_CoerceToDomain,
190
+ T_CoerceToDomainValue,
191
+ T_SetToDefault,
192
+ T_CurrentOfExpr,
193
+ T_NextValueExpr,
194
+ T_InferenceElem,
195
+ T_TargetEntry,
196
+ T_RangeTblRef,
197
+ T_JoinExpr,
198
+ T_FromExpr,
199
+ T_OnConflictExpr,
200
+ T_IntoClause,
201
+
202
+ /*
203
+ * TAGS FOR EXPRESSION STATE NODES (execnodes.h)
204
+ *
205
+ * ExprState represents the evaluation state for a whole expression tree.
206
+ * Most Expr-based plan nodes do not have a corresponding expression state
207
+ * node, they're fully handled within execExpr* - but sometimes the state
208
+ * needs to be shared with other parts of the executor, as for example
209
+ * with AggrefExprState, which nodeAgg.c has to modify.
210
+ */
211
+ T_ExprState,
212
+ T_AggrefExprState,
213
+ T_WindowFuncExprState,
214
+ T_SetExprState,
215
+ T_SubPlanState,
216
+ T_AlternativeSubPlanState,
217
+ T_DomainConstraintState,
218
+
219
+ /*
220
+ * TAGS FOR PLANNER NODES (pathnodes.h)
221
+ */
222
+ T_PlannerInfo,
223
+ T_PlannerGlobal,
224
+ T_RelOptInfo,
225
+ T_IndexOptInfo,
226
+ T_ForeignKeyOptInfo,
227
+ T_ParamPathInfo,
228
+ T_Path,
229
+ T_IndexPath,
230
+ T_BitmapHeapPath,
231
+ T_BitmapAndPath,
232
+ T_BitmapOrPath,
233
+ T_TidPath,
234
+ T_SubqueryScanPath,
235
+ T_ForeignPath,
236
+ T_CustomPath,
237
+ T_NestPath,
238
+ T_MergePath,
239
+ T_HashPath,
240
+ T_AppendPath,
241
+ T_MergeAppendPath,
242
+ T_GroupResultPath,
243
+ T_MaterialPath,
244
+ T_UniquePath,
245
+ T_GatherPath,
246
+ T_GatherMergePath,
247
+ T_ProjectionPath,
248
+ T_ProjectSetPath,
249
+ T_SortPath,
250
+ T_IncrementalSortPath,
251
+ T_GroupPath,
252
+ T_UpperUniquePath,
253
+ T_AggPath,
254
+ T_GroupingSetsPath,
255
+ T_MinMaxAggPath,
256
+ T_WindowAggPath,
257
+ T_SetOpPath,
258
+ T_RecursiveUnionPath,
259
+ T_LockRowsPath,
260
+ T_ModifyTablePath,
261
+ T_LimitPath,
262
+ /* these aren't subclasses of Path: */
263
+ T_EquivalenceClass,
264
+ T_EquivalenceMember,
265
+ T_PathKey,
266
+ T_PathTarget,
267
+ T_RestrictInfo,
268
+ T_IndexClause,
269
+ T_PlaceHolderVar,
270
+ T_SpecialJoinInfo,
271
+ T_AppendRelInfo,
272
+ T_PlaceHolderInfo,
273
+ T_MinMaxAggInfo,
274
+ T_PlannerParamItem,
275
+ T_RollupData,
276
+ T_GroupingSetData,
277
+ T_StatisticExtInfo,
278
+
279
+ /*
280
+ * TAGS FOR MEMORY NODES (memnodes.h)
281
+ */
282
+ T_MemoryContext,
283
+ T_AllocSetContext,
284
+ T_SlabContext,
285
+ T_GenerationContext,
286
+
287
+ /*
288
+ * TAGS FOR VALUE NODES (value.h)
289
+ */
290
+ T_Value,
291
+ T_Integer,
292
+ T_Float,
293
+ T_String,
294
+ T_BitString,
295
+ T_Null,
296
+
297
+ /*
298
+ * TAGS FOR LIST NODES (pg_list.h)
299
+ */
300
+ T_List,
301
+ T_IntList,
302
+ T_OidList,
303
+
304
+ /*
305
+ * TAGS FOR EXTENSIBLE NODES (extensible.h)
306
+ */
307
+ T_ExtensibleNode,
308
+
309
+ /*
310
+ * TAGS FOR STATEMENT NODES (mostly in parsenodes.h)
311
+ */
312
+ T_RawStmt,
313
+ T_Query,
314
+ T_PlannedStmt,
315
+ T_InsertStmt,
316
+ T_DeleteStmt,
317
+ T_UpdateStmt,
318
+ T_SelectStmt,
319
+ T_AlterTableStmt,
320
+ T_AlterTableCmd,
321
+ T_AlterDomainStmt,
322
+ T_SetOperationStmt,
323
+ T_GrantStmt,
324
+ T_GrantRoleStmt,
325
+ T_AlterDefaultPrivilegesStmt,
326
+ T_ClosePortalStmt,
327
+ T_ClusterStmt,
328
+ T_CopyStmt,
329
+ T_CreateStmt,
330
+ T_DefineStmt,
331
+ T_DropStmt,
332
+ T_TruncateStmt,
333
+ T_CommentStmt,
334
+ T_FetchStmt,
335
+ T_IndexStmt,
336
+ T_CreateFunctionStmt,
337
+ T_AlterFunctionStmt,
338
+ T_DoStmt,
339
+ T_RenameStmt,
340
+ T_RuleStmt,
341
+ T_NotifyStmt,
342
+ T_ListenStmt,
343
+ T_UnlistenStmt,
344
+ T_TransactionStmt,
345
+ T_ViewStmt,
346
+ T_LoadStmt,
347
+ T_CreateDomainStmt,
348
+ T_CreatedbStmt,
349
+ T_DropdbStmt,
350
+ T_VacuumStmt,
351
+ T_ExplainStmt,
352
+ T_CreateTableAsStmt,
353
+ T_CreateSeqStmt,
354
+ T_AlterSeqStmt,
355
+ T_VariableSetStmt,
356
+ T_VariableShowStmt,
357
+ T_DiscardStmt,
358
+ T_CreateTrigStmt,
359
+ T_CreatePLangStmt,
360
+ T_CreateRoleStmt,
361
+ T_AlterRoleStmt,
362
+ T_DropRoleStmt,
363
+ T_LockStmt,
364
+ T_ConstraintsSetStmt,
365
+ T_ReindexStmt,
366
+ T_CheckPointStmt,
367
+ T_CreateSchemaStmt,
368
+ T_AlterDatabaseStmt,
369
+ T_AlterDatabaseSetStmt,
370
+ T_AlterRoleSetStmt,
371
+ T_CreateConversionStmt,
372
+ T_CreateCastStmt,
373
+ T_CreateOpClassStmt,
374
+ T_CreateOpFamilyStmt,
375
+ T_AlterOpFamilyStmt,
376
+ T_PrepareStmt,
377
+ T_ExecuteStmt,
378
+ T_DeallocateStmt,
379
+ T_DeclareCursorStmt,
380
+ T_CreateTableSpaceStmt,
381
+ T_DropTableSpaceStmt,
382
+ T_AlterObjectDependsStmt,
383
+ T_AlterObjectSchemaStmt,
384
+ T_AlterOwnerStmt,
385
+ T_AlterOperatorStmt,
386
+ T_AlterTypeStmt,
387
+ T_DropOwnedStmt,
388
+ T_ReassignOwnedStmt,
389
+ T_CompositeTypeStmt,
390
+ T_CreateEnumStmt,
391
+ T_CreateRangeStmt,
392
+ T_AlterEnumStmt,
393
+ T_AlterTSDictionaryStmt,
394
+ T_AlterTSConfigurationStmt,
395
+ T_CreateFdwStmt,
396
+ T_AlterFdwStmt,
397
+ T_CreateForeignServerStmt,
398
+ T_AlterForeignServerStmt,
399
+ T_CreateUserMappingStmt,
400
+ T_AlterUserMappingStmt,
401
+ T_DropUserMappingStmt,
402
+ T_AlterTableSpaceOptionsStmt,
403
+ T_AlterTableMoveAllStmt,
404
+ T_SecLabelStmt,
405
+ T_CreateForeignTableStmt,
406
+ T_ImportForeignSchemaStmt,
407
+ T_CreateExtensionStmt,
408
+ T_AlterExtensionStmt,
409
+ T_AlterExtensionContentsStmt,
410
+ T_CreateEventTrigStmt,
411
+ T_AlterEventTrigStmt,
412
+ T_RefreshMatViewStmt,
413
+ T_ReplicaIdentityStmt,
414
+ T_AlterSystemStmt,
415
+ T_CreatePolicyStmt,
416
+ T_AlterPolicyStmt,
417
+ T_CreateTransformStmt,
418
+ T_CreateAmStmt,
419
+ T_CreatePublicationStmt,
420
+ T_AlterPublicationStmt,
421
+ T_CreateSubscriptionStmt,
422
+ T_AlterSubscriptionStmt,
423
+ T_DropSubscriptionStmt,
424
+ T_CreateStatsStmt,
425
+ T_AlterCollationStmt,
426
+ T_CallStmt,
427
+ T_AlterStatsStmt,
428
+
429
+ /*
430
+ * TAGS FOR PARSE TREE NODES (parsenodes.h)
431
+ */
432
+ T_A_Expr,
433
+ T_ColumnRef,
434
+ T_ParamRef,
435
+ T_A_Const,
436
+ T_FuncCall,
437
+ T_A_Star,
438
+ T_A_Indices,
439
+ T_A_Indirection,
440
+ T_A_ArrayExpr,
441
+ T_ResTarget,
442
+ T_MultiAssignRef,
443
+ T_TypeCast,
444
+ T_CollateClause,
445
+ T_SortBy,
446
+ T_WindowDef,
447
+ T_RangeSubselect,
448
+ T_RangeFunction,
449
+ T_RangeTableSample,
450
+ T_RangeTableFunc,
451
+ T_RangeTableFuncCol,
452
+ T_TypeName,
453
+ T_ColumnDef,
454
+ T_IndexElem,
455
+ T_Constraint,
456
+ T_DefElem,
457
+ T_RangeTblEntry,
458
+ T_RangeTblFunction,
459
+ T_TableSampleClause,
460
+ T_WithCheckOption,
461
+ T_SortGroupClause,
462
+ T_GroupingSet,
463
+ T_WindowClause,
464
+ T_ObjectWithArgs,
465
+ T_AccessPriv,
466
+ T_CreateOpClassItem,
467
+ T_TableLikeClause,
468
+ T_FunctionParameter,
469
+ T_LockingClause,
470
+ T_RowMarkClause,
471
+ T_XmlSerialize,
472
+ T_WithClause,
473
+ T_InferClause,
474
+ T_OnConflictClause,
475
+ T_CommonTableExpr,
476
+ T_RoleSpec,
477
+ T_TriggerTransition,
478
+ T_PartitionElem,
479
+ T_PartitionSpec,
480
+ T_PartitionBoundSpec,
481
+ T_PartitionRangeDatum,
482
+ T_PartitionCmd,
483
+ T_VacuumRelation,
484
+
485
+ /*
486
+ * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h)
487
+ */
488
+ T_IdentifySystemCmd,
489
+ T_BaseBackupCmd,
490
+ T_CreateReplicationSlotCmd,
491
+ T_DropReplicationSlotCmd,
492
+ T_StartReplicationCmd,
493
+ T_TimeLineHistoryCmd,
494
+ T_SQLCmd,
495
+
496
+ /*
497
+ * TAGS FOR RANDOM OTHER STUFF
498
+ *
499
+ * These are objects that aren't part of parse/plan/execute node tree
500
+ * structures, but we give them NodeTags anyway for identification
501
+ * purposes (usually because they are involved in APIs where we want to
502
+ * pass multiple object types through the same pointer).
503
+ */
504
+ T_TriggerData, /* in commands/trigger.h */
505
+ T_EventTriggerData, /* in commands/event_trigger.h */
506
+ T_ReturnSetInfo, /* in nodes/execnodes.h */
507
+ T_WindowObjectData, /* private in nodeWindowAgg.c */
508
+ T_TIDBitmap, /* in nodes/tidbitmap.h */
509
+ T_InlineCodeBlock, /* in nodes/parsenodes.h */
510
+ T_FdwRoutine, /* in foreign/fdwapi.h */
511
+ T_IndexAmRoutine, /* in access/amapi.h */
512
+ T_TableAmRoutine, /* in access/tableam.h */
513
+ T_TsmRoutine, /* in access/tsmapi.h */
514
+ T_ForeignKeyCacheInfo, /* in utils/rel.h */
515
+ T_CallContext, /* in nodes/parsenodes.h */
516
+ T_SupportRequestSimplify, /* in nodes/supportnodes.h */
517
+ T_SupportRequestSelectivity, /* in nodes/supportnodes.h */
518
+ T_SupportRequestCost, /* in nodes/supportnodes.h */
519
+ T_SupportRequestRows, /* in nodes/supportnodes.h */
520
+ T_SupportRequestIndexCondition /* in nodes/supportnodes.h */
521
+ } NodeTag;
522
+
523
+ /*
524
+ * The first field of a node of any type is guaranteed to be the NodeTag.
525
+ * Hence the type of any node can be gotten by casting it to Node. Declaring
526
+ * a variable to be of Node * (instead of void *) can also facilitate
527
+ * debugging.
528
+ */
529
+ typedef struct Node
530
+ {
531
+ NodeTag type;
532
+ } Node;
533
+
534
+ #define nodeTag(nodeptr) (((const Node*)(nodeptr))->type)
535
+
536
+ /*
537
+ * newNode -
538
+ * create a new node of the specified size and tag the node with the
539
+ * specified tag.
540
+ *
541
+ * !WARNING!: Avoid using newNode directly. You should be using the
542
+ * macro makeNode. eg. to create a Query node, use makeNode(Query)
543
+ *
544
+ * Note: the size argument should always be a compile-time constant, so the
545
+ * apparent risk of multiple evaluation doesn't matter in practice.
546
+ */
547
+ #ifdef __GNUC__
548
+
549
+ /* With GCC, we can use a compound statement within an expression */
550
+ #define newNode(size, tag) \
551
+ ({ Node *_result; \
552
+ AssertMacro((size) >= sizeof(Node)); /* need the tag, at least */ \
553
+ _result = (Node *) palloc0fast(size); \
554
+ _result->type = (tag); \
555
+ _result; \
556
+ })
557
+ #else
558
+
559
+ /*
560
+ * There is no way to dereference the palloc'ed pointer to assign the
561
+ * tag, and also return the pointer itself, so we need a holder variable.
562
+ * Fortunately, this macro isn't recursive so we just define
563
+ * a global variable for this purpose.
564
+ */
565
+ extern PGDLLIMPORT Node *newNodeMacroHolder;
566
+
567
+ #define newNode(size, tag) \
568
+ ( \
569
+ AssertMacro((size) >= sizeof(Node)), /* need the tag, at least */ \
570
+ newNodeMacroHolder = (Node *) palloc0fast(size), \
571
+ newNodeMacroHolder->type = (tag), \
572
+ newNodeMacroHolder \
573
+ )
574
+ #endif /* __GNUC__ */
575
+
576
+
577
+ #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_))
578
+ #define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t))
579
+
580
+ #define IsA(nodeptr,_type_) (nodeTag(nodeptr) == T_##_type_)
581
+
582
+ /*
583
+ * castNode(type, ptr) casts ptr to "type *", and if assertions are enabled,
584
+ * verifies that the node has the appropriate type (using its nodeTag()).
585
+ *
586
+ * Use an inline function when assertions are enabled, to avoid multiple
587
+ * evaluations of the ptr argument (which could e.g. be a function call).
588
+ */
589
+ #ifdef USE_ASSERT_CHECKING
590
+ static inline Node *
591
+ castNodeImpl(NodeTag type, void *ptr)
592
+ {
593
+ Assert(ptr == NULL || nodeTag(ptr) == type);
594
+ return (Node *) ptr;
595
+ }
596
+ #define castNode(_type_, nodeptr) ((_type_ *) castNodeImpl(T_##_type_, nodeptr))
597
+ #else
598
+ #define castNode(_type_, nodeptr) ((_type_ *) (nodeptr))
599
+ #endif /* USE_ASSERT_CHECKING */
600
+
601
+
602
+ /* ----------------------------------------------------------------
603
+ * extern declarations follow
604
+ * ----------------------------------------------------------------
605
+ */
606
+
607
+ /*
608
+ * nodes/{outfuncs.c,print.c}
609
+ */
610
+ struct Bitmapset; /* not to include bitmapset.h here */
611
+ struct StringInfoData; /* not to include stringinfo.h here */
612
+
613
+ extern void outNode(struct StringInfoData *str, const void *obj);
614
+ extern void outToken(struct StringInfoData *str, const char *s);
615
+ extern void outBitmapset(struct StringInfoData *str,
616
+ const struct Bitmapset *bms);
617
+ extern void outDatum(struct StringInfoData *str, uintptr_t value,
618
+ int typlen, bool typbyval);
619
+ extern char *nodeToString(const void *obj);
620
+ extern char *bmsToString(const struct Bitmapset *bms);
621
+
622
+ /*
623
+ * nodes/{readfuncs.c,read.c}
624
+ */
625
+ extern void *stringToNode(const char *str);
626
+ #ifdef WRITE_READ_PARSE_PLAN_TREES
627
+ extern void *stringToNodeWithLocations(const char *str);
628
+ #endif
629
+ extern struct Bitmapset *readBitmapset(void);
630
+ extern uintptr_t readDatum(bool typbyval);
631
+ extern bool *readBoolCols(int numCols);
632
+ extern int *readIntCols(int numCols);
633
+ extern Oid *readOidCols(int numCols);
634
+ extern int16 *readAttrNumberCols(int numCols);
635
+
636
+ /*
637
+ * nodes/copyfuncs.c
638
+ */
639
+ extern void *copyObjectImpl(const void *obj);
640
+
641
+ /* cast result back to argument type, if supported by compiler */
642
+ #ifdef HAVE_TYPEOF
643
+ #define copyObject(obj) ((typeof(obj)) copyObjectImpl(obj))
644
+ #else
645
+ #define copyObject(obj) copyObjectImpl(obj)
646
+ #endif
647
+
648
+ /*
649
+ * nodes/equalfuncs.c
650
+ */
651
+ extern bool equal(const void *a, const void *b);
652
+
653
+
654
+ /*
655
+ * Typedefs for identifying qualifier selectivities and plan costs as such.
656
+ * These are just plain "double"s, but declaring a variable as Selectivity
657
+ * or Cost makes the intent more obvious.
658
+ *
659
+ * These could have gone into plannodes.h or some such, but many files
660
+ * depend on them...
661
+ */
662
+ typedef double Selectivity; /* fraction of tuples a qualifier will pass */
663
+ typedef double Cost; /* execution cost (in page-access units) */
664
+
665
+
666
+ /*
667
+ * CmdType -
668
+ * enums for type of operation represented by a Query or PlannedStmt
669
+ *
670
+ * This is needed in both parsenodes.h and plannodes.h, so put it here...
671
+ */
672
+ typedef enum CmdType
673
+ {
674
+ CMD_UNKNOWN,
675
+ CMD_SELECT, /* select stmt */
676
+ CMD_UPDATE, /* update stmt */
677
+ CMD_INSERT, /* insert stmt */
678
+ CMD_DELETE,
679
+ CMD_UTILITY, /* cmds like create, destroy, copy, vacuum,
680
+ * etc. */
681
+ CMD_NOTHING /* dummy command for instead nothing rules
682
+ * with qual */
683
+ } CmdType;
684
+
685
+
686
+ /*
687
+ * JoinType -
688
+ * enums for types of relation joins
689
+ *
690
+ * JoinType determines the exact semantics of joining two relations using
691
+ * a matching qualification. For example, it tells what to do with a tuple
692
+ * that has no match in the other relation.
693
+ *
694
+ * This is needed in both parsenodes.h and plannodes.h, so put it here...
695
+ */
696
+ typedef enum JoinType
697
+ {
698
+ /*
699
+ * The canonical kinds of joins according to the SQL JOIN syntax. Only
700
+ * these codes can appear in parser output (e.g., JoinExpr nodes).
701
+ */
702
+ JOIN_INNER, /* matching tuple pairs only */
703
+ JOIN_LEFT, /* pairs + unmatched LHS tuples */
704
+ JOIN_FULL, /* pairs + unmatched LHS + unmatched RHS */
705
+ JOIN_RIGHT, /* pairs + unmatched RHS tuples */
706
+
707
+ /*
708
+ * Semijoins and anti-semijoins (as defined in relational theory) do not
709
+ * appear in the SQL JOIN syntax, but there are standard idioms for
710
+ * representing them (e.g., using EXISTS). The planner recognizes these
711
+ * cases and converts them to joins. So the planner and executor must
712
+ * support these codes. NOTE: in JOIN_SEMI output, it is unspecified
713
+ * which matching RHS row is joined to. In JOIN_ANTI output, the row is
714
+ * guaranteed to be null-extended.
715
+ */
716
+ JOIN_SEMI, /* 1 copy of each LHS row that has match(es) */
717
+ JOIN_ANTI, /* 1 copy of each LHS row that has no match */
718
+
719
+ /*
720
+ * These codes are used internally in the planner, but are not supported
721
+ * by the executor (nor, indeed, by most of the planner).
722
+ */
723
+ JOIN_UNIQUE_OUTER, /* LHS path must be made unique */
724
+ JOIN_UNIQUE_INNER /* RHS path must be made unique */
725
+
726
+ /*
727
+ * We might need additional join types someday.
728
+ */
729
+ } JoinType;
730
+
731
+ /*
732
+ * OUTER joins are those for which pushed-down quals must behave differently
733
+ * from the join's own quals. This is in fact everything except INNER and
734
+ * SEMI joins. However, this macro must also exclude the JOIN_UNIQUE symbols
735
+ * since those are temporary proxies for what will eventually be an INNER
736
+ * join.
737
+ *
738
+ * Note: semijoins are a hybrid case, but we choose to treat them as not
739
+ * being outer joins. This is okay principally because the SQL syntax makes
740
+ * it impossible to have a pushed-down qual that refers to the inner relation
741
+ * of a semijoin; so there is no strong need to distinguish join quals from
742
+ * pushed-down quals. This is convenient because for almost all purposes,
743
+ * quals attached to a semijoin can be treated the same as innerjoin quals.
744
+ */
745
+ #define IS_OUTER_JOIN(jointype) \
746
+ (((1 << (jointype)) & \
747
+ ((1 << JOIN_LEFT) | \
748
+ (1 << JOIN_FULL) | \
749
+ (1 << JOIN_RIGHT) | \
750
+ (1 << JOIN_ANTI))) != 0)
751
+
752
+ /*
753
+ * AggStrategy -
754
+ * overall execution strategies for Agg plan nodes
755
+ *
756
+ * This is needed in both pathnodes.h and plannodes.h, so put it here...
757
+ */
758
+ typedef enum AggStrategy
759
+ {
760
+ AGG_PLAIN, /* simple agg across all input rows */
761
+ AGG_SORTED, /* grouped agg, input must be sorted */
762
+ AGG_HASHED, /* grouped agg, use internal hashtable */
763
+ AGG_MIXED /* grouped agg, hash and sort both used */
764
+ } AggStrategy;
765
+
766
+ /*
767
+ * AggSplit -
768
+ * splitting (partial aggregation) modes for Agg plan nodes
769
+ *
770
+ * This is needed in both pathnodes.h and plannodes.h, so put it here...
771
+ */
772
+
773
+ /* Primitive options supported by nodeAgg.c: */
774
+ #define AGGSPLITOP_COMBINE 0x01 /* substitute combinefn for transfn */
775
+ #define AGGSPLITOP_SKIPFINAL 0x02 /* skip finalfn, return state as-is */
776
+ #define AGGSPLITOP_SERIALIZE 0x04 /* apply serialfn to output */
777
+ #define AGGSPLITOP_DESERIALIZE 0x08 /* apply deserialfn to input */
778
+
779
+ /* Supported operating modes (i.e., useful combinations of these options): */
780
+ typedef enum AggSplit
781
+ {
782
+ /* Basic, non-split aggregation: */
783
+ AGGSPLIT_SIMPLE = 0,
784
+ /* Initial phase of partial aggregation, with serialization: */
785
+ AGGSPLIT_INITIAL_SERIAL = AGGSPLITOP_SKIPFINAL | AGGSPLITOP_SERIALIZE,
786
+ /* Final phase of partial aggregation, with deserialization: */
787
+ AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE
788
+ } AggSplit;
789
+
790
+ /* Test whether an AggSplit value selects each primitive option: */
791
+ #define DO_AGGSPLIT_COMBINE(as) (((as) & AGGSPLITOP_COMBINE) != 0)
792
+ #define DO_AGGSPLIT_SKIPFINAL(as) (((as) & AGGSPLITOP_SKIPFINAL) != 0)
793
+ #define DO_AGGSPLIT_SERIALIZE(as) (((as) & AGGSPLITOP_SERIALIZE) != 0)
794
+ #define DO_AGGSPLIT_DESERIALIZE(as) (((as) & AGGSPLITOP_DESERIALIZE) != 0)
795
+
796
+ /*
797
+ * SetOpCmd and SetOpStrategy -
798
+ * overall semantics and execution strategies for SetOp plan nodes
799
+ *
800
+ * This is needed in both pathnodes.h and plannodes.h, so put it here...
801
+ */
802
+ typedef enum SetOpCmd
803
+ {
804
+ SETOPCMD_INTERSECT,
805
+ SETOPCMD_INTERSECT_ALL,
806
+ SETOPCMD_EXCEPT,
807
+ SETOPCMD_EXCEPT_ALL
808
+ } SetOpCmd;
809
+
810
+ typedef enum SetOpStrategy
811
+ {
812
+ SETOP_SORTED, /* input must be sorted */
813
+ SETOP_HASHED /* use internal hashtable */
814
+ } SetOpStrategy;
815
+
816
+ /*
817
+ * OnConflictAction -
818
+ * "ON CONFLICT" clause type of query
819
+ *
820
+ * This is needed in both parsenodes.h and plannodes.h, so put it here...
821
+ */
822
+ typedef enum OnConflictAction
823
+ {
824
+ ONCONFLICT_NONE, /* No "ON CONFLICT" clause */
825
+ ONCONFLICT_NOTHING, /* ON CONFLICT ... DO NOTHING */
826
+ ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */
827
+ } OnConflictAction;
828
+
829
+ /*
830
+ * LimitOption -
831
+ * LIMIT option of query
832
+ *
833
+ * This is needed in both parsenodes.h and plannodes.h, so put it here...
834
+ */
835
+ typedef enum LimitOption
836
+ {
837
+ LIMIT_OPTION_DEFAULT, /* No limit present */
838
+ LIMIT_OPTION_COUNT, /* FETCH FIRST... ONLY */
839
+ LIMIT_OPTION_WITH_TIES, /* FETCH FIRST... WITH TIES */
840
+ } LimitOption;
841
+
842
+ #endif /* NODES_H */