pg_query 2.2.0 → 4.2.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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +59 -31
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/include/access/amapi.h +45 -1
  6. data/ext/pg_query/include/access/attmap.h +1 -1
  7. data/ext/pg_query/include/access/attnum.h +2 -2
  8. data/ext/pg_query/include/access/clog.h +4 -2
  9. data/ext/pg_query/include/access/commit_ts.h +6 -9
  10. data/ext/pg_query/include/access/detoast.h +1 -11
  11. data/ext/pg_query/include/access/genam.h +15 -12
  12. data/ext/pg_query/include/access/gin.h +2 -2
  13. data/ext/pg_query/include/access/htup.h +1 -1
  14. data/ext/pg_query/include/access/htup_details.h +75 -87
  15. data/ext/pg_query/include/access/itup.h +7 -1
  16. data/ext/pg_query/include/access/parallel.h +2 -2
  17. data/ext/pg_query/include/access/printtup.h +1 -1
  18. data/ext/pg_query/include/access/relation.h +1 -1
  19. data/ext/pg_query/include/access/relscan.h +17 -2
  20. data/ext/pg_query/include/access/rmgr.h +30 -3
  21. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  22. data/ext/pg_query/include/access/sdir.h +1 -1
  23. data/ext/pg_query/include/access/skey.h +1 -1
  24. data/ext/pg_query/include/access/stratnum.h +4 -2
  25. data/ext/pg_query/include/access/sysattr.h +1 -1
  26. data/ext/pg_query/include/access/table.h +2 -1
  27. data/ext/pg_query/include/access/tableam.h +272 -20
  28. data/ext/pg_query/include/access/toast_compression.h +73 -0
  29. data/ext/pg_query/include/access/transam.h +123 -13
  30. data/ext/pg_query/include/access/tupconvert.h +1 -1
  31. data/ext/pg_query/include/access/tupdesc.h +1 -1
  32. data/ext/pg_query/include/access/tupmacs.h +3 -3
  33. data/ext/pg_query/include/access/twophase.h +3 -1
  34. data/ext/pg_query/include/access/xact.h +73 -19
  35. data/ext/pg_query/include/access/xlog.h +60 -155
  36. data/ext/pg_query/include/access/xlog_internal.h +40 -13
  37. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  38. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  39. data/ext/pg_query/include/access/xlogreader.h +145 -39
  40. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  41. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  42. data/ext/pg_query/include/c.h +101 -44
  43. data/ext/pg_query/include/catalog/catalog.h +3 -1
  44. data/ext/pg_query/include/catalog/catversion.h +2 -2
  45. data/ext/pg_query/include/catalog/dependency.h +8 -16
  46. data/ext/pg_query/include/catalog/genbki.h +83 -5
  47. data/ext/pg_query/include/catalog/index.h +18 -3
  48. data/ext/pg_query/include/catalog/indexing.h +12 -324
  49. data/ext/pg_query/include/catalog/namespace.h +4 -2
  50. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  51. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  52. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  53. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  54. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  55. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  56. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  57. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  58. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  59. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  60. data/ext/pg_query/include/catalog/pg_class.h +44 -14
  61. data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
  62. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  63. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  64. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  65. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  66. data/ext/pg_query/include/catalog/pg_control.h +3 -5
  67. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  68. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  69. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  70. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  71. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  72. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  73. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  74. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  75. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  76. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  77. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  78. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  79. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  80. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  81. data/ext/pg_query/include/catalog/pg_operator.h +18 -15
  82. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  83. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  84. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  85. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  86. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  87. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  88. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  89. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  90. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  91. data/ext/pg_query/include/catalog/pg_publication.h +50 -7
  92. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  93. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  94. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  95. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  96. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  97. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  98. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  99. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  100. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  101. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  102. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  103. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  104. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  105. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  106. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  107. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  108. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  109. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  110. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  111. data/ext/pg_query/include/catalog/pg_type.h +55 -24
  112. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  113. data/ext/pg_query/include/catalog/storage.h +5 -3
  114. data/ext/pg_query/include/commands/async.h +3 -4
  115. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  116. data/ext/pg_query/include/commands/defrem.h +11 -24
  117. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  118. data/ext/pg_query/include/commands/explain.h +1 -1
  119. data/ext/pg_query/include/commands/prepare.h +1 -1
  120. data/ext/pg_query/include/commands/tablespace.h +2 -2
  121. data/ext/pg_query/include/commands/trigger.h +18 -16
  122. data/ext/pg_query/include/commands/user.h +2 -2
  123. data/ext/pg_query/include/commands/vacuum.h +88 -41
  124. data/ext/pg_query/include/commands/variable.h +1 -1
  125. data/ext/pg_query/include/common/file_perm.h +4 -4
  126. data/ext/pg_query/include/common/hashfn.h +1 -1
  127. data/ext/pg_query/include/common/ip.h +1 -7
  128. data/ext/pg_query/include/common/keywords.h +2 -6
  129. data/ext/pg_query/include/common/kwlookup.h +1 -1
  130. data/ext/pg_query/include/common/pg_prng.h +60 -0
  131. data/ext/pg_query/include/common/relpath.h +2 -2
  132. data/ext/pg_query/include/common/string.h +24 -1
  133. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  134. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  135. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  136. data/ext/pg_query/include/executor/execdesc.h +1 -1
  137. data/ext/pg_query/include/executor/executor.h +65 -22
  138. data/ext/pg_query/include/executor/functions.h +17 -3
  139. data/ext/pg_query/include/executor/instrument.h +33 -16
  140. data/ext/pg_query/include/executor/spi.h +41 -3
  141. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  142. data/ext/pg_query/include/executor/tuptable.h +1 -1
  143. data/ext/pg_query/include/fmgr.h +13 -7
  144. data/ext/pg_query/include/funcapi.h +16 -4
  145. data/ext/pg_query/include/getaddrinfo.h +1 -1
  146. data/ext/pg_query/include/jit/jit.h +11 -11
  147. data/ext/pg_query/include/kwlist_d.h +517 -494
  148. data/ext/pg_query/include/lib/dshash.h +112 -0
  149. data/ext/pg_query/include/lib/ilist.h +20 -1
  150. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  151. data/ext/pg_query/include/lib/simplehash.h +140 -15
  152. data/ext/pg_query/include/lib/sort_template.h +432 -0
  153. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  154. data/ext/pg_query/include/libpq/auth.h +6 -4
  155. data/ext/pg_query/include/libpq/crypt.h +5 -4
  156. data/ext/pg_query/include/libpq/hba.h +43 -4
  157. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  158. data/ext/pg_query/include/libpq/libpq.h +30 -20
  159. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  160. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  161. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  162. data/ext/pg_query/include/mb/pg_wchar.h +105 -23
  163. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  164. data/ext/pg_query/include/miscadmin.h +47 -41
  165. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  166. data/ext/pg_query/include/nodes/execnodes.h +270 -78
  167. data/ext/pg_query/include/nodes/extensible.h +4 -2
  168. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  169. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  170. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  171. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  172. data/ext/pg_query/include/nodes/nodes.h +30 -11
  173. data/ext/pg_query/include/nodes/params.h +1 -1
  174. data/ext/pg_query/include/nodes/parsenodes.h +322 -90
  175. data/ext/pg_query/include/nodes/pathnodes.h +243 -66
  176. data/ext/pg_query/include/nodes/pg_list.h +75 -69
  177. data/ext/pg_query/include/nodes/plannodes.h +111 -28
  178. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  179. data/ext/pg_query/include/nodes/print.h +1 -1
  180. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  181. data/ext/pg_query/include/nodes/value.h +58 -39
  182. data/ext/pg_query/include/optimizer/cost.h +9 -2
  183. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  184. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  185. data/ext/pg_query/include/optimizer/optimizer.h +25 -17
  186. data/ext/pg_query/include/optimizer/paths.h +6 -6
  187. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  188. data/ext/pg_query/include/parser/analyze.h +19 -5
  189. data/ext/pg_query/include/parser/gram.h +947 -913
  190. data/ext/pg_query/include/parser/gramparse.h +1 -1
  191. data/ext/pg_query/include/parser/kwlist.h +463 -453
  192. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  193. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  194. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  195. data/ext/pg_query/include/parser/parse_func.h +2 -1
  196. data/ext/pg_query/include/parser/parse_node.h +21 -9
  197. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  198. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  199. data/ext/pg_query/include/parser/parse_type.h +1 -1
  200. data/ext/pg_query/include/parser/parser.h +31 -4
  201. data/ext/pg_query/include/parser/parsetree.h +1 -1
  202. data/ext/pg_query/include/parser/scanner.h +1 -1
  203. data/ext/pg_query/include/parser/scansup.h +2 -5
  204. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  205. data/ext/pg_query/include/pg_config.h +83 -41
  206. data/ext/pg_query/include/pg_config_manual.h +74 -21
  207. data/ext/pg_query/include/pg_getopt.h +6 -6
  208. data/ext/pg_query/include/pg_query.h +5 -4
  209. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  210. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  211. data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
  212. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  213. data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
  214. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  215. data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
  216. data/ext/pg_query/include/pg_trace.h +1 -1
  217. data/ext/pg_query/include/pgstat.h +449 -1238
  218. data/ext/pg_query/include/pgtime.h +14 -4
  219. data/ext/pg_query/include/pl_gram.h +126 -128
  220. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  221. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  222. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  223. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  224. data/ext/pg_query/include/plerrcodes.h +9 -1
  225. data/ext/pg_query/include/plpgsql.h +52 -54
  226. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  227. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  228. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  229. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  230. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  231. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  232. data/ext/pg_query/include/port/atomics.h +1 -1
  233. data/ext/pg_query/include/port/pg_bitutils.h +40 -10
  234. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  235. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  236. data/ext/pg_query/include/port.h +71 -46
  237. data/ext/pg_query/include/portability/instr_time.h +1 -1
  238. data/ext/pg_query/include/postgres.h +60 -16
  239. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  240. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  241. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  242. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  243. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  244. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  245. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  246. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  247. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  248. data/ext/pg_query/include/postmaster/startup.h +39 -0
  249. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  250. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  251. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
  252. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  253. data/ext/pg_query/include/regex/regex.h +18 -16
  254. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  255. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  256. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  257. data/ext/pg_query/include/replication/origin.h +7 -7
  258. data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
  259. data/ext/pg_query/include/replication/slot.h +22 -11
  260. data/ext/pg_query/include/replication/syncrep.h +5 -5
  261. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  262. data/ext/pg_query/include/replication/walsender.h +8 -8
  263. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  264. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  265. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  266. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  267. data/ext/pg_query/include/storage/backendid.h +3 -3
  268. data/ext/pg_query/include/storage/block.h +4 -10
  269. data/ext/pg_query/include/storage/buf.h +1 -1
  270. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  271. data/ext/pg_query/include/storage/bufpage.h +6 -8
  272. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  273. data/ext/pg_query/include/storage/dsm.h +4 -1
  274. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  275. data/ext/pg_query/include/storage/fd.h +33 -3
  276. data/ext/pg_query/include/storage/fileset.h +40 -0
  277. data/ext/pg_query/include/storage/ipc.h +4 -1
  278. data/ext/pg_query/include/storage/item.h +1 -1
  279. data/ext/pg_query/include/storage/itemid.h +1 -1
  280. data/ext/pg_query/include/storage/itemptr.h +3 -1
  281. data/ext/pg_query/include/storage/large_object.h +2 -2
  282. data/ext/pg_query/include/storage/latch.h +9 -13
  283. data/ext/pg_query/include/storage/lmgr.h +2 -1
  284. data/ext/pg_query/include/storage/lock.h +11 -8
  285. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  286. data/ext/pg_query/include/storage/lwlock.h +5 -32
  287. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  288. data/ext/pg_query/include/storage/off.h +1 -1
  289. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  290. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  291. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  292. data/ext/pg_query/include/storage/predicate.h +4 -4
  293. data/ext/pg_query/include/storage/proc.h +173 -59
  294. data/ext/pg_query/include/storage/procarray.h +98 -0
  295. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  296. data/ext/pg_query/include/storage/procsignal.h +3 -7
  297. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  298. data/ext/pg_query/include/storage/s_lock.h +60 -21
  299. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  300. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  301. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  302. data/ext/pg_query/include/storage/shmem.h +1 -1
  303. data/ext/pg_query/include/storage/sinval.h +3 -3
  304. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  305. data/ext/pg_query/include/storage/smgr.h +10 -8
  306. data/ext/pg_query/include/storage/spin.h +2 -2
  307. data/ext/pg_query/include/storage/standby.h +13 -6
  308. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  309. data/ext/pg_query/include/storage/sync.h +7 -3
  310. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  311. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  312. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  313. data/ext/pg_query/include/tcop/dest.h +1 -1
  314. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  315. data/ext/pg_query/include/tcop/pquery.h +1 -1
  316. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  317. data/ext/pg_query/include/tcop/utility.h +7 -3
  318. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  319. data/ext/pg_query/include/utils/acl.h +24 -3
  320. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  321. data/ext/pg_query/include/utils/array.h +7 -2
  322. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  323. data/ext/pg_query/include/utils/backend_status.h +321 -0
  324. data/ext/pg_query/include/utils/builtins.h +10 -11
  325. data/ext/pg_query/include/utils/bytea.h +3 -2
  326. data/ext/pg_query/include/utils/catcache.h +1 -1
  327. data/ext/pg_query/include/utils/date.h +1 -1
  328. data/ext/pg_query/include/utils/datetime.h +8 -7
  329. data/ext/pg_query/include/utils/datum.h +9 -1
  330. data/ext/pg_query/include/utils/dsa.h +1 -1
  331. data/ext/pg_query/include/utils/dynahash.h +4 -3
  332. data/ext/pg_query/include/utils/elog.h +52 -21
  333. data/ext/pg_query/include/utils/errcodes.h +2 -0
  334. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  335. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  336. data/ext/pg_query/include/utils/float.h +7 -7
  337. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  338. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  339. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  340. data/ext/pg_query/include/utils/guc.h +69 -43
  341. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  342. data/ext/pg_query/include/utils/hsearch.h +15 -11
  343. data/ext/pg_query/include/utils/inval.h +4 -1
  344. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  345. data/ext/pg_query/include/utils/memdebug.h +1 -1
  346. data/ext/pg_query/include/utils/memutils.h +8 -3
  347. data/ext/pg_query/include/utils/numeric.h +19 -5
  348. data/ext/pg_query/include/utils/palloc.h +25 -3
  349. data/ext/pg_query/include/utils/partcache.h +1 -1
  350. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  351. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  352. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  353. data/ext/pg_query/include/utils/pidfile.h +1 -1
  354. data/ext/pg_query/include/utils/plancache.h +6 -5
  355. data/ext/pg_query/include/utils/portal.h +10 -12
  356. data/ext/pg_query/include/utils/ps_status.h +1 -1
  357. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  358. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  359. data/ext/pg_query/include/utils/regproc.h +14 -3
  360. data/ext/pg_query/include/utils/rel.h +71 -19
  361. data/ext/pg_query/include/utils/relcache.h +8 -5
  362. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  363. data/ext/pg_query/include/utils/resowner.h +1 -1
  364. data/ext/pg_query/include/utils/rls.h +2 -2
  365. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  366. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  367. data/ext/pg_query/include/utils/snapmgr.h +34 -14
  368. data/ext/pg_query/include/utils/snapshot.h +14 -1
  369. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  370. data/ext/pg_query/include/utils/syscache.h +6 -1
  371. data/ext/pg_query/include/utils/timeout.h +11 -4
  372. data/ext/pg_query/include/utils/timestamp.h +6 -5
  373. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  374. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  375. data/ext/pg_query/include/utils/typcache.h +24 -17
  376. data/ext/pg_query/include/utils/tzparser.h +1 -1
  377. data/ext/pg_query/include/utils/varlena.h +5 -3
  378. data/ext/pg_query/include/utils/wait_event.h +289 -0
  379. data/ext/pg_query/include/utils/xml.h +4 -4
  380. data/ext/pg_query/pg_query.pb-c.c +4302 -2304
  381. data/ext/pg_query/pg_query_deparse.c +1106 -373
  382. data/ext/pg_query/pg_query_fingerprint.c +30 -10
  383. data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
  384. data/ext/pg_query/pg_query_normalize.c +1 -1
  385. data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
  386. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  387. data/ext/pg_query/pg_query_parse.c +1 -1
  388. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  389. data/ext/pg_query/pg_query_scan.c +2 -1
  390. data/ext/pg_query/pg_query_split.c +3 -2
  391. data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
  392. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  393. data/ext/pg_query/src_backend_commands_define.c +11 -1
  394. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  395. data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
  396. data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
  397. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  398. data/ext/pg_query/src_backend_nodes_list.c +74 -11
  399. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  400. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  401. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  402. data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
  403. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  404. data/ext/pg_query/src_backend_parser_scan.c +172 -209
  405. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  406. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  407. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  408. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  409. data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
  410. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  411. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  412. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  413. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  414. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
  415. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  416. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  417. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  418. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  419. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  420. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  421. data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
  422. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  423. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  424. data/ext/pg_query/src_common_encnames.c +1 -1
  425. data/ext/pg_query/src_common_hashfn.c +3 -3
  426. data/ext/pg_query/src_common_keywords.c +15 -2
  427. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  428. data/ext/pg_query/src_common_kwlookup.c +1 -1
  429. data/ext/pg_query/src_common_pg_prng.c +152 -0
  430. data/ext/pg_query/src_common_psprintf.c +1 -1
  431. data/ext/pg_query/src_common_string.c +7 -1
  432. data/ext/pg_query/src_common_stringinfo.c +1 -1
  433. data/ext/pg_query/src_common_wchar.c +701 -109
  434. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
  435. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  436. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
  437. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  438. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  441. data/ext/pg_query/src_port_pg_bitutils.c +41 -31
  442. data/ext/pg_query/src_port_pgsleep.c +1 -1
  443. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  444. data/ext/pg_query/src_port_qsort.c +12 -224
  445. data/ext/pg_query/src_port_snprintf.c +37 -13
  446. data/ext/pg_query/src_port_strerror.c +9 -19
  447. data/ext/pg_query/src_port_strnlen.c +1 -1
  448. data/lib/pg_query/filter_columns.rb +1 -1
  449. data/lib/pg_query/fingerprint.rb +5 -1
  450. data/lib/pg_query/node.rb +2 -2
  451. data/lib/pg_query/param_refs.rb +1 -1
  452. data/lib/pg_query/parse.rb +20 -8
  453. data/lib/pg_query/pg_query_pb.rb +1108 -942
  454. data/lib/pg_query/treewalker.rb +6 -0
  455. data/lib/pg_query/truncate.rb +1 -1
  456. data/lib/pg_query/version.rb +1 -1
  457. metadata +27 -17
  458. data/ext/pg_query/include/access/xloginsert.h +0 -64
  459. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  460. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  461. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  462. data/ext/pg_query/include/parser/parse_target.h +0 -46
  463. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  464. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
  465. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  466. data/ext/pg_query/src_port_erand48.c +0 -127
  467. data/ext/pg_query/src_port_random.c +0 -31
