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
@@ -10,10 +10,9 @@
10
10
  /*-------------------------------------------------------------------------
11
11
  *
12
12
  * scansup.c
13
- * support routines for the lex/flex scanner, used by both the normal
14
- * backend as well as the bootstrap backend
13
+ * scanner support routines used by the core lexer
15
14
  *
16
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
17
16
  * Portions Copyright (c) 1994, Regents of the University of California
18
17
  *
19
18
  *
@@ -29,19 +28,6 @@
29
28
  #include "mb/pg_wchar.h"
30
29
  #include "parser/scansup.h"
31
30
 
32
- /* ----------------
33
- * scanstr
34
- *
35
- * if the string passed in has escaped codes, map the escape codes to actual
36
- * chars
37
- *
38
- * the string returned is palloc'd and should eventually be pfree'd by the
39
- * caller!
40
- * ----------------
41
- */
42
-
43
-
44
-
45
31
 
46
32
  /*
47
33
  * downcase_truncate_identifier() --- do appropriate downcasing and
@@ -119,20 +105,10 @@ truncate_identifier(char *ident, int len, bool warn)
119
105
  {
120
106
  len = pg_mbcliplen(ident, len, NAMEDATALEN - 1);
121
107
  if (warn)
122
- {
123
- /*
124
- * We avoid using %.*s here because it can misbehave if the data
125
- * is not valid in what libc thinks is the prevailing encoding.
126
- */
127
- char buf[NAMEDATALEN];
128
-
129
- memcpy(buf, ident, len);
130
- buf[len] = '\0';
131
108
  ereport(NOTICE,
132
109
  (errcode(ERRCODE_NAME_TOO_LONG),
133
- errmsg("identifier \"%s\" will be truncated to \"%s\"",
134
- ident, buf)));
135
- }
110
+ errmsg("identifier \"%s\" will be truncated to \"%.*s\"",
111
+ ident, len, ident)));
136
112
  ident[len] = '\0';
137
113
  }
138
114
  }
@@ -15,7 +15,7 @@
15
15
  * exit-time cleanup for either a postmaster or a backend.
16
16
  *
17
17
  *
18
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
18
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
19
19
  * Portions Copyright (c) 1994, Regents of the University of California
20
20
  *
21
21
  *
@@ -173,9 +173,9 @@ void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); e
173
173
  * cancel_before_shmem_exit
174
174
  *
175
175
  * this function removes a previously-registered before_shmem_exit
176
- * callback. For simplicity, only the latest entry can be
177
- * removed. (We could work harder but there is no need for
178
- * current uses.)
176
+ * callback. We only look at the latest entry for removal, as we
177
+ * expect callers to add and remove temporary before_shmem_exit
178
+ * callbacks in strict LIFO order.
179
179
  * ----------------------------------------------------------------
180
180
  */
181
181
 
