pg_query 2.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -0
  3. data/README.md +67 -29
  4. data/Rakefile +8 -23
  5. data/ext/pg_query/extconf.rb +21 -3
  6. data/ext/pg_query/include/pg_query.h +29 -4
  7. data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
  29. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  30. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
  31. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  32. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
  34. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
  36. data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
  37. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  38. data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
  39. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  40. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  42. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
  43. data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
  44. data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
  45. data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
  46. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
  47. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  48. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
  49. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  50. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
  52. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  53. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  54. data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
  58. data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
  60. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
  80. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
  81. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
  125. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
  126. data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
  127. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
  129. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
  130. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  132. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
  133. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
  134. data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
  135. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
  136. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  137. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
  138. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  139. data/ext/pg_query/include/postgres/common/int.h +437 -0
  140. data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
  141. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  142. data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
  143. data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
  144. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  145. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  146. data/ext/pg_query/include/postgres/common/string.h +44 -0
  147. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
  148. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
  149. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  150. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  151. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
  152. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  153. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  154. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  155. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
  156. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
  157. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
  158. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
  159. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  160. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  161. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
  162. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  163. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
  164. data/ext/pg_query/include/postgres/gram.h +1127 -0
  165. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  166. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
  167. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  168. data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
  169. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
  170. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  171. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
  172. data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
  173. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  181. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
  182. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  183. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  184. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
  185. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  186. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
  192. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
  193. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  195. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
  196. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
  203. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  205. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  206. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
  214. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
  215. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
  216. data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
  224. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  225. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  226. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  227. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  228. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
  229. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  230. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
  231. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
  232. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  233. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
  234. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  235. data/ext/pg_query/include/postgres/pgstat.h +778 -0
  236. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
  237. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
  238. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  239. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
  240. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
  241. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
  242. data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
  243. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
  245. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  248. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  249. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
  250. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  251. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  252. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  253. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  254. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
  255. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  256. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  257. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  258. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  259. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  260. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  261. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  264. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  268. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  269. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  270. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  276. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  278. data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
  279. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  280. data/ext/pg_query/include/postgres/postgres.h +579 -0
  281. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
  285. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
  289. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  290. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
  291. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
  292. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
  293. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
  294. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  295. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  296. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
  297. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
  298. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
  299. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
  300. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
  301. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
  304. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  305. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  306. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
  307. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
  308. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  309. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
  310. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
  311. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
  312. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
  313. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
  314. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
  315. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  316. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
  317. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  318. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
  320. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
  321. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
  323. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
  324. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
  325. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
  326. data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  329. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
  330. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
  331. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
  332. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
  333. data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  335. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
  336. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  337. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
  338. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
  339. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
  340. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  341. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  342. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
  343. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  344. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
  345. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
  346. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
  347. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
  348. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
  354. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
  355. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
  356. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
  357. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
  358. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
  359. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  360. data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
  361. data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
  362. data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
  363. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
  364. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
  365. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  367. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
  368. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
  369. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  370. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
  371. data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
  372. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  374. data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
  375. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
  376. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
  377. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
  378. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
  379. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
  381. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
  382. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
  383. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  384. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
  385. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  386. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
  387. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  388. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  389. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
  390. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
  391. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  392. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
  393. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
  395. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
  396. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
  397. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  398. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  399. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  400. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
  401. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
  402. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  403. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
  405. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
  407. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
  408. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
  409. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
  411. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
  412. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
  413. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
  414. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
  415. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
  416. data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
  417. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
  418. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
  419. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
  420. data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
  421. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  422. data/ext/pg_query/include/protobuf-c.h +7 -3
  423. data/ext/pg_query/pg_query.c +10 -1
  424. data/ext/pg_query/pg_query.pb-c.c +21026 -17002
  425. data/ext/pg_query/pg_query_deparse.c +1 -9896
  426. data/ext/pg_query/pg_query_fingerprint.c +162 -50
  427. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  428. data/ext/pg_query/pg_query_internal.h +1 -1
  429. data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
  430. data/ext/pg_query/pg_query_normalize.c +259 -64
  431. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  432. data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
  433. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  434. data/ext/pg_query/pg_query_parse.c +47 -5
  435. data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
  436. data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
  437. data/ext/pg_query/pg_query_ruby.c +6 -1
  438. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  439. data/ext/pg_query/pg_query_scan.c +3 -2
  440. data/ext/pg_query/pg_query_split.c +6 -5
  441. data/ext/pg_query/postgres_deparse.c +11067 -0
  442. data/ext/pg_query/postgres_deparse.h +9 -0
  443. data/ext/pg_query/protobuf-c.c +34 -27
  444. data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
  445. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  446. data/ext/pg_query/src_backend_commands_define.c +11 -1
  447. data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
  448. data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
  449. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
  450. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  451. data/ext/pg_query/src_backend_nodes_list.c +99 -12
  452. data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
  453. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
  454. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  455. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  456. data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
  457. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  458. data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
  459. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  460. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  461. data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
  462. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  463. data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
  464. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  465. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  466. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  467. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
  468. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  469. data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
  470. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
  471. data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
  472. data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
  473. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  474. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
  476. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  477. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
  478. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  479. data/ext/pg_query/src_common_encnames.c +4 -1
  480. data/ext/pg_query/src_common_hashfn.c +420 -0
  481. data/ext/pg_query/src_common_keywords.c +15 -2
  482. data/ext/pg_query/src_common_kwlist_d.h +545 -498
  483. data/ext/pg_query/src_common_kwlookup.c +1 -1
  484. data/ext/pg_query/src_common_psprintf.c +1 -1
  485. data/ext/pg_query/src_common_stringinfo.c +4 -4
  486. data/ext/pg_query/src_common_wchar.c +717 -113
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  493. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  494. data/ext/pg_query/src_port_pg_bitutils.c +103 -40
  495. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  496. data/ext/pg_query/src_port_qsort.c +12 -224
  497. data/ext/pg_query/src_port_snprintf.c +51 -29
  498. data/ext/pg_query/src_port_strerror.c +9 -19
  499. data/ext/pg_query/src_port_strlcpy.c +79 -0
  500. data/lib/pg_query/deparse.rb +7 -1
  501. data/lib/pg_query/filter_columns.rb +7 -5
  502. data/lib/pg_query/fingerprint.rb +21 -9
  503. data/lib/pg_query/node.rb +18 -13
  504. data/lib/pg_query/param_refs.rb +1 -1
  505. data/lib/pg_query/parse.rb +141 -50
  506. data/lib/pg_query/pg_query_pb.rb +175 -3031
  507. data/lib/pg_query/treewalker.rb +26 -2
  508. data/lib/pg_query/truncate.rb +54 -8
  509. data/lib/pg_query/version.rb +1 -1
  510. data/lib/pg_query.rb +0 -1
  511. metadata +443 -380
  512. data/ext/pg_query/guc-file.c +0 -0
  513. data/ext/pg_query/include/access/rmgr.h +0 -35
  514. data/ext/pg_query/include/access/xloginsert.h +0 -64
  515. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  516. data/ext/pg_query/include/catalog/genbki.h +0 -64
  517. data/ext/pg_query/include/catalog/indexing.h +0 -366
  518. data/ext/pg_query/include/commands/variable.h +0 -38
  519. data/ext/pg_query/include/common/ip.h +0 -37
  520. data/ext/pg_query/include/common/string.h +0 -19
  521. data/ext/pg_query/include/getaddrinfo.h +0 -162
  522. data/ext/pg_query/include/kwlist_d.h +0 -1072
  523. data/ext/pg_query/include/nodes/value.h +0 -61
  524. data/ext/pg_query/include/parser/gram.h +0 -1067
  525. data/ext/pg_query/include/parser/kwlist.h +0 -477
  526. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  527. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  528. data/ext/pg_query/include/parser/parse_target.h +0 -46
  529. data/ext/pg_query/include/parser/parser.h +0 -41
  530. data/ext/pg_query/include/pg_config_os.h +0 -8
  531. data/ext/pg_query/include/pgstat.h +0 -1487
  532. data/ext/pg_query/include/portability/instr_time.h +0 -256
  533. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  534. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  535. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  536. data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
  537. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  538. data/ext/pg_query/include/utils/dynahash.h +0 -19
  539. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  540. data/ext/pg_query/include/utils/pidfile.h +0 -56
  541. data/ext/pg_query/include/utils/ps_status.h +0 -25
  542. data/ext/pg_query/include/utils/regproc.h +0 -28
  543. data/ext/pg_query/include/utils/rls.h +0 -50
  544. data/ext/pg_query/include/utils/tzparser.h +0 -39
  545. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  546. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  547. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  548. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  549. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  550. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
  551. data/ext/pg_query/src_common_string.c +0 -86
  552. data/ext/pg_query/src_port_erand48.c +0 -127
  553. data/ext/pg_query/src_port_pgsleep.c +0 -69
  554. data/ext/pg_query/src_port_random.c +0 -31
  555. data/ext/pg_query/src_port_strnlen.c +0 -39
  556. data/lib/pg_query/json_field_names.rb +0 -1402
  557. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -4,7 +4,7 @@
