pg_query 2.2.1 → 4.2.0

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 (465) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Rakefile +2 -2
  4. data/ext/pg_query/include/access/amapi.h +45 -1
  5. data/ext/pg_query/include/access/attmap.h +1 -1
  6. data/ext/pg_query/include/access/attnum.h +2 -2
  7. data/ext/pg_query/include/access/clog.h +4 -2
  8. data/ext/pg_query/include/access/commit_ts.h +6 -9
  9. data/ext/pg_query/include/access/detoast.h +1 -11
  10. data/ext/pg_query/include/access/genam.h +15 -12
  11. data/ext/pg_query/include/access/gin.h +2 -2
  12. data/ext/pg_query/include/access/htup.h +1 -1
  13. data/ext/pg_query/include/access/htup_details.h +75 -87
  14. data/ext/pg_query/include/access/itup.h +7 -1
  15. data/ext/pg_query/include/access/parallel.h +2 -2
  16. data/ext/pg_query/include/access/printtup.h +1 -1
  17. data/ext/pg_query/include/access/relation.h +1 -1
  18. data/ext/pg_query/include/access/relscan.h +17 -2
  19. data/ext/pg_query/include/access/rmgr.h +30 -3
  20. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  21. data/ext/pg_query/include/access/sdir.h +1 -1
  22. data/ext/pg_query/include/access/skey.h +1 -1
  23. data/ext/pg_query/include/access/stratnum.h +4 -2
  24. data/ext/pg_query/include/access/sysattr.h +1 -1
  25. data/ext/pg_query/include/access/table.h +2 -1
  26. data/ext/pg_query/include/access/tableam.h +272 -20
  27. data/ext/pg_query/include/access/toast_compression.h +73 -0
  28. data/ext/pg_query/include/access/transam.h +123 -13
  29. data/ext/pg_query/include/access/tupconvert.h +1 -1
  30. data/ext/pg_query/include/access/tupdesc.h +1 -1
  31. data/ext/pg_query/include/access/tupmacs.h +3 -3
  32. data/ext/pg_query/include/access/twophase.h +3 -1
  33. data/ext/pg_query/include/access/xact.h +73 -19
  34. data/ext/pg_query/include/access/xlog.h +60 -155
  35. data/ext/pg_query/include/access/xlog_internal.h +40 -13
  36. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  37. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  38. data/ext/pg_query/include/access/xlogreader.h +145 -39
  39. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  40. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  41. data/ext/pg_query/include/c.h +101 -44
  42. data/ext/pg_query/include/catalog/catalog.h +3 -1
  43. data/ext/pg_query/include/catalog/catversion.h +2 -2
  44. data/ext/pg_query/include/catalog/dependency.h +8 -16
  45. data/ext/pg_query/include/catalog/genbki.h +83 -5
  46. data/ext/pg_query/include/catalog/index.h +18 -3
  47. data/ext/pg_query/include/catalog/indexing.h +12 -324
  48. data/ext/pg_query/include/catalog/namespace.h +4 -2
  49. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  50. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  51. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  52. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  53. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  54. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  55. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  56. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  57. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  58. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  59. data/ext/pg_query/include/catalog/pg_class.h +44 -14
  60. data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
  61. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  62. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  63. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  64. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  65. data/ext/pg_query/include/catalog/pg_control.h +3 -5
  66. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  67. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  68. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  69. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  70. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  71. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  72. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  73. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  74. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  75. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  76. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  77. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  78. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  79. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  80. data/ext/pg_query/include/catalog/pg_operator.h +18 -15
  81. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  82. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  83. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  84. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  85. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  86. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  87. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  88. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  89. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  90. data/ext/pg_query/include/catalog/pg_publication.h +50 -7
  91. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  92. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  93. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  94. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  95. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  96. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  97. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  98. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  99. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  100. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  101. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  102. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  103. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  104. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  105. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  106. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  107. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  108. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  109. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  110. data/ext/pg_query/include/catalog/pg_type.h +55 -24
  111. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  112. data/ext/pg_query/include/catalog/storage.h +5 -3
  113. data/ext/pg_query/include/commands/async.h +3 -4
  114. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  115. data/ext/pg_query/include/commands/defrem.h +11 -24
  116. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  117. data/ext/pg_query/include/commands/explain.h +1 -1
  118. data/ext/pg_query/include/commands/prepare.h +1 -1
  119. data/ext/pg_query/include/commands/tablespace.h +2 -2
  120. data/ext/pg_query/include/commands/trigger.h +18 -16
  121. data/ext/pg_query/include/commands/user.h +2 -2
  122. data/ext/pg_query/include/commands/vacuum.h +88 -41
  123. data/ext/pg_query/include/commands/variable.h +1 -1
  124. data/ext/pg_query/include/common/file_perm.h +4 -4
  125. data/ext/pg_query/include/common/hashfn.h +1 -1
  126. data/ext/pg_query/include/common/ip.h +1 -7
  127. data/ext/pg_query/include/common/keywords.h +2 -6
  128. data/ext/pg_query/include/common/kwlookup.h +1 -1
  129. data/ext/pg_query/include/common/pg_prng.h +60 -0
  130. data/ext/pg_query/include/common/relpath.h +2 -2
  131. data/ext/pg_query/include/common/string.h +24 -1
  132. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  133. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  134. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  135. data/ext/pg_query/include/executor/execdesc.h +1 -1
  136. data/ext/pg_query/include/executor/executor.h +65 -22
  137. data/ext/pg_query/include/executor/functions.h +17 -3
  138. data/ext/pg_query/include/executor/instrument.h +33 -16
  139. data/ext/pg_query/include/executor/spi.h +41 -3
  140. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  141. data/ext/pg_query/include/executor/tuptable.h +1 -1
  142. data/ext/pg_query/include/fmgr.h +13 -7
  143. data/ext/pg_query/include/funcapi.h +16 -4
  144. data/ext/pg_query/include/getaddrinfo.h +1 -1
  145. data/ext/pg_query/include/jit/jit.h +11 -11
  146. data/ext/pg_query/include/kwlist_d.h +517 -494
  147. data/ext/pg_query/include/lib/dshash.h +112 -0
  148. data/ext/pg_query/include/lib/ilist.h +20 -1
  149. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  150. data/ext/pg_query/include/lib/simplehash.h +140 -15
  151. data/ext/pg_query/include/lib/sort_template.h +432 -0
  152. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  153. data/ext/pg_query/include/libpq/auth.h +6 -4
  154. data/ext/pg_query/include/libpq/crypt.h +5 -4
  155. data/ext/pg_query/include/libpq/hba.h +43 -4
  156. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  157. data/ext/pg_query/include/libpq/libpq.h +30 -20
  158. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  159. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  160. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  161. data/ext/pg_query/include/mb/pg_wchar.h +105 -23
  162. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  163. data/ext/pg_query/include/miscadmin.h +47 -41
  164. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  165. data/ext/pg_query/include/nodes/execnodes.h +270 -78
  166. data/ext/pg_query/include/nodes/extensible.h +4 -2
  167. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  168. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  169. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  170. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  171. data/ext/pg_query/include/nodes/nodes.h +30 -11
  172. data/ext/pg_query/include/nodes/params.h +1 -1
  173. data/ext/pg_query/include/nodes/parsenodes.h +322 -90
  174. data/ext/pg_query/include/nodes/pathnodes.h +243 -66
  175. data/ext/pg_query/include/nodes/pg_list.h +75 -69
  176. data/ext/pg_query/include/nodes/plannodes.h +111 -28
  177. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  178. data/ext/pg_query/include/nodes/print.h +1 -1
  179. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  180. data/ext/pg_query/include/nodes/value.h +58 -39
  181. data/ext/pg_query/include/optimizer/cost.h +9 -2
  182. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  183. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  184. data/ext/pg_query/include/optimizer/optimizer.h +25 -17
  185. data/ext/pg_query/include/optimizer/paths.h +6 -6
  186. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  187. data/ext/pg_query/include/parser/analyze.h +19 -5
  188. data/ext/pg_query/include/parser/gram.h +947 -913
  189. data/ext/pg_query/include/parser/gramparse.h +1 -1
  190. data/ext/pg_query/include/parser/kwlist.h +463 -453
  191. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  192. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  193. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  194. data/ext/pg_query/include/parser/parse_func.h +2 -1
  195. data/ext/pg_query/include/parser/parse_node.h +21 -9
  196. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  197. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  198. data/ext/pg_query/include/parser/parse_type.h +1 -1
  199. data/ext/pg_query/include/parser/parser.h +31 -4
  200. data/ext/pg_query/include/parser/parsetree.h +1 -1
  201. data/ext/pg_query/include/parser/scanner.h +1 -1
  202. data/ext/pg_query/include/parser/scansup.h +2 -5
  203. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  204. data/ext/pg_query/include/pg_config.h +83 -41
  205. data/ext/pg_query/include/pg_config_manual.h +74 -21
  206. data/ext/pg_query/include/pg_getopt.h +6 -6
  207. data/ext/pg_query/include/pg_query.h +5 -4
  208. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  209. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  210. data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
  211. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  212. data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
  213. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  214. data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
  215. data/ext/pg_query/include/pg_trace.h +1 -1
  216. data/ext/pg_query/include/pgstat.h +449 -1238
  217. data/ext/pg_query/include/pgtime.h +14 -4
  218. data/ext/pg_query/include/pl_gram.h +126 -128
  219. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  220. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  221. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  222. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  223. data/ext/pg_query/include/plerrcodes.h +9 -1
  224. data/ext/pg_query/include/plpgsql.h +52 -54
  225. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  226. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  227. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  228. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  229. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  230. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  231. data/ext/pg_query/include/port/atomics.h +1 -1
  232. data/ext/pg_query/include/port/pg_bitutils.h +40 -10
  233. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  234. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  235. data/ext/pg_query/include/port.h +71 -46
  236. data/ext/pg_query/include/portability/instr_time.h +1 -1
  237. data/ext/pg_query/include/postgres.h +60 -16
  238. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  239. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  240. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  241. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  242. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  243. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  244. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  245. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  246. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  247. data/ext/pg_query/include/postmaster/startup.h +39 -0
  248. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  249. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  250. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
  251. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  252. data/ext/pg_query/include/regex/regex.h +18 -16
  253. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  254. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  255. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  256. data/ext/pg_query/include/replication/origin.h +7 -7
  257. data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
  258. data/ext/pg_query/include/replication/slot.h +22 -11
  259. data/ext/pg_query/include/replication/syncrep.h +5 -5
  260. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  261. data/ext/pg_query/include/replication/walsender.h +8 -8
  262. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  263. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  264. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  265. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  266. data/ext/pg_query/include/storage/backendid.h +3 -3
  267. data/ext/pg_query/include/storage/block.h +4 -10
  268. data/ext/pg_query/include/storage/buf.h +1 -1
  269. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  270. data/ext/pg_query/include/storage/bufpage.h +6 -8
  271. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  272. data/ext/pg_query/include/storage/dsm.h +4 -1
  273. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  274. data/ext/pg_query/include/storage/fd.h +33 -3
  275. data/ext/pg_query/include/storage/fileset.h +40 -0
  276. data/ext/pg_query/include/storage/ipc.h +4 -1
  277. data/ext/pg_query/include/storage/item.h +1 -1
  278. data/ext/pg_query/include/storage/itemid.h +1 -1
  279. data/ext/pg_query/include/storage/itemptr.h +3 -1
  280. data/ext/pg_query/include/storage/large_object.h +2 -2
  281. data/ext/pg_query/include/storage/latch.h +9 -13
  282. data/ext/pg_query/include/storage/lmgr.h +2 -1
  283. data/ext/pg_query/include/storage/lock.h +11 -8
  284. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  285. data/ext/pg_query/include/storage/lwlock.h +5 -32
  286. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  287. data/ext/pg_query/include/storage/off.h +1 -1
  288. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  289. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  290. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  291. data/ext/pg_query/include/storage/predicate.h +4 -4
  292. data/ext/pg_query/include/storage/proc.h +173 -59
  293. data/ext/pg_query/include/storage/procarray.h +98 -0
  294. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  295. data/ext/pg_query/include/storage/procsignal.h +3 -7
  296. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  297. data/ext/pg_query/include/storage/s_lock.h +60 -21
  298. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  299. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  300. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  301. data/ext/pg_query/include/storage/shmem.h +1 -1
  302. data/ext/pg_query/include/storage/sinval.h +3 -3
  303. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  304. data/ext/pg_query/include/storage/smgr.h +10 -8
  305. data/ext/pg_query/include/storage/spin.h +2 -2
  306. data/ext/pg_query/include/storage/standby.h +13 -6
  307. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  308. data/ext/pg_query/include/storage/sync.h +7 -3
  309. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  310. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  311. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  312. data/ext/pg_query/include/tcop/dest.h +1 -1
  313. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  314. data/ext/pg_query/include/tcop/pquery.h +1 -1
  315. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  316. data/ext/pg_query/include/tcop/utility.h +7 -3
  317. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  318. data/ext/pg_query/include/utils/acl.h +24 -3
  319. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  320. data/ext/pg_query/include/utils/array.h +7 -2
  321. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  322. data/ext/pg_query/include/utils/backend_status.h +321 -0
  323. data/ext/pg_query/include/utils/builtins.h +10 -11
  324. data/ext/pg_query/include/utils/bytea.h +3 -2
  325. data/ext/pg_query/include/utils/catcache.h +1 -1
  326. data/ext/pg_query/include/utils/date.h +1 -1
  327. data/ext/pg_query/include/utils/datetime.h +8 -7
  328. data/ext/pg_query/include/utils/datum.h +9 -1
  329. data/ext/pg_query/include/utils/dsa.h +1 -1
  330. data/ext/pg_query/include/utils/dynahash.h +4 -3
  331. data/ext/pg_query/include/utils/elog.h +52 -21
  332. data/ext/pg_query/include/utils/errcodes.h +2 -0
  333. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  334. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  335. data/ext/pg_query/include/utils/float.h +7 -7
  336. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  337. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  338. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  339. data/ext/pg_query/include/utils/guc.h +69 -43
  340. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  341. data/ext/pg_query/include/utils/hsearch.h +15 -11
  342. data/ext/pg_query/include/utils/inval.h +4 -1
  343. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  344. data/ext/pg_query/include/utils/memdebug.h +1 -1
  345. data/ext/pg_query/include/utils/memutils.h +8 -3
  346. data/ext/pg_query/include/utils/numeric.h +19 -5
  347. data/ext/pg_query/include/utils/palloc.h +25 -3
  348. data/ext/pg_query/include/utils/partcache.h +1 -1
  349. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  350. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  351. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  352. data/ext/pg_query/include/utils/pidfile.h +1 -1
  353. data/ext/pg_query/include/utils/plancache.h +6 -5
  354. data/ext/pg_query/include/utils/portal.h +10 -12
  355. data/ext/pg_query/include/utils/ps_status.h +1 -1
  356. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  357. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  358. data/ext/pg_query/include/utils/regproc.h +14 -3
  359. data/ext/pg_query/include/utils/rel.h +71 -19
  360. data/ext/pg_query/include/utils/relcache.h +8 -5
  361. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  362. data/ext/pg_query/include/utils/resowner.h +1 -1
  363. data/ext/pg_query/include/utils/rls.h +2 -2
  364. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  365. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  366. data/ext/pg_query/include/utils/snapmgr.h +34 -14
  367. data/ext/pg_query/include/utils/snapshot.h +14 -1
  368. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  369. data/ext/pg_query/include/utils/syscache.h +6 -1
  370. data/ext/pg_query/include/utils/timeout.h +11 -4
  371. data/ext/pg_query/include/utils/timestamp.h +6 -5
  372. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  373. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  374. data/ext/pg_query/include/utils/typcache.h +24 -17
  375. data/ext/pg_query/include/utils/tzparser.h +1 -1
  376. data/ext/pg_query/include/utils/varlena.h +5 -3
  377. data/ext/pg_query/include/utils/wait_event.h +289 -0
  378. data/ext/pg_query/include/utils/xml.h +4 -4
  379. data/ext/pg_query/pg_query.pb-c.c +4302 -2304
  380. data/ext/pg_query/pg_query_deparse.c +986 -301
  381. data/ext/pg_query/pg_query_fingerprint.c +30 -10
  382. data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
  383. data/ext/pg_query/pg_query_normalize.c +1 -1
  384. data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
  385. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  386. data/ext/pg_query/pg_query_parse.c +1 -1
  387. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  388. data/ext/pg_query/pg_query_scan.c +2 -1
  389. data/ext/pg_query/pg_query_split.c +3 -2
  390. data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
  391. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  392. data/ext/pg_query/src_backend_commands_define.c +11 -1
  393. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  394. data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
  395. data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
  396. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  397. data/ext/pg_query/src_backend_nodes_list.c +74 -11
  398. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  399. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  400. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  401. data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
  402. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  403. data/ext/pg_query/src_backend_parser_scan.c +172 -209
  404. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  405. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  406. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  407. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  408. data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
  409. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  410. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  411. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  412. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  413. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
  414. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  415. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  416. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  417. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  418. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  419. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  420. data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
  421. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  422. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  423. data/ext/pg_query/src_common_encnames.c +1 -1
  424. data/ext/pg_query/src_common_hashfn.c +3 -3
  425. data/ext/pg_query/src_common_keywords.c +15 -2
  426. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  427. data/ext/pg_query/src_common_kwlookup.c +1 -1
  428. data/ext/pg_query/src_common_pg_prng.c +152 -0
  429. data/ext/pg_query/src_common_psprintf.c +1 -1
  430. data/ext/pg_query/src_common_string.c +7 -1
  431. data/ext/pg_query/src_common_stringinfo.c +1 -1
  432. data/ext/pg_query/src_common_wchar.c +701 -109
  433. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
  434. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  435. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
  436. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  437. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  438. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  440. data/ext/pg_query/src_port_pg_bitutils.c +41 -31
  441. data/ext/pg_query/src_port_pgsleep.c +1 -1
  442. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  443. data/ext/pg_query/src_port_qsort.c +12 -224
  444. data/ext/pg_query/src_port_snprintf.c +37 -13
  445. data/ext/pg_query/src_port_strerror.c +9 -19
  446. data/ext/pg_query/src_port_strnlen.c +1 -1
  447. data/lib/pg_query/filter_columns.rb +1 -1
  448. data/lib/pg_query/fingerprint.rb +5 -1
  449. data/lib/pg_query/node.rb +2 -2
  450. data/lib/pg_query/param_refs.rb +1 -1
  451. data/lib/pg_query/parse.rb +8 -7
  452. data/lib/pg_query/pg_query_pb.rb +1108 -942
  453. data/lib/pg_query/truncate.rb +1 -1
  454. data/lib/pg_query/version.rb +1 -1
  455. metadata +23 -13
  456. data/ext/pg_query/include/access/xloginsert.h +0 -64
  457. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  458. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  459. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  460. data/ext/pg_query/include/parser/parse_target.h +0 -46
  461. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  462. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
  463. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  464. data/ext/pg_query/src_port_erand48.c +0 -127
  465. data/ext/pg_query/src_port_random.c +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9625ed6fd4d8f67673ee922f191996d2c157addf6d97aa092af682a21bf96ce7
