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 define and remove utility 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/commands/defrem.h
@@ -29,15 +29,13 @@ extern ObjectAddress DefineIndex(Oid relationId,
29
29
  Oid indexRelationId,
30
30
  Oid parentIndexId,
31
31
  Oid parentConstraintId,
32
+ int total_parts,
32
33
  bool is_alter_table,
33
34
  bool check_rights,
34
35
  bool check_not_in_use,
35
36
  bool skip_build,
36
37
  bool quiet);
37
- extern void ReindexIndex(RangeVar *indexRelation, int options, bool concurrent);
38
- extern Oid ReindexTable(RangeVar *relation, int options, bool concurrent);
39
- extern void ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind,
40
- int options, bool concurrent);
38
+ extern void ExecReindex(ParseState *pstate, ReindexStmt *stmt, bool isTopLevel);
41
39
  extern char *makeObjectName(const char *name1, const char *name2,
42
40
  const char *label);
43
41
  extern char *ChooseRelationName(const char *name1, const char *name2,
@@ -56,12 +54,10 @@ extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt
56
54
  extern void RemoveFunctionById(Oid funcOid);
57
55
  extern ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt);
58
56
  extern ObjectAddress CreateCast(CreateCastStmt *stmt);
59
- extern void DropCastById(Oid castOid);
60
57
  extern ObjectAddress CreateTransform(CreateTransformStmt *stmt);
61
- extern void DropTransformById(Oid transformOid);
62
58
  extern void IsThereFunctionInNamespace(const char *proname, int pronargs,
63
59
  oidvector *proargtypes, Oid nspOid);
64
- extern void ExecuteDoStmt(DoStmt *stmt, bool atomic);
60
+ extern void ExecuteDoStmt(ParseState *pstate, DoStmt *stmt, bool atomic);
65
61
  extern void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest);
66
62
  extern TupleDesc CallStmtResultDesc(CallStmt *stmt);
67
63
  extern Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok);
@@ -70,9 +66,11 @@ extern void interpret_function_parameter_list(ParseState *pstate,
70
66
  Oid languageOid,
71
67
  ObjectType objtype,
72
68
  oidvector **parameterTypes,
69
+ List **parameterTypes_list,
73
70
  ArrayType **allParameterTypes,
74
71
  ArrayType **parameterModes,
75
72
  ArrayType **parameterNames,
73
+ List **inParameterNames_list,
76
74
  List **parameterDefaults,
77
75
  Oid *variadicArgType,
78
76
  Oid *requiredResultType);
@@ -86,9 +84,8 @@ extern ObjectAddress AlterOperator(AlterOperatorStmt *stmt);
86
84
  extern ObjectAddress CreateStatistics(CreateStatsStmt *stmt);
87
85
  extern ObjectAddress AlterStatistics(AlterStatsStmt *stmt);
88
86
  extern void RemoveStatisticsById(Oid statsOid);
89
- extern void UpdateStatisticsForTypeChange(Oid statsOid,
90
- Oid relationOid, int attnum,
91
- Oid oldColumnType, Oid newColumnType);
87
+ extern void RemoveStatisticsDataById(Oid statsOid, bool inh);
88
+ extern Oid StatisticsGetRelation(Oid statId, bool missing_ok);
92
89
 
93
90
  /* commands/aggregatecmds.c */
94
91
  extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle,
@@ -98,10 +95,6 @@ extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args,
98
95
  extern ObjectAddress DefineOpClass(CreateOpClassStmt *stmt);
99
96
  extern ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt);
100
97
  extern Oid AlterOpFamily(AlterOpFamilyStmt *stmt);
101
- extern void RemoveOpClassById(Oid opclassOid);
102
- extern void RemoveOpFamilyById(Oid opfamilyOid);
103
- extern void RemoveAmOpEntryById(Oid entryOid);
104
- extern void RemoveAmProcEntryById(Oid entryOid);
105
98
  extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod,
106
99
  Oid opcnamespace);
107
100
  extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod,
@@ -111,14 +104,11 @@ extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok);
111
104
 
112
105
  /* commands/tsearchcmds.c */
113
106
  extern ObjectAddress DefineTSParser(List *names, List *parameters);
114
- extern void RemoveTSParserById(Oid prsId);
115
107
 