@@ -7,7 +7,7 @@
7
7
  * Client-side code should include postgres_fe.h instead.
8
8
  *
9
9
  *
10
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1995, Regents of the University of California
12
12
  *
13
13
  * src/include/postgres.h
@@ -55,7 +55,9 @@
55
55
  /*
56
56
  * struct varatt_external is a traditional "TOAST pointer", that is, the
57
57
  * information needed to fetch a Datum stored out-of-line in a TOAST table.
58
- * The data is compressed if and only if va_extsize < va_rawsize - VARHDRSZ.
58
+ * The data is compressed if and only if the external size stored in
59
+ * va_extinfo is less than va_rawsize - VARHDRSZ.
60
+ *
59
61
  * This struct must not contain any padding, because we sometimes compare
60
62
  * these pointers using memcmp.
61
63
  *
@@ -67,11 +69,19 @@
67
69
  typedef struct varatt_external
68
70
  {
69
71
  int32 va_rawsize; /* Original data size (includes header) */
70
- int32 va_extsize; /* External saved size (doesn't) */
72
+ uint32 va_extinfo; /* External saved size (without header) and
73
+ * compression method */
71
74
  Oid va_valueid; /* Unique ID of value within TOAST table */
72
75
  Oid va_toastrelid; /* RelID of TOAST table containing it */