4
- data.tar.gz: 9a20dedc0420e5a7f2162c642c2ddee60cd98fd6bbfeff1b1affc181f6dcbc27
3
+ metadata.gz: 8f3ea528544d70b22864e56f006dffce6c849d51eedb1de5d8644eb9f4d1b0ad
4
+ data.tar.gz: 7b2793ea012fcd4dd88a42703da627f6794c6f032ccd39fc9addb2f0bbc40208
5
5
  SHA512:
6
- metadata.gz: 7f4633dd45e1530cebc92731315a238f22e4111ba23e10ea6991b6466f444ce2b974ffd858aaf5c93c5b6597e004e0b2334ac1832c24851956e34dd629fe58ff
7
- data.tar.gz: 36d225dc15a58db4336cdbdd571a385308403b93d5507ec25b0deb5179be87b8a00fb029b1e5b77bdf62f79861fedd39ba350a50897bcfec4d61e266b2cdf639
6
+ metadata.gz: 23d2fae9e57c9c4f8b35856b42748ba8ff061ba5aa92ff4c679ebf5bce562ad7ddafa452183104318f19f09fb089f31108f922c39b057bccbbf028e50412b2fa
7
+ data.tar.gz: 3c64bf6d9eb662f348296ebc79ba8671a5be8e9053b873a4a7e0be8065229ab89ba0d28d5cea2ed3aea48a7dc2ee6053470adbe45b46bd93e5a2ca2ffb041128
data/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@
4
4
 
