pg_query 2.0.3 → 5.1.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 (557) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -0
  3. data/README.md +67 -29
  4. data/Rakefile +8 -23
  5. data/ext/pg_query/extconf.rb +21 -3
  6. data/ext/pg_query/include/pg_query.h +29 -4
  7. data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
  29. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  30. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
  31. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  32. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
  34. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
  36. data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
  37. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  38. data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
  39. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  40. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  42. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
  43. data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
  44. data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
  45. data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
  46. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
  47. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  48. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
  49. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  50. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
  52. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  53. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  54. data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
  58. data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
  60. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
  80. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
  81. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
  125. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
  126. data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
  127. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
  129. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
  130. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  132. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
  133. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
  134. data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
  135. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
  136. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  137. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
  138. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  139. data/ext/pg_query/include/postgres/common/int.h +437 -0
  140. data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
  141. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  142. data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
  143. data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
  144. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  145. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  146. data/ext/pg_query/include/postgres/common/string.h +44 -0
  147. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
  148. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
  149. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  150. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  151. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
  152. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  153. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  154. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  155. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
  156. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
  157. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
  158. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
  159. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  160. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  161. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
  162. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  163. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
  164. data/ext/pg_query/include/postgres/gram.h +1127 -0
  165. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  166. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
  167. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  168. data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
  169. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
  170. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  171. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
  172. data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
  173. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  181. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
  182. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  183. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  184. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
  185. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  186. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
  192. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
  193. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  195. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
  196. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
  203. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  205. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  206. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
  214. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
  215. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
  216. data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
  224. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  225. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  226. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  227. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  228. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
  229. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  230. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
  231. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
  232. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  233. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
  234. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  235. data/ext/pg_query/include/postgres/pgstat.h +778 -0
  236. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
  237. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
  238. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  239. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
  240. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
  241. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
  242. data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
  243. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
  245. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  248. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  249. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
  250. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  251. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  252. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  253. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  254. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
  255. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  256. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  257. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  258. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  259. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  260. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  261. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  264. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  268. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  269. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  270. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  276. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  278. data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
  279. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  280. data/ext/pg_query/include/postgres/postgres.h +579 -0
  281. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
  285. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
  289. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  290. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
  291. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
  292. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
  293. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
  294. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  295. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  296. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
  297. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
  298. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
  299. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
  300. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
  301. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
  304. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  305. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  306. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
  307. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
  308. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  309. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
  310. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
  311. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
  312. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
  313. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
  314. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
  315. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  316. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
  317. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  318. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
  320. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
  321. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
  323. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
  324. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
  325. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
  326. data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  329. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
  330. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
  331. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
  332. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
  333. data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  335. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
  336. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  337. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
  338. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
  339. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
  340. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  341. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  342. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
  343. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  344. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
  345. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
  346. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
  347. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
  348. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
  354. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
  355. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
  356. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
  357. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
  358. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
  359. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  360. data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
  361. data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
  362. data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
  363. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
  364. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
  365. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  367. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
  368. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
  369. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  370. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
  371. data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
  372. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  374. data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
  375. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
  376. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
  377. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
  378. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
  379. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
  381. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
  382. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
  383. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  384. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
  385. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  386. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
  387. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  388. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  389. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
  390. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
  391. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  392. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
  393. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
  395. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
  396. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
  397. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  398. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  399. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  400. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
  401. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
  402. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  403. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
  405. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
  407. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
  408. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
  409. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
  411. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
  412. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
  413. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
  414. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
  415. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
  416. data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
  417. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
  418. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
  419. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
  420. data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
  421. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  422. data/ext/pg_query/include/protobuf-c.h +7 -3
  423. data/ext/pg_query/pg_query.c +10 -1
  424. data/ext/pg_query/pg_query.pb-c.c +21026 -17002
  425. data/ext/pg_query/pg_query_deparse.c +1 -9896
  426. data/ext/pg_query/pg_query_fingerprint.c +162 -50
  427. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  428. data/ext/pg_query/pg_query_internal.h +1 -1
  429. data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
  430. data/ext/pg_query/pg_query_normalize.c +259 -64
  431. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  432. data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
  433. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  434. data/ext/pg_query/pg_query_parse.c +47 -5
  435. data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
  436. data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
  437. data/ext/pg_query/pg_query_ruby.c +6 -1
  438. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  439. data/ext/pg_query/pg_query_scan.c +3 -2
  440. data/ext/pg_query/pg_query_split.c +6 -5
  441. data/ext/pg_query/postgres_deparse.c +11067 -0
  442. data/ext/pg_query/postgres_deparse.h +9 -0
  443. data/ext/pg_query/protobuf-c.c +34 -27
  444. data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
  445. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  446. data/ext/pg_query/src_backend_commands_define.c +11 -1
  447. data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
  448. data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
  449. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
  450. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  451. data/ext/pg_query/src_backend_nodes_list.c +99 -12
  452. data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
  453. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
  454. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  455. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  456. data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
  457. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  458. data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
  459. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  460. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  461. data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
  462. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  463. data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
  464. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  465. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  466. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  467. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
  468. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  469. data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
  470. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
  471. data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
  472. data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
  473. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  474. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
  476. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  477. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
  478. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  479. data/ext/pg_query/src_common_encnames.c +4 -1
  480. data/ext/pg_query/src_common_hashfn.c +420 -0
  481. data/ext/pg_query/src_common_keywords.c +15 -2
  482. data/ext/pg_query/src_common_kwlist_d.h +545 -498
  483. data/ext/pg_query/src_common_kwlookup.c +1 -1
  484. data/ext/pg_query/src_common_psprintf.c +1 -1
  485. data/ext/pg_query/src_common_stringinfo.c +4 -4
  486. data/ext/pg_query/src_common_wchar.c +717 -113
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  493. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  494. data/ext/pg_query/src_port_pg_bitutils.c +103 -40
  495. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  496. data/ext/pg_query/src_port_qsort.c +12 -224
  497. data/ext/pg_query/src_port_snprintf.c +51 -29
  498. data/ext/pg_query/src_port_strerror.c +9 -19
  499. data/ext/pg_query/src_port_strlcpy.c +79 -0
  500. data/lib/pg_query/deparse.rb +7 -1
  501. data/lib/pg_query/filter_columns.rb +7 -5
  502. data/lib/pg_query/fingerprint.rb +21 -9
  503. data/lib/pg_query/node.rb +18 -13
  504. data/lib/pg_query/param_refs.rb +1 -1
  505. data/lib/pg_query/parse.rb +141 -50
  506. data/lib/pg_query/pg_query_pb.rb +175 -3031
  507. data/lib/pg_query/treewalker.rb +26 -2
  508. data/lib/pg_query/truncate.rb +54 -8
  509. data/lib/pg_query/version.rb +1 -1
  510. data/lib/pg_query.rb +0 -1
  511. metadata +443 -380
  512. data/ext/pg_query/guc-file.c +0 -0
  513. data/ext/pg_query/include/access/rmgr.h +0 -35
  514. data/ext/pg_query/include/access/xloginsert.h +0 -64
  515. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  516. data/ext/pg_query/include/catalog/genbki.h +0 -64
  517. data/ext/pg_query/include/catalog/indexing.h +0 -366
  518. data/ext/pg_query/include/commands/variable.h +0 -38
  519. data/ext/pg_query/include/common/ip.h +0 -37
  520. data/ext/pg_query/include/common/string.h +0 -19
  521. data/ext/pg_query/include/getaddrinfo.h +0 -162
  522. data/ext/pg_query/include/kwlist_d.h +0 -1072
  523. data/ext/pg_query/include/nodes/value.h +0 -61
  524. data/ext/pg_query/include/parser/gram.h +0 -1067
  525. data/ext/pg_query/include/parser/kwlist.h +0 -477
  526. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  527. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  528. data/ext/pg_query/include/parser/parse_target.h +0 -46
  529. data/ext/pg_query/include/parser/parser.h +0 -41
  530. data/ext/pg_query/include/pg_config_os.h +0 -8
  531. data/ext/pg_query/include/pgstat.h +0 -1487
  532. data/ext/pg_query/include/portability/instr_time.h +0 -256
  533. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  534. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  535. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  536. data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
  537. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  538. data/ext/pg_query/include/utils/dynahash.h +0 -19
  539. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  540. data/ext/pg_query/include/utils/pidfile.h +0 -56
  541. data/ext/pg_query/include/utils/ps_status.h +0 -25
  542. data/ext/pg_query/include/utils/regproc.h +0 -28
  543. data/ext/pg_query/include/utils/rls.h +0 -50
  544. data/ext/pg_query/include/utils/tzparser.h +0 -39
  545. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  546. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  547. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  548. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  549. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  550. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
  551. data/ext/pg_query/src_common_string.c +0 -86
  552. data/ext/pg_query/src_port_erand48.c +0 -127
  553. data/ext/pg_query/src_port_pgsleep.c +0 -69
  554. data/ext/pg_query/src_port_random.c +0 -31
  555. data/ext/pg_query/src_port_strnlen.c +0 -39
  556. data/lib/pg_query/json_field_names.rb +0 -1402
  557. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -4,7 +4,7 @@
