pg_query 4.2.1 → 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 (531) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +6 -8
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +27 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -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 +1 -1
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
  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 +6 -2
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
  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 +1 -1
  29. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
  30. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  31. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  32. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  34. data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
  36. data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
  37. data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
  38. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  39. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  40. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
  42. data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
  43. data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
  44. data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
  45. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
  46. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  47. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
  48. data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
  49. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
  50. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
  52. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  53. data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
  54. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
  58. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
  60. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  82. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
  125. data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
  126. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
  127. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
  129. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  130. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
  132. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
  133. data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
  134. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
  135. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  136. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
  137. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  138. data/ext/pg_query/include/postgres/common/int.h +437 -0
  139. data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
  140. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  141. data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
  142. data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
  143. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  144. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  145. data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
  146. data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
  147. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
  148. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  149. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  150. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
  151. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  152. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  153. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  154. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
  155. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
  156. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
  157. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
  158. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  159. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  160. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
  161. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  162. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
  163. data/ext/pg_query/include/postgres/gram.h +1127 -0
  164. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  165. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
  166. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  167. data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
  168. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
  169. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  170. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
  171. data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
  172. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  173. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
  181. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  182. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  183. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
  184. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  185. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
  186. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
  192. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  193. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
  195. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  196. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  203. data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
  204. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  205. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  206. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
  208. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
  214. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
  215. data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
  216. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  224. data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
  225. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  226. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  227. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
  228. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  229. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
  230. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
  231. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  232. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
  233. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  234. data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
  235. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
  236. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
  237. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  238. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
  239. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
  240. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
  241. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
  242. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  245. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  249. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  250. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  251. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  252. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
  253. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  254. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  255. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  256. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  257. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  258. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  259. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  260. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  261. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  264. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  268. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  269. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  270. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  275. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  276. data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
  277. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  278. data/ext/pg_query/include/postgres/postgres.h +579 -0
  279. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  280. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
  281. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  285. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
  289. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
  290. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
  291. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
  292. data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
  293. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  294. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
  295. data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
  296. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
  297. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
  298. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
  299. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
  300. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  301. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  304. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
  305. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
  306. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  307. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
  308. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
  309. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
  310. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
  311. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
  312. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
  313. data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
  314. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
  315. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  316. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  317. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
  318. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
  320. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
  321. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
  323. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
  324. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  325. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  326. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
  329. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
  330. data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
  331. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  332. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
  333. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
  335. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
  336. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
  337. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  338. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  339. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
  340. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  341. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
  342. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
  343. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
  344. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
  345. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
  346. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  347. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
  348. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
  354. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
  355. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
  356. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  357. data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
  358. data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
  359. data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
  360. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
  361. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
  362. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  363. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  364. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
  365. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  367. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
  368. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  369. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  370. data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
  371. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
  372. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
  374. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
  375. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  376. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
  377. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
  378. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
  379. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
  381. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  382. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
  383. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  384. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  385. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
  386. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
  387. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  388. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
  389. data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
  390. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
  391. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
  392. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
  393. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  395. data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
  396. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
  397. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
  398. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  399. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  400. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
  401. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  402. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
  403. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
  405. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
  407. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
  408. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
  409. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
  411. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
  412. data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
  413. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
  414. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
  415. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  416. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  417. data/ext/pg_query/pg_query.c +10 -1
  418. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  419. data/ext/pg_query/pg_query_deparse.c +1 -10635
  420. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  421. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  422. data/ext/pg_query/pg_query_internal.h +1 -1
  423. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  424. data/ext/pg_query/pg_query_normalize.c +1 -1
  425. data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
  426. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  427. data/ext/pg_query/pg_query_parse.c +47 -5
  428. data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
  429. data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
  430. data/ext/pg_query/pg_query_ruby.c +5 -0
  431. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  432. data/ext/pg_query/pg_query_scan.c +1 -1
  433. data/ext/pg_query/pg_query_split.c +3 -3
  434. data/ext/pg_query/postgres_deparse.c +11067 -0
  435. data/ext/pg_query/postgres_deparse.h +9 -0
  436. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  437. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  438. data/ext/pg_query/src_backend_commands_define.c +1 -1
  439. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  440. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  441. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  442. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  443. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  444. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  445. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  446. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  447. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  448. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  449. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  450. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  451. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  452. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  453. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  454. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  455. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  456. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  457. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  458. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  459. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  460. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  461. data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
  462. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  463. data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
  464. data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
  465. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  466. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  467. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  468. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  469. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  470. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  471. data/ext/pg_query/src_common_encnames.c +4 -1
  472. data/ext/pg_query/src_common_hashfn.c +1 -1
  473. data/ext/pg_query/src_common_keywords.c +1 -1
  474. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  475. data/ext/pg_query/src_common_kwlookup.c +1 -1
  476. data/ext/pg_query/src_common_psprintf.c +1 -1
  477. data/ext/pg_query/src_common_stringinfo.c +4 -4
  478. data/ext/pg_query/src_common_wchar.c +9 -8
  479. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  480. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  481. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  482. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  483. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  484. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  485. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  486. data/ext/pg_query/src_port_pg_bitutils.c +79 -5
  487. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  488. data/ext/pg_query/src_port_snprintf.c +6 -10
  489. data/ext/pg_query/src_port_strerror.c +1 -1
  490. data/ext/pg_query/src_port_strlcpy.c +79 -0
  491. data/lib/pg_query/fingerprint.rb +2 -3
  492. data/lib/pg_query/node.rb +16 -11
  493. data/lib/pg_query/parse.rb +1 -1
  494. data/lib/pg_query/pg_query_pb.rb +166 -3191
  495. data/lib/pg_query/treewalker.rb +23 -5
  496. data/lib/pg_query/version.rb +1 -1
  497. metadata +432 -380
  498. data/ext/pg_query/guc-file.c +0 -0
  499. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  500. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  501. data/ext/pg_query/include/commands/variable.h +0 -38
  502. data/ext/pg_query/include/common/ip.h +0 -31
  503. data/ext/pg_query/include/getaddrinfo.h +0 -162
  504. data/ext/pg_query/include/kwlist_d.h +0 -1095
  505. data/ext/pg_query/include/parser/gram.h +0 -1101
  506. data/ext/pg_query/include/pg_config_os.h +0 -8
  507. data/ext/pg_query/include/portability/instr_time.h +0 -256
  508. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  509. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  510. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  511. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  512. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  513. data/ext/pg_query/include/utils/dynahash.h +0 -20
  514. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  515. data/ext/pg_query/include/utils/pidfile.h +0 -56
  516. data/ext/pg_query/include/utils/ps_status.h +0 -25
  517. data/ext/pg_query/include/utils/rls.h +0 -50
  518. data/ext/pg_query/include/utils/tzparser.h +0 -39
  519. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  520. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  521. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  522. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  523. data/ext/pg_query/src_common_pg_prng.c +0 -152
  524. data/ext/pg_query/src_common_string.c +0 -92
  525. data/ext/pg_query/src_port_pgsleep.c +0 -69
  526. data/ext/pg_query/src_port_strnlen.c +0 -39
  527. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  528. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  529. /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
  530. /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
  531. /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