5
5
  * ...
6
6
 
7
+ ## 4.2.0 2022-02-08
8
+
9
+ * Update to libpg_query 15-4.2.0
10
+ - Update to PostgreSQL 15.1
11
+
7
12
  ## 2.2.1 2022-01-20
8
13
 
9
14
  * Detect tables used in the query of a PREPARE statement ([#273](https://github.com/pganalyze/pg_query/pull/273))
data/Rakefile CHANGED
@@ -5,8 +5,8 @@ require 'rspec/core/rake_task'
5
5
  require 'rubocop/rake_task'
6
6
  require 'open-uri'
7
7
 
8
- LIB_PG_QUERY_TAG = '13-2.2.0'.freeze
9
- LIB_PG_QUERY_SHA256SUM = '07916be1a2b780dee6feed936aaa04ccee2a3afde8570a6920c3a839c87539c6'.freeze
8
+ LIB_PG_QUERY_TAG = '15-4.2.0'.freeze
9
+ LIB_PG_QUERY_SHA256SUM = '573b7b0d3b04702ec9e541e0a504632de17bd90b948c5658e72c1cf9dfc3a05d'.freeze
10
10
 
11
11
  Rake::ExtensionTask.new 'pg_query' do |ext|
12
12
  ext.lib_dir = 'lib/pg_query'
@@ -3,7 +3,7 @@
3
3
  * amapi.h
4
4
  * API for Postgres index access methods.
5
5
  *
6
- * Copyright (c) 2015-2020, PostgreSQL Global Development Group
6
+ * Copyright (c) 2015-2022, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/access/amapi.h
9
9
  *
@@ -54,6 +54,42 @@ typedef enum IndexAMProperty
54
54
  AMPROP_CAN_INCLUDE
55
55
  } IndexAMProperty;
56
56
 
57
+ /*
58
+ * We use lists of this struct type to keep track of both operators and
59
+ * support functions while building or adding to an opclass or opfamily.
60
+ * amadjustmembers functions receive lists of these structs, and are allowed
61
+ * to alter their "ref" fields.
62
+ *
63
+ * The "ref" fields define how the pg_amop or pg_amproc entry should depend
64
+ * on the associated objects (that is, which dependency type to use, and
65
+ * which opclass or opfamily it should depend on).
66
+ *
67
+ * If ref_is_hard is true, the entry will have a NORMAL dependency on the
68
+ * operator or support func, and an INTERNAL dependency on the opclass or
69
+ * opfamily. This forces the opclass or opfamily to be dropped if the
70
+ * operator or support func is dropped, and requires the CASCADE option
71
+ * to do so. Nor will ALTER OPERATOR FAMILY DROP be allowed. This is
72
+ * the right behavior for objects that are essential to an opclass.
73
+ *
74
+ * If ref_is_hard is false, the entry will have an AUTO dependency on the
75
+ * operator or support func, and also an AUTO dependency on the opclass or
76
+ * opfamily. This allows ALTER OPERATOR FAMILY DROP, and causes that to
77
+ * happen automatically if the operator or support func is dropped. This
78
+ * is the right behavior for inessential ("loose") objects.
79
+ */
80
+ typedef struct OpFamilyMember
81
+ {
82
+ bool is_func; /* is this an operator, or support func? */
83
+ Oid object; /* operator or support func's OID */
84
+ int number; /* strategy or support func number */
85
+ Oid lefttype; /* lefttype */
86
+ Oid righttype; /* righttype */
87
+ Oid sortfamily; /* ordering operator's sort opfamily, or 0 */
88
+ bool ref_is_hard; /* hard or soft dependency? */
89
+ bool ref_is_family; /* is dependency on opclass or opfamily? */
90
+ Oid refobjid; /* OID of opclass or opfamily */
91
+ } OpFamilyMember;
92
+
57
93
 
58
94
  /*
59
95
  * Callback function signatures --- see indexam.sgml for more info.
@@ -74,6 +110,7 @@ typedef bool (*aminsert_function) (Relation indexRelation,
74
110
  ItemPointer heap_tid,
75
111
  Relation heapRelation,
76
112
  IndexUniqueCheck checkUnique,
113
+ bool indexUnchanged,
77
114
  struct IndexInfo *indexInfo);
78
115
 
79
116
  /* bulk delete */
@@ -114,6 +151,12 @@ typedef char *(*ambuildphasename_function) (int64 phasenum);
114
151
  /* validate definition of an opclass for this AM */
115
152
  typedef bool (*amvalidate_function) (Oid opclassoid);
116
153
 
154
+ /* validate operators and support functions to be added to an opclass/family */
155
+ typedef void (*amadjustmembers_function) (Oid opfamilyoid,
156
+ Oid opclassoid,
157
+ List *operators,
158
+ List *functions);
159
+
117
160
  /* prepare for index scan */
118
161
  typedef IndexScanDesc (*ambeginscan_function) (Relation indexRelation,
119
162
  int nkeys,
@@ -224,6 +267,7 @@ typedef struct IndexAmRoutine
224
267
  amproperty_function amproperty; /* can be NULL */
225
268
  ambuildphasename_function ambuildphasename; /* can be NULL */
226
269
  amvalidate_function amvalidate;
270
+ amadjustmembers_function amadjustmembers; /* can be NULL */
227
271
  ambeginscan_function ambeginscan;
228
272
  amrescan_function amrescan;
229
273
  amgettuple_function amgettuple; /* can be NULL */
@@ -4,7 +4,7 @@
4
4
  * Definitions for PostgreSQL attribute mappings
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/access/attmap.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES attribute number definitions.
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/access/attnum.h
@@ -36,7 +36,7 @@ typedef int16 AttrNumber;
36
36
 
37
37
  /*
38
38
  * AttrNumberIsForUserDefinedAttr
39
- * True iff the attribute number corresponds to an user defined attribute.
39
+ * True iff the attribute number corresponds to a user defined attribute.
40
40
  */
41
41
  #define AttrNumberIsForUserDefinedAttr(attributeNumber) \
42
42
  ((bool) ((attributeNumber) > 0))
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * PostgreSQL transaction-commit-log manager
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/access/clog.h
@@ -12,6 +12,7 @@
12
12
  #define CLOG_H
13
13
 
14
14
  #include "access/xlogreader.h"
15
+ #include "storage/sync.h"
15
16
  #include "lib/stringinfo.h"
16
17
 
17
18
  /*
@@ -45,11 +46,12 @@ extern void CLOGShmemInit(void);
45
46
  extern void BootStrapCLOG(void);
46
47
  extern void StartupCLOG(void);
47
48
  extern void TrimCLOG(void);
48
- extern void ShutdownCLOG(void);
49
49
  extern void CheckPointCLOG(void);
50
50
  extern void ExtendCLOG(TransactionId newestXact);
51
51
  extern void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid);
52
52
 
53
+ extern int clogsyncfiletag(const FileTag *ftag, char *path);
54
+
53
55
  /* XLOG stuff */
54
56
  #define CLOG_ZEROPAGE 0x00
55
57
  #define CLOG_TRUNCATE 0x10
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * PostgreSQL commit timestamp manager
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/access/commit_ts.h
@@ -14,17 +14,14 @@
14
14
  #include "access/xlog.h"
15
15
  #include "datatype/timestamp.h"
16
16
  #include "replication/origin.h"
17
- #include "utils/guc.h"
17
+ #include "storage/sync.h"
18
18
 
19
19
 
20
20
  extern PGDLLIMPORT bool track_commit_timestamp;
21
21
 
22
- extern bool check_track_commit_timestamp(bool *newval, void **extra,
23
- GucSource source);
24
-
25
22
  extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
26
23
  TransactionId *subxids, TimestampTz timestamp,
27
- RepOriginId nodeid, bool write_xlog);
24
+ RepOriginId nodeid);
28
25
  extern bool TransactionIdGetCommitTsData(TransactionId xid,
29
26
  TimestampTz *ts, RepOriginId *nodeid);