4
4
  * POSTGRES relation descriptor (a/k/a relcache entry) definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/rel.h
@@ -16,6 +16,7 @@
16
16
 
17
17
  #include "access/tupdesc.h"
18
18
  #include "access/xlog.h"
19
+ #include "catalog/catalog.h"
19
20
  #include "catalog/pg_class.h"
20
21
  #include "catalog/pg_index.h"
21
22
  #include "catalog/pg_publication.h"
@@ -23,7 +24,8 @@
23
24
  #include "partitioning/partdefs.h"
24
25
  #include "rewrite/prs2lock.h"
25
26
  #include "storage/block.h"
26
- #include "storage/relfilenode.h"
27
+ #include "storage/relfilelocator.h"
28
+ #include "storage/smgr.h"
27
29
  #include "utils/relcache.h"
28
30
  #include "utils/reltrigger.h"
29
31
 
@@ -52,9 +54,8 @@ typedef LockInfoData *LockInfo;
52
54
 
53
55
  typedef struct RelationData
54
56
  {
55
- RelFileNode rd_node; /* relation physical identifier */
56
- /* use "struct" here to avoid needing to include smgr.h: */
57
- struct SMgrRelationData *rd_smgr; /* cached file handle, or NULL */
57
+ RelFileLocator rd_locator; /* relation physical identifier */
58
+ SMgrRelation rd_smgr; /* cached file handle, or NULL */
58
59
  int rd_refcnt; /* reference count */
59
60
  BackendId rd_backend; /* owning backend id, if temporary relation */
60
61
  bool rd_islocaltemp; /* rel is a temp rel of this session */
@@ -66,44 +67,45 @@ typedef struct RelationData
66
67
 
67
68
  /*----------
68
69
  * rd_createSubid is the ID of the highest subtransaction the rel has
69
- * survived into or zero if the rel or its rd_node was created before the
70
- * current top transaction. (IndexStmt.oldNode leads to the case of a new
71
- * rel with an old rd_node.) rd_firstRelfilenodeSubid is the ID of the
72
- * highest subtransaction an rd_node change has survived into or zero if
73
- * rd_node matches the value it had at the start of the current top
70
+ * survived into or zero if the rel or its storage was created before the
71
+ * current top transaction. (IndexStmt.oldNumber leads to the case of a new
72
+ * rel with an old rd_locator.) rd_firstRelfilelocatorSubid is the ID of the
73
+ * highest subtransaction an rd_locator change has survived into or zero if
74
+ * rd_locator matches the value it had at the start of the current top
74
75
  * transaction. (Rolling back the subtransaction that
75
- * rd_firstRelfilenodeSubid denotes would restore rd_node to the value it
76
+ * rd_firstRelfilelocatorSubid denotes would restore rd_locator to the value it
76
77
  * had at the start of the current top transaction. Rolling back any
77
78
  * lower subtransaction would not.) Their accuracy is critical to
78
79
  * RelationNeedsWAL().
79
80
  *
80
- * rd_newRelfilenodeSubid is the ID of the highest subtransaction the
81
- * most-recent relfilenode change has survived into or zero if not changed
81
+ * rd_newRelfilelocatorSubid is the ID of the highest subtransaction the
82
+ * most-recent relfilenumber change has survived into or zero if not changed
82
83
  * in the current transaction (or we have forgotten changing it). This
83
84
  * field is accurate when non-zero, but it can be zero when a relation has
84
- * multiple new relfilenodes within a single transaction, with one of them
85
+ * multiple new relfilenumbers within a single transaction, with one of them
85
86
  * occurring in a subsequently aborted subtransaction, e.g.
86
87
  * BEGIN;
87
88
  * TRUNCATE t;
88
89
  * SAVEPOINT save;
89
90
  * TRUNCATE t;
90
91
  * ROLLBACK TO save;
91
- * -- rd_newRelfilenodeSubid is now forgotten
92
+ * -- rd_newRelfilelocatorSubid is now forgotten
92
93
  *
93
94
  * If every rd_*Subid field is zero, they are read-only outside
94
- * relcache.c. Files that trigger rd_node changes by updating
95
+ * relcache.c. Files that trigger rd_locator changes by updating
95
96
  * pg_class.reltablespace and/or pg_class.relfilenode call
96
- * RelationAssumeNewRelfilenode() to update rd_*Subid.
97
+ * RelationAssumeNewRelfilelocator() to update rd_*Subid.
97
98
  *
98
99
  * rd_droppedSubid is the ID of the highest subtransaction that a drop of
99
100
  * the rel has survived into. In entries visible outside relcache.c, this
100
101
  * is always zero.
101
102
  */
102
103
  SubTransactionId rd_createSubid; /* rel was created in current xact */
103
- SubTransactionId rd_newRelfilenodeSubid; /* highest subxact changing
104
- * rd_node to current value */
105
- SubTransactionId rd_firstRelfilenodeSubid; /* highest subxact changing
106
- * rd_node to any value */
104
+ SubTransactionId rd_newRelfilelocatorSubid; /* highest subxact changing
105
+ * rd_locator to current value */
106
+ SubTransactionId rd_firstRelfilelocatorSubid; /* highest subxact
107
+ * changing rd_locator to
108
+ * any value */
107
109
  SubTransactionId rd_droppedSubid; /* dropped with another Subid set */
108
110
 
109
111
  Form_pg_class rd_rel; /* RELATION tuple */
@@ -128,6 +130,19 @@ typedef struct RelationData
128
130
  PartitionDesc rd_partdesc; /* partition descriptor, or NULL */
129
131
  MemoryContext rd_pdcxt; /* private context for rd_partdesc, if any */
130
132
 
133
+ /* Same as above, for partdescs that omit detached partitions */
134
+ PartitionDesc rd_partdesc_nodetached; /* partdesc w/o detached parts */
135
+ MemoryContext rd_pddcxt; /* for rd_partdesc_nodetached, if any */
136
+
137
+ /*
138
+ * pg_inherits.xmin of the partition that was excluded in
139
+ * rd_partdesc_nodetached. This informs a future user of that partdesc:
140
+ * if this value is not in progress for the active snapshot, then the
141
+ * partdesc can be used, otherwise they have to build a new one. (This
142
+ * matches what find_inheritance_children_extended would do).
143
+ */
144
+ TransactionId rd_partdesc_nodetached_xmin;
145
+
131
146
  /* data managed by RelationGetPartitionQual: */
132
147
  List *rd_partcheck; /* partition CHECK quals */
133
148
  bool rd_partcheckvalid; /* true if list has been computed */
@@ -142,12 +157,14 @@ typedef struct RelationData
142
157
  List *rd_statlist; /* list of OIDs of extended stats */
143
158
 
144
159
  /* data managed by RelationGetIndexAttrBitmap: */
145
- Bitmapset *rd_indexattr; /* identifies columns used in indexes */
160
+ bool rd_attrsvalid; /* are bitmaps of attrs valid? */
146
161
  Bitmapset *rd_keyattr; /* cols that can be ref'd by foreign keys */
147
162
  Bitmapset *rd_pkattr; /* cols included in primary key */
148
163
  Bitmapset *rd_idattr; /* included in replica identity index */
164
+ Bitmapset *rd_hotblockingattr; /* cols blocking HOT update */
165
+ Bitmapset *rd_summarizedattr; /* cols indexed by summarizing indexes */
149
166
 
150
- PublicationActions *rd_pubactions; /* publication actions */
167
+ PublicationDesc *rd_pubdesc; /* publication descriptor, or NULL */
151
168
 
152
169
  /*
153
170
  * rd_options is set whenever rd_rel is loaded into the relcache entry.
@@ -232,6 +249,7 @@ typedef struct RelationData
232
249
  */
233
250
  Oid rd_toastoid; /* Real TOAST table's OID, or InvalidOid */
234
251
 
252
+ bool pgstat_enabled; /* should relation stats be counted */
235
253
  /* use "struct" here to avoid needing to include pgstat.h: */
236
254
  struct PgStat_TableStatus *pgstat_info; /* statistics collection area */
237
255
  } RelationData;