@@ -0,0 +1,237 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * memutils_memorychunk.h
4
+ * Here we define a struct named MemoryChunk which implementations of
5
+ * MemoryContexts may use as a header for chunks of memory they allocate.
6
+ *
7
+ * MemoryChunk provides a lightweight header that a MemoryContext can use to
8
+ * store a reference back to the block which the given chunk is allocated on
9
+ * and also an additional 30-bits to store another value such as the size of
10
+ * the allocated chunk.
11
+ *
12
+ * Although MemoryChunks are used by each of our MemoryContexts, future
13
+ * implementations may choose to implement their own method for storing chunk
14
+ * headers. The only requirement is that the header ends with an 8-byte value
15
+ * which the least significant 3-bits of are set to the MemoryContextMethodID
16
+ * of the given context.
17
+ *
18
+ * By default, a MemoryChunk is 8 bytes in size, however, when
19
+ * MEMORY_CONTEXT_CHECKING is defined the header becomes 16 bytes in size due
20
+ * to the additional requested_size field. The MemoryContext may use this
21
+ * field for whatever they wish, but it is intended to be used for additional
22
+ * checks which are only done in MEMORY_CONTEXT_CHECKING builds.
23
+ *
24
+ * The MemoryChunk contains a uint64 field named 'hdrmask'. This field is
25
+ * used to encode 4 separate pieces of information. Starting with the least
26
+ * significant bits of 'hdrmask', the bit space is reserved as follows:
27
+ *
28
+ * 1. 3-bits to indicate the MemoryContextMethodID as defined by
29
+ * MEMORY_CONTEXT_METHODID_MASK
30
+ * 2. 1-bit to denote an "external" chunk (see below)
31
+ * 3. 30-bits reserved for the MemoryContext to use for anything it
32
+ * requires. Most MemoryContext likely want to store the size of the
33
+ * chunk here.
34
+ * 4. 30-bits for the number of bytes that must be subtracted from the chunk
35
+ * to obtain the address of the block that the chunk is stored on.
36
+ *
37
+ * In some cases, for example when memory allocations become large, it's
38
+ * possible fields 3 and 4 above are not large enough to store the values
39
+ * required for the chunk. In this case, the MemoryContext can choose to mark
40
+ * the chunk as "external" by calling the MemoryChunkSetHdrMaskExternal()
41
+ * function. When this is done, fields 3 and 4 are unavailable for use by the
42
+ * MemoryContext and it's up to the MemoryContext itself to devise its own
43
+ * method for getting the reference to the block.
44
+ *
45
+ * Interface:
46
+ *
47
+ * MemoryChunkSetHdrMask:
48
+ * Used to set up a non-external MemoryChunk.
49
+ *
50
+ * MemoryChunkSetHdrMaskExternal:
51
+ * Used to set up an externally managed MemoryChunk.
52
+ *
53
+ * MemoryChunkIsExternal:
54
+ * Determine if the given MemoryChunk is externally managed, i.e.
55
+ * MemoryChunkSetHdrMaskExternal() was called on the chunk.
56
+ *
57
+ * MemoryChunkGetValue:
58
+ * For non-external chunks, return the stored 30-bit value as it was set
59
+ * in the call to MemoryChunkSetHdrMask().
60
+ *
61
+ * MemoryChunkGetBlock:
62
+ * For non-external chunks, return a pointer to the block as it was set
63
+ * in the call to MemoryChunkSetHdrMask().
64
+ *
65
+ * Also exports:
66
+ * MEMORYCHUNK_MAX_VALUE
67
+ * MEMORYCHUNK_MAX_BLOCKOFFSET
68
+ * PointerGetMemoryChunk
69
+ * MemoryChunkGetPointer
70
+ *
71
+ * Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
72
+ * Portions Copyright (c) 1994, Regents of the University of California
73
+ *
74
+ * src/include/utils/memutils_memorychunk.h
75
+ *
76
+ *-------------------------------------------------------------------------
77
+ */
78
+
79
+ #ifndef MEMUTILS_MEMORYCHUNK_H
80
+ #define MEMUTILS_MEMORYCHUNK_H
81
+
82
+ #include "utils/memutils_internal.h"
83
+
84
+ /*
85
+ * The maximum allowed value that MemoryContexts can store in the value
86
+ * field. Must be 1 less than a power of 2.
87
+ */
88
+ #define MEMORYCHUNK_MAX_VALUE UINT64CONST(0x3FFFFFFF)
89
+
90
+ /*
91
+ * The maximum distance in bytes that a MemoryChunk can be offset from the
92
+ * block that is storing the chunk. Must be 1 less than a power of 2.
93
+ */
94
+ #define MEMORYCHUNK_MAX_BLOCKOFFSET UINT64CONST(0x3FFFFFFF)
95
+
96
+ /* define the least significant base-0 bit of each portion of the hdrmask */
97
+ #define MEMORYCHUNK_EXTERNAL_BASEBIT MEMORY_CONTEXT_METHODID_BITS
98
+ #define MEMORYCHUNK_VALUE_BASEBIT (MEMORYCHUNK_EXTERNAL_BASEBIT + 1)
99
+ #define MEMORYCHUNK_BLOCKOFFSET_BASEBIT (MEMORYCHUNK_VALUE_BASEBIT + 30)
100
+
101
+ /*
102
+ * A magic number for storing in the free bits of an external chunk. This
103
+ * must mask out the bits used for storing the MemoryContextMethodID and the
104
+ * external bit.
105
+ */
106
+ #define MEMORYCHUNK_MAGIC (UINT64CONST(0xB1A8DB858EB6EFBA) >> \
107
+ MEMORYCHUNK_VALUE_BASEBIT << \
108
+ MEMORYCHUNK_VALUE_BASEBIT)
109
+
110
+ typedef struct MemoryChunk
111
+ {
112
+ #ifdef MEMORY_CONTEXT_CHECKING
113
+ Size requested_size;
114
+ #endif
115
+
116
+ /* bitfield for storing details about the chunk */
117
+ uint64 hdrmask; /* must be last */
118
+ } MemoryChunk;
119
+
120
+ /* Get the MemoryChunk from the pointer */
121
+ #define PointerGetMemoryChunk(p) \
122
+ ((MemoryChunk *) ((char *) (p) - sizeof(MemoryChunk)))
123
+ /* Get the pointer from the MemoryChunk */
124
+ #define MemoryChunkGetPointer(c) \
125
+ ((void *) ((char *) (c) + sizeof(MemoryChunk)))
126
+
127
+ /* private macros for making the inline functions below more simple */
128
+ #define HdrMaskIsExternal(hdrmask) \
129
+ ((hdrmask) & (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT))
130
+ #define HdrMaskGetValue(hdrmask) \
131
+ (((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT) & MEMORYCHUNK_MAX_VALUE)
132
+
133
+ /*
134
+ * We should have used up all the bits here, so the compiler is likely to
135
+ * optimize out the & MEMORYCHUNK_MAX_BLOCKOFFSET.
136
+ */
137
+ #define HdrMaskBlockOffset(hdrmask) \
138
+ (((hdrmask) >> MEMORYCHUNK_BLOCKOFFSET_BASEBIT) & MEMORYCHUNK_MAX_BLOCKOFFSET)
139
+
140
+ /* For external chunks only, check the magic number matches */
141
+ #define HdrMaskCheckMagic(hdrmask) \
142
+ (MEMORYCHUNK_MAGIC == \
143
+ ((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT << MEMORYCHUNK_VALUE_BASEBIT))
144
+ /*
145
+ * MemoryChunkSetHdrMask
146
+ * Store the given 'block', 'chunk_size' and 'methodid' in the given
147
+ * MemoryChunk.
148
+ *
149
+ * The number of bytes between 'block' and 'chunk' must be <=
150
+ * MEMORYCHUNK_MAX_BLOCKOFFSET.
151
+ * 'value' must be <= MEMORYCHUNK_MAX_VALUE.
152
+ */
153
+ static inline void
154
+ MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block,
155
+ Size value, MemoryContextMethodID methodid)
156
+ {
157
+ Size blockoffset = (char *) chunk - (char *) block;
158
+
159
+ Assert((char *) chunk >= (char *) block);
160
+ Assert(blockoffset <= MEMORYCHUNK_MAX_BLOCKOFFSET);
161
+ Assert(value <= MEMORYCHUNK_MAX_VALUE);
162
+ Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
163
+
164
+ chunk->hdrmask = (((uint64) blockoffset) << MEMORYCHUNK_BLOCKOFFSET_BASEBIT) |
165
+ (((uint64) value) << MEMORYCHUNK_VALUE_BASEBIT) |
166
+ methodid;
167
+ }
168
+
169
+ /*
170
+ * MemoryChunkSetHdrMaskExternal
171
+ * Set 'chunk' as an externally managed chunk. Here we only record the
172
+ * MemoryContextMethodID and set the external chunk bit.
173
+ */
174
+ static inline void
175
+ MemoryChunkSetHdrMaskExternal(MemoryChunk *chunk,
176
+ MemoryContextMethodID methodid)
177
+ {
178
+ Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
179
+
180
+ chunk->hdrmask = MEMORYCHUNK_MAGIC | (((uint64) 1) << MEMORYCHUNK_EXTERNAL_BASEBIT) |
181
+ methodid;
182
+ }
183
+
184
+ /*
185
+ * MemoryChunkIsExternal
186
+ * Return true if 'chunk' is marked as external.
187
+ */
188
+ static inline bool
189
+ MemoryChunkIsExternal(MemoryChunk *chunk)
190
+ {
191
+ /*
192
+ * External chunks should always store MEMORYCHUNK_MAGIC in the upper
193
+ * portion of the hdrmask, check that nothing has stomped on that.
194
+ */
195
+ Assert(!HdrMaskIsExternal(chunk->hdrmask) ||
196
+ HdrMaskCheckMagic(chunk->hdrmask));
197
+
198
+ return HdrMaskIsExternal(chunk->hdrmask);
199
+ }
200
+
201
+ /*
202
+ * MemoryChunkGetValue
203
+ * For non-external chunks, returns the value field as it was set in
204
+ * MemoryChunkSetHdrMask.
205
+ */
206
+ static inline Size
207
+ MemoryChunkGetValue(MemoryChunk *chunk)
208
+ {
209
+ Assert(!HdrMaskIsExternal(chunk->hdrmask));
210
+
211
+ return HdrMaskGetValue(chunk->hdrmask);
212
+ }
213
+
214
+ /*
215
+ * MemoryChunkGetBlock
216
+ * For non-external chunks, returns the pointer to the block as was set
217
+ * in MemoryChunkSetHdrMask.
218
+ */
219
+ static inline void *
220
+ MemoryChunkGetBlock(MemoryChunk *chunk)
221
+ {
222
+ Assert(!HdrMaskIsExternal(chunk->hdrmask));
223
+
224
+ return (void *) ((char *) chunk - HdrMaskBlockOffset(chunk->hdrmask));
225
+ }
226
+
227
+ /* cleanup all internal definitions */
228
+ #undef MEMORYCHUNK_EXTERNAL_BASEBIT
229
+ #undef MEMORYCHUNK_VALUE_BASEBIT
230
+ #undef MEMORYCHUNK_BLOCKOFFSET_BASEBIT
231
+ #undef MEMORYCHUNK_MAGIC
232
+ #undef HdrMaskIsExternal
233
+ #undef HdrMaskGetValue
234
+ #undef HdrMaskBlockOffset
235
+ #undef HdrMaskCheckMagic
236
+
237
+ #endif /* MEMUTILS_MEMORYCHUNK_H */
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane.
7
7
  *
8
- * Copyright (c) 1998-2022, PostgreSQL Global Development Group
8
+ * Copyright (c) 1998-2023, PostgreSQL Global Development Group
9
9
  *
10
10
  * src/include/utils/numeric.h
11
11
  *
@@ -56,9 +56,24 @@ typedef struct NumericData *Numeric;
56
56
  * fmgr interface macros
57
57
  */
58
58
 
59
- #define DatumGetNumeric(X) ((Numeric) PG_DETOAST_DATUM(X))
60
- #define DatumGetNumericCopy(X) ((Numeric) PG_DETOAST_DATUM_COPY(X))
61
- #define NumericGetDatum(X) PointerGetDatum(X)
59
+ static inline Numeric
60
+ DatumGetNumeric(Datum X)
61
+ {
62
+ return (Numeric) PG_DETOAST_DATUM(X);
63
+ }
64
+
65
+ static inline Numeric
66
+ DatumGetNumericCopy(Datum X)
67
+ {
68
+ return (Numeric) PG_DETOAST_DATUM_COPY(X);
69
+ }
70
+
71
+ static inline Datum
72
+ NumericGetDatum(Numeric X)
73
+ {
74
+ return PointerGetDatum(X);
75
+ }
76
+
62
77
  #define PG_GETARG_NUMERIC(n) DatumGetNumeric(PG_GETARG_DATUM(n))
63
78
  #define PG_GETARG_NUMERIC_COPY(n) DatumGetNumericCopy(PG_GETARG_DATUM(n))
64
79
  #define PG_RETURN_NUMERIC(x) return NumericGetDatum(x)
@@ -85,6 +100,6 @@ extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2,
85
100
  bool *have_error);