116
108
  extern ObjectAddress DefineTSDictionary(List *names, List *parameters);
117
- extern void RemoveTSDictionaryById(Oid dictId);
118
109
  extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt);
119
110
 
120
111
  extern ObjectAddress DefineTSTemplate(List *names, List *parameters);
121
- extern void RemoveTSTemplateById(Oid tmplId);
122
112
 
123
113
  extern ObjectAddress DefineTSConfiguration(List *names, List *parameters,
124
114
  ObjectAddress *copied);
@@ -133,16 +123,13 @@ extern ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId);
133
123
  extern void AlterForeignServerOwner_oid(Oid, Oid newOwnerId);
134
124
  extern ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId);
135
125
  extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId);
136
- extern ObjectAddress CreateForeignDataWrapper(CreateFdwStmt *stmt);
137
- extern ObjectAddress AlterForeignDataWrapper(AlterFdwStmt *stmt);
138
- extern void RemoveForeignDataWrapperById(Oid fdwId);
126
+ extern ObjectAddress CreateForeignDataWrapper(ParseState *pstate, CreateFdwStmt *stmt);
127
+ extern ObjectAddress AlterForeignDataWrapper(ParseState *pstate, AlterFdwStmt *stmt);
139
128
  extern ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt);
140
129
  extern ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt);
141
- extern void RemoveForeignServerById(Oid srvId);
142
130
  extern ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt);
143
131
  extern ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt);
144
132
  extern Oid RemoveUserMapping(DropUserMappingStmt *stmt);
145
- extern void RemoveUserMappingById(Oid umId);
146
133
  extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid);
147
134
  extern void ImportForeignSchema(ImportForeignSchemaStmt *stmt);
148
135
  extern Datum transformGenericOptions(Oid catalogId,
@@ -152,7 +139,6 @@ extern Datum transformGenericOptions(Oid catalogId,
152
139
 
153
140
  /* commands/amcmds.c */
154
141
  extern ObjectAddress CreateAccessMethod(CreateAmStmt *stmt);
155
- extern void RemoveAccessMethodById(Oid amOid);
156
142
  extern Oid get_index_am_oid(const char *amname, bool missing_ok);
157
143
  extern Oid get_table_am_oid(const char *amname, bool missing_ok);
158
144
  extern Oid get_am_oid(const char *amname, bool missing_ok);
@@ -165,9 +151,11 @@ extern double defGetNumeric(DefElem *def);
165
151
  extern bool defGetBoolean(DefElem *def);
166
152
  extern int32 defGetInt32(DefElem *def);
167
153
  extern int64 defGetInt64(DefElem *def);
154
+ extern Oid defGetObjectId(DefElem *def);
168
155
  extern List *defGetQualifiedName(DefElem *def);
169
156
  extern TypeName *defGetTypeName(DefElem *def);
170
157
  extern int defGetTypeLength(DefElem *def);
171
158
  extern List *defGetStringList(DefElem *def);
159
+ extern void errorConflictingDefElem(DefElem *defel, ParseState *pstate) pg_attribute_noreturn();
172
160
 
173
161
  #endif /* DEFREM_H */
@@ -3,7 +3,7 @@
3
3
  * event_trigger.h
4
4
  * Declarations for command trigger handling.
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/commands/event_trigger.h
@@ -32,6 +32,7 @@ typedef struct EventTriggerData
32
32
  #define AT_REWRITE_ALTER_PERSISTENCE 0x01
33
33
  #define AT_REWRITE_DEFAULT_VAL 0x02
34
34
  #define AT_REWRITE_COLUMN_REWRITE 0x04
35
+ #define AT_REWRITE_ACCESS_METHOD 0x08
35
36
 
36
37
  /*
37
38
  * EventTriggerData is the node type that is passed as fmgr "context" info
@@ -41,7 +42,6 @@ typedef struct EventTriggerData
41
42
  ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData))
42
43
 
43
44
  extern Oid CreateEventTrigger(CreateEventTrigStmt *stmt);
44
- extern void RemoveEventTriggerById(Oid trigOid);
45
45
  extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok);
46
46
 
47
47
  extern Oid AlterEventTrigger(AlterEventTrigStmt *stmt);
@@ -3,7 +3,7 @@
3
3
  * explain.h
4
4
  * prototypes for explain.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-5, Regents of the University of California
8
8
  *
9
9
  * src/include/commands/explain.h
@@ -46,6 +46,7 @@ typedef struct ExplainState
46
46
  bool timing; /* print detailed node timing */
47
47
  bool summary; /* print total planning and execution timing */
48
48
  bool settings; /* print modified settings */
49
+ bool generic; /* generate a generic plan */
49
50
  ExplainFormat format; /* output format */
50
51
  /* state for output formatting --- not reset for each new plan tree */
51
52
  int indent; /* current indentation level */
@@ -99,6 +100,7 @@ extern void ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc);
99
100
  extern void ExplainPrintJITSummary(ExplainState *es, QueryDesc *queryDesc);
100
101
 
101
102
  extern void ExplainQueryText(ExplainState *es, QueryDesc *queryDesc);
103
+ extern void ExplainQueryParameters(ExplainState *es, ParamListInfo params, int maxlen);
102
104
 
103
105
  extern void ExplainBeginOutput(ExplainState *es);
104
106
  extern void ExplainEndOutput(ExplainState *es);
@@ -4,7 +4,7 @@
4
4
  * PREPARE, EXECUTE and DEALLOCATE commands, and prepared-stmt storage
5
5
  *
6
6
  *
7
- * Copyright (c) 2002-2020, PostgreSQL Global Development Group
7
+ * Copyright (c) 2002-2023, PostgreSQL Global Development Group
8
8
  *
9
9
  * src/include/commands/prepare.h
10
10
  *
@@ -4,7 +4,7 @@
4
4
  * Tablespace management commands (create/drop tablespace).
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/commands/tablespace.h
@@ -19,6 +19,8 @@
19
19
  #include "lib/stringinfo.h"
20
20
  #include "nodes/parsenodes.h"
21
21
 
22
+ extern PGDLLIMPORT bool allow_in_place_tablespaces;
23
+
22
24
  /* XLOG stuff */
23
25
  #define XLOG_TBLSPC_CREATE 0x00
24
26
  #define XLOG_TBLSPC_DROP 0x10
@@ -48,7 +50,7 @@ extern void DropTableSpace(DropTableSpaceStmt *stmt);
48
50
  extern ObjectAddress RenameTableSpace(const char *oldname, const char *newname);
49
51
  extern Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt);