@@ -253,15 +271,27 @@ typedef struct RelationData
253
271
  */
254
272
  typedef struct ForeignKeyCacheInfo
255
273
  {
274
+ pg_node_attr(no_equal, no_read, no_query_jumble)
275
+
256
276
  NodeTag type;
257
- Oid conoid; /* oid of the constraint itself */
258
- Oid conrelid; /* relation constrained by the foreign key */
259
- Oid confrelid; /* relation referenced by the foreign key */
260
- int nkeys; /* number of columns in the foreign key */
261
- /* these arrays each have nkeys valid entries: */
262
- AttrNumber conkey[INDEX_MAX_KEYS]; /* cols in referencing table */
263
- AttrNumber confkey[INDEX_MAX_KEYS]; /* cols in referenced table */
264
- Oid conpfeqop[INDEX_MAX_KEYS]; /* PK = FK operator OIDs */
277
+ /* oid of the constraint itself */
278
+ Oid conoid;
279
+ /* relation constrained by the foreign key */
280
+ Oid conrelid;
281
+ /* relation referenced by the foreign key */
282
+ Oid confrelid;
283
+ /* number of columns in the foreign key */
284
+ int nkeys;
285
+
286
+ /*
287
+ * these arrays each have nkeys valid entries:
288
+ */
289
+ /* cols in referencing table */
290
+ AttrNumber conkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys));
291
+ /* cols in referenced table */
292
+ AttrNumber confkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys));
293
+ /* PK = FK operator OIDs */
294
+ Oid conpfeqop[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys));
265
295
  } ForeignKeyCacheInfo;