86
101
  extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2,
87
102
  bool *have_error);
88
- extern int32 numeric_int4_opt_error(Numeric num, bool *error);
103
+ extern int32 numeric_int4_opt_error(Numeric num, bool *have_error);
89
104
 
90
105
  #endif /* _PG_NUMERIC_H_ */
@@ -18,7 +18,7 @@
18
18
  * everything that should be freed. See utils/mmgr/README for more info.
19
19
  *
20
20
  *
21
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
21
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
22
22
  * Portions Copyright (c) 1994, Regents of the University of California
23
23
  *
24
24
  * src/include/utils/palloc.h
@@ -56,7 +56,7 @@ typedef struct MemoryContextCallback
56
56
  * Avoid accessing it directly! Instead, use MemoryContextSwitchTo()
57
57
  * to change the setting.
58
58
  */
59
- extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
59
+ extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
60
60
 
61
61
  /*
62
62
  * Flags for MemoryContextAllocExtended.
@@ -73,11 +73,17 @@ extern void *MemoryContextAllocZero(MemoryContext context, Size size);
73
73
  extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
74
74
  extern void *MemoryContextAllocExtended(MemoryContext context,
75
75
  Size size, int flags);
76
+ extern void *MemoryContextAllocAligned(MemoryContext context,
77
+ Size size, Size alignto, int flags);
76
78
 
77
79
  extern void *palloc(Size size);
78
80
  extern void *palloc0(Size size);
79
81
  extern void *palloc_extended(Size size, int flags);
82
+ extern void *palloc_aligned(Size size, Size alignto, int flags);
80
83
  extern pg_nodiscard void *repalloc(void *pointer, Size size);
84
+ extern pg_nodiscard void *repalloc_extended(void *pointer,
85
+ Size size, int flags);
86
+ extern pg_nodiscard void *repalloc0(void *pointer, Size oldsize, Size size);
81
87
  extern void pfree(void *pointer);
82
88
 
83
89
  /*
@@ -101,6 +107,7 @@ extern void pfree(void *pointer);
101
107
  * objects of type "type"
102
108
  */