4
4
  * POSTGRES error reporting/logging definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/utils/elog.h
@@ -16,6 +16,12 @@
16
16
 
17
17
  #include <setjmp.h>
18
18
 
19
+ #include "lib/stringinfo.h"
20
+
21
+ /* We cannot include nodes.h yet, so forward-declare struct Node */
22
+ struct Node;
23
+
24
+
19
25
  /* Error level codes */
20
26
  #define DEBUG5 10 /* Debugging messages, in categories of
21
27
  * decreasing detail. */
@@ -40,19 +46,21 @@
40
46
  #define WARNING 19 /* Warnings. NOTICE is for expected messages
41
47
  * like implicit sequence creation by SERIAL.
42
48
  * WARNING is for unexpected messages. */
43
- #define ERROR 20 /* user error - abort transaction; return to
49
+ #define PGWARNING 19 /* Must equal WARNING; see NOTE below. */
50
+ #define WARNING_CLIENT_ONLY 20 /* Warnings to be sent to client as usual, but
51
+ * never to the server log. */
52
+ #define ERROR 21 /* user error - abort transaction; return to
44
53
  * known state */
45
- /* Save ERROR value in PGERROR so it can be restored when Win32 includes
46
- * modify it. We have to use a constant rather than ERROR because macros
47
- * are expanded only when referenced outside macros.
48
- */
49
- #ifdef WIN32
50
- #define PGERROR 20
51
- #endif
52
- #define FATAL 21 /* fatal error - abort process */
53
- #define PANIC 22 /* take down the other backends with me */
54
+ #define PGERROR 21 /* Must equal ERROR; see NOTE below. */
55
+ #define FATAL 22 /* fatal error - abort process */
56
+ #define PANIC 23 /* take down the other backends with me */
54
57
 