266
296
 
267
297
 
@@ -294,16 +324,23 @@ typedef struct AutoVacOpts
294
324
  float8 analyze_scale_factor;
295
325
  } AutoVacOpts;
296
326
 
327
+ /* StdRdOptions->vacuum_index_cleanup values */
328
+ typedef enum StdRdOptIndexCleanup
329
+ {
330
+ STDRD_OPTION_VACUUM_INDEX_CLEANUP_AUTO = 0,
331
+ STDRD_OPTION_VACUUM_INDEX_CLEANUP_OFF,
332
+ STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON
333
+ } StdRdOptIndexCleanup;
334
+
297
335
  typedef struct StdRdOptions
298
336
  {
299
337
  int32 vl_len_; /* varlena header (do not touch directly!) */
300
338
  int fillfactor; /* page fill factor in percent (0..100) */
301
- /* fraction of newly inserted tuples prior to trigger index cleanup */
302
339
  int toast_tuple_target; /* target for tuple toasting */
303
340
  AutoVacOpts autovacuum; /* autovacuum-related options */
304
341
  bool user_catalog_table; /* use as an additional catalog relation */
305
342
  int parallel_workers; /* max number of parallel workers */
306
- bool vacuum_index_cleanup; /* enables index vacuuming and cleanup */
343
+ StdRdOptIndexCleanup vacuum_index_cleanup; /* controls index vacuuming */
307
344
  bool vacuum_truncate; /* enables vacuum to truncate a relation */
308
345
  } StdRdOptions;
309
346
 
@@ -376,6 +413,7 @@ typedef struct ViewOptions
376
413
  {
377
414
  int32 vl_len_; /* varlena header (do not touch directly!) */
378
415
  bool security_barrier;
416
+ bool security_invoker;
379
417
  ViewOptCheckOption check_option;
380
418
  } ViewOptions;