103
109
  #define repalloc_array(pointer, type, count) ((type *) repalloc(pointer, sizeof(type) * (count)))
110
+ #define repalloc0_array(pointer, type, oldcount, count) ((type *) repalloc0(pointer, sizeof(type) * (oldcount), sizeof(type) * (count)))
104
111
 
105
112
  /*
106
113
  * The result of palloc() is always word-aligned, so we can skip testing
@@ -2,7 +2,7 @@
2
2
  *
3
3
  * partcache.h
4
4
  *
5
- * Copyright (c) 1996-2022, PostgreSQL Global Development Group
5
+ * Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/utils/partcache.h
8
8
  *
@@ -13,6 +13,7 @@
13
13
 
14
14
  #include "access/attnum.h"
15
15
  #include "fmgr.h"
16
+ #include "nodes/parsenodes.h"
16
17
  #include "nodes/pg_list.h"
17
18
  #include "nodes/primnodes.h"
18
19
  #include "partitioning/partdefs.h"
@@ -23,7 +24,7 @@
23
24
  */
24
25
  typedef struct PartitionKeyData
25
26
  {
26
- char strategy; /* partitioning strategy */
27
+ PartitionStrategy strategy; /* partitioning strategy */
27
28
  int16 partnatts; /* number of columns in the partition key */
28
29
  AttrNumber *partattrs; /* attribute numbers of columns in the
29
30
  * partition key or 0 if it's an expr */
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * src/include/utils/pg_locale.h
6
6
  *
7
- * Copyright (c) 2002-2022, PostgreSQL Global Development Group
7
+ * Copyright (c) 2002-2023, PostgreSQL Global Development Group
8
8
  *
9
9
  *-----------------------------------------------------------------------
10
10
  */
@@ -19,8 +19,6 @@
19
19
  #include <unicode/ucol.h>
20
20
  #endif
21
21
 
22
- #include "utils/guc.h"
23
-
24
22
  #ifdef USE_ICU
25
23
  /*
26
24
  * ucol_strcollUTF8() was introduced in ICU 50, but it is buggy before ICU 53.
@@ -42,6 +40,7 @@ extern PGDLLIMPORT char *locale_messages;
42
40
  extern PGDLLIMPORT char *locale_monetary;
43
41
  extern PGDLLIMPORT char *locale_numeric;
44
42
  extern PGDLLIMPORT char *locale_time;
43
+ extern PGDLLIMPORT int icu_validation_level;
45
44
 
46
45
  /* lc_time localization cache */
47
46
  extern PGDLLIMPORT char *localized_abbrev_days[];
@@ -49,19 +48,11 @@ extern PGDLLIMPORT char *localized_full_days[];
49
48
  extern PGDLLIMPORT char *localized_abbrev_months[];
50
49
  extern PGDLLIMPORT char *localized_full_months[];
51
50
 
52
-
53
- extern bool check_locale_messages(char **newval, void **extra, GucSource source);
54
- extern void assign_locale_messages(const char *newval, void *extra);
55
- extern bool check_locale_monetary(char **newval, void **extra, GucSource source);
56
- extern void assign_locale_monetary(const char *newval, void *extra);
57
- extern bool check_locale_numeric(char **newval, void **extra, GucSource source);
58
- extern void assign_locale_numeric(const char *newval, void *extra);
59
- extern bool check_locale_time(char **newval, void **extra, GucSource source);
60
- extern void assign_locale_time(const char *newval, void *extra);
51
+ /* is the databases's LC_CTYPE the C locale? */
52
+ extern PGDLLIMPORT bool database_ctype_is_c;
61
53
 
62
54
  extern bool check_locale(int category, const char *locale, char **canonname);
63
55
  extern char *pg_perm_setlocale(int category, const char *locale);
64
- extern void check_strxfrm_bug(void);
65
56
 
66
57
  extern bool lc_collate_is_c(Oid collation);
67
58
  extern bool lc_ctype_is_c(Oid collation);
@@ -106,17 +97,34 @@ typedef struct pg_locale_struct *pg_locale_t;
106
97
  extern PGDLLIMPORT struct pg_locale_struct default_locale;
107
98
 
108
99
  extern void make_icu_collator(const char *iculocstr,
100
+ const char *icurules,
109
101
  struct pg_locale_struct *resultp);
110
102
 
103
+ extern bool pg_locale_deterministic(pg_locale_t locale);
111
104
  extern pg_locale_t pg_newlocale_from_collation(Oid collid);
112
105
 
113
106
  extern char *get_collation_actual_version(char collprovider, const char *collcollate);
107
+ extern int pg_strcoll(const char *arg1, const char *arg2, pg_locale_t locale);
108
+ extern int pg_strncoll(const char *arg1, size_t len1,
109
+ const char *arg2, size_t len2, pg_locale_t locale);
110
+ extern bool pg_strxfrm_enabled(pg_locale_t locale);
111
+ extern size_t pg_strxfrm(char *dest, const char *src, size_t destsize,
112
+ pg_locale_t locale);
113
+ extern size_t pg_strnxfrm(char *dest, size_t destsize, const char *src,
114
+ size_t srclen, pg_locale_t locale);
115
+ extern bool pg_strxfrm_prefix_enabled(pg_locale_t locale);
116
+ extern size_t pg_strxfrm_prefix(char *dest, const char *src, size_t destsize,
117
+ pg_locale_t locale);
118
+ extern size_t pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src,
119
+ size_t srclen, pg_locale_t locale);
120
+
121
+ extern void icu_validate_locale(const char *loc_str);
122
+ extern char *icu_language_tag(const char *loc_str, int elevel);
114
123
 