55
- /* #define DEBUG DEBUG1 */ /* Backward compatibility with pre-7.3 */
58
+ /*
59
+ * NOTE: the alternate names PGWARNING and PGERROR are useful for dealing
60
+ * with third-party headers that make other definitions of WARNING and/or
61
+ * ERROR. One can, for example, re-define ERROR as PGERROR after including
62
+ * such a header.
63
+ */
56
64
 
57
65
 
58
66
  /* macros for representing SQLSTATE strings compactly */
@@ -81,7 +89,7 @@
81
89
  */
82
90
  #if defined(errno) && defined(__linux__)
83
91
  #define pg_prevent_errno_in_scope() int __errno_location pg_attribute_unused()
84
- #elif defined(errno) && (defined(__darwin__) || defined(__freebsd__))
92
+ #elif defined(errno) && (defined(__darwin__) || defined(__FreeBSD__))
85
93
  #define pg_prevent_errno_in_scope() int __error pg_attribute_unused()
86
94
  #else
87
95
  #define pg_prevent_errno_in_scope()
@@ -111,6 +119,15 @@
111
119
  * ereport_domain() directly, or preferably they can override the TEXTDOMAIN
112
120
  * macro.
113
121
  *
122
+ * When __builtin_constant_p is available and elevel >= ERROR we make a call
123
+ * to errstart_cold() instead of errstart(). This version of the function is
124
+ * marked with pg_attribute_cold which will coax supporting compilers into
125
+ * generating code which is more optimized towards non-ERROR cases. Because
126
+ * we use __builtin_constant_p() in the condition, when elevel is not a
127
+ * compile-time constant, or if it is, but it's < ERROR, the compiler has no
128
+ * need to generate any code for this branch. It can simply call errstart()
129
+ * unconditionally.
130
+ *
114
131
  * If elevel >= ERROR, the call will not return; we try to inform the compiler