50
52
 
51
- extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo);
53
+ extern void TablespaceCreateDbspace(Oid spcOid, Oid dbOid, bool isRedo);
52
54
 
53
55
  extern Oid GetDefaultTablespace(char relpersistence, bool partitioned);
54
56
 
@@ -60,8 +62,8 @@ extern char *get_tablespace_name(Oid spc_oid);
60
62
  extern bool directory_is_empty(const char *path);
61
63
  extern void remove_tablespace_symlink(const char *linkloc);
62
64
 
63
- extern void tblspc_redo(XLogReaderState *rptr);
64
- extern void tblspc_desc(StringInfo buf, XLogReaderState *rptr);
65
+ extern void tblspc_redo(XLogReaderState *record);
66
+ extern void tblspc_desc(StringInfo buf, XLogReaderState *record);
65
67
  extern const char *tblspc_identify(uint8 info);
66
68
 
67
69
  #endif /* TABLESPACE_H */
@@ -3,7 +3,7 @@
3
3
  * trigger.h
4
4
  * Declarations for trigger handling.
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/commands/trigger.h
@@ -13,6 +13,7 @@
13
13
  #ifndef TRIGGER_H
14
14
  #define TRIGGER_H
15
15
 
16
+ #include "access/tableam.h"
16
17
  #include "catalog/objectaddress.h"
17
18
  #include "nodes/execnodes.h"
18
19
  #include "nodes/parsenodes.h"
@@ -44,9 +45,9 @@ typedef struct TriggerData
44
45
 
45
46
  /*
46
47
  * The state for capturing old and new tuples into transition tables for a
47
- * single ModifyTable node (or other operation source, e.g. copy.c).
48
+ * single ModifyTable node (or other operation source, e.g. copyfrom.c).
48
49
  *
49
- * This is per-caller to avoid conflicts in setting tcs_map or
50
+ * This is per-caller to avoid conflicts in setting
50
51
  * tcs_original_insert_tuple. Note, however, that the pointed-to
51
52
  * private data may be shared across multiple callers.
52
53
  */