30
27
  extern TransactionId GetLatestCommitTsData(TimestampTz *ts,
@@ -37,7 +34,6 @@ extern void BootStrapCommitTs(void);
37
34
  extern void StartupCommitTs(void);
38
35
  extern void CommitTsParameterChange(bool newvalue, bool oldvalue);
39
36
  extern void CompleteCommitTsInitialization(void);
40
- extern void ShutdownCommitTs(void);
41
37
  extern void CheckPointCommitTs(void);
42
38
  extern void ExtendCommitTs(TransactionId newestXact);
43
39
  extern void TruncateCommitTs(TransactionId oldestXact);
@@ -45,10 +41,11 @@ extern void SetCommitTsLimit(TransactionId oldestXact,
45
41
  TransactionId newestXact);
46
42
  extern void AdvanceOldestCommitTsXid(TransactionId oldestXact);
47
43
 
44
+ extern int committssyncfiletag(const FileTag *ftag, char *path);
45
+
48
46
  /* XLOG stuff */
49
47
  #define COMMIT_TS_ZEROPAGE 0x00
50
48
  #define COMMIT_TS_TRUNCATE 0x10
51
- #define COMMIT_TS_SETTS 0x20
52
49
 
53
50
  typedef struct xl_commit_ts_set
54
51
  {
@@ -56,7 +53,7 @@ typedef struct xl_commit_ts_set
56
53
  RepOriginId nodeid;
57
54
  TransactionId mainxid;
58
55
  /* subxact Xids follow */
59
- } xl_commit_ts_set;
56
+ } xl_commit_ts_set;
60
57
 