381
419
 
@@ -389,6 +427,16 @@ typedef struct ViewOptions
389
427
  (relation)->rd_options ? \
390
428
  ((ViewOptions *) (relation)->rd_options)->security_barrier : false)
391
429
 
430
+ /*
431
+ * RelationHasSecurityInvoker
432
+ * Returns true if the relation has the security_invoker property set.
433
+ * Note multiple eval of argument!
434
+ */
435
+ #define RelationHasSecurityInvoker(relation) \
436
+ (AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \
437
+ (relation)->rd_options ? \
438
+ ((ViewOptions *) (relation)->rd_options)->security_invoker : false)
439
+
392
440
  /*
393
441
  * RelationHasCheckOption
394
442
  * Returns true if the relation is a view defined with either the local
@@ -499,44 +547,57 @@ typedef struct ViewOptions
499
547
 
500
548
  /*
501
549
  * RelationIsMapped
502
- * True if the relation uses the relfilenode map. Note multiple eval
550
+ * True if the relation uses the relfilenumber map. Note multiple eval
503
551
  * of argument!
504
552
  */
505
553
  #define RelationIsMapped(relation) \
506
554
  (RELKIND_HAS_STORAGE((relation)->rd_rel->relkind) && \
507
- ((relation)->rd_rel->relfilenode == InvalidOid))
555
+ ((relation)->rd_rel->relfilenode == InvalidRelFileNumber))
508
556
 
557
+ #ifndef FRONTEND
509
558
  /*
510
- * RelationOpenSmgr
511
- * Open the relation at the smgr level, if not already done.
512
- */
513
- #define RelationOpenSmgr(relation) \
514
- do { \
515
- if ((relation)->rd_smgr == NULL) \
516
- smgrsetowner(&((relation)->rd_smgr), smgropen((relation)->rd_node, (relation)->rd_backend)); \
517
- } while (0)
559
+ * RelationGetSmgr
560
+ * Returns smgr file handle for a relation, opening it if needed.
561
+ *
562
+ * Very little code is authorized to touch rel->rd_smgr directly. Instead
563
+ * use this function to fetch its value.
564
+ *
565
+ * Note: since a relcache flush can cause the file handle to be closed again,
566
+ * it's unwise to hold onto the pointer returned by this function for any
567
+ * long period. Recommended practice is to just re-execute RelationGetSmgr
568
+ * each time you need to access the SMgrRelation. It's quite cheap in
569
+ * comparison to whatever an smgr function is going to do.
570
+ */
571
+ static inline SMgrRelation
572
+ RelationGetSmgr(Relation rel)
573
+ {
574
+ if (unlikely(rel->rd_smgr == NULL))
575
+ smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_locator, rel->rd_backend));
576
+ return rel->rd_smgr;
577
+ }
518
578
 
519
579
  /*
520
580
  * RelationCloseSmgr
521
581
  * Close the relation at the smgr level, if not already done.
522
- *
523
- * Note: smgrclose should unhook from owner pointer, hence the Assert.
524
582
  */
525
- #define RelationCloseSmgr(relation) \
526
- do { \
527
- if ((relation)->rd_smgr != NULL) \
528
- { \
529
- smgrclose((relation)->rd_smgr); \
530
- Assert((relation)->rd_smgr == NULL); \
531
- } \
532
- } while (0)
583
+ static inline void
584
+ RelationCloseSmgr(Relation relation)
585
+ {
586
+ if (relation->rd_smgr != NULL)
587
+ smgrclose(relation->rd_smgr);
588
+
589
+ /* smgrclose should unhook from owner pointer */
590
+ Assert(relation->rd_smgr == NULL);
591
+ }
592
+ #endif /* !FRONTEND */
533
593
 
534
594
  /*
535
595
  * RelationGetTargetBlock
536
596
  * Fetch relation's current insertion target block.
537
597
  *
538
598
  * Returns InvalidBlockNumber if there is no current target block. Note
539
- * that the target block status is discarded on any smgr-level invalidation.
599
+ * that the target block status is discarded on any smgr-level invalidation,
600
+ * so there's no need to re-open the smgr handle if it's not currently open.
540
601
  */
541
602
  #define RelationGetTargetBlock(relation) \
542
603
  ( (relation)->rd_smgr != NULL ? (relation)->rd_smgr->smgr_targblock : InvalidBlockNumber )
@@ -547,23 +608,28 @@ typedef struct ViewOptions
547
608
  */
548
609
  #define RelationSetTargetBlock(relation, targblock) \
549
610
  do { \
550
- RelationOpenSmgr(relation); \
551
- (relation)->rd_smgr->smgr_targblock = (targblock); \
611
+ RelationGetSmgr(relation)->smgr_targblock = (targblock); \
552
612
  } while (0)
553
613
 