@@ -65,20 +66,12 @@ typedef struct TransitionCaptureState
65
66
  bool tcs_update_new_table;
66
67
  bool tcs_insert_new_table;
67
68
 
68
- /*
69
- * For UPDATE and DELETE, AfterTriggerSaveEvent may need to convert the
70
- * new and old tuples from a child table's format to the format of the
71
- * relation named in a query so that it is compatible with the transition
72
- * tuplestores. The caller must store the conversion map here if so.
73
- */
74
- TupleConversionMap *tcs_map;
75
-
76
69
  /*
77
70
  * For INSERT and COPY, it would be wasteful to convert tuples from child
78
71
  * format to parent format after they have already been converted in the
79
72
  * opposite direction during routing. In that case we bypass conversion
80
- * and allow the inserting code (copy.c and nodeModifyTable.c) to provide
81
- * a slot containing the original tuple directly.
73
+ * and allow the inserting code (copyfrom.c and nodeModifyTable.c) to
74
+ * provide a slot containing the original tuple directly.
82
75
  */
83
76
  TupleTableSlot *tcs_original_insert_tuple;
84
77
 
@@ -162,14 +155,24 @@ extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString
162
155
  Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid,
163
156
  Oid funcoid, Oid parentTriggerOid, Node *whenClause,
164
157
  bool isInternal, bool in_partition);
165
-
158
+ extern ObjectAddress CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
159
+ Oid relOid, Oid refRelOid, Oid constraintOid,
160
+ Oid indexOid, Oid funcoid, Oid parentTriggerOid,
161
+ Node *whenClause, bool isInternal, bool in_partition,
162
+ char trigger_fires_when);
163
+
164
+ extern void TriggerSetParentTrigger(Relation trigRel,
165
+ Oid childTrigId,
166
+ Oid parentTrigId,
167
+ Oid childTableId);
166
168
  extern void RemoveTriggerById(Oid trigOid);
167
- extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok);
169
+ extern Oid get_trigger_oid(Oid relid, const char *trigname, bool missing_ok);
168
170
 
169
171
  extern ObjectAddress renametrig(RenameStmt *stmt);
170
172
 
171
- extern void EnableDisableTrigger(Relation rel, const char *tgname,
172
- char fires_when, bool skip_system, LOCKMODE lockmode);
173
+ extern void EnableDisableTrigger(Relation rel, const char *tgname, Oid tgparent,
174
+ char fires_when, bool skip_system, bool recurse,
175
+ LOCKMODE lockmode);
173
176
 
174
177
  extern void RelationBuildTriggers(Relation relation);
175
178
 
@@ -208,12 +211,15 @@ extern bool ExecBRDeleteTriggers(EState *estate,
208
211
  ResultRelInfo *relinfo,
209
212
  ItemPointer tupleid,
210
213
  HeapTuple fdw_trigtuple,
211
- TupleTableSlot **epqslot);
214
+ TupleTableSlot **epqslot,
215
+ TM_Result *tmresult,
216
+ TM_FailureData *tmfd);
212
217
  extern void ExecARDeleteTriggers(EState *estate,
213
218
  ResultRelInfo *relinfo,
214
219
  ItemPointer tupleid,
215
220
  HeapTuple fdw_trigtuple,
216
- TransitionCaptureState *transition_capture);
221
+ TransitionCaptureState *transition_capture,
222
+ bool is_crosspart_update);
217
223
  extern bool ExecIRDeleteTriggers(EState *estate,
218
224
  ResultRelInfo *relinfo,
219
225
  HeapTuple trigtuple);