73
76
  } varatt_external;
74
77
 
78
+ /*
79
+ * These macros define the "saved size" portion of va_extinfo. Its remaining
80
+ * two high-order bits identify the compression method.
81
+ */
82
+ #define VARLENA_EXTSIZE_BITS 30
83
+ #define VARLENA_EXTSIZE_MASK ((1U << VARLENA_EXTSIZE_BITS) - 1)
84
+
75
85
  /*
76
86
  * struct varatt_indirect is a "TOAST pointer" representing an out-of-line
77
87
  * Datum that's stored in memory, not in an external toast relation.
@@ -145,7 +155,8 @@ typedef union
145
155
  struct /* Compressed-in-line format */
146
156
  {
147
157
  uint32 va_header;
148
- uint32 va_rawsize; /* Original data size (excludes header) */
158
+ uint32 va_tcinfo; /* Original data size (excludes header) and
159
+ * compression method; see va_extinfo */
149
160
  char va_data[FLEXIBLE_ARRAY_MEMBER]; /* Compressed data */
150
161
  } va_compressed;
151
162
  } varattrib_4b;
@@ -231,6 +242,7 @@ typedef struct
231
242
  #define SET_VARTAG_1B_E(PTR,tag) \
232
243
  (((varattrib_1b_e *) (PTR))->va_header = 0x80, \
233
244
  ((varattrib_1b_e *) (PTR))->va_tag = (tag))