@@ -190,3 +190,12 @@ void proc_exit(int code) { printf("Terminating process due to FATAL error\n"); e
190
190
  * ----------------------------------------------------------------
191
191
  */
192
192
 
193
+
194
+ /* ----------------------------------------------------------------
195
+ * check_on_shmem_exit_lists_are_empty
196
+ *
197
+ * Debugging check that no shmem cleanup handlers have been registered
198
+ * prematurely in the current process.
199
+ * ----------------------------------------------------------------
200
+ */
201
+
@@ -1,7 +1,7 @@
1
1
  /*--------------------------------------------------------------------
2
2
  * Symbols referenced in this file:
3
- * - whereToSendOutput
4
3
  * - debug_query_string
4
+ * - whereToSendOutput
5
5
  * - ProcessInterrupts
6
6
  * - check_stack_depth
7
7
  * - stack_is_too_deep
@@ -16,7 +16,7 @@
16
16
  * postgres.c
17
17
  * POSTGRES C Backend Interface
18
18
  *
19
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
19
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
20
20
  * Portions Copyright (c) 1994, Regents of the University of California
21
21
  *
22
22
  *
@@ -36,17 +36,12 @@
36
36
  #include <limits.h>
37
37
  #include <signal.h>
38
38
  #include <unistd.h>
39
+ #include <sys/resource.h>
39
40
  #include <sys/socket.h>
40
- #ifdef HAVE_SYS_SELECT_H
41
- #include <sys/select.h>
42
- #endif
43
- #ifdef HAVE_SYS_RESOURCE_H
44
41
  #include <sys/time.h>
45
- #include <sys/resource.h>
46
- #endif
47
42
 
48
- #ifndef HAVE_GETRUSAGE
49
- #include "rusagestub.h"
43
+ #ifdef USE_VALGRIND
44
+ #include <valgrind/valgrind.h>
50
45
  #endif
51
46
 
52
47
  #include "access/parallel.h"
@@ -55,7 +50,7 @@
55
50
  #include "catalog/pg_type.h"
56
51
  #include "commands/async.h"
57
52
  #include "commands/prepare.h"
58
- #include "executor/spi.h"
53
+ #include "common/pg_prng.h"
59
54
  #include "jit/jit.h"
60
55
  #include "libpq/libpq.h"
61
56
  #include "libpq/pqformat.h"
@@ -80,6 +75,7 @@
80
75
  #include "rewrite/rewriteHandler.h"
81
76
  #include "storage/bufmgr.h"
82
77
  #include "storage/ipc.h"
78
+ #include "storage/pmsignal.h"
83
79
  #include "storage/proc.h"
84
80
  #include "storage/procsignal.h"
85
81
  #include "storage/sinval.h"
@@ -87,6 +83,7 @@
87
83
  #include "tcop/pquery.h"
88
84
  #include "tcop/tcopprot.h"
89
85
  #include "tcop/utility.h"
86
+ #include "utils/guc_hooks.h"
90
87
  #include "utils/lsyscache.h"
91
88
  #include "utils/memutils.h"
92
89
  #include "utils/ps_status.h"
@@ -117,8 +114,22 @@ __thread int max_stack_depth = 100;
117
114
  /* wait N seconds to allow attach from a debugger */
118
115
 
119
116
 
117
+ /* Time between checks that the client is still connected. */
120
118
 
121
119
 
120
+ /* ----------------
121
+ * private typedefs etc
122
+ * ----------------
123
+ */
124
+
125
+ /* type of argument for bind_param_error_callback */
126
+ typedef struct BindParamCbData
127
+ {
128
+ const char *portalName;
129
+ int paramno; /* zero-based param number, or -1 initially */
130
+ const char *paramval; /* textual input string, if available */
131
+ } BindParamCbData;
132
+
122
133
  /* ----------------
123
134
  * private variables
124
135
  * ----------------
@@ -130,20 +141,11 @@ static __thread long max_stack_depth_bytes = 100 * 1024L;
130
141
 
131
142
  /*
132
143
  * Stack base pointer -- initialized by PostmasterMain and inherited by
133
- * subprocesses. This is not static because old versions of PL/Java modify
134
- * it directly. Newer versions use set_stack_base(), but we want to stay
135
- * binary-compatible for the time being.
144
+ * subprocesses (but see also InitPostmasterChild).
136
145
  */
137
- __thread char *stack_base_ptr = NULL;
146
+ static __thread char *stack_base_ptr = NULL;
138
147
 
139
148
 
140
- /*
141
- * On IA64 we also have to remember the register stack base.
142
- */
143
- #if defined(__ia64__) || defined(__ia64)
144
- char *register_stack_base_ptr = NULL;
145
- #endif
146
-
147
149
  /*
148
150
  * Flag to keep track of whether we have started a transaction.
149
151
  * For extended query protocol this has to be remembered across messages.
@@ -194,12 +196,12 @@ static int interactive_getc(void);
194
196
  static int SocketBackend(StringInfo inBuf);
195
197
  static int ReadCommand(StringInfo inBuf);
196
198
  static void forbidden_in_wal_sender(char firstchar);
197
- static List *pg_rewrite_query(Query *query);
198
199
  static bool check_log_statement(List *stmt_list);
199
200
  static int errdetail_execute(List *raw_parsetree_list);
200
201
  static int errdetail_params(ParamListInfo params);
201
202
  static int errdetail_abort(void);
202
203
  static int errdetail_recovery_conflict(void);
204
+ static void bind_param_error_callback(void *arg);
203
205
  static void start_xact_command(void);
204
206
  static void finish_xact_command(void);
205
207
  static bool IsTransactionExitStmt(Node *parsetree);
@@ -211,6 +213,36 @@ static void enable_statement_timeout(void);
211
213
  static void disable_statement_timeout(void);
212
214
 
213
215
 
216
+ /* ----------------------------------------------------------------
217
+ * infrastructure for valgrind debugging
218
+ * ----------------------------------------------------------------
219
+ */
220
+ #ifdef USE_VALGRIND
221
+ /* This variable should be set at the top of the main loop. */
222
+ static unsigned int old_valgrind_error_count;
223
+
224
+ /*
225
+ * If Valgrind detected any errors since old_valgrind_error_count was updated,
226
+ * report the current query as the cause. This should be called at the end
227
+ * of message processing.
228
+ */
229
+ static void
230
+ valgrind_report_error_query(const char *query)
231
+ {
232
+ unsigned int valgrind_error_count = VALGRIND_COUNT_ERRORS;
233
+
234
+ if (unlikely(valgrind_error_count != old_valgrind_error_count) &&
235
+ query != NULL)
236
+ VALGRIND_PRINTF("Valgrind detected %u error(s) during execution of \"%s\"\n",
237
+ valgrind_error_count - old_valgrind_error_count,
238
+ query);
239
+ }
240
+
241
+ #else /* !USE_VALGRIND */
242
+ #define valgrind_report_error_query(query) ((void) 0)
243
+ #endif /* USE_VALGRIND */
244
+
245
+
214
246
  /* ----------------------------------------------------------------
215
247
  * routines to obtain user input
216
248
  * ----------------------------------------------------------------
@@ -292,6 +324,8 @@ static void disable_statement_timeout(void);
292
324
  */
293
325
  #ifdef COPY_PARSE_PLAN_TREES
294
326
  #endif
327
+ #ifdef WRITE_READ_PARSE_PLAN_TREES
328
+ #endif
295
329
 
296
330
  /*
297
331
  * Given a raw parsetree (gram.y output), and optionally information about
@@ -305,9 +339,17 @@ static void disable_statement_timeout(void);
305
339
 
306
340
 
307
341
  /*
308
- * Do parse analysis and rewriting. This is the same as pg_analyze_and_rewrite
309
- * except that external-parameter resolution is determined by parser callback
310
- * hooks instead of a fixed list of parameter datatypes.
342
+ * Do parse analysis and rewriting. This is the same as
343
+ * pg_analyze_and_rewrite_fixedparams except that it's okay to deduce
344
+ * information about $n symbol datatypes from context.
345
+ */
346
+
347
+
348
+ /*
349
+ * Do parse analysis and rewriting. This is the same as
350
+ * pg_analyze_and_rewrite_fixedparams except that, instead of a fixed list of
351
+ * parameter datatypes, a parser callback is supplied that can do
352
+ * external-parameter resolution and possibly other things.
311
353
  */
312
354
 
313
355
 
@@ -434,6 +476,13 @@ static void disable_statement_timeout(void);
434
476
  */
435
477
 
436
478
 
479
+ /*
480
+ * bind_param_error_callback
481
+ *
482
+ * Error context callback used while parsing parameters in a Bind message
483
+ */
484
+
485
+
437
486
  /*
438
487
  * exec_describe_statement_message
439
488
  *
@@ -486,8 +535,8 @@ static void disable_statement_timeout(void);
486
535
  /*
487
536
  * quickdie() occurs when signaled SIGQUIT by the postmaster.
488
537
  *
489
- * Some backend has bought the farm,
490
- * so we need to stop what we're doing and exit.
538
+ * Either some backend has bought the farm, or we've been told to shut down
539
+ * "immediately"; so we need to stop what we're doing and exit.
491
540
  */
492
541
 
493
542
 
@@ -520,47 +569,14 @@ static void disable_statement_timeout(void);
520
569
  * If an interrupt condition is pending, and it's safe to service it,
521
570
  * then clear the flag and accept the interrupt. Called only when
522
571
  * InterruptPending is true.
523
- */
524
- void ProcessInterrupts(void) {}
525
-
526
-
527
-
528
- /*
529
- * IA64-specific code to fetch the AR.BSP register for stack depth checks.
530
572
  *
531
- * We currently support gcc, icc, and HP-UX's native compiler here.
532
- *
533
- * Note: while icc accepts gcc asm blocks on x86[_64], this is not true on
534
- * ia64 (at least not in icc versions before 12.x). So we have to carry a
535
- * separate implementation for it.
573
+ * Note: if INTERRUPTS_CAN_BE_PROCESSED() is true, then ProcessInterrupts
574
+ * is guaranteed to clear the InterruptPending flag before returning.
575
+ * (This is not the same as guaranteeing that it's still clear when we
576
+ * return; another interrupt could have arrived. But we promise that
577
+ * any pre-existing one will have been serviced.)
536
578
  */
537
- #if defined(__ia64__) || defined(__ia64)
538
-
539
- #if defined(__hpux) && !defined(__GNUC__) && !defined(__INTEL_COMPILER)
540
- /* Assume it's HP-UX native compiler */
541
- #include <ia64/sys/inline.h>
542
- #define ia64_get_bsp() ((char *) (_Asm_mov_from_ar(_AREG_BSP, _NO_FENCE)))
543
- #elif defined(__INTEL_COMPILER)
544
- /* icc */
545
- #include <asm/ia64regs.h>
546
- #define ia64_get_bsp() ((char *) __getReg(_IA64_REG_AR_BSP))
547
- #else
548
- /* gcc */
549
- static __inline__ char *
550
- ia64_get_bsp(void)
551
- {
552
- char *ret;
553
-
554
- /* the ;; is a "stop", seems to be required before fetching BSP */
555
- __asm__ __volatile__(
556
- ";;\n"
557
- " mov %0=ar.bsp \n"
558
- : "=r"(ret));
559
-
560
- return ret;
561
- }
562
- #endif
563
- #endif /* IA64 */
579
+ void ProcessInterrupts(void) {}
564
580
 
565
581
 
566
582
  /*
@@ -568,10 +584,10 @@ ia64_get_bsp(void)
568
584
  *
569
585
  * Returns the old reference point, if any.
570
586
  */
571
- #if defined(__ia64__) || defined(__ia64)
572
- #else
587
+ #ifndef HAVE__BUILTIN_FRAME_ADDRESS
573
588
  #endif
574
- #if defined(__ia64__) || defined(__ia64)
589
+ #ifdef HAVE__BUILTIN_FRAME_ADDRESS
590
+ #else
575
591
  #endif
576
592
 
577
593
  /*
@@ -583,9 +599,7 @@ ia64_get_bsp(void)
583
599
  * the main thread's stack, so it sets the base pointer before the call, and
584
600
  * restores it afterwards.
585
601
  */
586
- #if defined(__ia64__) || defined(__ia64)
587
- #else
588
- #endif
602
+
589
603
 
590
604
  /*
591
605
  * check_stack_depth/stack_is_too_deep: check for excessively deep recursion
@@ -641,22 +655,6 @@ stack_is_too_deep(void)
641
655
  stack_base_ptr != NULL)
642
656
  return true;
643
657
 
644
- /*
645
- * On IA64 there is a separate "register" stack that requires its own
646
- * independent check. For this, we have to measure the change in the
647
- * "BSP" pointer from PostgresMain to here. Logic is just as above,
648
- * except that we know IA64's register stack grows up.
649
- *
650
- * Note we assume that the same max_stack_depth applies to both stacks.
651
- */
652
- #if defined(__ia64__) || defined(__ia64)
653
- stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr);
654
-
655
- if (stack_depth > max_stack_depth_bytes &&
656
- register_stack_base_ptr != NULL)
657
- return true;
658
- #endif /* IA64 */
659
-
660
658
  return false;