@@ -227,18 +233,23 @@ extern bool ExecBRUpdateTriggers(EState *estate,
227
233
  ResultRelInfo *relinfo,
228
234
  ItemPointer tupleid,
229
235
  HeapTuple fdw_trigtuple,
230
- TupleTableSlot *slot);
236
+ TupleTableSlot *newslot,
237
+ TM_Result *tmresult,
238
+ TM_FailureData *tmfd);
231
239
  extern void ExecARUpdateTriggers(EState *estate,
232
240
  ResultRelInfo *relinfo,
241
+ ResultRelInfo *src_partinfo,
242
+ ResultRelInfo *dst_partinfo,
233
243
  ItemPointer tupleid,
234
244
  HeapTuple fdw_trigtuple,
235
- TupleTableSlot *slot,
245
+ TupleTableSlot *newslot,
236
246
  List *recheckIndexes,
237
- TransitionCaptureState *transition_capture);
247
+ TransitionCaptureState *transition_capture,
248
+ bool is_crosspart_update);
238
249
  extern bool ExecIRUpdateTriggers(EState *estate,
239
250
  ResultRelInfo *relinfo,
240
251
  HeapTuple trigtuple,
241
- TupleTableSlot *slot);
252
+ TupleTableSlot *newslot);
242
253
  extern void ExecBSTruncateTriggers(EState *estate,
243
254
  ResultRelInfo *relinfo);
244
255
  extern void ExecASTruncateTriggers(EState *estate,
@@ -259,9 +270,9 @@ extern bool AfterTriggerPendingOnRel(Oid relid);
259
270
  * in utils/adt/ri_triggers.c
260
271
  */
261
272
  extern bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel,
262
- TupleTableSlot *old_slot, TupleTableSlot *new_slot);
273
+ TupleTableSlot *oldslot, TupleTableSlot *newslot);
263
274
  extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel,
264
- TupleTableSlot *old_slot, TupleTableSlot *new_slot);
275
+ TupleTableSlot *oldslot, TupleTableSlot *newslot);
265
276
  extern bool RI_Initial_Check(Trigger *trigger,
266
277
  Relation fk_rel, Relation pk_rel);
267
278
  extern void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel,
@@ -15,9 +15,11 @@
15
15
  #include "libpq/crypt.h"
16
16
  #include "nodes/parsenodes.h"
17
17
  #include "parser/parse_node.h"
18
+ #include "utils/guc.h"
18
19
 
19
- /* GUC. Is actually of type PasswordType. */
20
- extern int Password_encryption;
20
+ /* GUCs */
21
+ extern PGDLLIMPORT int Password_encryption; /* values from enum PasswordType */
22
+ extern PGDLLIMPORT char *createrole_self_grant;
21
23
 
22
24
  /* Hook to check passwords in CreateRole() and AlterRole() */
23
25
  typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);