245
+
234
246
  #else /* !WORDS_BIGENDIAN */
235
247
 
236
248
  #define VARATT_IS_4B(PTR) \
@@ -263,9 +275,22 @@ typedef struct
263
275
  #define SET_VARTAG_1B_E(PTR,tag) \
264
276
  (((varattrib_1b_e *) (PTR))->va_header = 0x01, \
265
277
  ((varattrib_1b_e *) (PTR))->va_tag = (tag))
278
+
266
279
  #endif /* WORDS_BIGENDIAN */
267
280
 
281
+ #define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
282
+ #define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
283
+ #define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
284
+ #define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
285
+
286
+ /*
287
+ * Externally visible TOAST macros begin here.
288
+ */
289
+
290
+ #define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
291
+ #define VARHDRSZ_COMPRESSED offsetof(varattrib_4b, va_compressed.va_data)
268
292
  #define VARHDRSZ_SHORT offsetof(varattrib_1b, va_data)
293
+
269
294
  #define VARATT_SHORT_MAX 0x7F
270
295
  #define VARATT_CAN_MAKE_SHORT(PTR) \
271
296
  (VARATT_IS_4B_U(PTR) && \
@@ -273,18 +298,6 @@ typedef struct
273
298
  #define VARATT_CONVERTED_SHORT_SIZE(PTR) \
274
299
  (VARSIZE(PTR) - VARHDRSZ + VARHDRSZ_SHORT)
275
300
 
276
- #define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
277
-
278
- #define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
279
- #define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
280
- #define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
281
- #define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
282
-
283
- #define VARRAWSIZE_4B_C(PTR) \
284
- (((varattrib_4b *) (PTR))->va_compressed.va_rawsize)
285
-
286
- /* Externally visible macros */
287
-
288
301
  /*
289
302
  * In consumers oblivious to data alignment, call PG_DETOAST_DATUM_PACKED(),
290
303
  * VARDATA_ANY(), VARSIZE_ANY() and VARSIZE_ANY_EXHDR(). Elsewhere, call
@@ -348,6 +361,37 @@ typedef struct
348
361
  #define VARDATA_ANY(PTR) \
349
362
  (VARATT_IS_1B(PTR) ? VARDATA_1B(PTR) : VARDATA_4B(PTR))
350
363
 
364
+ /* Decompressed size and compression method of a compressed-in-line Datum */
365
+ #define VARDATA_COMPRESSED_GET_EXTSIZE(PTR) \
366
+ (((varattrib_4b *) (PTR))->va_compressed.va_tcinfo & VARLENA_EXTSIZE_MASK)
367
+ #define VARDATA_COMPRESSED_GET_COMPRESS_METHOD(PTR) \
368
+ (((varattrib_4b *) (PTR))->va_compressed.va_tcinfo >> VARLENA_EXTSIZE_BITS)
369
+
370
+ /* Same for external Datums; but note argument is a struct varatt_external */
371
+ #define VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) \
372
+ ((toast_pointer).va_extinfo & VARLENA_EXTSIZE_MASK)
373
+ #define VARATT_EXTERNAL_GET_COMPRESS_METHOD(toast_pointer) \
374
+ ((toast_pointer).va_extinfo >> VARLENA_EXTSIZE_BITS)
375
+
376
+ #define VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, len, cm) \
377
+ do { \
378
+ Assert((cm) == TOAST_PGLZ_COMPRESSION_ID || \
379
+ (cm) == TOAST_LZ4_COMPRESSION_ID); \
380
+ ((toast_pointer).va_extinfo = \
381
+ (len) | ((uint32) (cm) << VARLENA_EXTSIZE_BITS)); \
382
+ } while (0)
383
+
384
+ /*
385
+ * Testing whether an externally-stored value is compressed now requires
386
+ * comparing size stored in va_extinfo (the actual length of the external data)
387
+ * to rawsize (the original uncompressed datum's size). The latter includes
388
+ * VARHDRSZ overhead, the former doesn't. We never use compression unless it
389
+ * actually saves space, so we expect either equality or less-than.
390
+ */
391
+ #define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \
392
+ (VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) < \
393
+ (toast_pointer).va_rawsize - VARHDRSZ)
394
+
351
395
 