115
124
  #ifdef USE_ICU
116
125
  extern int32_t icu_to_uchar(UChar **buff_uchar, const char *buff, size_t nbytes);
117
126
  extern int32_t icu_from_uchar(char **result, const UChar *buff_uchar, int32_t len_uchar);
118
127
  #endif
119
- extern void check_icu_locale(const char *icu_locale);
120
128
 
121
129
  /* These functions convert from/to libc's wchar_t, *not* pg_wchar_t */
122
130
  extern size_t wchar2char(char *to, const wchar_t *from, size_t tolen,
@@ -5,7 +5,7 @@
5
5
  * only be needed by files implementing statistics support (rather than ones
6
6
  * reporting / querying stats).
7
7
  *
8
- * Copyright (c) 2001-2022, PostgreSQL Global Development Group
8
+ * Copyright (c) 2001-2023, PostgreSQL Global Development Group
9
9
  *
10
10
  * src/include/utils/pgstat_internal.h
11
11
  * ----------
@@ -102,7 +102,7 @@ typedef struct PgStatShared_HashEntry
102
102
  } PgStatShared_HashEntry;
103
103
 
104
104
  /*
105
- * Common header struct for PgStatShm_Stat*Entry.
105
+ * Common header struct for PgStatShared_*.
106
106
  */