115
132
  * of that via pg_unreachable(). However, no useful optimization effect is
116
133
  * obtained unless the compiler sees elevel as a compile-time constant, else
@@ -124,8 +141,10 @@
124
141
  #define ereport_domain(elevel, domain, ...) \
125
142
  do { \
126
143
  pg_prevent_errno_in_scope(); \
127
- if (errstart(elevel, domain)) \
128
- __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \
144
+ if (__builtin_constant_p(elevel) && (elevel) >= ERROR ? \
145
+ errstart_cold(elevel, domain) : \
146
+ errstart(elevel, domain)) \
147
+ __VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
129
148
  if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \
130
149
  pg_unreachable(); \
131
150
  } while(0)
@@ -135,7 +154,7 @@
135
154
  const int elevel_ = (elevel); \
136
155
  pg_prevent_errno_in_scope(); \
137
156
  if (errstart(elevel_, domain)) \
138
- __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \
157
+ __VA_ARGS__, errfinish(__FILE__, __LINE__, __func__); \
139
158
  if (elevel_ >= ERROR) \
140
159
  pg_unreachable(); \
141
160
  } while(0)
@@ -146,7 +165,10 @@
146
165
 
147
166
  #define TEXTDOMAIN NULL
148
167
 
168
+ extern bool message_level_is_interesting(int elevel);
169
+
149
170
  extern bool errstart(int elevel, const char *domain);
171
+ extern pg_attribute_cold bool errstart_cold(int elevel, const char *domain);
150
172
  extern void errfinish(const char *filename, int lineno, const char *funcname);
151
173
 
152
174
  extern int errcode(int sqlerrcode);
@@ -174,6 +196,9 @@ extern int errdetail_plural(const char *fmt_singular, const char *fmt_plural,
174
196
 
175
197
  extern int errhint(const char *fmt,...) pg_attribute_printf(1, 2);
176
198
 
199
+ extern int errhint_plural(const char *fmt_singular, const char *fmt_plural,
200
+ unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4);
201
+
177
202
  /*
178
203
  * errcontext() is typically called in error context callback functions, not
179
204
  * within an ereport() invocation. The callback function can be in a different
@@ -193,7 +218,6 @@ extern int errhidecontext(bool hide_ctx);
193
218
 
194
219
  extern int errbacktrace(void);
195
220
 
196
- extern int errfunction(const char *funcname);
197
221
  extern int errposition(int cursorpos);
198
222
 
199
223
  extern int internalerrposition(int cursorpos);
@@ -215,6 +239,63 @@ extern int getinternalerrposition(void);
215
239
  ereport(elevel, errmsg_internal(__VA_ARGS__))
216
240
 
217
241
 
242
+ /*----------
243
+ * Support for reporting "soft" errors that don't require a full transaction
244
+ * abort to clean up. This is to be used in this way:
245
+ * errsave(context,
246
+ * errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
247
+ * errmsg("invalid input syntax for type %s: \"%s\"",
248
+ * "boolean", in_str),
249
+ * ... other errxxx() fields as needed ...);
250
+ *
251
+ * "context" is a node pointer or NULL, and the remaining auxiliary calls
252
+ * provide the same error details as in ereport(). If context is not a
253
+ * pointer to an ErrorSaveContext node, then errsave(context, ...)
254
+ * behaves identically to ereport(ERROR, ...). If context is a pointer
255
+ * to an ErrorSaveContext node, then the information provided by the
256
+ * auxiliary calls is stored in the context node and control returns
257
+ * normally. The caller of errsave() must then do any required cleanup
258
+ * and return control back to its caller. That caller must check the
259
+ * ErrorSaveContext node to see whether an error occurred before
260
+ * it can trust the function's result to be meaningful.
261
+ *
262
+ * errsave_domain() allows a message domain to be specified; it is
263
+ * precisely analogous to ereport_domain().
264
+ *----------
265
+ */
266
+ #define errsave_domain(context, domain, ...) \
267
+ do { \
268
+ struct Node *context_ = (context); \
269
+ pg_prevent_errno_in_scope(); \
270
+ if (errsave_start(context_, domain)) \
271
+ __VA_ARGS__, errsave_finish(context_, __FILE__, __LINE__, __func__); \
272
+ } while(0)
273
+
274
+ #define errsave(context, ...) \
275
+ errsave_domain(context, TEXTDOMAIN, __VA_ARGS__)
276
+
277
+ /*
278
+ * "ereturn(context, dummy_value, ...);" is exactly the same as
279
+ * "errsave(context, ...); return dummy_value;". This saves a bit
280
+ * of typing in the common case where a function has no cleanup
281
+ * actions to take after reporting a soft error. "dummy_value"
282
+ * can be empty if the function returns void.
283
+ */
284
+ #define ereturn_domain(context, dummy_value, domain, ...) \
285
+ do { \
286
+ errsave_domain(context, domain, __VA_ARGS__); \
287
+ return dummy_value; \
288
+ } while(0)
289
+
290
+ #define ereturn(context, dummy_value, ...) \
291
+ ereturn_domain(context, dummy_value, TEXTDOMAIN, __VA_ARGS__)
292
+
293
+ extern bool errsave_start(struct Node *context, const char *domain);
294
+ extern void errsave_finish(struct Node *context,
295
+ const char *filename, int lineno,
296
+ const char *funcname);
297
+
298
+
218
299
  /* Support for constructing error strings separately from ereport() calls */
219
300
 
220
301
  extern void pre_format_elog_string(int errnumber, const char *domain);
@@ -230,7 +311,7 @@ typedef struct ErrorContextCallback
230
311
  void *arg;
231
312
  } ErrorContextCallback;