@@ -25,13 +27,17 @@ typedef void (*check_password_hook_type) (const char *username, const char *shad
25
27
  extern PGDLLIMPORT check_password_hook_type check_password_hook;
26
28
 
27
29
  extern Oid CreateRole(ParseState *pstate, CreateRoleStmt *stmt);
28
- extern Oid AlterRole(AlterRoleStmt *stmt);
30
+ extern Oid AlterRole(ParseState *pstate, AlterRoleStmt *stmt);
29
31
  extern Oid AlterRoleSet(AlterRoleSetStmt *stmt);
30
32
  extern void DropRole(DropRoleStmt *stmt);
31
- extern void GrantRole(GrantRoleStmt *stmt);
33
+ extern void GrantRole(ParseState *pstate, GrantRoleStmt *stmt);
32
34
  extern ObjectAddress RenameRole(const char *oldname, const char *newname);
33
35
  extern void DropOwnedObjects(DropOwnedStmt *stmt);
34
36
  extern void ReassignOwnedObjects(ReassignOwnedStmt *stmt);
35
37
  extern List *roleSpecsToIds(List *memberNames);
36
38
 
39
+ extern bool check_createrole_self_grant(char **newval, void **extra,
40
+ GucSource source);
41
+ extern void assign_createrole_self_grant(const char *newval, void *extra);
42
+
37
43
  #endif /* USER_H */
@@ -4,7 +4,7 @@
4
4
  * header file for postgres vacuum cleaner and statistics analyzer
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/commands/vacuum.h
@@ -15,6 +15,8 @@
15
15
  #define VACUUM_H
16
16
 
17
17
  #include "access/htup.h"
18
+ #include "access/genam.h"
19
+ #include "access/parallel.h"
18
20
  #include "catalog/pg_class.h"
19
21
  #include "catalog/pg_statistic.h"
20
22
  #include "catalog/pg_type.h"
@@ -40,7 +42,7 @@
40
42
 
41
43
  /*
42
44
  * bulkdelete can be performed in parallel. This option can be used by
43
- * IndexAm's that need to scan the index to delete the tuples.
45
+ * index AMs that need to scan indexes to delete tuples.
44
46
  */
45
47
  #define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0)
46
48
 
@@ -62,6 +64,9 @@
62
64
  /* value for checking vacuum flags */
63
65
  #define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1)
64
66
 
67
+ /* Abstract type for parallel vacuum state */
68
+ typedef struct ParallelVacuumState ParallelVacuumState;
69
+
65
70
  /*----------
66
71
  * ANALYZE builds one of these structs for each attribute (column) that is
67
72
  * to be analyzed. The struct and subsidiary data are in anl_context,
@@ -174,40 +179,47 @@ typedef struct VacAttrStats
174
179
  int rowstride;
175
180
  } VacAttrStats;
176
181
 
177
- typedef enum VacuumOption
178
- {
179
- VACOPT_VACUUM = 1 << 0, /* do VACUUM */
180
- VACOPT_ANALYZE = 1 << 1, /* do ANALYZE */
181
- VACOPT_VERBOSE = 1 << 2, /* print progress info */
182
- VACOPT_FREEZE = 1 << 3, /* FREEZE option */
183
- VACOPT_FULL = 1 << 4, /* FULL (non-concurrent) vacuum */
184
- VACOPT_SKIP_LOCKED = 1 << 5, /* skip if cannot get lock */
185
- VACOPT_SKIPTOAST = 1 << 6, /* don't process the TOAST table, if any */
186
- VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */
187
- } VacuumOption;
182
+ /* flag bits for VacuumParams->options */
183
+ #define VACOPT_VACUUM 0x01 /* do VACUUM */
184
+ #define VACOPT_ANALYZE 0x02 /* do ANALYZE */
185
+ #define VACOPT_VERBOSE 0x04 /* output INFO instrumentation messages */
186
+ #define VACOPT_FREEZE 0x08 /* FREEZE option */
187
+ #define VACOPT_FULL 0x10 /* FULL (non-concurrent) vacuum */
188
+ #define VACOPT_SKIP_LOCKED 0x20 /* skip if cannot get lock */
189
+ #define VACOPT_PROCESS_MAIN 0x40 /* process main relation */
190
+ #define VACOPT_PROCESS_TOAST 0x80 /* process the TOAST table, if any */
191
+ #define VACOPT_DISABLE_PAGE_SKIPPING 0x100 /* don't skip any pages */
192
+ #define VACOPT_SKIP_DATABASE_STATS 0x200 /* skip vac_update_datfrozenxid() */
193
+ #define VACOPT_ONLY_DATABASE_STATS 0x400 /* only vac_update_datfrozenxid() */
188
194
 
189
195
  /*
190
- * A ternary value used by vacuum parameters.
196
+ * Values used by index_cleanup and truncate params.
191
197
  *
192
- * DEFAULT value is used to determine the value based on other
193
- * configurations, e.g. reloptions.
198
+ * VACOPTVALUE_UNSPECIFIED is used as an initial placeholder when VACUUM
199
+ * command has no explicit value. When that happens the final usable value
200
+ * comes from the corresponding reloption (though the reloption default is
201
+ * usually used).
194
202
  */
195
- typedef enum VacOptTernaryValue
203
+ typedef enum VacOptValue
196
204
  {
197
- VACOPT_TERNARY_DEFAULT = 0,
198
- VACOPT_TERNARY_DISABLED,
199
- VACOPT_TERNARY_ENABLED,
200
- } VacOptTernaryValue;
205
+ VACOPTVALUE_UNSPECIFIED = 0,
206
+ VACOPTVALUE_AUTO,
207
+ VACOPTVALUE_DISABLED,
208
+ VACOPTVALUE_ENABLED,
209
+ } VacOptValue;
201
210
 
202
211
  /*
203
212
  * Parameters customizing behavior of VACUUM and ANALYZE.
204
213
  *
205
214
  * Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set
206
215
  * in options.
216
+ *
217
+ * When adding a new VacuumParam member, consider adding it to vacuumdb as
218
+ * well.
207
219
  */
208
220
  typedef struct VacuumParams