614
+ /*
615
+ * RelationIsPermanent
616
+ * True if relation is permanent.
617
+ */
618
+ #define RelationIsPermanent(relation) \
619
+ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT)
620
+
554
621
  /*
555
622
  * RelationNeedsWAL
556
623
  * True if relation needs WAL.
557
624
  *
558
625
  * Returns false if wal_level = minimal and this relation is created or
559
626
  * truncated in the current transaction. See "Skipping WAL for New
560
- * RelFileNode" in src/backend/access/transam/README.
627
+ * RelFileLocator" in src/backend/access/transam/README.
561
628
  */
562
629
  #define RelationNeedsWAL(relation) \
563
- ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT && \
564
- (XLogIsNeeded() || \
630
+ (RelationIsPermanent(relation) && (XLogIsNeeded() || \
565
631
  (relation->rd_createSubid == InvalidSubTransactionId && \
566
- relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId)))
632
+ relation->rd_firstRelfilelocatorSubid == InvalidSubTransactionId)))
567
633
 
568
634
  /*
569
635
  * RelationUsesLocalBuffers
@@ -627,7 +693,8 @@ typedef struct ViewOptions
627
693
  * WAL stream.
628
694
  *
629
695
  * We don't log information for unlogged tables (since they don't WAL log
630
- * anyway) and for system tables (their content is hard to make sense of, and
696
+ * anyway), for foreign tables (since they don't WAL log, either),
697
+ * and for system tables (their content is hard to make sense of, and
631
698
  * it would complicate decoding slightly for little gain). Note that we *do*
632
699
  * log information for user defined catalog tables since they presumably are
633
700
  * interesting to the user...
@@ -635,6 +702,7 @@ typedef struct ViewOptions
635
702
  #define RelationIsLogicallyLogged(relation) \
636
703
  (XLogLogicalInfoActive() && \
637
704
  RelationNeedsWAL(relation) && \
705
+ (relation)->rd_rel->relkind != RELKIND_FOREIGN_TABLE && \
638
706
  !IsCatalogRelation(relation))
639
707
 
640
708
  /* routines in utils/cache/relcache.c */
@@ -4,7 +4,7 @@
4
4
  * Relation descriptor cache definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/relcache.h
@@ -14,8 +14,8 @@
14
14
  #ifndef RELCACHE_H
15
15
  #define RELCACHE_H
16
16
 
17
- #include "postgres.h"
18
17
  #include "access/tupdesc.h"
18
+ #include "common/relpath.h"
19
19
  #include "nodes/bitmapset.h"
20
20
 
21
21
 
@@ -51,20 +51,26 @@ extern Oid RelationGetReplicaIndex(Relation relation);
51
51
  extern List *RelationGetIndexExpressions(Relation relation);
52
52
  extern List *RelationGetDummyIndexExpressions(Relation relation);
53
53
  extern List *RelationGetIndexPredicate(Relation relation);
54
- extern Datum *RelationGetIndexRawAttOptions(Relation relation);
54
+ extern Datum *RelationGetIndexRawAttOptions(Relation indexrel);
55
55
  extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy);
56
56
 
57
+ /*
58
+ * Which set of columns to return by RelationGetIndexAttrBitmap.
59
+ */
57
60
  typedef enum IndexAttrBitmapKind
58
61
  {
59
- INDEX_ATTR_BITMAP_ALL,
60
62
  INDEX_ATTR_BITMAP_KEY,
61
63
  INDEX_ATTR_BITMAP_PRIMARY_KEY,
62
- INDEX_ATTR_BITMAP_IDENTITY_KEY
64
+ INDEX_ATTR_BITMAP_IDENTITY_KEY,
65
+ INDEX_ATTR_BITMAP_HOT_BLOCKING,
66
+ INDEX_ATTR_BITMAP_SUMMARIZED
63
67
  } IndexAttrBitmapKind;
64
68
 
65
69
  extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation,
66
70
  IndexAttrBitmapKind attrKind);
67
71
 