232
313
 
233
- extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
314
+ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
234
315
 
235
316
 
236
317
  /*----------
@@ -290,39 +371,47 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
290
371
  * pedantry; we have seen bugs from compilers improperly optimizing code
291
372
  * away when such a variable was not marked. Beware that gcc's -Wclobbered
292
373
  * warnings are just about entirely useless for catching such oversights.
374
+ *
375
+ * Each of these macros accepts an optional argument which can be specified
376
+ * to apply a suffix to the variables declared within the macros. This suffix
377
+ * can be used to avoid the compiler emitting warnings about shadowed
378
+ * variables when compiling with -Wshadow in situations where nested PG_TRY()
379
+ * statements are required. The optional suffix may contain any character
380
+ * that's allowed in a variable name. The suffix, if specified, must be the
381
+ * same within each component macro of the given PG_TRY() statement.
293
382
  *----------
294
383
  */
295
- #define PG_TRY() \
384
+ #define PG_TRY(...) \
296
385
  do { \
297
- sigjmp_buf *_save_exception_stack = PG_exception_stack; \
298
- ErrorContextCallback *_save_context_stack = error_context_stack; \
299
- sigjmp_buf _local_sigjmp_buf; \
300
- bool _do_rethrow = false; \
301
- if (sigsetjmp(_local_sigjmp_buf, 0) == 0) \
386
+ sigjmp_buf *_save_exception_stack##__VA_ARGS__ = PG_exception_stack; \
387
+ ErrorContextCallback *_save_context_stack##__VA_ARGS__ = error_context_stack; \
388
+ sigjmp_buf _local_sigjmp_buf##__VA_ARGS__; \
389
+ bool _do_rethrow##__VA_ARGS__ = false; \
390
+ if (sigsetjmp(_local_sigjmp_buf##__VA_ARGS__, 0) == 0) \
302
391
  { \
303
- PG_exception_stack = &_local_sigjmp_buf
392
+ PG_exception_stack = &_local_sigjmp_buf##__VA_ARGS__
304
393
 
305
- #define PG_CATCH() \
394
+ #define PG_CATCH(...) \
306
395
  } \
307
396
  else \
308
397
  { \
309
- PG_exception_stack = _save_exception_stack; \
310
- error_context_stack = _save_context_stack
398
+ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
399
+ error_context_stack = _save_context_stack##__VA_ARGS__
311
400
 
312
- #define PG_FINALLY() \
401
+ #define PG_FINALLY(...) \
313
402
  } \
314
403
  else \
315
- _do_rethrow = true; \
404
+ _do_rethrow##__VA_ARGS__ = true; \
316
405
  { \
317
- PG_exception_stack = _save_exception_stack; \
318
- error_context_stack = _save_context_stack
406
+ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
407
+ error_context_stack = _save_context_stack##__VA_ARGS__
319
408
 
320
- #define PG_END_TRY() \
409
+ #define PG_END_TRY(...) \
321
410
  } \
322
- if (_do_rethrow) \
411
+ if (_do_rethrow##__VA_ARGS__) \
323
412
  PG_RE_THROW(); \
324
- PG_exception_stack = _save_exception_stack; \
325
- error_context_stack = _save_context_stack; \
413
+ PG_exception_stack = _save_exception_stack##__VA_ARGS__; \
414
+ error_context_stack = _save_context_stack##__VA_ARGS__; \
326
415
  } while (0)
327
416
 
328
417
  /*
@@ -337,7 +426,7 @@ extern PGDLLIMPORT __thread ErrorContextCallback *error_context_stack;
337
426
  (pg_re_throw(), pg_unreachable())
338
427
  #endif
339
428
 
340
- extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack;
429
+ extern PGDLLIMPORT __thread sigjmp_buf *PG_exception_stack;
341
430
 
342
431
 
343
432
  /* Stuff that error handlers might want to use */
@@ -353,7 +442,6 @@ typedef struct ErrorData
353
442
  int elevel; /* error level */
354
443
  bool output_to_server; /* will report to server log? */
355
444
  bool output_to_client; /* will report to client? */
356
- bool show_funcname; /* true to force funcname inclusion */
357
445
  bool hide_stmt; /* true to prevent STATEMENT: inclusion */
358
446
  bool hide_ctx; /* true to prevent CONTEXT: inclusion */
359
447
  const char *filename; /* __FILE__ of ereport() call */
@@ -395,7 +483,7 @@ extern char *GetErrorContextStack(void);
395
483
 
396
484
  /* Hook for intercepting messages before they are sent to the server log */
397
485
  typedef void (*emit_log_hook_type) (ErrorData *edata);
398
- extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook;
486
+ extern PGDLLIMPORT __thread emit_log_hook_type emit_log_hook;
399
487
 
400
488
 
401
489
  /* GUC-configurable parameters */
@@ -407,27 +495,39 @@ typedef enum
407
495
  PGERROR_VERBOSE /* all the facts, ma'am */
408
496
  } PGErrorVerbosity;
409
497
 
410
- extern int Log_error_verbosity;
411
- extern char *Log_line_prefix;
412
- extern int Log_destination;
413
- extern char *Log_destination_string;
414
- extern bool syslog_sequence_numbers;
415
- extern bool syslog_split_messages;
498
+ extern PGDLLIMPORT int Log_error_verbosity;
499
+ extern PGDLLIMPORT char *Log_line_prefix;
500
+ extern PGDLLIMPORT int Log_destination;
501
+ extern PGDLLIMPORT char *Log_destination_string;
502
+ extern PGDLLIMPORT bool syslog_sequence_numbers;
503
+ extern PGDLLIMPORT bool syslog_split_messages;
416
504
 
417
505
  /* Log destination bitmap */
418
506
  #define LOG_DESTINATION_STDERR 1
419
507
  #define LOG_DESTINATION_SYSLOG 2
420
508
  #define LOG_DESTINATION_EVENTLOG 4
421
509
  #define LOG_DESTINATION_CSVLOG 8
510
+ #define LOG_DESTINATION_JSONLOG 16
422
511
 
423
512
  /* Other exported functions */
513
+ extern void log_status_format(StringInfo buf, const char *format,
514
+ ErrorData *edata);
424
515
  extern void DebugFileOpen(void);
425
516
  extern char *unpack_sql_state(int sql_state);
426
517
  extern bool in_error_recursion_trouble(void);
427
518
 
428
- #ifdef HAVE_SYSLOG
429
- extern void set_syslog_parameters(const char *ident, int facility);
430
- #endif
519
+ /* Common functions shared across destinations */
520
+ extern void reset_formatted_start_time(void);
521
+ extern char *get_formatted_start_time(void);
522
+ extern char *get_formatted_log_time(void);
523
+ extern const char *get_backend_type_for_log(void);
524
+ extern bool check_log_of_query(ErrorData *edata);
525
+ extern const char *error_severity(int elevel);
526
+ extern void write_pipe_chunks(char *data, int len, int dest);
527
+
528
+ /* Destination-specific functions */
529
+ extern void write_csvlog(ErrorData *edata);
530
+ extern void write_jsonlog(ErrorData *edata);
431
531
 
432
532
  /*
433
533
  * Write errors to stderr (or by equal means when stderr is
@@ -436,4 +536,10 @@ extern void set_syslog_parameters(const char *ident, int facility);
436
536
  */
437
537
  extern void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2);
438
538
 
539
+ /*
540
+ * Write a message to STDERR using only async-signal-safe functions. This can
541
+ * be used to safely emit a message from a signal handler.
542
+ */
543
+ extern void write_stderr_signal_safe(const char *fmt);
544
+
439
545
  #endif /* ELOG_H */
@@ -130,6 +130,7 @@
130
130
  #define ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS MAKE_SQLSTATE('2','2','0','3','D')
131
131
  #define ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS MAKE_SQLSTATE('2','2','0','3','E')
132
132
  #define ERRCODE_SQL_JSON_SCALAR_REQUIRED MAKE_SQLSTATE('2','2','0','3','F')
133
+ #define ERRCODE_SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE MAKE_SQLSTATE('2','2','0','3','G')
133
134
 
134
135
  /* Class 23 - Integrity Constraint Violation */
135
136
  #define ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('2','3','0','0','0')
@@ -296,6 +297,7 @@
296
297
  #define ERRCODE_CRASH_SHUTDOWN MAKE_SQLSTATE('5','7','P','0','2')
297
298
  #define ERRCODE_CANNOT_CONNECT_NOW MAKE_SQLSTATE('5','7','P','0','3')
298
299
  #define ERRCODE_DATABASE_DROPPED MAKE_SQLSTATE('5','7','P','0','4')
300
+ #define ERRCODE_IDLE_SESSION_TIMEOUT MAKE_SQLSTATE('5','7','P','0','5')
299
301
 
300
302
  /* Class 58 - System Error (errors external to PostgreSQL itself) */
301
303
  #define ERRCODE_SYSTEM_ERROR MAKE_SQLSTATE('5','8','0','0','0')
@@ -34,7 +34,7 @@
34
34
  * value if they fail partway through.
35
35
  *
36
36
  *
37
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
37
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
38
38
  * Portions Copyright (c) 1994, Regents of the University of California
39
39
  *
40
40
  * src/include/utils/expandeddatum.h
@@ -44,6 +44,8 @@
44
44
  #ifndef EXPANDEDDATUM_H
45
45
  #define EXPANDEDDATUM_H
46
46
 
47
+ #include "varatt.h"
48
+
47
49
  /* Size of an EXTERNAL datum that contains a pointer to an expanded object */
48
50
  #define EXPANDED_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_expanded))
49
51
 
@@ -133,8 +135,17 @@ struct ExpandedObjectHeader
133
135
  * (More of these might be worth inlining later.)
134
136
  */
135
137
 
136
- #define EOHPGetRWDatum(eohptr) PointerGetDatum((eohptr)->eoh_rw_ptr)
137
- #define EOHPGetRODatum(eohptr) PointerGetDatum((eohptr)->eoh_ro_ptr)
138
+ static inline Datum
139
+ EOHPGetRWDatum(const struct ExpandedObjectHeader *eohptr)
140
+ {
141
+ return PointerGetDatum(eohptr->eoh_rw_ptr);
142
+ }
143
+
144
+ static inline Datum
145
+ EOHPGetRODatum(const struct ExpandedObjectHeader *eohptr)
146
+ {
147
+ return PointerGetDatum(eohptr->eoh_ro_ptr);
148
+ }
138
149
 
139
150
  /* Does the Datum represent a writable expanded object? */
140
151
  #define DatumIsReadWriteExpandedObject(d, isnull, typlen) \
@@ -3,7 +3,7 @@
3
3
  * expandedrecord.h
4
4
  * Declarations for composite expanded objects.
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/utils/expandedrecord.h
@@ -138,10 +138,20 @@ typedef struct ExpandedRecordHeader
138
138
  MemoryContextCallback er_mcb;
139
139
  } ExpandedRecordHeader;