661
659
  }
662
660
 
@@ -666,6 +664,28 @@ stack_is_too_deep(void)
666
664
  /* GUC assign hook for max_stack_depth */
667
665
 
668
666
 
667
+ /*
668
+ * GUC check_hook for client_connection_check_interval
669
+ */
670
+
671
+
672
+ /*
673
+ * GUC check_hook for log_parser_stats, log_planner_stats, log_executor_stats
674
+ *
675
+ * This function and check_log_stats interact to prevent their variables from
676
+ * being set in a disallowed combination. This is a hack that doesn't really
677
+ * work right; for example it might fail while applying pg_db_role_setting
678
+ * values even though the final state would have been acceptable. However,
679
+ * since these variables are legacy settings with little production usage,
680
+ * we tolerate that.
681
+ */
682
+
683
+
684
+ /*
685
+ * GUC check_hook for log_statement_stats
686
+ */
687
+
688
+
669
689
 
670
690
  /*
671
691
  * set_debug_options --- apply "-d N" command line option
@@ -684,7 +704,7 @@ stack_is_too_deep(void)
684
704
 
685
705
  /* ----------------------------------------------------------------
686
706
  * process_postgres_switches
687
- * Parse command line arguments for PostgresMain
707
+ * Parse command line arguments for backends
688
708
  *
689
709
  * This is called twice, once for the "secure" options coming from the
690
710
  * postmaster or command line, and once for the "insecure" options coming
@@ -707,19 +727,30 @@ stack_is_too_deep(void)
707
727
  #endif
708
728
 
709
729
 
730
+ /*
731
+ * PostgresSingleUserMain
732
+ * Entry point for single user mode. argc/argv are the command line
733
+ * arguments to be used.
734
+ *
735
+ * Performs single user specific setup then calls PostgresMain() to actually
736
+ * process queries. Single user mode specific setup should go here, rather
737
+ * than PostgresMain() or InitPostgres() when reasonably possible.
738
+ */
739
+
740
+
741
+
710
742
  /* ----------------------------------------------------------------
711
743
  * PostgresMain
712
- * postgres main loop -- all backends, interactive or otherwise start here
744
+ * postgres main loop -- all backends, interactive or otherwise loop here
745
+ *
746
+ * dbname is the name of the database to connect to, username is the
747
+ * PostgreSQL user name to be used for the session.
713
748
  *
714
- * argc/argv are the command line arguments to be used. (When being forked
715
- * by the postmaster, these are not the original argv array of the process.)
716
- * dbname is the name of the database to connect to, or NULL if the database
717
- * name should be extracted from the command line arguments or defaulted.
718
- * username is the PostgreSQL user name to be used for the session.
749
+ * NB: Single user mode specific setup should go to PostgresSingleUserMain()
750
+ * if reasonably possible.
719
751
  * ----------------------------------------------------------------
720
752
  */
