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,34 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * print.h
4
+ * definitions for nodes/print.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/nodes/print.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef PRINT_H
15
+ #define PRINT_H
16
+
17
+ #include "executor/tuptable.h"
18
+
19
+
20
+ #define nodeDisplay(x) pprint(x)
21
+
22
+ extern void print(const void *obj);
23
+ extern void pprint(const void *obj);
24
+ extern void elog_node_display(int lev, const char *title,
25
+ const void *obj, bool pretty);
26
+ extern char *format_node_dump(const char *dump);
27
+ extern char *pretty_format_node_dump(const char *dump);
28
+ extern void print_rt(const List *rtable);
29
+ extern void print_expr(const Node *expr, const List *rtable);
30
+ extern void print_pathkeys(const List *pathkeys, const List *rtable);
31
+ extern void print_tl(const List *tlist, const List *rtable);
32
+ extern void print_slot(TupleTableSlot *slot);
33
+
34
+ #endif /* PRINT_H */
@@ -0,0 +1,75 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * tidbitmap.h
4
+ * PostgreSQL tuple-id (TID) bitmap package
5
+ *
6
+ * This module provides bitmap data structures that are spiritually
7
+ * similar to Bitmapsets, but are specially adapted to store sets of
8
+ * tuple identifiers (TIDs), or ItemPointers. In particular, the division
9
+ * of an ItemPointer into BlockNumber and OffsetNumber is catered for.
10
+ * Also, since we wish to be able to store very large tuple sets in
11
+ * memory with this data structure, we support "lossy" storage, in which
12
+ * we no longer remember individual tuple offsets on a page but only the
13
+ * fact that a particular page needs to be visited.
14
+ *
15
+ *
16
+ * Copyright (c) 2003-2020, PostgreSQL Global Development Group
17
+ *
18
+ * src/include/nodes/tidbitmap.h
19
+ *
20
+ *-------------------------------------------------------------------------
21
+ */
22
+ #ifndef TIDBITMAP_H
23
+ #define TIDBITMAP_H
24
+
25
+ #include "storage/itemptr.h"
26
+ #include "utils/dsa.h"
27
+
28
+
29
+ /*
30
+ * Actual bitmap representation is private to tidbitmap.c. Callers can
31
+ * do IsA(x, TIDBitmap) on it, but nothing else.
32
+ */
33
+ typedef struct TIDBitmap TIDBitmap;
34
+
35
+ /* Likewise, TBMIterator is private */
36
+ typedef struct TBMIterator TBMIterator;
37
+ typedef struct TBMSharedIterator TBMSharedIterator;
38
+
39
+ /* Result structure for tbm_iterate */
40
+ typedef struct TBMIterateResult
41
+ {
42
+ BlockNumber blockno; /* page number containing tuples */
43
+ int ntuples; /* -1 indicates lossy result */
44
+ bool recheck; /* should the tuples be rechecked? */
45
+ /* Note: recheck is always true if ntuples < 0 */
46
+ OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER];
47
+ } TBMIterateResult;
48
+
49
+ /* function prototypes in nodes/tidbitmap.c */
50
+
51
+ extern TIDBitmap *tbm_create(long maxbytes, dsa_area *dsa);
52
+ extern void tbm_free(TIDBitmap *tbm);
53
+ extern void tbm_free_shared_area(dsa_area *dsa, dsa_pointer dp);
54
+
55
+ extern void tbm_add_tuples(TIDBitmap *tbm,
56
+ const ItemPointer tids, int ntids,
57
+ bool recheck);
58
+ extern void tbm_add_page(TIDBitmap *tbm, BlockNumber pageno);
59
+
60
+ extern void tbm_union(TIDBitmap *a, const TIDBitmap *b);
61
+ extern void tbm_intersect(TIDBitmap *a, const TIDBitmap *b);
62
+
63
+ extern bool tbm_is_empty(const TIDBitmap *tbm);
64
+
65
+ extern TBMIterator *tbm_begin_iterate(TIDBitmap *tbm);
66
+ extern dsa_pointer tbm_prepare_shared_iterate(TIDBitmap *tbm);
67
+ extern TBMIterateResult *tbm_iterate(TBMIterator *iterator);
68
+ extern TBMIterateResult *tbm_shared_iterate(TBMSharedIterator *iterator);
69
+ extern void tbm_end_iterate(TBMIterator *iterator);
70
+ extern void tbm_end_shared_iterate(TBMSharedIterator *iterator);
71
+ extern TBMSharedIterator *tbm_attach_shared_iterate(dsa_area *dsa,
72
+ dsa_pointer dp);
73
+ extern long tbm_calculate_entries(double maxbytes);
74
+
75
+ #endif /* TIDBITMAP_H */
@@ -0,0 +1,61 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * value.h
4
+ * interface for Value nodes
5
+ *
6
+ *
7
+ * Copyright (c) 2003-2020, PostgreSQL Global Development Group
8
+ *
9
+ * src/include/nodes/value.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+
14
+ #ifndef VALUE_H
15
+ #define VALUE_H
16
+
17
+ #include "nodes/nodes.h"
18
+
19
+ /*----------------------
20
+ * Value node
21
+ *
22
+ * The same Value struct is used for five node types: T_Integer,
23
+ * T_Float, T_String, T_BitString, T_Null.
24
+ *
25
+ * Integral values are actually represented by a machine integer,
26
+ * but both floats and strings are represented as strings.
27
+ * Using T_Float as the node type simply indicates that
28
+ * the contents of the string look like a valid numeric literal.
29
+ *
30
+ * (Before Postgres 7.0, we used a double to represent T_Float,
31
+ * but that creates loss-of-precision problems when the value is
32
+ * ultimately destined to be converted to NUMERIC. Since Value nodes
33
+ * are only used in the parsing process, not for runtime data, it's
34
+ * better to use the more general representation.)
35
+ *
36
+ * Note that an integer-looking string will get lexed as T_Float if
37
+ * the value is too large to fit in an 'int'.
38
+ *
39
+ * Nulls, of course, don't need the value part at all.
40
+ *----------------------
41
+ */
42
+ typedef struct Value
43
+ {
44
+ NodeTag type; /* tag appropriately (eg. T_String) */
45
+ union ValUnion
46
+ {
47
+ int ival; /* machine integer */
48
+ char *str; /* string */
49
+ } val;
50
+ } Value;
51
+
52
+ #define intVal(v) (((Value *)(v))->val.ival)
53
+ #define floatVal(v) atof(((Value *)(v))->val.str)
54
+ #define strVal(v) (((Value *)(v))->val.str)
55
+
56
+ extern Value *makeInteger(int i);
57
+ extern Value *makeFloat(char *numericStr);
58
+ extern Value *makeString(char *str);
59
+ extern Value *makeBitString(char *str);
60
+
61
+ #endif /* VALUE_H */
@@ -0,0 +1,206 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * cost.h
4
+ * prototypes for costsize.c and clausesel.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/optimizer/cost.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef COST_H
15
+ #define COST_H
16
+
17
+ #include "nodes/pathnodes.h"
18
+ #include "nodes/plannodes.h"
19
+
20
+
21
+ /* defaults for costsize.c's Cost parameters */
22
+ /* NB: cost-estimation code should use the variables, not these constants! */
23
+ /* If you change these, update backend/utils/misc/postgresql.sample.conf */
24
+ #define DEFAULT_SEQ_PAGE_COST 1.0
25
+ #define DEFAULT_RANDOM_PAGE_COST 4.0
26
+ #define DEFAULT_CPU_TUPLE_COST 0.01
27
+ #define DEFAULT_CPU_INDEX_TUPLE_COST 0.005
28
+ #define DEFAULT_CPU_OPERATOR_COST 0.0025
29
+ #define DEFAULT_PARALLEL_TUPLE_COST 0.1
30
+ #define DEFAULT_PARALLEL_SETUP_COST 1000.0
31
+
32
+ #define DEFAULT_EFFECTIVE_CACHE_SIZE 524288 /* measured in pages */
33
+
34
+ typedef enum
35
+ {
36
+ CONSTRAINT_EXCLUSION_OFF, /* do not use c_e */
37
+ CONSTRAINT_EXCLUSION_ON, /* apply c_e to all rels */
38
+ CONSTRAINT_EXCLUSION_PARTITION /* apply c_e to otherrels only */
39
+ } ConstraintExclusionType;
40
+
41
+
42
+ /*
43
+ * prototypes for costsize.c
44
+ * routines to compute costs and sizes
45
+ */
46
+
47
+ /* parameter variables and flags (see also optimizer.h) */
48
+ extern PGDLLIMPORT Cost disable_cost;
49
+ extern PGDLLIMPORT int max_parallel_workers_per_gather;
50
+ extern PGDLLIMPORT bool enable_seqscan;
51
+ extern PGDLLIMPORT bool enable_indexscan;
52
+ extern PGDLLIMPORT bool enable_indexonlyscan;
53
+ extern PGDLLIMPORT bool enable_bitmapscan;
54
+ extern PGDLLIMPORT bool enable_tidscan;
55
+ extern PGDLLIMPORT bool enable_sort;
56
+ extern PGDLLIMPORT bool enable_incremental_sort;
57
+ extern PGDLLIMPORT bool enable_hashagg;
58
+ extern PGDLLIMPORT bool enable_nestloop;
59
+ extern PGDLLIMPORT bool enable_material;
60
+ extern PGDLLIMPORT bool enable_mergejoin;
61
+ extern PGDLLIMPORT bool enable_hashjoin;
62
+ extern PGDLLIMPORT bool enable_gathermerge;
63
+ extern PGDLLIMPORT bool enable_partitionwise_join;
64
+ extern PGDLLIMPORT bool enable_partitionwise_aggregate;
65
+ extern PGDLLIMPORT bool enable_parallel_append;
66
+ extern PGDLLIMPORT bool enable_parallel_hash;
67
+ extern PGDLLIMPORT bool enable_partition_pruning;
68
+ extern PGDLLIMPORT int constraint_exclusion;
69
+
70
+ extern double index_pages_fetched(double tuples_fetched, BlockNumber pages,
71
+ double index_pages, PlannerInfo *root);
72
+ extern void cost_seqscan(Path *path, PlannerInfo *root, RelOptInfo *baserel,
73
+ ParamPathInfo *param_info);
74
+ extern void cost_samplescan(Path *path, PlannerInfo *root, RelOptInfo *baserel,
75
+ ParamPathInfo *param_info);
76
+ extern void cost_index(IndexPath *path, PlannerInfo *root,
77
+ double loop_count, bool partial_path);
78
+ extern void cost_bitmap_heap_scan(Path *path, PlannerInfo *root, RelOptInfo *baserel,
79
+ ParamPathInfo *param_info,
80
+ Path *bitmapqual, double loop_count);
81
+ extern void cost_bitmap_and_node(BitmapAndPath *path, PlannerInfo *root);
82
+ extern void cost_bitmap_or_node(BitmapOrPath *path, PlannerInfo *root);
83
+ extern void cost_bitmap_tree_node(Path *path, Cost *cost, Selectivity *selec);
84
+ extern void cost_tidscan(Path *path, PlannerInfo *root,
85
+ RelOptInfo *baserel, List *tidquals, ParamPathInfo *param_info);
86
+ extern void cost_subqueryscan(SubqueryScanPath *path, PlannerInfo *root,
87
+ RelOptInfo *baserel, ParamPathInfo *param_info);
88
+ extern void cost_functionscan(Path *path, PlannerInfo *root,
89
+ RelOptInfo *baserel, ParamPathInfo *param_info);
90
+ extern void cost_valuesscan(Path *path, PlannerInfo *root,
91
+ RelOptInfo *baserel, ParamPathInfo *param_info);
92
+ extern void cost_tablefuncscan(Path *path, PlannerInfo *root,
93
+ RelOptInfo *baserel, ParamPathInfo *param_info);
94
+ extern void cost_ctescan(Path *path, PlannerInfo *root,
95
+ RelOptInfo *baserel, ParamPathInfo *param_info);
96
+ extern void cost_namedtuplestorescan(Path *path, PlannerInfo *root,
97
+ RelOptInfo *baserel, ParamPathInfo *param_info);
98
+ extern void cost_resultscan(Path *path, PlannerInfo *root,
99
+ RelOptInfo *baserel, ParamPathInfo *param_info);
100
+ extern void cost_recursive_union(Path *runion, Path *nrterm, Path *rterm);
101
+ extern void cost_sort(Path *path, PlannerInfo *root,
102
+ List *pathkeys, Cost input_cost, double tuples, int width,
103
+ Cost comparison_cost, int sort_mem,
104
+ double limit_tuples);
105
+ extern void cost_incremental_sort(Path *path,
106
+ PlannerInfo *root, List *pathkeys, int presorted_keys,
107
+ Cost input_startup_cost, Cost input_total_cost,
108
+ double input_tuples, int width, Cost comparison_cost, int sort_mem,
109
+ double limit_tuples);
110
+ extern void cost_append(AppendPath *path);
111
+ extern void cost_merge_append(Path *path, PlannerInfo *root,
112
+ List *pathkeys, int n_streams,
113
+ Cost input_startup_cost, Cost input_total_cost,
114
+ double tuples);
115
+ extern void cost_material(Path *path,
116
+ Cost input_startup_cost, Cost input_total_cost,
117
+ double tuples, int width);
118
+ extern void cost_agg(Path *path, PlannerInfo *root,
119
+ AggStrategy aggstrategy, const AggClauseCosts *aggcosts,
120
+ int numGroupCols, double numGroups,
121
+ List *quals,
122
+ Cost input_startup_cost, Cost input_total_cost,
123
+ double input_tuples, double input_width);
124
+ extern void cost_windowagg(Path *path, PlannerInfo *root,
125
+ List *windowFuncs, int numPartCols, int numOrderCols,
126
+ Cost input_startup_cost, Cost input_total_cost,
127
+ double input_tuples);
128
+ extern void cost_group(Path *path, PlannerInfo *root,
129
+ int numGroupCols, double numGroups,
130
+ List *quals,
131
+ Cost input_startup_cost, Cost input_total_cost,
132
+ double input_tuples);
133
+ extern void initial_cost_nestloop(PlannerInfo *root,
134
+ JoinCostWorkspace *workspace,
135
+ JoinType jointype,
136
+ Path *outer_path, Path *inner_path,
137
+ JoinPathExtraData *extra);
138
+ extern void final_cost_nestloop(PlannerInfo *root, NestPath *path,
139
+ JoinCostWorkspace *workspace,
140
+ JoinPathExtraData *extra);
141
+ extern void initial_cost_mergejoin(PlannerInfo *root,
142
+ JoinCostWorkspace *workspace,
143
+ JoinType jointype,
144
+ List *mergeclauses,
145
+ Path *outer_path, Path *inner_path,
146
+ List *outersortkeys, List *innersortkeys,
147
+ JoinPathExtraData *extra);
148
+ extern void final_cost_mergejoin(PlannerInfo *root, MergePath *path,
149
+ JoinCostWorkspace *workspace,
150
+ JoinPathExtraData *extra);
151
+ extern void initial_cost_hashjoin(PlannerInfo *root,
152
+ JoinCostWorkspace *workspace,
153
+ JoinType jointype,
154
+ List *hashclauses,
155
+ Path *outer_path, Path *inner_path,
156
+ JoinPathExtraData *extra,
157
+ bool parallel_hash);
158
+ extern void final_cost_hashjoin(PlannerInfo *root, HashPath *path,
159
+ JoinCostWorkspace *workspace,
160
+ JoinPathExtraData *extra);
161
+ extern void cost_gather(GatherPath *path, PlannerInfo *root,
162
+ RelOptInfo *baserel, ParamPathInfo *param_info, double *rows);
163
+ extern void cost_gather_merge(GatherMergePath *path, PlannerInfo *root,
164
+ RelOptInfo *rel, ParamPathInfo *param_info,
165
+ Cost input_startup_cost, Cost input_total_cost,
166
+ double *rows);
167
+ extern void cost_subplan(PlannerInfo *root, SubPlan *subplan, Plan *plan);
168
+ extern void cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root);
169
+ extern void cost_qual_eval_node(QualCost *cost, Node *qual, PlannerInfo *root);
170
+ extern void compute_semi_anti_join_factors(PlannerInfo *root,
171
+ RelOptInfo *joinrel,
172
+ RelOptInfo *outerrel,
173
+ RelOptInfo *innerrel,
174
+ JoinType jointype,
175
+ SpecialJoinInfo *sjinfo,
176
+ List *restrictlist,
177
+ SemiAntiJoinFactors *semifactors);
178
+ extern void set_baserel_size_estimates(PlannerInfo *root, RelOptInfo *rel);
179
+ extern double get_parameterized_baserel_size(PlannerInfo *root,
180
+ RelOptInfo *rel,
181
+ List *param_clauses);
182
+ extern double get_parameterized_joinrel_size(PlannerInfo *root,
183
+ RelOptInfo *rel,
184
+ Path *outer_path,
185
+ Path *inner_path,
186
+ SpecialJoinInfo *sjinfo,
187
+ List *restrict_clauses);
188
+ extern void set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel,
189
+ RelOptInfo *outer_rel,
190
+ RelOptInfo *inner_rel,
191
+ SpecialJoinInfo *sjinfo,
192
+ List *restrictlist);
193
+ extern void set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel);
194
+ extern void set_function_size_estimates(PlannerInfo *root, RelOptInfo *rel);
195
+ extern void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel);
196
+ extern void set_cte_size_estimates(PlannerInfo *root, RelOptInfo *rel,
197
+ double cte_rows);
198
+ extern void set_tablefunc_size_estimates(PlannerInfo *root, RelOptInfo *rel);
199
+ extern void set_namedtuplestore_size_estimates(PlannerInfo *root, RelOptInfo *rel);
200
+ extern void set_result_size_estimates(PlannerInfo *root, RelOptInfo *rel);
201
+ extern void set_foreign_size_estimates(PlannerInfo *root, RelOptInfo *rel);
202
+ extern PathTarget *set_pathtarget_cost_width(PlannerInfo *root, PathTarget *target);
203
+ extern double compute_bitmap_pages(PlannerInfo *root, RelOptInfo *baserel,
204
+ Path *bitmapqual, int loop_count, Cost *cost, double *tuple);
205
+
206
+ #endif /* COST_H */
@@ -0,0 +1,88 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * geqo.h
4
+ * prototypes for various files in optimizer/geqo
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/optimizer/geqo.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+
14
+ /* contributed by:
15
+ =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
16
+ * Martin Utesch * Institute of Automatic Control *
17
+ = = University of Mining and Technology =
18
+ * utesch@aut.tu-freiberg.de * Freiberg, Germany *
19
+ =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
20
+ */
21
+
22
+ #ifndef GEQO_H
23
+ #define GEQO_H
24
+
25
+ #include "nodes/pathnodes.h"
26
+ #include "optimizer/geqo_gene.h"
27
+
28
+
29
+ /* GEQO debug flag */
30
+ /*
31
+ #define GEQO_DEBUG
32
+ */
33
+
34
+ /* choose one recombination mechanism here */
35
+ /*
36
+ #define ERX
37
+ #define PMX
38
+ #define CX
39
+ #define PX
40
+ #define OX1
41
+ #define OX2
42
+ */
43
+ #define ERX
44
+
45
+
46
+ /*
47
+ * Configuration options
48
+ *
49
+ * If you change these, update backend/utils/misc/postgresql.conf.sample
50
+ */
51
+ extern int Geqo_effort; /* 1 .. 10, knob for adjustment of defaults */
52
+
53
+ #define DEFAULT_GEQO_EFFORT 5
54
+ #define MIN_GEQO_EFFORT 1
55
+ #define MAX_GEQO_EFFORT 10
56
+
57
+ extern int Geqo_pool_size; /* 2 .. inf, or 0 to use default */
58
+
59
+ extern int Geqo_generations; /* 1 .. inf, or 0 to use default */
60
+
61
+ extern double Geqo_selection_bias;
62
+
63
+ #define DEFAULT_GEQO_SELECTION_BIAS 2.0
64
+ #define MIN_GEQO_SELECTION_BIAS 1.5
65
+ #define MAX_GEQO_SELECTION_BIAS 2.0
66
+
67
+ extern double Geqo_seed; /* 0 .. 1 */
68
+
69
+
70
+ /*
71
+ * Private state for a GEQO run --- accessible via root->join_search_private
72
+ */
73
+ typedef struct
74
+ {
75
+ List *initial_rels; /* the base relations we are joining */
76
+ unsigned short random_state[3]; /* state for pg_erand48() */
77
+ } GeqoPrivateData;
78
+
79
+
80
+ /* routines in geqo_main.c */
81
+ extern RelOptInfo *geqo(PlannerInfo *root,
82
+ int number_of_rels, List *initial_rels);
83
+
84
+ /* routines in geqo_eval.c */
85
+ extern Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene);
86
+ extern RelOptInfo *gimme_tree(PlannerInfo *root, Gene *tour, int num_gene);
87
+
88
+ #endif /* GEQO_H */