140
140
 
141
- /* fmgr macros for expanded record objects */
141
+ /* fmgr functions and macros for expanded record objects */
142
+ static inline Datum
143
+ ExpandedRecordGetDatum(const ExpandedRecordHeader *erh)
144
+ {
145
+ return EOHPGetRWDatum(&erh->hdr);
146
+ }
147
+
148
+ static inline Datum
149
+ ExpandedRecordGetRODatum(const ExpandedRecordHeader *erh)
150
+ {
151
+ return EOHPGetRODatum(&erh->hdr);
152
+ }
153
+
142
154
  #define PG_GETARG_EXPANDED_RECORD(n) DatumGetExpandedRecord(PG_GETARG_DATUM(n))
143
- #define ExpandedRecordGetDatum(erh) EOHPGetRWDatum(&(erh)->hdr)
144
- #define ExpandedRecordGetRODatum(erh) EOHPGetRODatum(&(erh)->hdr)
145
155
  #define PG_RETURN_EXPANDED_RECORD(x) PG_RETURN_DATUM(ExpandedRecordGetDatum(x))
146
156
 
147
157
  /* assorted other macros */
@@ -3,7 +3,7 @@
3
3
  * float.h
4
4
  * Definitions for the built-in floating-point types
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  *
@@ -17,8 +17,8 @@
17
17
 