61
58
  #define SizeOfCommitTsSet (offsetof(xl_commit_ts_set, mainxid) + \
62
59
  sizeof(TransactionId))
@@ -3,7 +3,7 @@
3
3
  * detoast.h
4
4
  * Access to compressed and external varlena values.
5
5
  *
6
- * Copyright (c) 2000-2020, PostgreSQL Global Development Group
6
+ * Copyright (c) 2000-2022, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/access/detoast.h
9
9
  *
@@ -12,16 +12,6 @@
12
12
  #ifndef DETOAST_H
13
13
  #define DETOAST_H
14
14
 
15
- /*
16
- * Testing whether an externally-stored value is compressed now requires
17
- * comparing extsize (the actual length of the external data) to rawsize
18
- * (the original uncompressed datum's size). The latter includes VARHDRSZ
19
- * overhead, the former doesn't. We never use compression unless it actually
20
- * saves space, so we expect either equality or less-than.
21
- */
22
- #define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \
23
- ((toast_pointer).va_extsize < (toast_pointer).va_rawsize - VARHDRSZ)
24
-
25
15
  /*
26
16
  * Macro to fetch the possibly-unaligned contents of an EXTERNAL datum
27
17
  * into a local "struct varatt_external" toast pointer. This should be
@@ -4,7 +4,7 @@
4
4
  * POSTGRES generalized index access method definitions.
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/access/genam.h
@@ -38,8 +38,8 @@ typedef struct IndexBuildResult
38
38
  *
39
39
  * num_heap_tuples is accurate only when estimated_count is false;
40
40
  * otherwise it's just an estimate (currently, the estimate is the
41
- * prior value of the relation's pg_class.reltuples field). It will
42
- * always just be an estimate during ambulkdelete.
41
+ * prior value of the relation's pg_class.reltuples field, so it could
42
+ * even be -1). It will always just be an estimate during ambulkdelete.
43
43
  */