72
+ extern Bitmapset *RelationGetIdentityKeyBitmap(Relation relation);
73
+
68
74
  extern void RelationGetExclusionInfo(Relation indexRelation,
69
75
  Oid **operators,
70
76
  Oid **procs,
@@ -73,8 +79,9 @@ extern void RelationGetExclusionInfo(Relation indexRelation,
73
79
  extern void RelationInitIndexAccessInfo(Relation relation);
74
80
 
75
81
  /* caller must include pg_publication.h */
76
- struct PublicationActions;
77
- extern struct PublicationActions *GetRelationPublicationActions(Relation relation);
82
+ struct PublicationDesc;
83
+ extern void RelationBuildPublicationDesc(Relation relation,
84
+ struct PublicationDesc *pubdesc);
78
85
 
79
86
  extern void RelationInitTableAccessMethod(Relation relation);
80
87
 
@@ -101,7 +108,7 @@ extern Relation RelationBuildLocalRelation(const char *relname,
101
108
  TupleDesc tupDesc,
102
109
  Oid relid,
103
110
  Oid accessmtd,
104
- Oid relfilenode,
111
+ RelFileNumber relfilenumber,
105
112
  Oid reltablespace,
106
113
  bool shared_relation,
107
114
  bool mapped_relation,
@@ -109,10 +116,10 @@ extern Relation RelationBuildLocalRelation(const char *relname,
109
116
  char relkind);
110
117
 
111
118
  /*
112
- * Routines to manage assignment of new relfilenode to a relation
119
+ * Routines to manage assignment of new relfilenumber to a relation
113
120
  */
114
- extern void RelationSetNewRelfilenode(Relation relation, char persistence);
115
- extern void RelationAssumeNewRelfilenode(Relation relation);
121
+ extern void RelationSetNewRelfilenumber(Relation relation, char persistence);
122
+ extern void RelationAssumeNewRelfilelocator(Relation relation);
116
123
 
117
124
  /*
118
125
  * Routines for flushing/rebuilding relcache entries in various scenarios
@@ -121,7 +128,7 @@ extern void RelationForgetRelation(Oid rid);
121
128
 
122
129
  extern void RelationCacheInvalidateEntry(Oid relationId);
123
130
 
124
- extern void RelationCacheInvalidate(void);
131
+ extern void RelationCacheInvalidate(bool debug_discard);
125
132
 
126
133
  extern void RelationCloseSmgrByOid(Oid relationId);
127
134
 
@@ -143,9 +150,9 @@ extern void RelationCacheInitFilePostInvalidate(void);
143
150
  extern void RelationCacheInitFileRemove(void);
144
151
 
145
152
  /* should be used only by relcache.c and catcache.c */
146
- extern bool criticalRelcachesBuilt;
153
+ extern PGDLLIMPORT bool criticalRelcachesBuilt;
147
154
 
148
155
  /* should be used only by relcache.c and postinit.c */
149
- extern bool criticalSharedRelcachesBuilt;
156
+ extern PGDLLIMPORT bool criticalSharedRelcachesBuilt;
150
157
 
151
158
  #endif /* RELCACHE_H */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES relation trigger definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/reltrigger.h
@@ -9,7 +9,7 @@
9
9
  * See utils/resowner/README for more info.
10
10
  *
11
11
  *
12
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
12
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
13
  * Portions Copyright (c) 1994, Regents of the University of California
14
14
  *
15
15
  * src/include/utils/resowner.h
@@ -3,7 +3,7 @@
3
3
  * ruleutils.h
4
4
  * Declarations for ruleutils.c
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/utils/ruleutils.h
@@ -20,9 +20,15 @@
20
20
  struct Plan; /* avoid including plannodes.h here */
21
21
  struct PlannedStmt;
22
22
 
23
+ /* Flags for pg_get_indexdef_columns_extended() */
24
+ #define RULE_INDEXDEF_PRETTY 0x01
25
+ #define RULE_INDEXDEF_KEYS_ONLY 0x02 /* ignore included attributes */
23
26
 
24
27
  extern char *pg_get_indexdef_string(Oid indexrelid);
25
28
  extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty);
29
+ extern char *pg_get_indexdef_columns_extended(Oid indexrelid,
30
+ bits16 flags);
31
+ extern char *pg_get_querydef(Query *query, bool pretty);
26
32
 
27
33
  extern char *pg_get_partkeydef_columns(Oid relid, bool pretty);
28
34
  extern char *pg_get_partconstrdef_string(Oid partitionId, char *aliasname);
@@ -41,4 +47,6 @@ extern char *generate_collation_name(Oid collid);
41
47
  extern char *generate_opclass_name(Oid opclass);
42
48
  extern char *get_range_partbound_string(List *bound_datums);
43
49
 
50
+ extern char *pg_get_statisticsobjdef_string(Oid statextid);
51
+
44
52
  #endif /* RULEUTILS_H */
@@ -3,7 +3,7 @@
3
3
  * sharedtuplestore.h
4
4
  * Simple mechanism for sharing tuples between backends.
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/utils/sharedtuplestore.h
@@ -3,7 +3,7 @@
3
3
  * snapmgr.h
4
4
  * POSTGRES snapshot manager
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/utils/snapmgr.h
@@ -37,8 +37,7 @@
37
37
  */
38
38
  #define RelationAllowsEarlyPruning(rel) \
39
39
  ( \
40
- (rel)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT \
41
- && !IsCatalogRelation(rel) \
40
+ RelationIsPermanent(rel) && !IsCatalogRelation(rel) \
42
41
  && !RelationIsAccessibleInLogicalDecoding(rel) \
43
42
  )
44
43
 
@@ -52,13 +51,12 @@ extern Size SnapMgrShmemSize(void);
52
51
  extern void SnapMgrInit(void);
53
52
  extern TimestampTz GetSnapshotCurrentTimestamp(void);
54
53
  extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
54
+ extern void SnapshotTooOldMagicForTest(void);
55
55
 
56
- extern bool FirstSnapshotSet;
56
+ extern PGDLLIMPORT bool FirstSnapshotSet;
57
57
 
58
58
  extern PGDLLIMPORT TransactionId TransactionXmin;
59
59
  extern PGDLLIMPORT TransactionId RecentXmin;
60
- extern PGDLLIMPORT TransactionId RecentGlobalXmin;
61
- extern PGDLLIMPORT TransactionId RecentGlobalDataXmin;
62
60
 
63
61
  /* Variables representing various special snapshot semantics */
64
62
  extern PGDLLIMPORT SnapshotData SnapshotSelfData;
@@ -78,11 +76,12 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
78
76
 
79
77
  /*
80
78
  * Similarly, some initialization is required for a NonVacuumable snapshot.
81
- * The caller must supply the xmin horizon to use (e.g., RecentGlobalXmin).
79
+ * The caller must supply the visibility cutoff state to use (c.f.
80
+ * GlobalVisTestFor()).
82
81
  */
83
- #define InitNonVacuumableSnapshot(snapshotdata, xmin_horizon) \
82
+ #define InitNonVacuumableSnapshot(snapshotdata, vistestp) \
84
83
  ((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \
85
- (snapshotdata).xmin = (xmin_horizon))
84
+ (snapshotdata).vistest = (vistestp))
86
85
 
87
86
  /*
88
87
  * Similarly, some initialization is required for SnapshotToast. We need
@@ -98,6 +97,13 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
98
97
  ((snapshot)->snapshot_type == SNAPSHOT_MVCC || \
99
98
  (snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC)
100
99
 
100
+ #ifndef FRONTEND
101
+ static inline bool
102
+ OldSnapshotThresholdActive(void)
103
+ {
104
+ return old_snapshot_threshold >= 0;
105
+ }
106
+ #endif
101
107
 
102
108
  extern Snapshot GetTransactionSnapshot(void);
103
109
  extern Snapshot GetLatestSnapshot(void);
@@ -110,6 +116,7 @@ extern void InvalidateCatalogSnapshot(void);
110
116
  extern void InvalidateCatalogSnapshotConditionally(void);
111
117
 
112
118
  extern void PushActiveSnapshot(Snapshot snapshot);
119
+ extern void PushActiveSnapshotWithLevel(Snapshot snapshot, int snap_level);
113
120
  extern void PushCopiedSnapshot(Snapshot snapshot);
114
121
  extern void UpdateActiveSnapshotCommandId(void);
115
122
  extern void PopActiveSnapshot(void);
@@ -121,8 +128,6 @@ extern void UnregisterSnapshot(Snapshot snapshot);
121
128
  extern Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner);
122
129
  extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner);
123
130
 
124
- extern FullTransactionId GetFullRecentGlobalXmin(void);
125
-
126
131
  extern void AtSubCommit_Snapshot(int level);
127
132
  extern void AtSubAbort_Snapshot(int level);
128
133
  extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin);
@@ -130,14 +135,32 @@ extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin);
130
135
  extern void ImportSnapshot(const char *idstr);
131
136
  extern bool XactHasExportedSnapshots(void);
132
137
  extern void DeleteAllExportedSnapshotFiles(void);
138
+ extern void WaitForOlderSnapshots(TransactionId limitXmin, bool progress);
133
139
  extern bool ThereAreNoPriorRegisteredSnapshots(void);
134
- extern TransactionId TransactionIdLimitedForOldSnapshots(TransactionId recentXmin,
135
- Relation relation);
140
+ extern bool HaveRegisteredOrActiveSnapshot(void);
141
+ extern bool TransactionIdLimitedForOldSnapshots(TransactionId recentXmin,
142
+ Relation relation,
143
+ TransactionId *limit_xid,
144
+ TimestampTz *limit_ts);
145
+ extern void SetOldSnapshotThresholdTimestamp(TimestampTz ts, TransactionId xlimit);
136
146
  extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken,
137
147
  TransactionId xmin);
138
148
 
139
149
  extern char *ExportSnapshot(Snapshot snapshot);
140
150
 
151
+ /*
152
+ * These live in procarray.c because they're intimately linked to the
153
+ * procarray contents, but thematically they better fit into snapmgr.h.
154
+ */
155
+ typedef struct GlobalVisState GlobalVisState;
156
+ extern GlobalVisState *GlobalVisTestFor(Relation rel);
157
+ extern bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid);
158
+ extern bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid);
159
+ extern FullTransactionId GlobalVisTestNonRemovableFullHorizon(GlobalVisState *state);
160
+ extern TransactionId GlobalVisTestNonRemovableHorizon(GlobalVisState *state);
161
+ extern bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid);
162
+ extern bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid);
163
+
141
164
  /*
142
165
  * Utility functions for implementing visibility routines in table AMs.
143
166
  */
@@ -146,13 +169,13 @@ extern bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot);
146
169
  /* Support for catalog timetravel for logical decoding */
147
170
  struct HTAB;
148
171
  extern struct HTAB *HistoricSnapshotGetTupleCids(void);
149
- extern void SetupHistoricSnapshot(Snapshot snapshot_now, struct HTAB *tuplecids);
172
+ extern void SetupHistoricSnapshot(Snapshot historic_snapshot, struct HTAB *tuplecids);
150
173
  extern void TeardownHistoricSnapshot(bool is_error);
151
174
  extern bool HistoricSnapshotActive(void);
152
175
 
153
176
  extern Size EstimateSnapshotSpace(Snapshot snapshot);
154
177
  extern void SerializeSnapshot(Snapshot snapshot, char *start_address);
155
178
  extern Snapshot RestoreSnapshot(char *start_address);
156
- extern void RestoreTransactionSnapshot(Snapshot snapshot, void *master_pgproc);
179
+ extern void RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc);
157
180
 
158
181
  #endif /* SNAPMGR_H */