18
18
  #include <math.h>
19
19
 
20
+ /* X/Open (XSI) requires <math.h> to provide M_PI, but core POSIX does not */
20
21
  #ifndef M_PI
21
- /* From my RH5.2 gcc math.h file - thomas 2000-04-03 */
22
22
  #define M_PI 3.14159265358979323846
23
23
  #endif
24
24
 
@@ -42,10 +42,11 @@ extern void float_underflow_error(void) pg_attribute_noreturn();
42
42
  extern void float_zero_divide_error(void) pg_attribute_noreturn();
43
43
  extern int is_infinite(float8 val);
44
44
  extern float8 float8in_internal(char *num, char **endptr_p,
45
- const char *type_name, const char *orig_string);
46
- extern float8 float8in_internal_opt_error(char *num, char **endptr_p,
47
- const char *type_name, const char *orig_string,
48
- bool *have_error);
45
+ const char *type_name, const char *orig_string,
46
+ struct Node *escontext);
47
+ extern float4 float4in_internal(char *num, char **endptr_p,
48
+ const char *type_name, const char *orig_string,
49
+ struct Node *escontext);
49
50
  extern char *float8out_internal(float8 num);
50
51
  extern int float4_cmp_internal(float4 a, float4 b);
51
52
  extern int float8_cmp_internal(float8 a, float8 b);