44
44
  typedef struct IndexVacuumInfo
45
45
  {
@@ -63,20 +63,22 @@ typedef struct IndexVacuumInfo
63
63
  * of which this is just the first field; this provides a way for ambulkdelete
64
64
  * to communicate additional private data to amvacuumcleanup.
65
65
  *
66
- * Note: pages_removed is the amount by which the index physically shrank,
67
- * if any (ie the change in its total size on disk). pages_deleted and
68
- * pages_free refer to free space within the index file. Some index AMs
69
- * may compute num_index_tuples by reference to num_heap_tuples, in which
70
- * case they should copy the estimated_count field from IndexVacuumInfo.
66
+ * Note: pages_newly_deleted is the number of pages in the index that were
67
+ * deleted by the current vacuum operation. pages_deleted and pages_free
68
+ * refer to free space within the index file.
69
+ *
70
+ * Note: Some index AMs may compute num_index_tuples by reference to
71
+ * num_heap_tuples, in which case they should copy the estimated_count field
72
+ * from IndexVacuumInfo.
71
73
  */
72
74
  typedef struct IndexBulkDeleteResult
73
75
  {
74
76
  BlockNumber num_pages; /* pages remaining in index */
75
- BlockNumber pages_removed; /* # removed during vacuum operation */
76
77
  bool estimated_count; /* num_index_tuples is an estimate */
77
78
  double num_index_tuples; /* tuples remaining */
78
79
  double tuples_removed; /* # removed during vacuum operation */
79
- BlockNumber pages_deleted; /* # unused pages in index */
80
+ BlockNumber pages_newly_deleted; /* # pages marked deleted by us */
81
+ BlockNumber pages_deleted; /* # pages marked deleted (could be by us) */
80
82
  BlockNumber pages_free; /* # pages available for reuse */
81
83
  } IndexBulkDeleteResult;
82
84
 
@@ -143,6 +145,7 @@ extern bool index_insert(Relation indexRelation,
143
145
  ItemPointer heap_t_ctid,
144
146
  Relation heapRelation,
145
147
  IndexUniqueCheck checkUnique,
148
+ bool indexUnchanged,
146
149
  struct IndexInfo *indexInfo);
147
150
 
148
151
  extern IndexScanDesc index_beginscan(Relation heapRelation,
@@ -174,11 +177,11 @@ extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction,
174
177
  extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap);
175
178
 
176
179
  extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,
177
- IndexBulkDeleteResult *stats,
180
+ IndexBulkDeleteResult *istat,
178
181
  IndexBulkDeleteCallback callback,
179
182
  void *callback_state);
180
183
  extern IndexBulkDeleteResult *index_vacuum_cleanup(IndexVacuumInfo *info,
181
- IndexBulkDeleteResult *stats);
184
+ IndexBulkDeleteResult *istat);
182
185
  extern bool index_can_return(Relation indexRelation, int attno);
183
186
  extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum,
184
187
  uint16 procnum);
@@ -2,7 +2,7 @@
2
2
  * gin.h
3
3
  * Public header file for Generalized Inverted Index access method.
4
4
  *
5
- * Copyright (c) 2006-2020, PostgreSQL Global Development Group
5
+ * Copyright (c) 2006-2022, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/access/gin.h
8
8
  *--------------------------------------------------------------------------
@@ -68,7 +68,7 @@ typedef char GinTernaryValue;
68
68
 
69
69
  /* GUC parameters */
70
70
  extern PGDLLIMPORT int GinFuzzySearchLimit;