721
- #ifdef EXEC_BACKEND
722
- #else
753
+ #ifdef USE_VALGRIND
723
754
  #endif
724
755
 
725
756
  /*
@@ -737,11 +768,8 @@ stack_is_too_deep(void)
737
768
  *
738
769
  * Return -1 if unknown
739
770
  */
740
- #if defined(HAVE_GETRLIMIT) && defined(RLIMIT_STACK)
741
- #else /* no getrlimit */
742
- #if defined(WIN32) || defined(__CYGWIN__)
743
- #else /* not windows ... give up */
744
- #endif
771
+ #if defined(HAVE_GETRLIMIT)
772
+ #else
745
773
  #endif
746
774
 
747
775
 
@@ -750,11 +778,11 @@ stack_is_too_deep(void)
750
778
 
751
779
 
752
780
 
753
- #if defined(HAVE_GETRUSAGE)
781
+ #ifndef WIN32
754
782
  #if defined(__darwin__)
755
783
  #else
756
784
  #endif
757
- #endif /* HAVE_GETRUSAGE */
785
+ #endif /* !WIN32 */
758
786
 
759
787
  /*
760
788
  * on_proc_exit handler to log end of session
@@ -0,0 +1,140 @@
1
+ /*--------------------------------------------------------------------
2
+ * Symbols referenced in this file:
3
+ * - pgStatSessionEndCause
4
+ *--------------------------------------------------------------------
5
+ */
6
+
7
+ /* -------------------------------------------------------------------------
8
+ *
9
+ * pgstat_database.c
10
+ * Implementation of database statistics.
11
+ *
12
+ * This file contains the implementation of database statistics. It is kept
13
+ * separate from pgstat.c to enforce the line between the statistics access /
14
+ * storage implementation and the details about individual types of
15
+ * statistics.
16
+ *
17
+ * Copyright (c) 2001-2023, PostgreSQL Global Development Group
18
+ *
19
+ * IDENTIFICATION
20
+ * src/backend/utils/activity/pgstat_database.c
21
+ * -------------------------------------------------------------------------
22
+ */
23
+
24
+ #include "postgres.h"
25
+
26
+ #include "utils/pgstat_internal.h"
27
+ #include "utils/timestamp.h"
28
+ #include "storage/procsignal.h"
29
+
30
+
31
+ static bool pgstat_should_report_connstat(void);
32
+
33
+
34
+
35
+
36
+
37
+
38
+ __thread SessionEndType pgStatSessionEndCause = DISCONNECT_NORMAL;
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+ /*
48
+ * Remove entry for the database being dropped.
49
+ */
50
+
51
+
52
+ /*
53
+ * Called from autovacuum.c to report startup of an autovacuum process.
54
+ * We are called before InitPostgres is done, so can't rely on MyDatabaseId;
55
+ * the db OID must be passed in, instead.
56
+ */
57
+
58
+
59
+ /*
60
+ * Report a Hot Standby recovery conflict.
61
+ */
62
+
63
+
64
+ /*
65
+ * Report a detected deadlock.
66
+ */
67
+
68
+
69
+ /*
70
+ * Report one or more checksum failures.
71
+ */
72
+
73
+
74
+ /*
75
+ * Report one checksum failure in the current database.
76
+ */
77
+
78
+
79
+ /*
80
+ * Report creation of temporary file.
81
+ */
82
+
83
+
84
+ /*
85
+ * Notify stats system of a new connection.
86
+ */
87
+
88
+
89
+ /*
90
+ * Notify the stats system of a disconnect.
91
+ */
92
+
93
+
94
+ /*
95
+ * Support function for the SQL-callable pgstat* functions. Returns
96
+ * the collected statistics for one database or NULL. NULL doesn't mean
97
+ * that the database doesn't exist, just that there are no statistics, so the
98
+ * caller is better off to report ZERO instead.
99
+ */
100
+
101
+
102
+
103
+
104
+ /*
105
+ * Subroutine for pgstat_report_stat(): Handle xact commit/rollback and I/O
106
+ * timings.
107
+ */
108
+
109
+
110
+ /*
111
+ * We report session statistics only for normal backend processes. Parallel
112
+ * workers run in parallel, so they don't contribute to session times, even
113
+ * though they use CPU time. Walsender processes could be considered here,
114
+ * but they have different session characteristics from normal backends (for
115
+ * example, they are always "active"), so they would skew session statistics.
116
+ */
117
+
118
+
119
+ /*
120
+ * Find or create a local PgStat_StatDBEntry entry for dboid.
121
+ */
122
+
123
+
124
+ /*
125
+ * Reset the database's reset timestamp, without resetting the contents of the
126
+ * database stats.
127
+ */
128
+
129
+
130
+ /*
131
+ * Flush out pending stats for the entry
132
+ *
133
+ * If nowait is true, this function returns false if lock could not
134
+ * immediately acquired, otherwise true is returned.
135
+ */
136
+ #define PGSTAT_ACCUM_DBCOUNT(item) \
137
+ (sharedent)->stats.item += (pendingent)->item
138
+ #undef PGSTAT_ACCUM_DBCOUNT
139
+
140
+
@@ -11,7 +11,7 @@
11
11
  * datum.c
