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,48 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * fmgrtab.h
4
+ * The function manager's table of internal functions.
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/utils/fmgrtab.h
10
+ *
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef FMGRTAB_H
14
+ #define FMGRTAB_H
15
+
16
+ #include "access/transam.h"
17
+ #include "fmgr.h"
18
+
19
+
20
+ /*
21
+ * This table stores info about all the built-in functions (ie, functions
22
+ * that are compiled into the Postgres executable).
23
+ */
24
+
25
+ typedef struct
26
+ {
27
+ Oid foid; /* OID of the function */
28
+ short nargs; /* 0..FUNC_MAX_ARGS, or -1 if variable count */
29
+ bool strict; /* T if function is "strict" */
30
+ bool retset; /* T if function returns a set */
31
+ const char *funcName; /* C name of the function */
32
+ PGFunction func; /* pointer to compiled function */
33
+ } FmgrBuiltin;
34
+
35
+ extern const FmgrBuiltin fmgr_builtins[];
36
+
37
+ extern const int fmgr_nbuiltins; /* number of entries in table */
38
+
39
+ extern const Oid fmgr_last_builtin_oid; /* highest function OID in table */
40
+
41
+ /*
42
+ * Mapping from a builtin function's OID to its index in the fmgr_builtins
43
+ * array. This is indexed from 0 through fmgr_last_builtin_oid.
44
+ */
45
+ #define InvalidOidBuiltinMapping PG_UINT16_MAX
46
+ extern const uint16 fmgr_builtin_oid_index[];
47
+
48
+ #endif /* FMGRTAB_H */
@@ -0,0 +1,443 @@
1
+ /*--------------------------------------------------------------------
2
+ * guc.h
3
+ *
4
+ * External declarations pertaining to backend/utils/misc/guc.c and
5
+ * backend/utils/misc/guc-file.l
6
+ *
7
+ * Copyright (c) 2000-2020, PostgreSQL Global Development Group
8
+ * Written by Peter Eisentraut <peter_e@gmx.net>.
9
+ *
10
+ * src/include/utils/guc.h
11
+ *--------------------------------------------------------------------
12
+ */
13
+ #ifndef GUC_H
14
+ #define GUC_H
15
+
16
+ #include "nodes/parsenodes.h"
17
+ #include "tcop/dest.h"
18
+ #include "utils/array.h"
19
+
20
+
21
+ /* upper limit for GUC variables measured in kilobytes of memory */
22
+ /* note that various places assume the byte size fits in a "long" variable */
23
+ #if SIZEOF_SIZE_T > 4 && SIZEOF_LONG > 4
24
+ #define MAX_KILOBYTES INT_MAX
25
+ #else
26
+ #define MAX_KILOBYTES (INT_MAX / 1024)
27
+ #endif
28
+
29
+ /*
30
+ * Automatic configuration file name for ALTER SYSTEM.
31
+ * This file will be used to store values of configuration parameters
32
+ * set by ALTER SYSTEM command.
33
+ */
34
+ #define PG_AUTOCONF_FILENAME "postgresql.auto.conf"
35
+
36
+ /*
37
+ * Certain options can only be set at certain times. The rules are
38
+ * like this:
39
+ *
40
+ * INTERNAL options cannot be set by the user at all, but only through
41
+ * internal processes ("server_version" is an example). These are GUC
42
+ * variables only so they can be shown by SHOW, etc.
43
+ *
44
+ * POSTMASTER options can only be set when the postmaster starts,
45
+ * either from the configuration file or the command line.
46
+ *
47
+ * SIGHUP options can only be set at postmaster startup or by changing
48
+ * the configuration file and sending the HUP signal to the postmaster
49
+ * or a backend process. (Notice that the signal receipt will not be
50
+ * evaluated immediately. The postmaster and the backend check it at a
51
+ * certain point in their main loop. It's safer to wait than to read a
52
+ * file asynchronously.)
53
+ *
54
+ * BACKEND and SU_BACKEND options can only be set at postmaster startup,
55
+ * from the configuration file, or by client request in the connection
56
+ * startup packet (e.g., from libpq's PGOPTIONS variable). SU_BACKEND
57
+ * options can be set from the startup packet only when the user is a
58
+ * superuser. Furthermore, an already-started backend will ignore changes
59
+ * to such an option in the configuration file. The idea is that these
60
+ * options are fixed for a given backend once it's started, but they can
61
+ * vary across backends.
62
+ *
63
+ * SUSET options can be set at postmaster startup, with the SIGHUP
64
+ * mechanism, or from the startup packet or SQL if you're a superuser.
65
+ *
66
+ * USERSET options can be set by anyone any time.
67
+ */
68
+ typedef enum
69
+ {
70
+ PGC_INTERNAL,
71
+ PGC_POSTMASTER,
72
+ PGC_SIGHUP,
73
+ PGC_SU_BACKEND,
74
+ PGC_BACKEND,
75
+ PGC_SUSET,
76
+ PGC_USERSET
77
+ } GucContext;
78
+
79
+ /*
80
+ * The following type records the source of the current setting. A
81
+ * new setting can only take effect if the previous setting had the
82
+ * same or lower level. (E.g, changing the config file doesn't
83
+ * override the postmaster command line.) Tracking the source allows us
84
+ * to process sources in any convenient order without affecting results.
85
+ * Sources <= PGC_S_OVERRIDE will set the default used by RESET, as well
86
+ * as the current value. Note that source == PGC_S_OVERRIDE should be
87
+ * used when setting a PGC_INTERNAL option.
88
+ *
89
+ * PGC_S_INTERACTIVE isn't actually a source value, but is the
90
+ * dividing line between "interactive" and "non-interactive" sources for
91
+ * error reporting purposes.
92
+ *
93
+ * PGC_S_TEST is used when testing values to be used later ("doit" will always
94
+ * be false, so this never gets stored as the actual source of any value).
95
+ * For example, ALTER DATABASE/ROLE tests proposed per-database or per-user
96
+ * defaults this way, and CREATE FUNCTION tests proposed function SET clauses
97
+ * this way. This is an interactive case, but it needs its own source value
98
+ * because some assign hooks need to make different validity checks in this
99
+ * case. In particular, references to nonexistent database objects generally
100
+ * shouldn't throw hard errors in this case, at most NOTICEs, since the
101
+ * objects might exist by the time the setting is used for real.
102
+ *
103
+ * NB: see GucSource_Names in guc.c if you change this.
104
+ */
105
+ typedef enum
106
+ {
107
+ PGC_S_DEFAULT, /* hard-wired default ("boot_val") */
108
+ PGC_S_DYNAMIC_DEFAULT, /* default computed during initialization */
109
+ PGC_S_ENV_VAR, /* postmaster environment variable */
110
+ PGC_S_FILE, /* postgresql.conf */
111
+ PGC_S_ARGV, /* postmaster command line */
112
+ PGC_S_GLOBAL, /* global in-database setting */
113
+ PGC_S_DATABASE, /* per-database setting */
114
+ PGC_S_USER, /* per-user setting */
115
+ PGC_S_DATABASE_USER, /* per-user-and-database setting */
116
+ PGC_S_CLIENT, /* from client connection request */
117
+ PGC_S_OVERRIDE, /* special case to forcibly set default */
118
+ PGC_S_INTERACTIVE, /* dividing line for error reporting */
119
+ PGC_S_TEST, /* test per-database or per-user setting */
120
+ PGC_S_SESSION /* SET command */
121
+ } GucSource;
122
+
123
+ /*
124
+ * Parsing the configuration file(s) will return a list of name-value pairs
125
+ * with source location info. We also abuse this data structure to carry
126
+ * error reports about the config files. An entry reporting an error will
127
+ * have errmsg != NULL, and might have NULLs for name, value, and/or filename.
128
+ *
129
+ * If "ignore" is true, don't attempt to apply the item (it might be an error
130
+ * report, or an item we determined to be duplicate). "applied" is set true
131
+ * if we successfully applied, or could have applied, the setting.
132
+ */
133
+ typedef struct ConfigVariable
134
+ {
135
+ char *name;
136
+ char *value;
137
+ char *errmsg;
138
+ char *filename;
139
+ int sourceline;
140
+ bool ignore;
141
+ bool applied;
142
+ struct ConfigVariable *next;
143
+ } ConfigVariable;
144
+
145
+ extern bool ParseConfigFile(const char *config_file, bool strict,
146
+ const char *calling_file, int calling_lineno,
147
+ int depth, int elevel,
148
+ ConfigVariable **head_p, ConfigVariable **tail_p);
149
+ extern bool ParseConfigFp(FILE *fp, const char *config_file,
150
+ int depth, int elevel,
151
+ ConfigVariable **head_p, ConfigVariable **tail_p);
152
+ extern bool ParseConfigDirectory(const char *includedir,
153
+ const char *calling_file, int calling_lineno,
154
+ int depth, int elevel,
155
+ ConfigVariable **head_p,
156
+ ConfigVariable **tail_p);
157
+ extern void FreeConfigVariables(ConfigVariable *list);
158
+
159
+ /*
160
+ * The possible values of an enum variable are specified by an array of
161
+ * name-value pairs. The "hidden" flag means the value is accepted but
162
+ * won't be displayed when guc.c is asked for a list of acceptable values.
163
+ */
164
+ struct config_enum_entry
165
+ {
166
+ const char *name;
167
+ int val;
168
+ bool hidden;
169
+ };
170
+
171
+ /*
172
+ * Signatures for per-variable check/assign/show hook functions
173
+ */
174
+ typedef bool (*GucBoolCheckHook) (bool *newval, void **extra, GucSource source);
175
+ typedef bool (*GucIntCheckHook) (int *newval, void **extra, GucSource source);
176
+ typedef bool (*GucRealCheckHook) (double *newval, void **extra, GucSource source);
177
+ typedef bool (*GucStringCheckHook) (char **newval, void **extra, GucSource source);
178
+ typedef bool (*GucEnumCheckHook) (int *newval, void **extra, GucSource source);
179
+
180
+ typedef void (*GucBoolAssignHook) (bool newval, void *extra);
181
+ typedef void (*GucIntAssignHook) (int newval, void *extra);
182
+ typedef void (*GucRealAssignHook) (double newval, void *extra);
183
+ typedef void (*GucStringAssignHook) (const char *newval, void *extra);
184
+ typedef void (*GucEnumAssignHook) (int newval, void *extra);
185
+
186
+ typedef const char *(*GucShowHook) (void);
187
+
188
+ /*
189
+ * Miscellaneous
190
+ */
191
+ typedef enum
192
+ {
193
+ /* Types of set_config_option actions */
194
+ GUC_ACTION_SET, /* regular SET command */
195
+ GUC_ACTION_LOCAL, /* SET LOCAL command */
196
+ GUC_ACTION_SAVE /* function SET option, or temp assignment */
197
+ } GucAction;
198
+
199
+ #define GUC_QUALIFIER_SEPARATOR '.'
200
+
201
+ /*
202
+ * bit values in "flags" of a GUC variable
203
+ */
204
+ #define GUC_LIST_INPUT 0x0001 /* input can be list format */
205
+ #define GUC_LIST_QUOTE 0x0002 /* double-quote list elements */
206
+ #define GUC_NO_SHOW_ALL 0x0004 /* exclude from SHOW ALL */
207
+ #define GUC_NO_RESET_ALL 0x0008 /* exclude from RESET ALL */
208
+ #define GUC_REPORT 0x0010 /* auto-report changes to client */
209
+ #define GUC_NOT_IN_SAMPLE 0x0020 /* not in postgresql.conf.sample */
210
+ #define GUC_DISALLOW_IN_FILE 0x0040 /* can't set in postgresql.conf */
211
+ #define GUC_CUSTOM_PLACEHOLDER 0x0080 /* placeholder for custom variable */
212
+ #define GUC_SUPERUSER_ONLY 0x0100 /* show only to superusers */
213
+ #define GUC_IS_NAME 0x0200 /* limit string to NAMEDATALEN-1 */
214
+ #define GUC_NOT_WHILE_SEC_REST 0x0400 /* can't set if security restricted */
215
+ #define GUC_DISALLOW_IN_AUTO_FILE 0x0800 /* can't set in
216
+ * PG_AUTOCONF_FILENAME */
217
+
218
+ #define GUC_UNIT_KB 0x1000 /* value is in kilobytes */
219
+ #define GUC_UNIT_BLOCKS 0x2000 /* value is in blocks */
220
+ #define GUC_UNIT_XBLOCKS 0x3000 /* value is in xlog blocks */
221
+ #define GUC_UNIT_MB 0x4000 /* value is in megabytes */
222
+ #define GUC_UNIT_BYTE 0x8000 /* value is in bytes */
223
+ #define GUC_UNIT_MEMORY 0xF000 /* mask for size-related units */
224
+
225
+ #define GUC_UNIT_MS 0x10000 /* value is in milliseconds */
226
+ #define GUC_UNIT_S 0x20000 /* value is in seconds */
227
+ #define GUC_UNIT_MIN 0x30000 /* value is in minutes */
228
+ #define GUC_UNIT_TIME 0xF0000 /* mask for time-related units */
229
+
230
+ #define GUC_EXPLAIN 0x100000 /* include in explain */
231
+
232
+ #define GUC_UNIT (GUC_UNIT_MEMORY | GUC_UNIT_TIME)
233
+
234
+
235
+ /* GUC vars that are actually declared in guc.c, rather than elsewhere */
236
+ extern bool Debug_print_plan;
237
+ extern bool Debug_print_parse;
238
+ extern bool Debug_print_rewritten;
239
+ extern bool Debug_pretty_print;
240
+
241
+ extern bool log_parser_stats;
242
+ extern bool log_planner_stats;
243
+ extern bool log_executor_stats;
244
+ extern bool log_statement_stats;
245
+ extern bool log_btree_build_stats;
246
+
247
+ extern PGDLLIMPORT __thread bool check_function_bodies;
248
+ extern bool session_auth_is_superuser;
249
+
250
+ extern bool log_duration;
251
+ extern int log_parameter_max_length;
252
+ extern int log_parameter_max_length_on_error;
253
+ extern int log_min_error_statement;
254
+ extern PGDLLIMPORT __thread int log_min_messages;
255
+ extern PGDLLIMPORT __thread int client_min_messages;
256
+ extern int log_min_duration_sample;
257
+ extern int log_min_duration_statement;
258
+ extern int log_temp_files;
259
+ extern double log_statement_sample_rate;
260
+ extern double log_xact_sample_rate;
261
+ extern __thread char *backtrace_functions;
262
+ extern __thread char *backtrace_symbol_list;
263
+
264
+ extern int temp_file_limit;
265
+
266
+ extern int num_temp_buffers;
267
+
268
+ extern char *cluster_name;
269
+ extern PGDLLIMPORT char *ConfigFileName;
270
+ extern char *HbaFileName;
271
+ extern char *IdentFileName;
272
+ extern char *external_pid_file;
273
+
274
+ extern PGDLLIMPORT char *application_name;
275
+
276
+ extern int tcp_keepalives_idle;
277
+ extern int tcp_keepalives_interval;
278
+ extern int tcp_keepalives_count;
279
+ extern int tcp_user_timeout;
280
+
281
+ #ifdef TRACE_SORT
282
+ extern bool trace_sort;
283
+ #endif
284
+
285
+ /*
286
+ * Functions exported by guc.c
287
+ */
288
+ extern void SetConfigOption(const char *name, const char *value,
289
+ GucContext context, GucSource source);
290
+
291
+ extern void DefineCustomBoolVariable(const char *name,
292
+ const char *short_desc,
293
+ const char *long_desc,
294
+ bool *valueAddr,
295
+ bool bootValue,
296
+ GucContext context,
297
+ int flags,
298
+ GucBoolCheckHook check_hook,
299
+ GucBoolAssignHook assign_hook,
300
+ GucShowHook show_hook);
301
+
302
+ extern void DefineCustomIntVariable(const char *name,
303
+ const char *short_desc,
304
+ const char *long_desc,
305
+ int *valueAddr,
306
+ int bootValue,
307
+ int minValue,
308
+ int maxValue,
309
+ GucContext context,
310
+ int flags,
311
+ GucIntCheckHook check_hook,
312
+ GucIntAssignHook assign_hook,
313
+ GucShowHook show_hook);
314
+
315
+ extern void DefineCustomRealVariable(const char *name,
316
+ const char *short_desc,
317
+ const char *long_desc,
318
+ double *valueAddr,
319
+ double bootValue,
320
+ double minValue,
321
+ double maxValue,
322
+ GucContext context,
323
+ int flags,
324
+ GucRealCheckHook check_hook,
325
+ GucRealAssignHook assign_hook,
326
+ GucShowHook show_hook);
327
+
328
+ extern void DefineCustomStringVariable(const char *name,
329
+ const char *short_desc,
330
+ const char *long_desc,
331
+ char **valueAddr,
332
+ const char *bootValue,
333
+ GucContext context,
334
+ int flags,
335
+ GucStringCheckHook check_hook,
336
+ GucStringAssignHook assign_hook,
337
+ GucShowHook show_hook);
338
+
339
+ extern void DefineCustomEnumVariable(const char *name,
340
+ const char *short_desc,
341
+ const char *long_desc,
342
+ int *valueAddr,
343
+ int bootValue,
344
+ const struct config_enum_entry *options,
345
+ GucContext context,
346
+ int flags,
347
+ GucEnumCheckHook check_hook,
348
+ GucEnumAssignHook assign_hook,
349
+ GucShowHook show_hook);
350
+
351
+ extern void EmitWarningsOnPlaceholders(const char *className);
352
+
353
+ extern const char *GetConfigOption(const char *name, bool missing_ok,
354
+ bool restrict_privileged);
355
+ extern const char *GetConfigOptionResetString(const char *name);
356
+ extern int GetConfigOptionFlags(const char *name, bool missing_ok);
357
+ extern void ProcessConfigFile(GucContext context);
358
+ extern void InitializeGUCOptions(void);
359
+ extern bool SelectConfigFiles(const char *userDoption, const char *progname);
360
+ extern void ResetAllOptions(void);
361
+ extern void AtStart_GUC(void);
362
+ extern int NewGUCNestLevel(void);
363
+ extern void AtEOXact_GUC(bool isCommit, int nestLevel);
364
+ extern void BeginReportingGUCOptions(void);
365
+ extern void ParseLongOption(const char *string, char **name, char **value);
366
+ extern bool parse_int(const char *value, int *result, int flags,
367
+ const char **hintmsg);
368
+ extern bool parse_real(const char *value, double *result, int flags,
369
+ const char **hintmsg);
370
+ extern int set_config_option(const char *name, const char *value,
371
+ GucContext context, GucSource source,
372
+ GucAction action, bool changeVal, int elevel,
373
+ bool is_reload);
374
+ extern void AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt);
375
+ extern char *GetConfigOptionByName(const char *name, const char **varname,
376
+ bool missing_ok);
377
+ extern void GetConfigOptionByNum(int varnum, const char **values, bool *noshow);
378
+ extern int GetNumConfigOptions(void);
379
+
380
+ extern void SetPGVariable(const char *name, List *args, bool is_local);
381
+ extern void GetPGVariable(const char *name, DestReceiver *dest);
382
+ extern TupleDesc GetPGVariableResultDesc(const char *name);
383
+
384
+ extern void ExecSetVariableStmt(VariableSetStmt *stmt, bool isTopLevel);
385
+ extern char *ExtractSetVariableArgs(VariableSetStmt *stmt);
386
+
387
+ extern void ProcessGUCArray(ArrayType *array,
388
+ GucContext context, GucSource source, GucAction action);
389
+ extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *value);
390
+ extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name);
391
+ extern ArrayType *GUCArrayReset(ArrayType *array);
392
+
393
+ #ifdef EXEC_BACKEND
394
+ extern void write_nondefault_variables(GucContext context);
395
+ extern void read_nondefault_variables(void);
396
+ #endif
397
+
398
+ /* GUC serialization */
399
+ extern Size EstimateGUCStateSpace(void);
400
+ extern void SerializeGUCState(Size maxsize, char *start_address);
401
+ extern void RestoreGUCState(void *gucstate);
402
+
403
+ /* Support for messages reported from GUC check hooks */
404
+
405
+ extern PGDLLIMPORT char *GUC_check_errmsg_string;
406
+ extern PGDLLIMPORT char *GUC_check_errdetail_string;
407
+ extern PGDLLIMPORT char *GUC_check_errhint_string;
408
+
409
+ extern void GUC_check_errcode(int sqlerrcode);
410
+
411
+ #define GUC_check_errmsg \
412
+ pre_format_elog_string(errno, TEXTDOMAIN), \
413
+ GUC_check_errmsg_string = format_elog_string
414
+
415
+ #define GUC_check_errdetail \
416
+ pre_format_elog_string(errno, TEXTDOMAIN), \
417
+ GUC_check_errdetail_string = format_elog_string
418
+
419
+ #define GUC_check_errhint \
420
+ pre_format_elog_string(errno, TEXTDOMAIN), \
421
+ GUC_check_errhint_string = format_elog_string
422
+
423
+
424
+ /*
425
+ * The following functions are not in guc.c, but are declared here to avoid
426
+ * having to include guc.h in some widely used headers that it really doesn't
427
+ * belong in.
428
+ */
429
+
430
+ /* in commands/tablespace.c */
431
+ extern bool check_default_tablespace(char **newval, void **extra, GucSource source);
432
+ extern bool check_temp_tablespaces(char **newval, void **extra, GucSource source);
433
+ extern void assign_temp_tablespaces(const char *newval, void *extra);
434
+
435
+ /* in catalog/namespace.c */
436
+ extern bool check_search_path(char **newval, void **extra, GucSource source);
437
+ extern void assign_search_path(const char *newval, void *extra);
438
+
439
+ /* in access/transam/xlog.c */
440
+ extern bool check_wal_buffers(int *newval, void **extra, GucSource source);
441
+ extern void assign_xlog_sync_method(int new_sync_method, void *extra);
442
+
443
+ #endif /* GUC_H */