71
- extern int gin_pending_list_limit;
71
+ extern PGDLLIMPORT int gin_pending_list_limit;
72
72
 
73
73
  /* ginutil.c */
74
74
  extern void ginGetStats(Relation index, GinStatsData *stats);
@@ -4,7 +4,7 @@
4
4
  * POSTGRES heap tuple definitions.
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/access/htup.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES heap tuple header definitions.
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/access/htup_details.h
@@ -191,7 +191,7 @@ struct HeapTupleHeaderData
191
191
  #define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */
192
192
  #define HEAP_HASOID_OLD 0x0008 /* has an object-id field */
193
193
  #define HEAP_XMAX_KEYSHR_LOCK 0x0010 /* xmax is a key-shared locker */
194
- #define HEAP_COMBOCID 0x0020 /* t_cid is a combo cid */
194
+ #define HEAP_COMBOCID 0x0020 /* t_cid is a combo CID */
195
195
  #define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */
196
196
  #define HEAP_XMAX_LOCK_ONLY 0x0080 /* xmax, if valid, is only a locker */
197
197
 
@@ -443,11 +443,10 @@ do { \
443
443
  )
444
444
 
445
445
  #define HeapTupleHeaderIndicatesMovedPartitions(tup) \
446
- (ItemPointerGetOffsetNumber(&(tup)->t_ctid) == MovedPartitionsOffsetNumber && \
447
- ItemPointerGetBlockNumberNoCheck(&(tup)->t_ctid) == MovedPartitionsBlockNumber)
446
+ ItemPointerIndicatesMovedPartitions(&(tup)->t_ctid)
448
447
 
449
448
  #define HeapTupleHeaderSetMovedPartitions(tup) \
450
- ItemPointerSet(&(tup)->t_ctid, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber)
449
+ ItemPointerSetMovedPartitions(&(tup)->t_ctid)
451
450
 
452
451
  #define HeapTupleHeaderGetDatumLength(tup) \
453
452
  VARSIZE(tup)
@@ -691,88 +690,6 @@ struct MinimalTupleData
691
690
  #define HeapTupleClearHeapOnly(tuple) \
692
691
  HeapTupleHeaderClearHeapOnly((tuple)->t_data)
693
692
 
694
-
695
- /* ----------------
696
- * fastgetattr
697
- *
698
- * Fetch a user attribute's value as a Datum (might be either a
699
- * value, or a pointer into the data area of the tuple).
700
- *
701
- * This must not be used when a system attribute might be requested.
702
- * Furthermore, the passed attnum MUST be valid. Use heap_getattr()
703
- * instead, if in doubt.
704
- *
705
- * This gets called many times, so we macro the cacheable and NULL
706
- * lookups, and call nocachegetattr() for the rest.
707
- * ----------------
708
- */
709
-
710
- #if !defined(DISABLE_COMPLEX_MACRO)
711
-
712
- #define fastgetattr(tup, attnum, tupleDesc, isnull) \
713
- ( \
714
- AssertMacro((attnum) > 0), \
715
- (*(isnull) = false), \
716
- HeapTupleNoNulls(tup) ? \
717
- ( \
718
- TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \
719
- ( \
720
- fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \
721
- (char *) (tup)->t_data + (tup)->t_data->t_hoff + \
722
- TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff)\
723
- ) \
724
- : \
725
- nocachegetattr((tup), (attnum), (tupleDesc)) \
726
- ) \
727
- : \
728
- ( \
729
- att_isnull((attnum)-1, (tup)->t_data->t_bits) ? \
730
- ( \
731
- (*(isnull) = true), \
732
- (Datum)NULL \
733
- ) \
734
- : \
735
- ( \
736
- nocachegetattr((tup), (attnum), (tupleDesc)) \
737
- ) \
738
- ) \
739
- )
740
- #else /* defined(DISABLE_COMPLEX_MACRO) */
741
-
742
- extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
743
- bool *isnull);
744
- #endif /* defined(DISABLE_COMPLEX_MACRO) */
745
-
746
-
747
- /* ----------------
748
- * heap_getattr
749
- *
750
- * Extract an attribute of a heap tuple and return it as a Datum.
751
- * This works for either system or user attributes. The given attnum
752
- * is properly range-checked.
753
- *
754
- * If the field in question has a NULL value, we return a zero Datum
755
- * and set *isnull == true. Otherwise, we set *isnull == false.
756
- *
757
- * <tup> is the pointer to the heap tuple. <attnum> is the attribute
758
- * number of the column (field) caller wants. <tupleDesc> is a
759
- * pointer to the structure describing the row and all its fields.
760
- * ----------------
761
- */
762
- #define heap_getattr(tup, attnum, tupleDesc, isnull) \
763
- ( \
764
- ((attnum) > 0) ? \
765
- ( \
766
- ((attnum) > (int) HeapTupleHeaderGetNatts((tup)->t_data)) ? \
767
- getmissingattr((tupleDesc), (attnum), (isnull)) \
768
- : \
769
- fastgetattr((tup), (attnum), (tupleDesc), (isnull)) \
770
- ) \
771
- : \
772
- heap_getsysattr((tup), (attnum), (tupleDesc), (isnull)) \
773
- )
774
-
775
-
776
693
  /* prototypes for functions in common/heaptuple.c */
777
694
  extern Size heap_compute_data_size(TupleDesc tupleDesc,
778
695
  Datum *values, bool *isnull);
@@ -816,4 +733,75 @@ extern size_t varsize_any(void *p);
816
733
  extern HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc);
817
734
  extern MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc);
818
735
 