209
221
  {
210
- int options; /* bitmask of VacuumOption */
222
+ bits32 options; /* bitmask of VACOPT_* */
211
223
  int freeze_min_age; /* min freeze age, -1 to use default */
212
224
  int freeze_table_age; /* age at which to scan whole table */
213
225
  int multixact_freeze_min_age; /* min multixact freeze age, -1 to
@@ -216,12 +228,10 @@ typedef struct VacuumParams
216
228
  * whole table */
217
229
  bool is_wraparound; /* force a for-wraparound vacuum */
218
230
  int log_min_duration; /* minimum execution threshold in ms at
219
- * which verbose logs are activated, -1
220
- * to use default */
221
- VacOptTernaryValue index_cleanup; /* Do index vacuum and cleanup,
222
- * default value depends on reloptions */
223
- VacOptTernaryValue truncate; /* Truncate empty pages at the end,
224
- * default value depends on reloptions */
231
+ * which autovacuum is logged, -1 to use
232
+ * default */
233
+ VacOptValue index_cleanup; /* Do index vacuum and cleanup */
234
+ VacOptValue truncate; /* Truncate empty pages at the end */
225
235
 
226
236
  /*
227
237
  * The number of parallel vacuum workers. 0 by default which means choose
@@ -231,23 +241,83 @@ typedef struct VacuumParams
231
241
  int nworkers;
232
242
  } VacuumParams;
233
243
 
244
+ /*
245
+ * VacuumCutoffs is immutable state that describes the cutoffs used by VACUUM.
246
+ * Established at the beginning of each VACUUM operation.
247
+ */
248
+ struct VacuumCutoffs
249
+ {
250
+ /*
251
+ * Existing pg_class fields at start of VACUUM
252
+ */
253
+ TransactionId relfrozenxid;
254
+ MultiXactId relminmxid;
255
+
256
+ /*
257
+ * OldestXmin is the Xid below which tuples deleted by any xact (that
258
+ * committed) should be considered DEAD, not just RECENTLY_DEAD.
259
+ *
260
+ * OldestMxact is the Mxid below which MultiXacts are definitely not seen
261
+ * as visible by any running transaction.
262
+ *
263
+ * OldestXmin and OldestMxact are also the most recent values that can
264
+ * ever be passed to vac_update_relstats() as frozenxid and minmulti
265
+ * arguments at the end of VACUUM. These same values should be passed
266
+ * when it turns out that VACUUM will leave no unfrozen XIDs/MXIDs behind
267
+ * in the table.
268
+ */
269
+ TransactionId OldestXmin;
270
+ MultiXactId OldestMxact;
271
+
272
+ /*
273
+ * FreezeLimit is the Xid below which all Xids are definitely frozen or
274
+ * removed in pages VACUUM scans and cleanup locks.
275
+ *
276
+ * MultiXactCutoff is the value below which all MultiXactIds are
277
+ * definitely removed from Xmax in pages VACUUM scans and cleanup locks.
278
+ */
279
+ TransactionId FreezeLimit;
280
+ MultiXactId MultiXactCutoff;
281
+ };
282
+
283
+ /*
284
+ * VacDeadItems stores TIDs whose index tuples are deleted by index vacuuming.
285
+ */
286
+ typedef struct VacDeadItems
287
+ {
288
+ int max_items; /* # slots allocated in array */
289
+ int num_items; /* current # of entries */
290
+
291
+ /* Sorted array of TIDs to delete from indexes */
292
+ ItemPointerData items[FLEXIBLE_ARRAY_MEMBER];
293
+ } VacDeadItems;
294
+
295
+ #define MAXDEADITEMS(avail_mem) \
296
+ (((avail_mem) - offsetof(VacDeadItems, items)) / sizeof(ItemPointerData))
297
+
234
298
  /* GUC parameters */
235
299
  extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */
236
- extern int vacuum_freeze_min_age;
237
- extern int vacuum_freeze_table_age;
238
- extern int vacuum_multixact_freeze_min_age;
239
- extern int vacuum_multixact_freeze_table_age;
300
+ extern PGDLLIMPORT int vacuum_freeze_min_age;
301
+ extern PGDLLIMPORT int vacuum_freeze_table_age;
302
+ extern PGDLLIMPORT int vacuum_multixact_freeze_min_age;
303
+ extern PGDLLIMPORT int vacuum_multixact_freeze_table_age;
304
+ extern PGDLLIMPORT int vacuum_failsafe_age;
305
+ extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
240
306
 
241
307
  /* Variables for cost-based parallel vacuum */
242
- extern pg_atomic_uint32 *VacuumSharedCostBalance;
243
- extern pg_atomic_uint32 *VacuumActiveNWorkers;
244
- extern int VacuumCostBalanceLocal;
308
+ extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
309
+ extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
310
+ extern PGDLLIMPORT int VacuumCostBalanceLocal;
245
311
 
312
+ extern PGDLLIMPORT bool VacuumFailsafeActive;
313
+ extern PGDLLIMPORT double vacuum_cost_delay;
314
+ extern PGDLLIMPORT int vacuum_cost_limit;
246
315
 
247
316
  /* in commands/vacuum.c */
248
317
  extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel);
