pg_query 1.1.0 → 2.0.1

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 (478) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +163 -52
  3. data/README.md +80 -69
  4. data/Rakefile +82 -1
  5. data/ext/pg_query/extconf.rb +3 -31
  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 +988 -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 +9953 -0
  381. data/ext/pg_query/pg_query_fingerprint.c +292 -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 +437 -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 +16 -1117
  460. data/lib/pg_query/filter_columns.rb +86 -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 -200
  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 +64 -43
  471. data/lib/pg_query/version.rb +2 -2
  472. metadata +473 -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/legacy_parsetree.rb +0 -109
  478. data/lib/pg_query/node_types.rb +0 -284
@@ -0,0 +1,24 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * stringinfo_mb.h
4
+ * multibyte support for StringInfo
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/mb/stringinfo_mb.h
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef STRINGINFO_MB_H
13
+ #define STRINGINFO_MB_H
14
+
15
+
16
+ #include "lib/stringinfo.h"
17
+
18
+ /*
19
+ * Multibyte-aware StringInfo support function.
20
+ */
21
+ extern void appendStringInfoStringQuoted(StringInfo str,
22
+ const char *s, int maxlen);
23
+
24
+ #endif /* STRINGINFO_MB_H */
@@ -0,0 +1,476 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * miscadmin.h
4
+ * This file contains general postgres administration and initialization
5
+ * stuff that used to be spread out between the following files:
6
+ * globals.h global variables
7
+ * pdir.h directory path crud
8
+ * pinit.h postgres initialization
9
+ * pmod.h processing modes
10
+ * Over time, this has also become the preferred place for widely known
11
+ * resource-limitation stuff, such as work_mem and check_stack_depth().
12
+ *
13
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1994, Regents of the University of California
15
+ *
16
+ * src/include/miscadmin.h
17
+ *
18
+ * NOTES
19
+ * some of the information in this file should be moved to other files.
20
+ *
21
+ *-------------------------------------------------------------------------
22
+ */
23
+ #ifndef MISCADMIN_H
24
+ #define MISCADMIN_H
25
+
26
+ #include <signal.h>
27
+
28
+ #include "datatype/timestamp.h" /* for TimestampTz */
29
+ #include "pgtime.h" /* for pg_time_t */
30
+
31
+
32
+ #define InvalidPid (-1)
33
+
34
+
35
+ /*****************************************************************************
36
+ * System interrupt and critical section handling
37
+ *
38
+ * There are two types of interrupts that a running backend needs to accept
39
+ * without messing up its state: QueryCancel (SIGINT) and ProcDie (SIGTERM).
40
+ * In both cases, we need to be able to clean up the current transaction
41
+ * gracefully, so we can't respond to the interrupt instantaneously ---
42
+ * there's no guarantee that internal data structures would be self-consistent
43
+ * if the code is interrupted at an arbitrary instant. Instead, the signal
44
+ * handlers set flags that are checked periodically during execution.
45
+ *
46
+ * The CHECK_FOR_INTERRUPTS() macro is called at strategically located spots
47
+ * where it is normally safe to accept a cancel or die interrupt. In some
48
+ * cases, we invoke CHECK_FOR_INTERRUPTS() inside low-level subroutines that
49
+ * might sometimes be called in contexts that do *not* want to allow a cancel
50
+ * or die interrupt. The HOLD_INTERRUPTS() and RESUME_INTERRUPTS() macros
51
+ * allow code to ensure that no cancel or die interrupt will be accepted,
52
+ * even if CHECK_FOR_INTERRUPTS() gets called in a subroutine. The interrupt
53
+ * will be held off until CHECK_FOR_INTERRUPTS() is done outside any
54
+ * HOLD_INTERRUPTS() ... RESUME_INTERRUPTS() section.
55
+ *
56
+ * There is also a mechanism to prevent query cancel interrupts, while still
57
+ * allowing die interrupts: HOLD_CANCEL_INTERRUPTS() and
58
+ * RESUME_CANCEL_INTERRUPTS().
59
+ *
60
+ * Special mechanisms are used to let an interrupt be accepted when we are
61
+ * waiting for a lock or when we are waiting for command input (but, of
62
+ * course, only if the interrupt holdoff counter is zero). See the
63
+ * related code for details.
64
+ *
65
+ * A lost connection is handled similarly, although the loss of connection
66
+ * does not raise a signal, but is detected when we fail to write to the
67
+ * socket. If there was a signal for a broken connection, we could make use of
68
+ * it by setting ClientConnectionLost in the signal handler.
69
+ *
70
+ * A related, but conceptually distinct, mechanism is the "critical section"
71
+ * mechanism. A critical section not only holds off cancel/die interrupts,
72
+ * but causes any ereport(ERROR) or ereport(FATAL) to become ereport(PANIC)
73
+ * --- that is, a system-wide reset is forced. Needless to say, only really
74
+ * *critical* code should be marked as a critical section! Currently, this
75
+ * mechanism is only used for XLOG-related code.
76
+ *
77
+ *****************************************************************************/
78
+
79
+ /* in globals.c */
80
+ /* these are marked volatile because they are set by signal handlers: */
81
+ extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending;
82
+ extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending;
83
+ extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending;
84
+ extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending;
85
+ extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending;
86
+
87
+ extern PGDLLIMPORT volatile sig_atomic_t ClientConnectionLost;
88
+
89
+ /* these are marked volatile because they are examined by signal handlers: */
90
+ extern PGDLLIMPORT __thread volatile uint32 InterruptHoldoffCount;
91
+ extern PGDLLIMPORT __thread volatile uint32 QueryCancelHoldoffCount;
92
+ extern PGDLLIMPORT __thread volatile uint32 CritSectionCount;
93
+
94
+ /* in tcop/postgres.c */
95
+ extern void ProcessInterrupts(void);
96
+
97
+ #ifndef WIN32
98
+
99
+ #define CHECK_FOR_INTERRUPTS() \
100
+ do { \
101
+ if (unlikely(InterruptPending)) \
102
+ ProcessInterrupts(); \
103
+ } while(0)
104
+ #else /* WIN32 */
105
+
106
+ #define CHECK_FOR_INTERRUPTS() \
107
+ do { \
108
+ if (unlikely(UNBLOCKED_SIGNAL_QUEUE())) \
109
+ pgwin32_dispatch_queued_signals(); \
110
+ if (unlikely(InterruptPending)) \
111
+ ProcessInterrupts(); \
112
+ } while(0)
113
+ #endif /* WIN32 */
114
+
115
+
116
+ #define HOLD_INTERRUPTS() (InterruptHoldoffCount++)
117
+
118
+ #define RESUME_INTERRUPTS() \
119
+ do { \
120
+ Assert(InterruptHoldoffCount > 0); \
121
+ InterruptHoldoffCount--; \
122
+ } while(0)
123
+
124
+ #define HOLD_CANCEL_INTERRUPTS() (QueryCancelHoldoffCount++)
125
+
126
+ #define RESUME_CANCEL_INTERRUPTS() \
127
+ do { \
128
+ Assert(QueryCancelHoldoffCount > 0); \
129
+ QueryCancelHoldoffCount--; \
130
+ } while(0)
131
+
132
+ #define START_CRIT_SECTION() (CritSectionCount++)
133
+
134
+ #define END_CRIT_SECTION() \
135
+ do { \
136
+ Assert(CritSectionCount > 0); \
137
+ CritSectionCount--; \
138
+ } while(0)
139
+
140
+
141
+ /*****************************************************************************
142
+ * globals.h -- *
143
+ *****************************************************************************/
144
+
145
+ /*
146
+ * from utils/init/globals.c
147
+ */
148
+ extern PGDLLIMPORT pid_t PostmasterPid;
149
+ extern PGDLLIMPORT __thread bool IsPostmasterEnvironment;
150
+ extern PGDLLIMPORT bool IsUnderPostmaster;
151
+ extern PGDLLIMPORT bool IsBackgroundWorker;
152
+ extern PGDLLIMPORT bool IsBinaryUpgrade;
153
+
154
+ extern PGDLLIMPORT __thread bool ExitOnAnyError;
155
+
156
+ extern PGDLLIMPORT char *DataDir;
157
+ extern PGDLLIMPORT int data_directory_mode;
158
+
159
+ extern PGDLLIMPORT int NBuffers;
160
+ extern PGDLLIMPORT int MaxBackends;
161
+ extern PGDLLIMPORT int MaxConnections;
162
+ extern PGDLLIMPORT int max_worker_processes;
163
+ extern PGDLLIMPORT int max_parallel_workers;
164
+
165
+ extern PGDLLIMPORT int MyProcPid;
166
+ extern PGDLLIMPORT pg_time_t MyStartTime;
167
+ extern PGDLLIMPORT TimestampTz MyStartTimestamp;
168
+ extern PGDLLIMPORT struct Port *MyProcPort;
169
+ extern PGDLLIMPORT struct Latch *MyLatch;
170
+ extern int32 MyCancelKey;
171
+ extern int MyPMChildSlot;
172
+
173
+ extern char OutputFileName[];
174
+ extern PGDLLIMPORT char my_exec_path[];
175
+ extern char pkglib_path[];
176
+
177
+ #ifdef EXEC_BACKEND
178
+ extern char postgres_exec_path[];
179
+ #endif
180
+
181
+ /*
182
+ * done in storage/backendid.h for now.
183
+ *
184
+ * extern BackendId MyBackendId;
185
+ */
186
+ extern PGDLLIMPORT Oid MyDatabaseId;
187
+
188
+ extern PGDLLIMPORT Oid MyDatabaseTableSpace;
189
+
190
+ /*
191
+ * Date/Time Configuration
192
+ *
193
+ * DateStyle defines the output formatting choice for date/time types:
194
+ * USE_POSTGRES_DATES specifies traditional Postgres format
195
+ * USE_ISO_DATES specifies ISO-compliant format
196
+ * USE_SQL_DATES specifies Oracle/Ingres-compliant format
197
+ * USE_GERMAN_DATES specifies German-style dd.mm/yyyy
198
+ *
199
+ * DateOrder defines the field order to be assumed when reading an
200
+ * ambiguous date (anything not in YYYY-MM-DD format, with a four-digit
201
+ * year field first, is taken to be ambiguous):
202
+ * DATEORDER_YMD specifies field order yy-mm-dd
203
+ * DATEORDER_DMY specifies field order dd-mm-yy ("European" convention)
204
+ * DATEORDER_MDY specifies field order mm-dd-yy ("US" convention)
205
+ *
206
+ * In the Postgres and SQL DateStyles, DateOrder also selects output field
207
+ * order: day comes before month in DMY style, else month comes before day.
208
+ *
209
+ * The user-visible "DateStyle" run-time parameter subsumes both of these.
210
+ */
211
+
212
+ /* valid DateStyle values */
213
+ #define USE_POSTGRES_DATES 0
214
+ #define USE_ISO_DATES 1
215
+ #define USE_SQL_DATES 2
216
+ #define USE_GERMAN_DATES 3
217
+ #define USE_XSD_DATES 4
218
+
219
+ /* valid DateOrder values */
220
+ #define DATEORDER_YMD 0
221
+ #define DATEORDER_DMY 1
222
+ #define DATEORDER_MDY 2
223
+
224
+ extern PGDLLIMPORT int DateStyle;
225
+ extern PGDLLIMPORT int DateOrder;
226
+
227
+ /*
228
+ * IntervalStyles
229
+ * INTSTYLE_POSTGRES Like Postgres < 8.4 when DateStyle = 'iso'
230
+ * INTSTYLE_POSTGRES_VERBOSE Like Postgres < 8.4 when DateStyle != 'iso'
231
+ * INTSTYLE_SQL_STANDARD SQL standard interval literals
232
+ * INTSTYLE_ISO_8601 ISO-8601-basic formatted intervals
233
+ */
234
+ #define INTSTYLE_POSTGRES 0
235
+ #define INTSTYLE_POSTGRES_VERBOSE 1
236
+ #define INTSTYLE_SQL_STANDARD 2
237
+ #define INTSTYLE_ISO_8601 3
238
+
239
+ extern PGDLLIMPORT int IntervalStyle;
240
+
241
+ #define MAXTZLEN 10 /* max TZ name len, not counting tr. null */
242
+
243
+ extern bool enableFsync;
244
+ extern PGDLLIMPORT bool allowSystemTableMods;
245
+ extern PGDLLIMPORT int work_mem;
246
+ extern PGDLLIMPORT double hash_mem_multiplier;
247
+ extern PGDLLIMPORT int maintenance_work_mem;
248
+ extern PGDLLIMPORT int max_parallel_maintenance_workers;
249
+
250
+ extern int VacuumCostPageHit;
251
+ extern int VacuumCostPageMiss;
252
+ extern int VacuumCostPageDirty;
253
+ extern int VacuumCostLimit;
254
+ extern double VacuumCostDelay;
255
+
256
+ extern int64 VacuumPageHit;
257
+ extern int64 VacuumPageMiss;
258
+ extern int64 VacuumPageDirty;
259
+
260
+ extern int VacuumCostBalance;
261
+ extern bool VacuumCostActive;
262
+
263
+ extern double vacuum_cleanup_index_scale_factor;
264
+
265
+
266
+ /* in tcop/postgres.c */
267
+
268
+ #if defined(__ia64__) || defined(__ia64)
269
+ typedef struct
270
+ {
271
+ char *stack_base_ptr;
272
+ char *register_stack_base_ptr;
273
+ } pg_stack_base_t;
274
+ #else
275
+ typedef char *pg_stack_base_t;
276
+ #endif
277
+
278
+ extern pg_stack_base_t set_stack_base(void);
279
+ extern void restore_stack_base(pg_stack_base_t base);
280
+ extern void check_stack_depth(void);
281
+ extern bool stack_is_too_deep(void);
282
+
283
+ /* in tcop/utility.c */
284
+ extern void PreventCommandIfReadOnly(const char *cmdname);
285
+ extern void PreventCommandIfParallelMode(const char *cmdname);
286
+ extern void PreventCommandDuringRecovery(const char *cmdname);
287
+
288
+ /* in utils/misc/guc.c */
289
+ extern int trace_recovery_messages;
290
+ extern int trace_recovery(int trace_level);
291
+
292
+ /*****************************************************************************
293
+ * pdir.h -- *
294
+ * POSTGRES directory path definitions. *
295
+ *****************************************************************************/
296
+
297
+ /* flags to be OR'd to form sec_context */
298
+ #define SECURITY_LOCAL_USERID_CHANGE 0x0001
299
+ #define SECURITY_RESTRICTED_OPERATION 0x0002
300
+ #define SECURITY_NOFORCE_RLS 0x0004
301
+
302
+ extern char *DatabasePath;
303
+
304
+ /* now in utils/init/miscinit.c */
305
+ extern void InitPostmasterChild(void);
306
+ extern void InitStandaloneProcess(const char *argv0);
307
+ extern void SwitchToSharedLatch(void);
308
+ extern void SwitchBackToLocalLatch(void);
309
+
310
+ typedef enum BackendType
311
+ {
312
+ B_INVALID = 0,
313
+ B_AUTOVAC_LAUNCHER,
314
+ B_AUTOVAC_WORKER,
315
+ B_BACKEND,
316
+ B_BG_WORKER,
317
+ B_BG_WRITER,
318
+ B_CHECKPOINTER,
319
+ B_STARTUP,
320
+ B_WAL_RECEIVER,
321
+ B_WAL_SENDER,
322
+ B_WAL_WRITER,
323
+ B_ARCHIVER,
324
+ B_STATS_COLLECTOR,
325
+ B_LOGGER,
326
+ } BackendType;
327
+
328
+ extern BackendType MyBackendType;
329
+
330
+ extern const char *GetBackendTypeDesc(BackendType backendType);
331
+
332
+ extern void SetDatabasePath(const char *path);
333
+ extern void checkDataDir(void);
334
+ extern void SetDataDir(const char *dir);
335
+ extern void ChangeToDataDir(void);
336
+
337
+ extern char *GetUserNameFromId(Oid roleid, bool noerr);
338
+ extern Oid GetUserId(void);
339
+ extern Oid GetOuterUserId(void);
340
+ extern Oid GetSessionUserId(void);
341
+ extern Oid GetAuthenticatedUserId(void);
342
+ extern void GetUserIdAndSecContext(Oid *userid, int *sec_context);
343
+ extern void SetUserIdAndSecContext(Oid userid, int sec_context);
344
+ extern bool InLocalUserIdChange(void);
345
+ extern bool InSecurityRestrictedOperation(void);
346
+ extern bool InNoForceRLSOperation(void);
347
+ extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
348
+ extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
349
+ extern void InitializeSessionUserId(const char *rolename, Oid useroid);
350
+ extern void InitializeSessionUserIdStandalone(void);
351
+ extern void SetSessionAuthorization(Oid userid, bool is_superuser);
352
+ extern Oid GetCurrentRoleId(void);
353
+ extern void SetCurrentRoleId(Oid roleid, bool is_superuser);
354
+
355
+ /* in utils/misc/superuser.c */
356
+ extern bool superuser(void); /* current user is superuser */
357
+ extern bool superuser_arg(Oid roleid); /* given user is superuser */
358
+
359
+
360
+ /*****************************************************************************
361
+ * pmod.h -- *
362
+ * POSTGRES processing mode definitions. *
363
+ *****************************************************************************/
364
+
365
+ /*
366
+ * Description:
367
+ * There are three processing modes in POSTGRES. They are
368
+ * BootstrapProcessing or "bootstrap," InitProcessing or
369
+ * "initialization," and NormalProcessing or "normal."
370
+ *
371
+ * The first two processing modes are used during special times. When the
372
+ * system state indicates bootstrap processing, transactions are all given
373
+ * transaction id "one" and are consequently guaranteed to commit. This mode
374
+ * is used during the initial generation of template databases.
375
+ *
376
+ * Initialization mode: used while starting a backend, until all normal
377
+ * initialization is complete. Some code behaves differently when executed
378
+ * in this mode to enable system bootstrapping.
379
+ *
380
+ * If a POSTGRES backend process is in normal mode, then all code may be
381
+ * executed normally.
382
+ */
383
+
384
+ typedef enum ProcessingMode
385
+ {
386
+ BootstrapProcessing, /* bootstrap creation of template database */
387
+ InitProcessing, /* initializing system */
388
+ NormalProcessing /* normal processing */
389
+ } ProcessingMode;
390
+
391
+ extern ProcessingMode Mode;
392
+
393
+ #define IsBootstrapProcessingMode() (Mode == BootstrapProcessing)
394
+ #define IsInitProcessingMode() (Mode == InitProcessing)
395
+ #define IsNormalProcessingMode() (Mode == NormalProcessing)
396
+
397
+ #define GetProcessingMode() Mode
398
+
399
+ #define SetProcessingMode(mode) \
400
+ do { \
401
+ AssertArg((mode) == BootstrapProcessing || \
402
+ (mode) == InitProcessing || \
403
+ (mode) == NormalProcessing); \
404
+ Mode = (mode); \
405
+ } while(0)
406
+
407
+
408
+ /*
409
+ * Auxiliary-process type identifiers. These used to be in bootstrap.h
410
+ * but it seems saner to have them here, with the ProcessingMode stuff.
411
+ * The MyAuxProcType global is defined and set in bootstrap.c.
412
+ */
413
+
414
+ typedef enum
415
+ {
416
+ NotAnAuxProcess = -1,
417
+ CheckerProcess = 0,
418
+ BootstrapProcess,
419
+ StartupProcess,
420
+ BgWriterProcess,
421
+ CheckpointerProcess,
422
+ WalWriterProcess,
423
+ WalReceiverProcess,
424
+
425
+ NUM_AUXPROCTYPES /* Must be last! */
426
+ } AuxProcType;
427
+
428
+ extern AuxProcType MyAuxProcType;
429
+
430
+ #define AmBootstrapProcess() (MyAuxProcType == BootstrapProcess)
431
+ #define AmStartupProcess() (MyAuxProcType == StartupProcess)
432
+ #define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
433
+ #define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess)
434
+ #define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess)
435
+ #define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess)
436
+
437
+
438
+ /*****************************************************************************
439
+ * pinit.h -- *
440
+ * POSTGRES initialization and cleanup definitions. *
441
+ *****************************************************************************/
442
+
443
+ /* in utils/init/postinit.c */
444
+ extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
445
+ extern void InitializeMaxBackends(void);
446
+ extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username,
447
+ Oid useroid, char *out_dbname, bool override_allow_connections);
448
+ extern void BaseInit(void);
449
+
450
+ /* in utils/init/miscinit.c */
451
+ extern bool IgnoreSystemIndexes;
452
+ extern PGDLLIMPORT bool process_shared_preload_libraries_in_progress;
453
+ extern char *session_preload_libraries_string;
454
+ extern char *shared_preload_libraries_string;
455
+ extern char *local_preload_libraries_string;
456
+
457
+ extern void CreateDataDirLockFile(bool amPostmaster);
458
+ extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster,
459
+ const char *socketDir);
460
+ extern void TouchSocketLockFiles(void);
461
+ extern void AddToDataDirLockFile(int target_line, const char *str);
462
+ extern bool RecheckDataDirLockFile(void);
463
+ extern void ValidatePgVersion(const char *path);
464
+ extern void process_shared_preload_libraries(void);
465
+ extern void process_session_preload_libraries(void);
466
+ extern void pg_bindtextdomain(const char *domain);
467
+ extern bool has_rolreplication(Oid roleid);
468
+
469
+ /* in access/transam/xlog.c */
470
+ extern bool BackupInProgress(void);
471
+ extern void CancelBackup(void);
472
+
473
+ /* in executor/nodeHash.c */
474
+ extern int get_hash_mem(void);
475
+
476
+ #endif /* MISCADMIN_H */