352
396
  /* ----------------------------------------------------------------
353
397
  * Section 2: Datum type + support macros
@@ -4,7 +4,7 @@
4
4
  * header file for integrated autovacuum daemon
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/postmaster/autovacuum.h
@@ -27,25 +27,25 @@ typedef enum
27
27
 
28
28
 
29
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;
30
+ extern PGDLLIMPORT bool autovacuum_start_daemon;
31
+ extern PGDLLIMPORT int autovacuum_max_workers;
32
+ extern PGDLLIMPORT int autovacuum_work_mem;
33
+ extern PGDLLIMPORT int autovacuum_naptime;
34
+ extern PGDLLIMPORT int autovacuum_vac_thresh;
35
+ extern PGDLLIMPORT double autovacuum_vac_scale;
36
+ extern PGDLLIMPORT int autovacuum_vac_ins_thresh;
37
+ extern PGDLLIMPORT double autovacuum_vac_ins_scale;
38
+ extern PGDLLIMPORT int autovacuum_anl_thresh;
39
+ extern PGDLLIMPORT double autovacuum_anl_scale;
40
+ extern PGDLLIMPORT int autovacuum_freeze_max_age;
41
+ extern PGDLLIMPORT int autovacuum_multixact_freeze_max_age;
42
+ extern PGDLLIMPORT double autovacuum_vac_cost_delay;
43
+ extern PGDLLIMPORT int autovacuum_vac_cost_limit;
44
44
 
45
45
  /* autovacuum launcher PID, only valid when worker is shutting down */