249
318
  extern void vacuum(List *relations, VacuumParams *params,
250
- BufferAccessStrategy bstrategy, bool isTopLevel);
319
+ BufferAccessStrategy bstrategy, MemoryContext vac_context,
320
+ bool isTopLevel);
251
321
  extern void vac_open_indexes(Relation relation, LOCKMODE lockmode,
252
322
  int *nindexes, Relation **Irel);
253
323
  extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode);
@@ -262,22 +332,45 @@ extern void vac_update_relstats(Relation relation,
262
332
  bool hasindex,
263
333
  TransactionId frozenxid,
264
334
  MultiXactId minmulti,
335
+ bool *frozenxid_updated,
336
+ bool *minmulti_updated,
265
337
  bool in_outer_xact);
266
- extern void vacuum_set_xid_limits(Relation rel,
267
- int freeze_min_age, int freeze_table_age,
268
- int multixact_freeze_min_age,
269
- int multixact_freeze_table_age,
270
- TransactionId *oldestXmin,
271
- TransactionId *freezeLimit,
272
- TransactionId *xidFullScanLimit,
273
- MultiXactId *multiXactCutoff,
274
- MultiXactId *mxactFullScanLimit);
338
+ extern bool vacuum_get_cutoffs(Relation rel, const VacuumParams *params,
339
+ struct VacuumCutoffs *cutoffs);
340
+ extern bool vacuum_xid_failsafe_check(const struct VacuumCutoffs *cutoffs);
275
341
  extern void vac_update_datfrozenxid(void);
276
342
  extern void vacuum_delay_point(void);
277
343
  extern bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple,
278
- int options);
344
+ bits32 options);
279
345
  extern Relation vacuum_open_relation(Oid relid, RangeVar *relation,
280
- int options, bool verbose, LOCKMODE lmode);
346
+ bits32 options, bool verbose,
347
+ LOCKMODE lmode);
348
+ extern IndexBulkDeleteResult *vac_bulkdel_one_index(IndexVacuumInfo *ivinfo,
349
+ IndexBulkDeleteResult *istat,
350
+ VacDeadItems *dead_items);
351
+ extern IndexBulkDeleteResult *vac_cleanup_one_index(IndexVacuumInfo *ivinfo,
352
+ IndexBulkDeleteResult *istat);
353
+ extern Size vac_max_items_to_alloc_size(int max_items);
354
+
355
+ /* In postmaster/autovacuum.c */
356
+ extern void AutoVacuumUpdateCostLimit(void);
357
+ extern void VacuumUpdateCosts(void);
358
+
359
+ /* in commands/vacuumparallel.c */
360
+ extern ParallelVacuumState *parallel_vacuum_init(Relation rel, Relation *indrels,
361
+ int nindexes, int nrequested_workers,
362
+ int max_items, int elevel,
363
+ BufferAccessStrategy bstrategy);
364
+ extern void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats);
365
+ extern VacDeadItems *parallel_vacuum_get_dead_items(ParallelVacuumState *pvs);
366
+ extern void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs,
367
+ long num_table_tuples,
368
+ int num_index_scans);
369
+ extern void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs,
370
+ long num_table_tuples,
371
+ int num_index_scans,
372
+ bool estimated_count);
373
+ extern void parallel_vacuum_main(dsm_segment *seg, shm_toc *toc);
281
374
 
282
375
  /* in commands/analyze.c */
283
376
  extern void analyze_rel(Oid relid, RangeVar *relation,