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,67 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parse_oper.h
4
+ * handle operator things for parser
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/parser/parse_oper.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef PARSE_OPER_H
15
+ #define PARSE_OPER_H
16
+
17
+ #include "access/htup.h"
18
+ #include "nodes/parsenodes.h"
19
+ #include "parser/parse_node.h"
20
+
21
+
22
+ typedef HeapTuple Operator;
23
+
24
+ /* Routines to look up an operator given name and exact input type(s) */
25
+ extern Oid LookupOperName(ParseState *pstate, List *opername,
26
+ Oid oprleft, Oid oprright,
27
+ bool noError, int location);
28
+ extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError);
29
+
30
+ /* Routines to find operators matching a name and given input types */
31
+ /* NB: the selected operator may require coercion of the input types! */
32
+ extern Operator oper(ParseState *pstate, List *op, Oid arg1, Oid arg2,
33
+ bool noError, int location);
34
+ extern Operator right_oper(ParseState *pstate, List *op, Oid arg,
35
+ bool noError, int location);
36
+ extern Operator left_oper(ParseState *pstate, List *op, Oid arg,
37
+ bool noError, int location);
38
+
39
+ /* Routines to find operators that DO NOT require coercion --- ie, their */
40
+ /* input types are either exactly as given, or binary-compatible */
41
+ extern Operator compatible_oper(ParseState *pstate, List *op,
42
+ Oid arg1, Oid arg2,
43
+ bool noError, int location);
44
+
45
+ /* currently no need for compatible_left_oper/compatible_right_oper */
46
+
47
+ /* Routines for identifying "<", "=", ">" operators for a type */
48
+ extern void get_sort_group_operators(Oid argtype,
49
+ bool needLT, bool needEQ, bool needGT,
50
+ Oid *ltOpr, Oid *eqOpr, Oid *gtOpr,
51
+ bool *isHashable);
52
+
53
+ /* Convenience routines for common calls on the above */
54
+ extern Oid compatible_oper_opid(List *op, Oid arg1, Oid arg2, bool noError);
55
+
56
+ /* Extract operator OID or underlying-function OID from an Operator tuple */
57
+ extern Oid oprid(Operator op);
58
+ extern Oid oprfuncid(Operator op);
59
+
60
+ /* Build expression tree for an operator invocation */
61
+ extern Expr *make_op(ParseState *pstate, List *opname,
62
+ Node *ltree, Node *rtree, Node *last_srf, int location);
63
+ extern Expr *make_scalar_array_op(ParseState *pstate, List *opname,
64
+ bool useOr,
65
+ Node *ltree, Node *rtree, int location);
66
+
67
+ #endif /* PARSE_OPER_H */
@@ -0,0 +1,123 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parse_relation.h
4
+ * prototypes for parse_relation.c.
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/parser/parse_relation.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef PARSE_RELATION_H
15
+ #define PARSE_RELATION_H
16
+
17
+ #include "parser/parse_node.h"
18
+
19
+
20
+ extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate,
21
+ const char *schemaname,
22
+ const char *refname,
23
+ int location,
24
+ int *sublevels_up);
25
+ extern CommonTableExpr *scanNameSpaceForCTE(ParseState *pstate,
26
+ const char *refname,
27
+ Index *ctelevelsup);
28
+ extern bool scanNameSpaceForENR(ParseState *pstate, const char *refname);
29
+ extern void checkNameSpaceConflicts(ParseState *pstate, List *namespace1,
30
+ List *namespace2);
31
+ extern ParseNamespaceItem *GetNSItemByRangeTablePosn(ParseState *pstate,
32
+ int varno,
33
+ int sublevels_up);
34
+ extern RangeTblEntry *GetRTEByRangeTablePosn(ParseState *pstate,
35
+ int varno,
36
+ int sublevels_up);
37
+ extern CommonTableExpr *GetCTEForRTE(ParseState *pstate, RangeTblEntry *rte,
38
+ int rtelevelsup);
39
+ extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,
40
+ int sublevels_up, const char *colname,
41
+ int location);
42
+ extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
43
+ int location);
44
+ extern void markVarForSelectPriv(ParseState *pstate, Var *var,
45
+ RangeTblEntry *rte);
46
+ extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
47
+ int lockmode);
48
+ extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate,
49
+ RangeVar *relation,
50
+ Alias *alias,
51
+ bool inh,
52
+ bool inFromCl);
53
+ extern ParseNamespaceItem *addRangeTableEntryForRelation(ParseState *pstate,
54
+ Relation rel,
55
+ int lockmode,
56
+ Alias *alias,
57
+ bool inh,
58
+ bool inFromCl);
59
+ extern ParseNamespaceItem *addRangeTableEntryForSubquery(ParseState *pstate,
60
+ Query *subquery,
61
+ Alias *alias,
62
+ bool lateral,
63
+ bool inFromCl);
64
+ extern ParseNamespaceItem *addRangeTableEntryForFunction(ParseState *pstate,
65
+ List *funcnames,
66
+ List *funcexprs,
67
+ List *coldeflists,
68
+ RangeFunction *rangefunc,
69
+ bool lateral,
70
+ bool inFromCl);
71
+ extern ParseNamespaceItem *addRangeTableEntryForValues(ParseState *pstate,
72
+ List *exprs,
73
+ List *coltypes,
74
+ List *coltypmods,
75
+ List *colcollations,
76
+ Alias *alias,
77
+ bool lateral,
78
+ bool inFromCl);
79
+ extern ParseNamespaceItem *addRangeTableEntryForTableFunc(ParseState *pstate,
80
+ TableFunc *tf,
81
+ Alias *alias,
82
+ bool lateral,
83
+ bool inFromCl);
84
+ extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate,
85
+ List *colnames,
86
+ ParseNamespaceColumn *nscolumns,
87
+ JoinType jointype,
88
+ int nummergedcols,
89
+ List *aliasvars,
90
+ List *leftcols,
91
+ List *rightcols,
92
+ Alias *alias,
93
+ bool inFromCl);
94
+ extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate,
95
+ CommonTableExpr *cte,
96
+ Index levelsup,
97
+ RangeVar *rv,
98
+ bool inFromCl);
99
+ extern ParseNamespaceItem *addRangeTableEntryForENR(ParseState *pstate,
100
+ RangeVar *rv,
101
+ bool inFromCl);
102
+ extern bool isLockedRefname(ParseState *pstate, const char *refname);
103
+ extern void addNSItemToQuery(ParseState *pstate, ParseNamespaceItem *nsitem,
104
+ bool addToJoinList,
105
+ bool addToRelNameSpace, bool addToVarNameSpace);
106
+ extern void errorMissingRTE(ParseState *pstate, RangeVar *relation) pg_attribute_noreturn();
107
+ extern void errorMissingColumn(ParseState *pstate,
108
+ const char *relname, const char *colname, int location) pg_attribute_noreturn();
109
+ extern void expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up,
110
+ int location, bool include_dropped,
111
+ List **colnames, List **colvars);
112
+ extern List *expandNSItemVars(ParseNamespaceItem *nsitem,
113
+ int sublevels_up, int location,
114
+ List **colnames);
115
+ extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
116
+ int sublevels_up, int location);
117
+ extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
118
+ extern const NameData *attnumAttName(Relation rd, int attid);
119
+ extern Oid attnumTypeId(Relation rd, int attid);
120
+ extern Oid attnumCollationId(Relation rd, int attid);
121
+ extern bool isQueryUsingTempRelation(Query *query);
122
+
123
+ #endif /* PARSE_RELATION_H */
@@ -0,0 +1,46 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parse_target.h
4
+ * handle target lists
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/parser/parse_target.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef PARSE_TARGET_H
15
+ #define PARSE_TARGET_H
16
+
17
+ #include "parser/parse_node.h"
18
+
19
+
20
+ extern List *transformTargetList(ParseState *pstate, List *targetlist,
21
+ ParseExprKind exprKind);
22
+ extern List *transformExpressionList(ParseState *pstate, List *exprlist,
23
+ ParseExprKind exprKind, bool allowDefault);
24
+ extern void resolveTargetListUnknowns(ParseState *pstate, List *targetlist);
25
+ extern void markTargetListOrigins(ParseState *pstate, List *targetlist);
26
+ extern TargetEntry *transformTargetEntry(ParseState *pstate,
27
+ Node *node, Node *expr, ParseExprKind exprKind,
28
+ char *colname, bool resjunk);
29
+ extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr,
30
+ ParseExprKind exprKind,
31
+ const char *colname,
32
+ int attrno,
33
+ List *indirection,
34
+ int location);
35
+ extern void updateTargetListEntry(ParseState *pstate, TargetEntry *tle,
36
+ char *colname, int attrno,
37
+ List *indirection,
38
+ int location);
39
+ extern List *checkInsertTargets(ParseState *pstate, List *cols,
40
+ List **attrnos);
41
+ extern TupleDesc expandRecordVariable(ParseState *pstate, Var *var,
42
+ int levelsup);
43
+ extern char *FigureColname(Node *node);
44
+ extern char *FigureIndexColname(Node *node);
45
+
46
+ #endif /* PARSE_TARGET_H */
@@ -0,0 +1,60 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parse_type.h
4
+ * handle type operations for parser
5
+ *
6
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * src/include/parser/parse_type.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef PARSE_TYPE_H
14
+ #define PARSE_TYPE_H
15
+
16
+ #include "access/htup.h"
17
+ #include "parser/parse_node.h"
18
+
19
+
20
+ typedef HeapTuple Type;
21
+
22
+ extern Type LookupTypeName(ParseState *pstate, const TypeName *typeName,
23
+ int32 *typmod_p, bool missing_ok);
24
+ extern Type LookupTypeNameExtended(ParseState *pstate,
25
+ const TypeName *typeName, int32 *typmod_p,
26
+ bool temp_ok, bool missing_ok);
27
+ extern Oid LookupTypeNameOid(ParseState *pstate, const TypeName *typeName,
28
+ bool missing_ok);
29
+ extern Type typenameType(ParseState *pstate, const TypeName *typeName,
30
+ int32 *typmod_p);
31
+ extern Oid typenameTypeId(ParseState *pstate, const TypeName *typeName);
32
+ extern void typenameTypeIdAndMod(ParseState *pstate, const TypeName *typeName,
33
+ Oid *typeid_p, int32 *typmod_p);
34
+
35
+ extern char *TypeNameToString(const TypeName *typeName);
36
+ extern char *TypeNameListToString(List *typenames);
37
+
38
+ extern Oid LookupCollation(ParseState *pstate, List *collnames, int location);
39
+ extern Oid GetColumnDefCollation(ParseState *pstate, ColumnDef *coldef, Oid typeOid);
40
+
41
+ extern Type typeidType(Oid id);
42
+
43
+ extern Oid typeTypeId(Type tp);
44
+ extern int16 typeLen(Type t);
45
+ extern bool typeByVal(Type t);
46
+ extern char *typeTypeName(Type t);
47
+ extern Oid typeTypeRelid(Type typ);
48
+ extern Oid typeTypeCollation(Type typ);
49
+ extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod);
50
+
51
+ extern Oid typeidTypeRelid(Oid type_id);
52
+ extern Oid typeOrDomainTypeRelid(Oid type_id);
53
+
54
+ extern TypeName *typeStringToTypeName(const char *str);
55
+ extern void parseTypeString(const char *str, Oid *typeid_p, int32 *typmod_p, bool missing_ok);
56
+
57
+ /* true if typeid is composite, or domain over composite, but not RECORD */
58
+ #define ISCOMPLEX(typeid) (typeOrDomainTypeRelid(typeid) != InvalidOid)
59
+
60
+ #endif /* PARSE_TYPE_H */
@@ -0,0 +1,41 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parser.h
4
+ * Definitions for the "raw" parser (flex and bison phases only)
5
+ *
6
+ * This is the external API for the raw lexing/parsing functions.
7
+ *
8
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1994, Regents of the University of California
10
+ *
11
+ * src/include/parser/parser.h
12
+ *
13
+ *-------------------------------------------------------------------------
14
+ */
15
+ #ifndef PARSER_H
16
+ #define PARSER_H
17
+
18
+ #include "nodes/parsenodes.h"
19
+
20
+
21
+ typedef enum
22
+ {
23
+ BACKSLASH_QUOTE_OFF,
24
+ BACKSLASH_QUOTE_ON,
25
+ BACKSLASH_QUOTE_SAFE_ENCODING
26
+ } BackslashQuoteType;
27
+
28
+ /* GUC variables in scan.l (every one of these is a bad idea :-() */
29
+ extern __thread int backslash_quote;
30
+ extern __thread bool escape_string_warning;
31
+ extern PGDLLIMPORT __thread bool standard_conforming_strings;
32
+
33
+
34
+ /* Primary entry point for the raw parsing functions */
35
+ extern List *raw_parser(const char *str);
36
+
37
+ /* Utility functions exported by gram.y (perhaps these should be elsewhere) */
38
+ extern List *SystemFuncName(char *name);
39
+ extern TypeName *SystemTypeName(char *name);
40
+
41
+ #endif /* PARSER_H */
@@ -0,0 +1,61 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * parsetree.h
4
+ * Routines to access various components and subcomponents of
5
+ * parse trees.
6
+ *
7
+ *
8
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1994, Regents of the University of California
10
+ *
11
+ * src/include/parser/parsetree.h
12
+ *
13
+ *-------------------------------------------------------------------------
14
+ */
15
+ #ifndef PARSETREE_H
16
+ #define PARSETREE_H
17
+
18
+ #include "nodes/parsenodes.h"
19
+
20
+
21
+ /* ----------------
22
+ * range table operations
23
+ * ----------------
24
+ */
25
+
26
+ /*
27
+ * rt_fetch
28
+ *
29
+ * NB: this will crash and burn if handed an out-of-range RT index
30
+ */
31
+ #define rt_fetch(rangetable_index, rangetable) \
32
+ ((RangeTblEntry *) list_nth(rangetable, (rangetable_index)-1))
33
+
34
+ /*
35
+ * Given an RTE and an attribute number, return the appropriate
36
+ * variable name or alias for that attribute of that RTE.
37
+ */
38
+ extern char *get_rte_attribute_name(RangeTblEntry *rte, AttrNumber attnum);
39
+
40
+ /*
41
+ * Check whether an attribute of an RTE has been dropped
42
+ */
43
+ extern bool get_rte_attribute_is_dropped(RangeTblEntry *rte,
44
+ AttrNumber attnum);
45
+
46
+
47
+ /* ----------------
48
+ * target list operations
49
+ * ----------------
50
+ */
51
+
52
+ extern TargetEntry *get_tle_by_resno(List *tlist, AttrNumber resno);
53
+
54
+ /* ----------------
55
+ * FOR UPDATE/SHARE info
56
+ * ----------------
57
+ */
58
+
59
+ extern RowMarkClause *get_parse_rowmark(Query *qry, Index rtindex);
60
+
61
+ #endif /* PARSETREE_H */
@@ -0,0 +1,152 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * scanner.h
4
+ * API for the core scanner (flex machine)
5
+ *
6
+ * The core scanner is also used by PL/pgSQL, so we provide a public API
7
+ * for it. However, the rest of the backend is only expected to use the
8
+ * higher-level API provided by parser.h.
9
+ *
10
+ *
11
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1994, Regents of the University of California
13
+ *
14
+ * src/include/parser/scanner.h
15
+ *
16
+ *-------------------------------------------------------------------------
17
+ */
18
+
19
+ #ifndef SCANNER_H
20
+ #define SCANNER_H
21
+
22
+ #include "common/keywords.h"
23
+
24
+ /*
25
+ * The scanner returns extra data about scanned tokens in this union type.
26
+ * Note that this is a subset of the fields used in YYSTYPE of the bison
27
+ * parsers built atop the scanner.
28
+ */
29
+ typedef union core_YYSTYPE
30
+ {
31
+ int ival; /* for integer literals */
32
+ char *str; /* for identifiers and non-integer literals */
33
+ const char *keyword; /* canonical spelling of keywords */
34
+ } core_YYSTYPE;
35
+
36
+ /*
37
+ * We track token locations in terms of byte offsets from the start of the
38
+ * source string, not the column number/line number representation that
39
+ * bison uses by default. Also, to minimize overhead we track only one
40
+ * location (usually the first token location) for each construct, not
41
+ * the beginning and ending locations as bison does by default. It's
42
+ * therefore sufficient to make YYLTYPE an int.
43
+ */
44
+ #define YYLTYPE int
45
+
46
+ /*
47
+ * Another important component of the scanner's API is the token code numbers.
48
+ * However, those are not defined in this file, because bison insists on
49
+ * defining them for itself. The token codes used by the core scanner are
50
+ * the ASCII characters plus these:
51
+ * %token <str> IDENT UIDENT FCONST SCONST USCONST BCONST XCONST Op
52
+ * %token <ival> ICONST PARAM
53
+ * %token TYPECAST DOT_DOT COLON_EQUALS EQUALS_GREATER
54
+ * %token LESS_EQUALS GREATER_EQUALS NOT_EQUALS
55
+ * The above token definitions *must* be the first ones declared in any
56
+ * bison parser built atop this scanner, so that they will have consistent
57
+ * numbers assigned to them (specifically, IDENT = 258 and so on).
58
+ */
59
+
60
+ /*
61
+ * The YY_EXTRA data that a flex scanner allows us to pass around.
62
+ * Private state needed by the core scanner goes here. Note that the actual
63
+ * yy_extra struct may be larger and have this as its first component, thus
64
+ * allowing the calling parser to keep some fields of its own in YY_EXTRA.
65
+ */
66
+ typedef struct core_yy_extra_type
67
+ {
68
+ /*
69
+ * The string the scanner is physically scanning. We keep this mainly so
70
+ * that we can cheaply compute the offset of the current token (yytext).
71
+ */
72
+ char *scanbuf;
73
+ Size scanbuflen;
74
+
75
+ /*
76
+ * The keyword list to use, and the associated grammar token codes.
77
+ */
78
+ const ScanKeywordList *keywordlist;
79
+ const uint16 *keyword_tokens;
80
+
81
+ /*
82
+ * Scanner settings to use. These are initialized from the corresponding
83
+ * GUC variables by scanner_init(). Callers can modify them after
84
+ * scanner_init() if they don't want the scanner's behavior to follow the
85
+ * prevailing GUC settings.
86
+ */
87
+ int backslash_quote;
88
+ bool escape_string_warning;
89
+ bool standard_conforming_strings;
90
+
91
+ /*
92
+ * literalbuf is used to accumulate literal values when multiple rules are
93
+ * needed to parse a single literal. Call startlit() to reset buffer to
94
+ * empty, addlit() to add text. NOTE: the string in literalbuf is NOT
95
+ * necessarily null-terminated, but there always IS room to add a trailing
96
+ * null at offset literallen. We store a null only when we need it.
97
+ */
98
+ char *literalbuf; /* palloc'd expandable buffer */
99
+ int literallen; /* actual current string length */
100
+ int literalalloc; /* current allocated buffer size */
101
+
102
+ /*
103
+ * Random assorted scanner state.
104
+ */
105
+ int state_before_str_stop; /* start cond. before end quote */
106
+ int xcdepth; /* depth of nesting in slash-star comments */
107
+ char *dolqstart; /* current $foo$ quote start string */
108
+ YYLTYPE save_yylloc; /* one-element stack for PUSH_YYLLOC() */
109
+
110
+ /* first part of UTF16 surrogate pair for Unicode escapes */
111
+ int32 utf16_first_part;
112
+
113
+ /* state variables for literal-lexing warnings */
114
+ bool warn_on_first_escape;
115
+ bool saw_non_ascii;
116
+
117
+ int yyllocend;
118
+ } core_yy_extra_type;
119
+
120
+ /*
121
+ * The type of yyscanner is opaque outside scan.l.
122
+ */
123
+ typedef void *core_yyscan_t;
124
+
125
+ /* Support for scanner_errposition_callback function */
126
+ typedef struct ScannerCallbackState
127
+ {
128
+ core_yyscan_t yyscanner;
129
+ int location;
130
+ ErrorContextCallback errcallback;
131
+ } ScannerCallbackState;
132
+
133
+
134
+ /* Constant data exported from parser/scan.l */
135
+ extern PGDLLIMPORT const uint16 ScanKeywordTokens[];
136
+
137
+ /* Entry points in parser/scan.l */
138
+ extern core_yyscan_t scanner_init(const char *str,
139
+ core_yy_extra_type *yyext,
140
+ const ScanKeywordList *keywordlist,
141
+ const uint16 *keyword_tokens);
142
+ extern void scanner_finish(core_yyscan_t yyscanner);
143
+ extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp,
144
+ core_yyscan_t yyscanner);
145
+ extern int scanner_errposition(int location, core_yyscan_t yyscanner);
146
+ extern void setup_scanner_errposition_callback(ScannerCallbackState *scbstate,
147
+ core_yyscan_t yyscanner,
148
+ int location);
149
+ extern void cancel_scanner_errposition_callback(ScannerCallbackState *scbstate);
150
+ extern void scanner_yyerror(const char *message, core_yyscan_t yyscanner) pg_attribute_noreturn();
151
+
152
+ #endif /* SCANNER_H */