46
- extern int AutovacuumLauncherPid;
46
+ extern PGDLLIMPORT int AutovacuumLauncherPid;
47
47
 
48
- extern int Log_autovacuum_min_duration;
48
+ extern PGDLLIMPORT int Log_autovacuum_min_duration;
49
49
 
50
50
  /* Status inquiry functions */
51
51
  extern bool AutoVacuumingActive(void);
@@ -0,0 +1,20 @@
1
+ /*-------------------------------------------------------------------------
2
+ * auxprocess.h
3
+ * include file for functions related to auxiliary processes.
4
+ *
5
+ *
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * IDENTIFICATION
10
+ * src/include/postmaster/auxprocess.h
11
+ *-------------------------------------------------------------------------
12
+ */
13
+ #ifndef AUXPROCESS_H
14
+ #define AUXPROCESS_H
15
+
16
+ #include "miscadmin.h"
17
+
18
+ extern void AuxiliaryProcessMain(AuxProcType auxtype) pg_attribute_noreturn();
19
+
20
+ #endif /* AUXPROCESS_H */
@@ -31,7 +31,7 @@
31
31
  * different) code.
32
32
  *
33
33
  *
34
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
34
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
35
35
  * Portions Copyright (c) 1994, Regents of the University of California
36
36
  *
37
37
  * IDENTIFICATION
@@ -48,6 +48,7 @@
48
48
 
49
49
  /*
50
50
  * Pass this flag to have your worker be able to connect to shared memory.
51
+ * This flag is required.
51
52
  */
52
53
  #define BGWORKER_SHMEM_ACCESS 0x0001
53
54
 
@@ -2,7 +2,7 @@
2
2
  * bgworker_internals.h
3
3
  * POSTGRES pluggable background workers internals
4
4
  *
5
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
5
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
6
  * Portions Copyright (c) 1994, Regents of the University of California
7
7
  *
8
8
  * IDENTIFICATION
@@ -42,7 +42,7 @@ typedef struct RegisteredBgWorker
42
42
  slist_node rw_lnode; /* list link */
43
43
  } RegisteredBgWorker;
44
44
 
45
- extern slist_head BackgroundWorkerList;
45
+ extern PGDLLIMPORT slist_head BackgroundWorkerList;
46
46
 
47
47
  extern Size BackgroundWorkerShmemSize(void);
48
48
  extern void BackgroundWorkerShmemInit(void);
@@ -6,7 +6,7 @@
6
6
  * The bgwriter process used to handle checkpointing duties too. Now
7
7
  * there is a separate process, but we did not bother to split this header.
8
8
  *
9
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
10
10
  *
11
11
  * src/include/postmaster/bgwriter.h
12
12
  *
@@ -22,10 +22,10 @@
22
22
 
23
23
 
24
24
  /* GUC options */
25
- extern int BgWriterDelay;
26
- extern int CheckPointTimeout;
27
- extern int CheckPointWarning;
28
- extern double CheckPointCompletionTarget;
25
+ extern PGDLLIMPORT int BgWriterDelay;
26
+ extern PGDLLIMPORT int CheckPointTimeout;
27
+ extern PGDLLIMPORT int CheckPointWarning;
28
+ extern PGDLLIMPORT double CheckPointCompletionTarget;
29
29
 