@@ -222,12 +223,12 @@ float4_div(const float4 val1, const float4 val2)
222
223
  {
223
224
  float4 result;
224
225
 
225
- if (unlikely(val2 == 0.0f))
226
+ if (unlikely(val2 == 0.0f) && !isnan(val1))
226
227
  float_zero_divide_error();
227
228
  result = val1 / val2;
228
- if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
229
+ if (unlikely(isinf(result)) && !isinf(val1))
229
230
  float_overflow_error();
230
- if (unlikely(result == 0.0f) && val1 != 0.0f)
231
+ if (unlikely(result == 0.0f) && val1 != 0.0f && !isinf(val2))
231
232
  float_underflow_error();
232
233
 
233
234
  return result;
@@ -238,12 +239,12 @@ float8_div(const float8 val1, const float8 val2)
238
239
  {
239
240
  float8 result;
240
241
 
241
- if (unlikely(val2 == 0.0))
242
+ if (unlikely(val2 == 0.0) && !isnan(val1))
242
243
  float_zero_divide_error();
243
244
  result = val1 / val2;
244
- if (unlikely(isinf(result)) && !isinf(val1) && !isinf(val2))
245
+ if (unlikely(isinf(result)) && !isinf(val1))
245
246
  float_overflow_error();
246
- if (unlikely(result == 0.0) && val1 != 0.0)
247
+ if (unlikely(result == 0.0) && val1 != 0.0 && !isinf(val2))
247
248
  float_underflow_error();
248
249
 
249
250
  return result;