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,74 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * postgres_ext.h
4
+ *
5
+ * This file contains declarations of things that are visible everywhere
6
+ * in PostgreSQL *and* are visible to clients of frontend interface libraries.
7
+ * For example, the Oid type is part of the API of libpq and other libraries.
8
+ *
9
+ * Declarations which are specific to a particular interface should
10
+ * go in the header file for that interface (such as libpq-fe.h). This
11
+ * file is only for fundamental Postgres declarations.
12
+ *
13
+ * User-written C functions don't count as "external to Postgres."
14
+ * Those function much as local modifications to the backend itself, and
15
+ * use header files that are otherwise internal to Postgres to interface
16
+ * with the backend.
17
+ *
18
+ * src/include/postgres_ext.h
19
+ *
20
+ *-------------------------------------------------------------------------
21
+ */
22
+
23
+ #ifndef POSTGRES_EXT_H
24
+ #define POSTGRES_EXT_H
25
+
26
+ #include "pg_config_ext.h"
27
+
28
+ /*
29
+ * Object ID is a fundamental type in Postgres.
30
+ */
31
+ typedef unsigned int Oid;
32
+
33
+ #ifdef __cplusplus
34
+ #define InvalidOid (Oid(0))
35
+ #else
36
+ #define InvalidOid ((Oid) 0)
37
+ #endif
38
+
39
+ #define OID_MAX UINT_MAX
40
+ /* you will need to include <limits.h> to use the above #define */
41
+
42
+ #define atooid(x) ((Oid) strtoul((x), NULL, 10))
43
+ /* the above needs <stdlib.h> */
44
+
45
+
46
+ /* Define a signed 64-bit integer type for use in client API declarations. */
47
+ typedef PG_INT64_TYPE pg_int64;
48
+
49
+
50
+ /*
51
+ * Identifiers of error message fields. Kept here to keep common
52
+ * between frontend and backend, and also to export them to libpq
53
+ * applications.
54
+ */
55
+ #define PG_DIAG_SEVERITY 'S'
56
+ #define PG_DIAG_SEVERITY_NONLOCALIZED 'V'
57
+ #define PG_DIAG_SQLSTATE 'C'
58
+ #define PG_DIAG_MESSAGE_PRIMARY 'M'
59
+ #define PG_DIAG_MESSAGE_DETAIL 'D'
60
+ #define PG_DIAG_MESSAGE_HINT 'H'
61
+ #define PG_DIAG_STATEMENT_POSITION 'P'
62
+ #define PG_DIAG_INTERNAL_POSITION 'p'
63
+ #define PG_DIAG_INTERNAL_QUERY 'q'
64
+ #define PG_DIAG_CONTEXT 'W'
65
+ #define PG_DIAG_SCHEMA_NAME 's'
66
+ #define PG_DIAG_TABLE_NAME 't'
67
+ #define PG_DIAG_COLUMN_NAME 'c'
68
+ #define PG_DIAG_DATATYPE_NAME 'd'
69
+ #define PG_DIAG_CONSTRAINT_NAME 'n'
70
+ #define PG_DIAG_SOURCE_FILE 'F'
71
+ #define PG_DIAG_SOURCE_LINE 'L'
72
+ #define PG_DIAG_SOURCE_FUNCTION 'R'
73
+
74
+ #endif /* POSTGRES_EXT_H */
@@ -0,0 +1,83 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * autovacuum.h
4
+ * header file for integrated autovacuum daemon
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/postmaster/autovacuum.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef AUTOVACUUM_H
15
+ #define AUTOVACUUM_H
16
+
17
+ #include "storage/block.h"
18
+
19
+ /*
20
+ * Other processes can request specific work from autovacuum, identified by
21
+ * AutoVacuumWorkItem elements.
22
+ */
23
+ typedef enum
24
+ {
25
+ AVW_BRINSummarizeRange
26
+ } AutoVacuumWorkItemType;
27
+
28
+
29
+ /* GUC variables */
30
+ extern bool autovacuum_start_daemon;
31
+ extern int autovacuum_max_workers;
32
+ extern int autovacuum_work_mem;
33
+ extern int autovacuum_naptime;
34
+ extern int autovacuum_vac_thresh;
35
+ extern double autovacuum_vac_scale;
36
+ extern int autovacuum_vac_ins_thresh;
37
+ extern double autovacuum_vac_ins_scale;
38
+ extern int autovacuum_anl_thresh;
39
+ extern double autovacuum_anl_scale;
40
+ extern int autovacuum_freeze_max_age;
41
+ extern int autovacuum_multixact_freeze_max_age;
42
+ extern double autovacuum_vac_cost_delay;
43
+ extern int autovacuum_vac_cost_limit;
44
+
45
+ /* autovacuum launcher PID, only valid when worker is shutting down */
46
+ extern int AutovacuumLauncherPid;
47
+
48
+ extern int Log_autovacuum_min_duration;
49
+
50
+ /* Status inquiry functions */
51
+ extern bool AutoVacuumingActive(void);
52
+ extern bool IsAutoVacuumLauncherProcess(void);
53
+ extern bool IsAutoVacuumWorkerProcess(void);
54
+
55
+ #define IsAnyAutoVacuumProcess() \
56
+ (IsAutoVacuumLauncherProcess() || IsAutoVacuumWorkerProcess())
57
+
58
+ /* Functions to start autovacuum process, called from postmaster */
59
+ extern void autovac_init(void);
60
+ extern int StartAutoVacLauncher(void);
61
+ extern int StartAutoVacWorker(void);
62
+
63
+ /* called from postmaster when a worker could not be forked */
64
+ extern void AutoVacWorkerFailed(void);
65
+
66
+ /* autovacuum cost-delay balancer */
67
+ extern void AutoVacuumUpdateDelay(void);
68
+
69
+ #ifdef EXEC_BACKEND
70
+ extern void AutoVacLauncherMain(int argc, char *argv[]) pg_attribute_noreturn();
71
+ extern void AutoVacWorkerMain(int argc, char *argv[]) pg_attribute_noreturn();
72
+ extern void AutovacuumWorkerIAm(void);
73
+ extern void AutovacuumLauncherIAm(void);
74
+ #endif
75
+
76
+ extern bool AutoVacuumRequestWork(AutoVacuumWorkItemType type,
77
+ Oid relationId, BlockNumber blkno);
78
+
79
+ /* shared memory stuff */
80
+ extern Size AutoVacuumShmemSize(void);
81
+ extern void AutoVacuumShmemInit(void);
82
+
83
+ #endif /* AUTOVACUUM_H */
@@ -0,0 +1,161 @@
1
+ /*--------------------------------------------------------------------
2
+ * bgworker.h
3
+ * POSTGRES pluggable background workers interface
4
+ *
5
+ * A background worker is a process able to run arbitrary, user-supplied code,
6
+ * including normal transactions.
7
+ *
8
+ * Any external module loaded via shared_preload_libraries can register a
9
+ * worker. Workers can also be registered dynamically at runtime. In either
10
+ * case, the worker process is forked from the postmaster and runs the
11
+ * user-supplied "main" function. This code may connect to a database and
12
+ * run transactions. Workers can remain active indefinitely, but will be
13
+ * terminated if a shutdown or crash occurs.
14
+ *
15
+ * If the fork() call fails in the postmaster, it will try again later. Note
16
+ * that the failure can only be transient (fork failure due to high load,
17
+ * memory pressure, too many processes, etc); more permanent problems, like
18
+ * failure to connect to a database, are detected later in the worker and dealt
19
+ * with just by having the worker exit normally. A worker which exits with
20
+ * a return code of 0 will never be restarted and will be removed from worker
21
+ * list. A worker which exits with a return code of 1 will be restarted after
22
+ * the configured restart interval (unless that interval is BGW_NEVER_RESTART).
23
+ * The TerminateBackgroundWorker() function can be used to terminate a
24
+ * dynamically registered background worker; the worker will be sent a SIGTERM
25
+ * and will not be restarted after it exits. Whenever the postmaster knows
26
+ * that a worker will not be restarted, it unregisters the worker, freeing up
27
+ * that worker's slot for use by a new worker.
28
+ *
29
+ * Note that there might be more than one worker in a database concurrently,
30
+ * and the same module may request more than one worker running the same (or
31
+ * different) code.
32
+ *
33
+ *
34
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
35
+ * Portions Copyright (c) 1994, Regents of the University of California
36
+ *
37
+ * IDENTIFICATION
38
+ * src/include/postmaster/bgworker.h
39
+ *--------------------------------------------------------------------
40
+ */
41
+ #ifndef BGWORKER_H
42
+ #define BGWORKER_H
43
+
44
+ /*---------------------------------------------------------------------
45
+ * External module API.
46
+ *---------------------------------------------------------------------
47
+ */
48
+
49
+ /*
50
+ * Pass this flag to have your worker be able to connect to shared memory.
51
+ */
52
+ #define BGWORKER_SHMEM_ACCESS 0x0001
53
+
54
+ /*
55
+ * This flag means the bgworker requires a database connection. The connection
56
+ * is not established automatically; the worker must establish it later.
57
+ * It requires that BGWORKER_SHMEM_ACCESS was passed too.
58
+ */
59
+ #define BGWORKER_BACKEND_DATABASE_CONNECTION 0x0002
60
+
61
+ /*
62
+ * This class is used internally for parallel queries, to keep track of the
63
+ * number of active parallel workers and make sure we never launch more than
64
+ * max_parallel_workers parallel workers at the same time. Third party
65
+ * background workers should not use this class.
66
+ */
67
+ #define BGWORKER_CLASS_PARALLEL 0x0010
68
+ /* add additional bgworker classes here */
69
+
70
+
71
+ typedef void (*bgworker_main_type) (Datum main_arg);
72
+
73
+ /*
74
+ * Points in time at which a bgworker can request to be started
75
+ */
76
+ typedef enum
77
+ {
78
+ BgWorkerStart_PostmasterStart,
79
+ BgWorkerStart_ConsistentState,
80
+ BgWorkerStart_RecoveryFinished
81
+ } BgWorkerStartTime;
82
+
83
+ #define BGW_DEFAULT_RESTART_INTERVAL 60
84
+ #define BGW_NEVER_RESTART -1
85
+ #define BGW_MAXLEN 96
86
+ #define BGW_EXTRALEN 128
87
+
88
+ typedef struct BackgroundWorker
89
+ {
90
+ char bgw_name[BGW_MAXLEN];
91
+ char bgw_type[BGW_MAXLEN];
92
+ int bgw_flags;
93
+ BgWorkerStartTime bgw_start_time;
94
+ int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */
95
+ char bgw_library_name[BGW_MAXLEN];
96
+ char bgw_function_name[BGW_MAXLEN];
97
+ Datum bgw_main_arg;
98
+ char bgw_extra[BGW_EXTRALEN];
99
+ pid_t bgw_notify_pid; /* SIGUSR1 this backend on start/stop */
100
+ } BackgroundWorker;
101
+
102
+ typedef enum BgwHandleStatus
103
+ {
104
+ BGWH_STARTED, /* worker is running */
105
+ BGWH_NOT_YET_STARTED, /* worker hasn't been started yet */
106
+ BGWH_STOPPED, /* worker has exited */
107
+ BGWH_POSTMASTER_DIED /* postmaster died; worker status unclear */
108
+ } BgwHandleStatus;
109
+
110
+ struct BackgroundWorkerHandle;
111
+ typedef struct BackgroundWorkerHandle BackgroundWorkerHandle;
112
+
113
+ /* Register a new bgworker during shared_preload_libraries */
114
+ extern void RegisterBackgroundWorker(BackgroundWorker *worker);
115
+
116
+ /* Register a new bgworker from a regular backend */
117
+ extern bool RegisterDynamicBackgroundWorker(BackgroundWorker *worker,
118
+ BackgroundWorkerHandle **handle);
119
+
120
+ /* Query the status of a bgworker */
121
+ extern BgwHandleStatus GetBackgroundWorkerPid(BackgroundWorkerHandle *handle,
122
+ pid_t *pidp);
123
+ extern BgwHandleStatus WaitForBackgroundWorkerStartup(BackgroundWorkerHandle *handle, pid_t *pid);
124
+ extern BgwHandleStatus
125
+ WaitForBackgroundWorkerShutdown(BackgroundWorkerHandle *);
126
+ extern const char *GetBackgroundWorkerTypeByPid(pid_t pid);
127
+
128
+ /* Terminate a bgworker */
129
+ extern void TerminateBackgroundWorker(BackgroundWorkerHandle *handle);
130
+
131
+ /* This is valid in a running worker */
132
+ extern PGDLLIMPORT BackgroundWorker *MyBgworkerEntry;
133
+
134
+ /*
135
+ * Connect to the specified database, as the specified user. Only a worker
136
+ * that passed BGWORKER_BACKEND_DATABASE_CONNECTION during registration may
137
+ * call this.
138
+ *
139
+ * If username is NULL, bootstrapping superuser is used.
140
+ * If dbname is NULL, connection is made to no specific database;
141
+ * only shared catalogs can be accessed.
142
+ */
143
+ extern void BackgroundWorkerInitializeConnection(const char *dbname, const char *username, uint32 flags);
144
+
145
+ /* Just like the above, but specifying database and user by OID. */
146
+ extern void BackgroundWorkerInitializeConnectionByOid(Oid dboid, Oid useroid, uint32 flags);
147
+
148
+ /*
149
+ * Flags to BackgroundWorkerInitializeConnection et al
150
+ *
151
+ *
152
+ * Allow bypassing datallowconn restrictions when connecting to database
153
+ */
154
+ #define BGWORKER_BYPASS_ALLOWCONN 1
155
+
156
+
157
+ /* Block/unblock signals in a background worker process */
158
+ extern void BackgroundWorkerBlockSignals(void);
159
+ extern void BackgroundWorkerUnblockSignals(void);
160
+
161
+ #endif /* BGWORKER_H */
@@ -0,0 +1,64 @@
1
+ /*--------------------------------------------------------------------
2
+ * bgworker_internals.h
3
+ * POSTGRES pluggable background workers internals
4
+ *
5
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1994, Regents of the University of California
7
+ *
8
+ * IDENTIFICATION
9
+ * src/include/postmaster/bgworker_internals.h
10
+ *--------------------------------------------------------------------
11
+ */
12
+ #ifndef BGWORKER_INTERNALS_H
13
+ #define BGWORKER_INTERNALS_H
14
+
15
+ #include "datatype/timestamp.h"
16
+ #include "lib/ilist.h"
17
+ #include "postmaster/bgworker.h"
18
+
19
+ /* GUC options */
20
+
21
+ /*
22
+ * Maximum possible value of parallel workers.
23
+ */
24
+ #define MAX_PARALLEL_WORKER_LIMIT 1024
25
+
26
+ /*
27
+ * List of background workers, private to postmaster.
28
+ *
29
+ * A worker that requests a database connection during registration will have
30
+ * rw_backend set, and will be present in BackendList. Note: do not rely on
31
+ * rw_backend being non-NULL for shmem-connected workers!
32
+ */
33
+ typedef struct RegisteredBgWorker
34
+ {
35
+ BackgroundWorker rw_worker; /* its registry entry */
36
+ struct bkend *rw_backend; /* its BackendList entry, or NULL */
37
+ pid_t rw_pid; /* 0 if not running */
38
+ int rw_child_slot;
39
+ TimestampTz rw_crashed_at; /* if not 0, time it last crashed */
40
+ int rw_shmem_slot;
41
+ bool rw_terminate;
42
+ slist_node rw_lnode; /* list link */
43
+ } RegisteredBgWorker;
44
+
45
+ extern slist_head BackgroundWorkerList;
46
+
47
+ extern Size BackgroundWorkerShmemSize(void);
48
+ extern void BackgroundWorkerShmemInit(void);
49
+ extern void BackgroundWorkerStateChange(bool allow_new_workers);
50
+ extern void ForgetBackgroundWorker(slist_mutable_iter *cur);
51
+ extern void ReportBackgroundWorkerPID(RegisteredBgWorker *);
52
+ extern void ReportBackgroundWorkerExit(slist_mutable_iter *cur);
53
+ extern void BackgroundWorkerStopNotifications(pid_t pid);
54
+ extern void ForgetUnstartedBackgroundWorkers(void);
55
+ extern void ResetBackgroundWorkerCrashTimes(void);
56
+
57
+ /* Function to start a background worker, called from postmaster.c */
58
+ extern void StartBackgroundWorker(void) pg_attribute_noreturn();
59
+
60
+ #ifdef EXEC_BACKEND
61
+ extern BackgroundWorker *BackgroundWorkerEntry(int slotno);
62
+ #endif
63
+
64
+ #endif /* BGWORKER_INTERNALS_H */
@@ -0,0 +1,45 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * bgwriter.h
4
+ * Exports from postmaster/bgwriter.c and postmaster/checkpointer.c.
5
+ *
6
+ * The bgwriter process used to handle checkpointing duties too. Now
7
+ * there is a separate process, but we did not bother to split this header.
8
+ *
9
+ * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
10
+ *
11
+ * src/include/postmaster/bgwriter.h
12
+ *
13
+ *-------------------------------------------------------------------------
14
+ */
15
+ #ifndef _BGWRITER_H
16
+ #define _BGWRITER_H
17
+
18
+ #include "storage/block.h"
19
+ #include "storage/relfilenode.h"
20
+ #include "storage/smgr.h"
21
+ #include "storage/sync.h"
22
+
23
+
24
+ /* GUC options */
25
+ extern int BgWriterDelay;
26
+ extern int CheckPointTimeout;
27
+ extern int CheckPointWarning;
28
+ extern double CheckPointCompletionTarget;
29
+
30
+ extern void BackgroundWriterMain(void) pg_attribute_noreturn();
31
+ extern void CheckpointerMain(void) pg_attribute_noreturn();
32
+
33
+ extern void RequestCheckpoint(int flags);
34
+ extern void CheckpointWriteDelay(int flags, double progress);
35
+
36
+ extern bool ForwardSyncRequest(const FileTag *ftag, SyncRequestType type);
37
+
38
+ extern void AbsorbSyncRequests(void);
39
+
40
+ extern Size CheckpointerShmemSize(void);
41
+ extern void CheckpointerShmemInit(void);
42
+
43
+ extern bool FirstCallSinceLastCheckpoint(void);
44
+
45
+ #endif /* _BGWRITER_H */
@@ -0,0 +1,17 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * fork_process.h
4
+ * Exports from postmaster/fork_process.c.
5
+ *
6
+ * Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/postmaster/fork_process.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef FORK_PROCESS_H
13
+ #define FORK_PROCESS_H
14
+
15
+ extern pid_t fork_process(void);
16
+
17
+ #endif /* FORK_PROCESS_H */