30
30
  extern void BackgroundWriterMain(void) pg_attribute_noreturn();
31
31
  extern void CheckpointerMain(void) pg_attribute_noreturn();
@@ -3,7 +3,7 @@
3
3
  * fork_process.h
4
4
  * Exports from postmaster/fork_process.c.
5
5
  *
6
- * Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/fork_process.h
9
9
  *
@@ -7,7 +7,7 @@
7
7
  * have their own implementations, but we provide a few generic things
8
8
  * here to facilitate code reuse.
9
9
  *
10
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1994, Regents of the University of California
12
12
  *
13
13
  * IDENTIFICATION
@@ -3,7 +3,7 @@
3
3
  * pgarch.h
4
4
  * Exports from postmaster/pgarch.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/postmaster/pgarch.h
@@ -26,14 +26,48 @@
26
26
  #define MAX_XFN_CHARS 40
27
27
  #define VALID_XFN_CHARS "0123456789ABCDEF.history.backup.partial"
28
28
 
29
- /* ----------
30
- * Functions called from postmaster
31
- * ----------
29
+ extern Size PgArchShmemSize(void);
30
+ extern void PgArchShmemInit(void);
31
+ extern bool PgArchCanRestart(void);
32
+ extern void PgArchiverMain(void) pg_attribute_noreturn();
33
+ extern void PgArchWakeup(void);
34
+ extern void PgArchForceDirScan(void);
35
+
36
+ /*
37
+ * The value of the archive_library GUC.
38
+ */
39
+ extern PGDLLIMPORT char *XLogArchiveLibrary;
40
+
41
+ /*
42
+ * Archive module callbacks
43
+ *
44
+ * These callback functions should be defined by archive libraries and returned
45
+ * via _PG_archive_module_init(). ArchiveFileCB is the only required callback.
46
+ * For more information about the purpose of each callback, refer to the
47
+ * archive modules documentation.
32
48
  */
33
- extern int pgarch_start(void);
49
+ typedef bool (*ArchiveCheckConfiguredCB) (void);
50
+ typedef bool (*ArchiveFileCB) (const char *file, const char *path);
51
+ typedef void (*ArchiveShutdownCB) (void);
52
+
53
+ typedef struct ArchiveModuleCallbacks
54
+ {
55
+ ArchiveCheckConfiguredCB check_configured_cb;
56
+ ArchiveFileCB archive_file_cb;
57
+ ArchiveShutdownCB shutdown_cb;
58
+ } ArchiveModuleCallbacks;
34
59
 
35
- #ifdef EXEC_BACKEND
36
- extern void PgArchiverMain(int argc, char *argv[]) pg_attribute_noreturn();
37
- #endif
60
+ /*
61
+ * Type of the shared library symbol _PG_archive_module_init that is looked
62
+ * up when loading an archive library.
63
+ */
64
+ typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb);
65
+
66
+ /*
67
+ * Since the logic for archiving via a shell command is in the core server
68
+ * and does not need to be loaded via a shared library, it has a special
69
+ * initialization function.
70
+ */
71
+ extern void shell_archive_init(ArchiveModuleCallbacks *cb);
38
72
 
39
73
  #endif /* _PGARCH_H */
@@ -3,7 +3,7 @@
3
3
  * postmaster.h
4
4
  * Exports from postmaster/postmaster.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/postmaster/postmaster.h
@@ -14,26 +14,27 @@
14
14
  #define _POSTMASTER_H
15
15
 
16
16
  /* GUC options */
17
- extern bool EnableSSL;
18
- extern int ReservedBackends;
17
+ extern PGDLLIMPORT bool EnableSSL;
18
+ extern PGDLLIMPORT int ReservedBackends;
19
19
  extern PGDLLIMPORT int PostPortNumber;
20
- extern int Unix_socket_permissions;
21
- extern char *Unix_socket_group;
22
- extern char *Unix_socket_directories;
23
- extern char *ListenAddresses;
24
- extern __thread bool ClientAuthInProgress;
25
- extern int PreAuthDelay;
26
- extern int AuthenticationTimeout;
27
- extern bool Log_connections;
28
- extern bool log_hostname;
29
- extern bool enable_bonjour;
30
- extern char *bonjour_name;
31
- extern bool restart_after_crash;
20
+ extern PGDLLIMPORT int Unix_socket_permissions;
21
+ extern PGDLLIMPORT char *Unix_socket_group;
22
+ extern PGDLLIMPORT char *Unix_socket_directories;
23
+ extern PGDLLIMPORT char *ListenAddresses;
24
+ extern PGDLLIMPORT __thread bool ClientAuthInProgress;
25
+ extern PGDLLIMPORT int PreAuthDelay;
26
+ extern PGDLLIMPORT int AuthenticationTimeout;
27
+ extern PGDLLIMPORT bool Log_connections;
28
+ extern PGDLLIMPORT bool log_hostname;
29
+ extern PGDLLIMPORT bool enable_bonjour;
30
+ extern PGDLLIMPORT char *bonjour_name;
31
+ extern PGDLLIMPORT bool restart_after_crash;
32
+ extern PGDLLIMPORT bool remove_temp_files_after_crash;
32
33
 