12
12
  * POSTGRES Datum (abstract data type) manipulation routines.
13
13
  *
14
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
15
15
  * Portions Copyright (c) 1994, Regents of the University of California
16
16
  *
17
17
  *
@@ -51,6 +51,8 @@
51
51
  #include "postgres.h"
52
52
 
53
53
  #include "access/detoast.h"
54
+ #include "catalog/pg_type_d.h"
55
+ #include "common/hashfn.h"
54
56
  #include "fmgr.h"
55
57
  #include "utils/builtins.h"
56
58
  #include "utils/datum.h"
@@ -262,6 +264,17 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
262
264
  */
263
265
 
264
266
 
267
+ /*-------------------------------------------------------------------------
268
+ * datum_image_hash
269
+ *
270
+ * Generate a hash value based on the binary representation of 'value'. Most
271
+ * use cases will want to use the hash function specific to the Datum's type,
272
+ * however, some corner cases require generating a hash value based on the
273
+ * actual bits rather than the logical value.
274
+ *-------------------------------------------------------------------------
275
+ */
276
+
277
+
265
278
  /*-------------------------------------------------------------------------
266
279
  * btequalimage
267
280
  *
@@ -271,12 +284,9 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
271
284
  * datum_image_eq() in all cases can use this as their "equalimage" support
272
285
  * function.
273
286
  *
274
- * Currently, we unconditionally assume that any B-Tree operator class that
275
- * registers btequalimage as its support function 4 must be able to safely use
276
- * optimizations like deduplication (i.e. we return true unconditionally). If
277
- * it ever proved necessary to rescind support for an operator class, we could
278
- * do that in a targeted fashion by doing something with the opcintype
279
- * argument.
287
+ * Earlier minor releases erroneously associated this function with
288
+ * interval_ops. Detect that case to rescind deduplication support, without
289
+ * requiring initdb.
280
290
  *-------------------------------------------------------------------------
281
291
  */
282
292