736
+ #ifndef FRONTEND
737
+ /*
738
+ * fastgetattr
739
+ * Fetch a user attribute's value as a Datum (might be either a
740
+ * value, or a pointer into the data area of the tuple).
741
+ *
742
+ * This must not be used when a system attribute might be requested.
743
+ * Furthermore, the passed attnum MUST be valid. Use heap_getattr()
744
+ * instead, if in doubt.
745
+ *
746
+ * This gets called many times, so we macro the cacheable and NULL
747
+ * lookups, and call nocachegetattr() for the rest.
748
+ */
749
+ static inline Datum
750
+ fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
751
+ {
752
+ Assert(attnum > 0);
753
+
754
+ *isnull = false;
755
+ if (HeapTupleNoNulls(tup))
756
+ {
757
+ Form_pg_attribute att;
758
+
759
+ att = TupleDescAttr(tupleDesc, attnum - 1);
760
+ if (att->attcacheoff >= 0)
761
+ return fetchatt(att, (char *) tup->t_data + tup->t_data->t_hoff +
762
+ att->attcacheoff);
763
+ else
764
+ return nocachegetattr(tup, attnum, tupleDesc);
765
+ }
766
+ else
767
+ {
768
+ if (att_isnull(attnum - 1, tup->t_data->t_bits))
769
+ {
770
+ *isnull = true;
771
+ return (Datum) NULL;
772
+ }
773
+ else
774
+ return nocachegetattr(tup, attnum, tupleDesc);
775
+ }
776
+ }
777
+
778
+ /*
779
+ * heap_getattr
780
+ * Extract an attribute of a heap tuple and return it as a Datum.
781
+ * This works for either system or user attributes. The given attnum
782
+ * is properly range-checked.
783
+ *
784
+ * If the field in question has a NULL value, we return a zero Datum
785
+ * and set *isnull == true. Otherwise, we set *isnull == false.
786
+ *
787
+ * <tup> is the pointer to the heap tuple. <attnum> is the attribute
788
+ * number of the column (field) caller wants. <tupleDesc> is a
789
+ * pointer to the structure describing the row and all its fields.
790
+ *
791
+ */
792
+ static inline Datum
793
+ heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
794
+ {
795
+ if (attnum > 0)
796
+ {
797
+ if (attnum > (int) HeapTupleHeaderGetNatts(tup->t_data))
798
+ return getmissingattr(tupleDesc, attnum, isnull);
799
+ else
800
+ return fastgetattr(tup, attnum, tupleDesc, isnull);
801
+ }
802
+ else
803
+ return heap_getsysattr(tup, attnum, tupleDesc, isnull);
804
+ }
805
+ #endif /* FRONTEND */
806
+
819
807
  #endif /* HTUP_DETAILS_H */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES index tuple definitions.
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/access/itup.h
@@ -150,10 +150,16 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap;
150
150
  /* routines in indextuple.c */
151
151
  extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor,
152
152
  Datum *values, bool *isnull);
153
+ extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor,
154
+ Datum *values, bool *isnull,
155
+ MemoryContext context);
153
156
  extern Datum nocache_index_getattr(IndexTuple tup, int attnum,
154
157
  TupleDesc tupleDesc);
155
158
  extern void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor,
156
159
  Datum *values, bool *isnull);
160
+ extern void index_deform_tuple_internal(TupleDesc tupleDescriptor,
161
+ Datum *values, bool *isnull,
162
+ char *tp, bits8 *bp, int hasnulls);
157
163
  extern IndexTuple CopyIndexTuple(IndexTuple source);
158
164
  extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor,
159
165
  IndexTuple source, int leavenatts);
@@ -3,7 +3,7 @@
3
3
  * parallel.h
4
4
  * Infrastructure for launching parallel workers
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/access/parallel.h
@@ -54,7 +54,7 @@ typedef struct ParallelWorkerContext
54
54
  shm_toc *toc;
55
55
  } ParallelWorkerContext;
56
56
 
57
- extern volatile bool ParallelMessagePending;
57
+ extern PGDLLIMPORT volatile bool ParallelMessagePending;
58
58
  extern PGDLLIMPORT int ParallelWorkerNumber;
59
59
  extern PGDLLIMPORT bool InitializingParallelWorker;
60
60
 
@@ -4,7 +4,7 @@
4
4
  *
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/access/printtup.h
@@ -4,7 +4,7 @@
4
4
  * Generic relation related routines.
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/access/relation.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES relation scan descriptor definitions.
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/access/relscan.h
@@ -36,6 +36,10 @@ typedef struct TableScanDescData
36
36
  int rs_nkeys; /* number of scan keys */
37
37
  struct ScanKeyData *rs_key; /* array of scan key descriptors */
38
38
 
39
+ /* Range of ItemPointers for table_scan_getnextslot_tidrange() to scan. */
40
+ ItemPointerData rs_mintid;
41
+ ItemPointerData rs_maxtid;
42
+
39
43
  /*
40
44
  * Information about type and behaviour of the scan, a bitmask of members
41
45
  * of the ScanOptions enum (see tableam.h).
@@ -44,7 +48,6 @@ typedef struct TableScanDescData
44
48
 
45
49
  struct ParallelTableScanDescData *rs_parallel; /* parallel scan
46
50
  * information */
47
-
48
51
  } TableScanDescData;
49
52
  typedef struct TableScanDescData *TableScanDesc;
50
53
 
@@ -81,6 +84,18 @@ typedef struct ParallelBlockTableScanDescData
81
84
  } ParallelBlockTableScanDescData;
82
85
  typedef struct ParallelBlockTableScanDescData *ParallelBlockTableScanDesc;
83
86
 
87
+ /*
88
+ * Per backend state for parallel table scan, for block-oriented storage.
89
+ */
90
+ typedef struct ParallelBlockTableScanWorkerData
91
+ {
92
+ uint64 phsw_nallocated; /* Current # of blocks into the scan */
93
+ uint32 phsw_chunk_remaining; /* # blocks left in this chunk */
94
+ uint32 phsw_chunk_size; /* The number of blocks to allocate in
95
+ * each I/O chunk for the scan */
96
+ } ParallelBlockTableScanWorkerData;
97
+ typedef struct ParallelBlockTableScanWorkerData *ParallelBlockTableScanWorker;
98
+
84
99
  /*
85
100
  * Base class for fetches from a table via an index. This is the base-class
86
101
  * for such scans, which needs to be embedded in the respective struct for