33
34
  #ifdef WIN32
34
- extern HANDLE PostmasterHandle;
35
+ extern PGDLLIMPORT HANDLE PostmasterHandle;
35
36
  #else
36
- extern int postmaster_alive_fds[2];
37
+ extern PGDLLIMPORT int postmaster_alive_fds[2];
37
38
 
38
39
  /*
39
40
  * Constants that represent which of postmaster_alive_fds is held by
@@ -0,0 +1,39 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * startup.h
4
+ * Exports from postmaster/startup.c.
5
+ *
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/postmaster/startup.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef _STARTUP_H
13
+ #define _STARTUP_H
14
+
15
+ /*
16
+ * Log the startup progress message if a timer has expired.
17
+ */
18
+ #define ereport_startup_progress(msg, ...) \
19
+ do { \
20
+ long secs; \
21
+ int usecs; \
22
+ if (has_startup_progress_timeout_expired(&secs, &usecs)) \
23
+ ereport(LOG, errmsg(msg, secs, (usecs / 10000), __VA_ARGS__ )); \
24
+ } while(0)
25
+
26
+ extern PGDLLIMPORT int log_startup_progress_interval;
27
+
28
+ extern void HandleStartupProcInterrupts(void);
29
+ extern void StartupProcessMain(void) pg_attribute_noreturn();
30
+ extern void PreRestoreCommand(void);
31
+ extern void PostRestoreCommand(void);
32
+ extern bool IsPromoteSignaled(void);
33
+ extern void ResetPromoteSignaled(void);
34
+
35
+ extern void begin_startup_progress_phase(void);
36
+ extern void startup_progress_timeout_handler(void);
37
+ extern bool has_startup_progress_timeout_expired(long *secs, int *usecs);
38
+
39
+ #endif /* _STARTUP_H */
@@ -3,7 +3,7 @@
3
3
  * syslogger.h
4
4
  * Exports from postmaster/syslogger.c.
5
5
  *
6
- * Copyright (c) 2004-2020, PostgreSQL Global Development Group
6
+ * Copyright (c) 2004-2022, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/syslogger.h
9
9
  *
@@ -46,8 +46,7 @@ typedef struct
46
46
  char nuls[2]; /* always \0\0 */
47
47
  uint16 len; /* size of this chunk (counts data only) */
48
48
  int32 pid; /* writer's pid */
49
- char is_last; /* last chunk of message? 't' or 'f' ('T' or
50
- * 'F' for CSV case) */
49
+ bits8 flags; /* bitmask of PIPE_PROTO_* */
51
50
  char data[FLEXIBLE_ARRAY_MEMBER]; /* data payload starts here */
52
51
  } PipeProtoHeader;
53
52
 
@@ -60,20 +59,26 @@ typedef union
60
59
  #define PIPE_HEADER_SIZE offsetof(PipeProtoHeader, data)
61
60
  #define PIPE_MAX_PAYLOAD ((int) (PIPE_CHUNK_SIZE - PIPE_HEADER_SIZE))
62
61
 
62
+ /* flag bits for PipeProtoHeader->flags */
63
+ #define PIPE_PROTO_IS_LAST 0x01 /* last chunk of message? */
64
+ /* log destinations */
65
+ #define PIPE_PROTO_DEST_STDERR 0x10
66
+ #define PIPE_PROTO_DEST_CSVLOG 0x20
67
+ #define PIPE_PROTO_DEST_JSONLOG 0x40
63
68
 
64
69
  /* GUC options */
65
- extern bool Logging_collector;
66
- extern int Log_RotationAge;
67
- extern int Log_RotationSize;
70
+ extern PGDLLIMPORT bool Logging_collector;
71
+ extern PGDLLIMPORT int Log_RotationAge;
72
+ extern PGDLLIMPORT int Log_RotationSize;
68
73
  extern PGDLLIMPORT char *Log_directory;
69
74
  extern PGDLLIMPORT char *Log_filename;
70
- extern bool Log_truncate_on_rotation;
71
- extern int Log_file_mode;
75
+ extern PGDLLIMPORT bool Log_truncate_on_rotation;
76
+ extern PGDLLIMPORT int Log_file_mode;
72
77
 
73
78
  #ifndef WIN32
74
- extern int syslogPipe[2];
79
+ extern PGDLLIMPORT int syslogPipe[2];
75
80
  #else
76
- extern HANDLE syslogPipe[2];
81
+ extern PGDLLIMPORT HANDLE syslogPipe[2];
77
82
  #endif
78
83
 
79
84
 
@@ -3,7 +3,7 @@
3
3
  * walwriter.h
4
4
  * Exports from postmaster/walwriter.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/walwriter.h
9
9
  *
@@ -13,8 +13,8 @@
13
13
  #define _WALWRITER_H
14
14
 
15
15
  /* GUC options */
16
- extern int WalWriterDelay;
17
- extern int WalWriterFlushAfter;
16
+ extern PGDLLIMPORT int WalWriterDelay;
17
+ extern PGDLLIMPORT int WalWriterFlushAfter;
18
18
 
19
19
  extern void WalWriterMain(void) pg_attribute_noreturn();
20
20