107
107
  typedef struct PgStatShared_Common
108
108
  {
@@ -162,8 +162,7 @@ typedef struct PgStat_SubXactStatus
162
162
  * if the transaction commits/aborts. To handle replicas and crashes,
163
163
  * stats drops are included in commit / abort records.
164
164
  */
165
- dlist_head pending_drops;
166
- int pending_drops_count;
165
+ dclist_head pending_drops;
167
166
 
168
167
  /*
169
168
  * Tuple insertion/deletion counts for an open transaction can't be
@@ -330,6 +329,17 @@ typedef struct PgStatShared_Checkpointer
330
329
  PgStat_CheckpointerStats reset_offset;
331
330
  } PgStatShared_Checkpointer;
332
331
 
332
+ /* Shared-memory ready PgStat_IO */
333
+ typedef struct PgStatShared_IO
334
+ {
335
+ /*
336
+ * locks[i] protects stats.stats[i]. locks[0] also protects
337
+ * stats.stat_reset_timestamp.
338
+ */
339
+ LWLock locks[BACKEND_NUM_TYPES];
340
+ PgStat_IO stats;
341
+ } PgStatShared_IO;
342
+
333
343
  typedef struct PgStatShared_SLRU
334
344
  {
335
345
  /* lock protects ->stats */
@@ -420,6 +430,7 @@ typedef struct PgStat_ShmemControl
420
430
  PgStatShared_Archiver archiver;
421
431
  PgStatShared_BgWriter bgwriter;
422
432
  PgStatShared_Checkpointer checkpointer;
433
+ PgStatShared_IO io;
423
434
  PgStatShared_SLRU slru;
424
435
  PgStatShared_Wal wal;
425
436
  } PgStat_ShmemControl;
@@ -443,6 +454,8 @@ typedef struct PgStat_Snapshot
443
454
 
444
455
  PgStat_CheckpointerStats checkpointer;
445
456
 
457
+ PgStat_IO io;
458
+
446
459
  PgStat_SLRUStats slru[SLRU_NUM_ELEMENTS];
447
460
 
448
461
  PgStat_WalStats wal;
@@ -550,6 +563,15 @@ extern void pgstat_database_reset_timestamp_cb(PgStatShared_Common *header, Time
550
563
  extern bool pgstat_function_flush_cb(PgStat_EntryRef *entry_ref, bool nowait);
551
564
 
552
565
 
566
+ /*
567
+ * Functions in pgstat_io.c
568
+ */
569
+
570
+ extern bool pgstat_flush_io(bool nowait);
571
+ extern void pgstat_io_reset_all_cb(TimestampTz ts);
572
+ extern void pgstat_io_snapshot_cb(void);
573
+
574
+
553
575
  /*
554
576
  * Functions in pgstat_relation.c
555
577
  */
@@ -580,7 +602,7 @@ extern void pgstat_attach_shmem(void);
580
602
  extern void pgstat_detach_shmem(void);
581
603
 
582
604
  extern PgStat_EntryRef *pgstat_get_entry_ref(PgStat_Kind kind, Oid dboid, Oid objoid,
583
- bool create, bool *found);
605
+ bool create, bool *created_entry);
584
606
  extern bool pgstat_lock_entry(PgStat_EntryRef *entry_ref, bool nowait);
585
607
  extern bool pgstat_lock_entry_shared(PgStat_EntryRef *entry_ref, bool nowait);
586
608
  extern void pgstat_unlock_entry(PgStat_EntryRef *entry_ref);
@@ -627,6 +649,7 @@ extern void pgstat_wal_snapshot_cb(void);
627
649
  extern bool pgstat_subscription_flush_cb(PgStat_EntryRef *entry_ref, bool nowait);
628
650
  extern void pgstat_subscription_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts);
