pg_query 2.0.3 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
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