629
651
 
652
+
630
653
  /*
631
654
  * Functions in pgstat_xact.c
632
655
  */
@@ -643,6 +666,13 @@ extern void pgstat_create_transactional(PgStat_Kind kind, Oid dboid, Oid objoid)
643
666
  extern PGDLLIMPORT PgStat_LocalState pgStatLocal;
644
667
 
645
668
 
669
+ /*
670
+ * Variables in pgstat_io.c
671
+ */
672
+
673
+ extern PGDLLIMPORT bool have_iostats;
674
+
675
+
646
676
  /*
647
677
  * Variables in pgstat_slru.c
648
678
  */
@@ -739,7 +769,7 @@ pgstat_copy_changecounted_stats(void *dst, void *src, size_t len,
739
769
  static inline int
740
770
  pgstat_cmp_hash_key(const void *a, const void *b, size_t size, void *arg)
741
771
  {
742
- AssertArg(size == sizeof(PgStat_HashKey) && arg == NULL);
772
+ Assert(size == sizeof(PgStat_HashKey) && arg == NULL);
743
773
  return memcmp(a, b, sizeof(PgStat_HashKey));
744
774
  }
745
775
 
@@ -749,7 +779,7 @@ pgstat_hash_hash_key(const void *d, size_t size, void *arg)
749
779
  const PgStat_HashKey *key = (PgStat_HashKey *) d;
750
780
  uint32 hash;
751
781
 
752
- AssertArg(size == sizeof(PgStat_HashKey) && arg == NULL);
782
+ Assert(size == sizeof(PgStat_HashKey) && arg == NULL);
753
783
 
754
784
  hash = murmurhash32(key->kind);
755
785
  hash = hash_combine(hash, murmurhash32(key->dboid));
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * See plancache.c for comments.
7
7
  *
8
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
9
9
  * Portions Copyright (c) 1994, Regents of the University of California
10
10
  *
11
11
  * src/include/utils/plancache.h
@@ -36,7 +36,7 @@
36
36
  * to look like NO SCROLL cursors.
37
37
  *
38
38
  *
39
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
39
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
40
40
  * Portions Copyright (c) 1994, Regents of the University of California
41
41
  *
42
42
  * src/include/utils/portal.h
@@ -50,14 +50,18 @@
50
50
  #define TRACE_POSTGRESQL_SORT_START_ENABLED() (0)
51
51
  #define TRACE_POSTGRESQL_SORT_DONE(INT1, INT2) do {} while (0)
52
52
  #define TRACE_POSTGRESQL_SORT_DONE_ENABLED() (0)
53
- #define TRACE_POSTGRESQL_BUFFER_READ_START(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0)
53
+ #define TRACE_POSTGRESQL_BUFFER_READ_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0)
54
54
  #define TRACE_POSTGRESQL_BUFFER_READ_START_ENABLED() (0)
55
- #define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7, INT8) do {} while (0)
55
+ #define TRACE_POSTGRESQL_BUFFER_READ_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0)
56
56
  #define TRACE_POSTGRESQL_BUFFER_READ_DONE_ENABLED() (0)
57
57
  #define TRACE_POSTGRESQL_BUFFER_FLUSH_START(INT1, INT2, INT3, INT4, INT5) do {} while (0)
58
58
  #define TRACE_POSTGRESQL_BUFFER_FLUSH_START_ENABLED() (0)
59
59
  #define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0)
60
60
  #define TRACE_POSTGRESQL_BUFFER_FLUSH_DONE_ENABLED() (0)
61
+ #define TRACE_POSTGRESQL_BUFFER_EXTEND_START(INT1, INT2, INT3, INT4, INT5, INT6) do {} while (0)
62
+ #define TRACE_POSTGRESQL_BUFFER_EXTEND_START_ENABLED() (0)
63
+ #define TRACE_POSTGRESQL_BUFFER_EXTEND_DONE(INT1, INT2, INT3, INT4, INT5, INT6, INT7) do {} while (0)
64
+ #define TRACE_POSTGRESQL_BUFFER_EXTEND_DONE_ENABLED() (0)
61
65
  #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START(INT1) do {} while (0)
62
66
  #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_START_ENABLED() (0)
63
67
  #define TRACE_POSTGRESQL_BUFFER_CHECKPOINT_SYNC_START() do {} while (0)
@@ -70,10 +74,6 @@
70
74
  #define TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN_ENABLED() (0)
71
75
  #define TRACE_POSTGRESQL_BUFFER_SYNC_DONE(INT1, INT2, INT3) do {} while (0)
72
76
  #define TRACE_POSTGRESQL_BUFFER_SYNC_DONE_ENABLED() (0)
73
- #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(INT1, INT2, INT3, INT4, INT5) do {} while (0)
74
- #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START_ENABLED() (0)
75
- #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(INT1, INT2, INT3, INT4, INT5) do {} while (0)
76
- #define TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE_ENABLED() (0)
77
77
  #define TRACE_POSTGRESQL_DEADLOCK_FOUND() do {} while (0)
78
78
  #define TRACE_POSTGRESQL_DEADLOCK_FOUND_ENABLED() (0)
79
79
  #define TRACE_POSTGRESQL_CHECKPOINT_START(INT1) do {} while (0)
@@ -0,0 +1,47 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * ps_status.h
4
+ *
5
+ * Declarations for backend/utils/misc/ps_status.c
6
+ *
7
+ * src/include/utils/ps_status.h
8
+ *
9
+ *-------------------------------------------------------------------------
10
+ */
11
+
12
+ #ifndef PS_STATUS_H
13
+ #define PS_STATUS_H
14
+
15
+ /* disabled on Windows as the performance overhead can be significant */
16
+ #ifdef WIN32
17
+ #define DEFAULT_UPDATE_PROCESS_TITLE false
18
+ #else
19
+ #define DEFAULT_UPDATE_PROCESS_TITLE true
20
+ #endif
21
+
22
+ extern PGDLLIMPORT bool update_process_title;
23
+
24
+ extern char **save_ps_display_args(int argc, char **argv);
25
+
26
+ extern void init_ps_display(const char *fixed_part);
27
+
28
+ extern void set_ps_display_suffix(const char *suffix);
29
+
30
+ extern void set_ps_display_remove_suffix(void);
31
+
32
+ extern void set_ps_display_with_len(const char *activity, size_t len);
33
+
34
+ /*
35
+ * set_ps_display
36
+ * inlined to allow strlen to be evaluated during compilation when
37
+ * passing string constants.
38
+ */
39
+ static inline void
40
+ set_ps_display(const char *activity)
41
+ {
42
+ set_ps_display_with_len(activity, strlen(activity));
43
+ }
44
+
45
+ extern const char *get_ps_display(int *displen);
46
+
47
+ #endif /* PS_STATUS_H */
@@ -4,7 +4,7 @@
4
4
  * Access to functions to mutate the query environment and retrieve the
5
5
  * actual data related to entries (if any).
6
6
  *
7
- * Portions Copyright (c) 1996-2022, 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/queryenvironment.h