pg_query 4.2.1 → 6.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 (901) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/README.md +7 -9
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +33 -9
  11. data/ext/pg_query/include/pg_query.h +28 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +599 -167
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +640 -520
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +6400 -4633
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +433 -343
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1472 -1152
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +154 -124
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1886 -1506
  19. data/ext/pg_query/include/postgres/access/amapi.h +303 -0
  20. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  21. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  26. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  27. data/ext/pg_query/include/postgres/access/genam.h +246 -0
  28. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  29. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  30. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  31. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  32. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  33. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  34. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  35. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  37. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  38. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  41. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  42. data/ext/pg_query/include/postgres/access/table.h +28 -0
  43. data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  46. data/ext/pg_query/include/postgres/access/transam.h +418 -0
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  51. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  52. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  53. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  62. data/ext/pg_query/include/postgres/c.h +1374 -0
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  67. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  133. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  137. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
  139. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  140. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  142. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  143. data/ext/pg_query/include/postgres/commands/user.h +43 -0
  144. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  145. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  146. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  147. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  148. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  149. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  150. data/ext/pg_query/include/postgres/common/int.h +512 -0
  151. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  152. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  153. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  154. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  155. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  156. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  157. data/ext/pg_query/include/postgres/common/string.h +44 -0
  158. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  159. data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
  160. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  161. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  162. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  163. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  164. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  165. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  166. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  167. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  168. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  169. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  170. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  171. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  172. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  173. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  174. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  175. data/ext/pg_query/include/postgres/gram.h +1168 -0
  176. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  177. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  178. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  179. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  180. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  181. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  182. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  183. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  184. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  185. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  186. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  187. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  188. data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
  189. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  190. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  191. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  192. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  193. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  194. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  195. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  196. data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
  197. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  198. data/ext/pg_query/include/postgres/miscadmin.h +527 -0
  199. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  200. data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
  201. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  202. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  203. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  204. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  205. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  206. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  207. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  208. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  209. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  210. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  211. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
  212. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  213. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  214. data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
  215. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  216. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  217. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  218. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  219. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  220. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  221. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  222. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  223. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  224. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  225. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  226. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  227. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  228. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  229. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  230. data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
  231. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  232. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  233. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  234. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  235. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  236. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  237. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  238. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  239. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  240. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  241. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  242. data/ext/pg_query/include/postgres/pg_config.h +985 -0
  243. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  244. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  245. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  246. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  247. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  248. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  249. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  250. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  251. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  252. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  253. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  254. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  255. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  256. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  257. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  258. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  259. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  260. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  261. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  262. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  263. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  264. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  265. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  266. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  267. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  268. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  269. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  270. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  271. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  272. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  275. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  276. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  277. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  278. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  279. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  280. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  281. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  282. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  283. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  284. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  285. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  286. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  287. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  288. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  289. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  290. data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
  291. data/ext/pg_query/include/postgres/port.h +555 -0
  292. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  293. data/ext/pg_query/include/postgres/postgres.h +579 -0
  294. data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
  295. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  296. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  297. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  298. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  299. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  300. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  301. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  302. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  303. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  304. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  305. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  306. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  307. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  308. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  309. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  310. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  311. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
  312. data/ext/pg_query/include/postgres/replication/slot.h +289 -0
  313. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  314. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  315. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  316. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  317. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  318. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  319. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  320. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  321. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  322. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  323. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  324. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  325. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  326. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  327. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  328. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  329. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  330. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  331. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  332. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  333. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  334. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  335. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  336. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  337. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  338. data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
  339. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  340. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  341. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  342. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  343. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  344. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  345. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  346. data/ext/pg_query/include/postgres/storage/proc.h +488 -0
  347. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  348. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  349. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  350. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  351. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  352. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  353. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  354. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  355. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  356. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  357. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  358. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  359. data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
  360. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  361. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  362. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  363. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  364. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  365. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  366. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  367. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  368. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  369. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  370. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  371. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  372. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  373. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  374. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  375. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  376. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  377. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  378. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  379. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  380. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  381. data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
  382. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  383. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  384. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  385. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  386. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  387. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  388. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  389. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  390. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  391. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  392. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  393. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  394. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  395. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  396. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  397. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  398. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  399. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  400. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  401. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  402. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  403. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  404. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  405. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  406. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  407. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  408. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  409. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  410. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
  411. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  412. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  413. data/ext/pg_query/include/postgres/utils/probes.h +114 -0
  414. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  415. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  416. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  417. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  418. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  419. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  420. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  421. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  422. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  423. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  424. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  425. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  426. data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
  427. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  428. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  429. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  430. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  431. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  432. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  433. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  434. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  435. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  436. data/ext/pg_query/include/postgres/varatt.h +358 -0
  437. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7723 -6368
  438. data/ext/pg_query/include/protobuf/pg_query.pb.h +120022 -87031
  439. data/ext/pg_query/pg_query.c +10 -1
  440. data/ext/pg_query/pg_query.pb-c.c +22595 -17738
  441. data/ext/pg_query/pg_query_deparse.c +1 -10635
  442. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  443. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  444. data/ext/pg_query/pg_query_internal.h +1 -1
  445. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  446. data/ext/pg_query/pg_query_normalize.c +43 -2
  447. data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
  448. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  449. data/ext/pg_query/pg_query_parse.c +47 -5
  450. data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
  451. data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
  452. data/ext/pg_query/pg_query_ruby.c +5 -0
  453. data/ext/pg_query/pg_query_scan.c +2 -2
  454. data/ext/pg_query/pg_query_split.c +3 -3
  455. data/ext/pg_query/postgres_deparse.c +11496 -0
  456. data/ext/pg_query/postgres_deparse.h +9 -0
  457. data/ext/pg_query/src_backend_catalog_namespace.c +243 -63
  458. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  459. data/ext/pg_query/src_backend_commands_define.c +2 -3
  460. data/ext/pg_query/src_backend_nodes_bitmapset.c +140 -156
  461. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  462. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  463. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  464. data/ext/pg_query/src_backend_nodes_list.c +16 -8
  465. data/ext/pg_query/src_backend_nodes_makefuncs.c +134 -1
  466. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +391 -133
  467. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  468. data/ext/pg_query/src_backend_parser_gram.c +43710 -39953
  469. data/ext/pg_query/src_backend_parser_parser.c +34 -8
  470. data/ext/pg_query/src_backend_parser_scan.c +6971 -3373
  471. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  472. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  473. data/ext/pg_query/src_backend_tcop_postgres.c +99 -96
  474. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  475. data/ext/pg_query/src_backend_utils_adt_datum.c +2 -2
  476. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  477. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  478. data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
  479. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +177 -30
  480. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  481. data/ext/pg_query/src_backend_utils_error_elog.c +397 -270
  482. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +36 -2
  483. data/ext/pg_query/src_backend_utils_init_globals.c +20 -5
  484. data/ext/pg_query/src_backend_utils_mb_mbutils.c +31 -84
  485. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
  486. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
  487. data/ext/pg_query/src_backend_utils_mmgr_aset.c +704 -497
  488. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  489. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
  490. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +637 -233
  491. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
  492. data/ext/pg_query/src_common_encnames.c +46 -44
  493. data/ext/pg_query/src_common_hashfn.c +1 -1
  494. data/ext/pg_query/src_common_keywords.c +1 -1
  495. data/ext/pg_query/src_common_kwlist_d.h +586 -517
  496. data/ext/pg_query/src_common_kwlookup.c +1 -1
  497. data/ext/pg_query/src_common_psprintf.c +3 -3
  498. data/ext/pg_query/src_common_stringinfo.c +21 -4
  499. data/ext/pg_query/src_common_wchar.c +100 -116
  500. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  501. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  502. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +829 -763
  503. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  504. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  505. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  506. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  507. data/ext/pg_query/src_port_pg_bitutils.c +251 -32
  508. data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
  509. data/ext/pg_query/src_port_snprintf.c +20 -27
  510. data/ext/pg_query/src_port_strerror.c +1 -3
  511. data/ext/pg_query/src_port_strlcpy.c +79 -0
  512. data/lib/pg_query/fingerprint.rb +5 -8
  513. data/lib/pg_query/node.rb +16 -11
  514. data/lib/pg_query/param_refs.rb +2 -2
  515. data/lib/pg_query/parse.rb +6 -8
  516. data/lib/pg_query/parse_error.rb +1 -0
  517. data/lib/pg_query/pg_query_pb.rb +173 -3196
  518. data/lib/pg_query/scan.rb +1 -0
  519. data/lib/pg_query/treewalker.rb +52 -11
  520. data/lib/pg_query/truncate.rb +18 -20
  521. data/lib/pg_query/version.rb +1 -1
  522. metadata +443 -442
  523. data/ext/pg_query/guc-file.c +0 -0
  524. data/ext/pg_query/include/access/amapi.h +0 -290
  525. data/ext/pg_query/include/access/attmap.h +0 -52
  526. data/ext/pg_query/include/access/attnum.h +0 -64
  527. data/ext/pg_query/include/access/clog.h +0 -63
  528. data/ext/pg_query/include/access/commit_ts.h +0 -74
  529. data/ext/pg_query/include/access/detoast.h +0 -82
  530. data/ext/pg_query/include/access/genam.h +0 -231
  531. data/ext/pg_query/include/access/gin.h +0 -78
  532. data/ext/pg_query/include/access/htup.h +0 -89
  533. data/ext/pg_query/include/access/htup_details.h +0 -807
  534. data/ext/pg_query/include/access/itup.h +0 -167
  535. data/ext/pg_query/include/access/parallel.h +0 -82
  536. data/ext/pg_query/include/access/printtup.h +0 -35
  537. data/ext/pg_query/include/access/relation.h +0 -28
  538. data/ext/pg_query/include/access/relscan.h +0 -191
  539. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  540. data/ext/pg_query/include/access/sdir.h +0 -58
  541. data/ext/pg_query/include/access/skey.h +0 -151
  542. data/ext/pg_query/include/access/stratnum.h +0 -85
  543. data/ext/pg_query/include/access/sysattr.h +0 -29
  544. data/ext/pg_query/include/access/table.h +0 -28
  545. data/ext/pg_query/include/access/tableam.h +0 -2077
  546. data/ext/pg_query/include/access/toast_compression.h +0 -73
  547. data/ext/pg_query/include/access/transam.h +0 -375
  548. data/ext/pg_query/include/access/tupconvert.h +0 -51
  549. data/ext/pg_query/include/access/tupdesc.h +0 -154
  550. data/ext/pg_query/include/access/tupmacs.h +0 -247
  551. data/ext/pg_query/include/access/twophase.h +0 -65
  552. data/ext/pg_query/include/access/xact.h +0 -523
  553. data/ext/pg_query/include/access/xlog.h +0 -303
  554. data/ext/pg_query/include/access/xlog_internal.h +0 -366
  555. data/ext/pg_query/include/access/xlogdefs.h +0 -101
  556. data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
  557. data/ext/pg_query/include/access/xlogreader.h +0 -443
  558. data/ext/pg_query/include/access/xlogrecord.h +0 -236
  559. data/ext/pg_query/include/access/xlogrecovery.h +0 -157
  560. data/ext/pg_query/include/c.h +0 -1391
  561. data/ext/pg_query/include/catalog/catalog.h +0 -44
  562. data/ext/pg_query/include/catalog/catversion.h +0 -58
  563. data/ext/pg_query/include/catalog/dependency.h +0 -269
  564. data/ext/pg_query/include/catalog/genbki.h +0 -142
  565. data/ext/pg_query/include/catalog/index.h +0 -214
  566. data/ext/pg_query/include/catalog/indexing.h +0 -54
  567. data/ext/pg_query/include/catalog/namespace.h +0 -190
  568. data/ext/pg_query/include/catalog/objectaccess.h +0 -265
  569. data/ext/pg_query/include/catalog/objectaddress.h +0 -89
  570. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
  571. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
  572. data/ext/pg_query/include/catalog/pg_am.h +0 -63
  573. data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
  574. data/ext/pg_query/include/catalog/pg_attribute.h +0 -221
  575. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
  576. data/ext/pg_query/include/catalog/pg_authid.h +0 -63
  577. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -57
  578. data/ext/pg_query/include/catalog/pg_class.h +0 -230
  579. data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
  580. data/ext/pg_query/include/catalog/pg_collation.h +0 -98
  581. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -62
  582. data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
  583. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
  584. data/ext/pg_query/include/catalog/pg_control.h +0 -250
  585. data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
  586. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
  587. data/ext/pg_query/include/catalog/pg_depend.h +0 -77
  588. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
  589. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
  590. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
  591. data/ext/pg_query/include/catalog/pg_index.h +0 -90
  592. data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
  593. data/ext/pg_query/include/catalog/pg_language.h +0 -72
  594. data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
  595. data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
  596. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
  597. data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
  598. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
  599. data/ext/pg_query/include/catalog/pg_operator.h +0 -107
  600. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
  601. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -63
  602. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -49
  603. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  604. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  605. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
  606. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
  607. data/ext/pg_query/include/catalog/pg_proc.h +0 -220
  608. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
  609. data/ext/pg_query/include/catalog/pg_publication.h +0 -161
  610. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
  611. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
  612. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
  613. data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
  614. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
  615. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
  616. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
  617. data/ext/pg_query/include/catalog/pg_transform.h +0 -48
  618. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
  619. data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
  620. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
  621. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
  622. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
  623. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
  624. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
  625. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
  626. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
  627. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
  628. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
  629. data/ext/pg_query/include/catalog/pg_type.h +0 -404
  630. data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
  631. data/ext/pg_query/include/catalog/storage.h +0 -50
  632. data/ext/pg_query/include/commands/async.h +0 -53
  633. data/ext/pg_query/include/commands/dbcommands.h +0 -36
  634. data/ext/pg_query/include/commands/defrem.h +0 -160
  635. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  636. data/ext/pg_query/include/commands/explain.h +0 -127
  637. data/ext/pg_query/include/commands/prepare.h +0 -61
  638. data/ext/pg_query/include/commands/tablespace.h +0 -69
  639. data/ext/pg_query/include/commands/trigger.h +0 -287
  640. data/ext/pg_query/include/commands/user.h +0 -37
  641. data/ext/pg_query/include/commands/vacuum.h +0 -340
  642. data/ext/pg_query/include/commands/variable.h +0 -38
  643. data/ext/pg_query/include/common/file_perm.h +0 -56
  644. data/ext/pg_query/include/common/hashfn.h +0 -104
  645. data/ext/pg_query/include/common/ip.h +0 -31
  646. data/ext/pg_query/include/common/keywords.h +0 -29
  647. data/ext/pg_query/include/common/kwlookup.h +0 -44
  648. data/ext/pg_query/include/common/pg_prng.h +0 -60
  649. data/ext/pg_query/include/common/relpath.h +0 -90
  650. data/ext/pg_query/include/common/string.h +0 -42
  651. data/ext/pg_query/include/common/unicode_combining_table.h +0 -308
  652. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
  653. data/ext/pg_query/include/datatype/timestamp.h +0 -236
  654. data/ext/pg_query/include/executor/execdesc.h +0 -70
  655. data/ext/pg_query/include/executor/executor.h +0 -663
  656. data/ext/pg_query/include/executor/functions.h +0 -55
  657. data/ext/pg_query/include/executor/instrument.h +0 -118
  658. data/ext/pg_query/include/executor/spi.h +0 -213
  659. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  660. data/ext/pg_query/include/executor/tuptable.h +0 -487
  661. data/ext/pg_query/include/fmgr.h +0 -781
  662. data/ext/pg_query/include/funcapi.h +0 -360
  663. data/ext/pg_query/include/getaddrinfo.h +0 -162
  664. data/ext/pg_query/include/jit/jit.h +0 -105
  665. data/ext/pg_query/include/kwlist_d.h +0 -1095
  666. data/ext/pg_query/include/lib/dshash.h +0 -112
  667. data/ext/pg_query/include/lib/ilist.h +0 -746
  668. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  669. data/ext/pg_query/include/lib/simplehash.h +0 -1184
  670. data/ext/pg_query/include/lib/sort_template.h +0 -432
  671. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  672. data/ext/pg_query/include/libpq/auth.h +0 -31
  673. data/ext/pg_query/include/libpq/crypt.h +0 -47
  674. data/ext/pg_query/include/libpq/hba.h +0 -179
  675. data/ext/pg_query/include/libpq/libpq-be.h +0 -343
  676. data/ext/pg_query/include/libpq/libpq.h +0 -144
  677. data/ext/pg_query/include/libpq/pqcomm.h +0 -194
  678. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  679. data/ext/pg_query/include/libpq/pqsignal.h +0 -42
  680. data/ext/pg_query/include/mb/pg_wchar.h +0 -755
  681. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  682. data/ext/pg_query/include/miscadmin.h +0 -495
  683. data/ext/pg_query/include/nodes/bitmapset.h +0 -122
  684. data/ext/pg_query/include/nodes/execnodes.h +0 -2715
  685. data/ext/pg_query/include/nodes/extensible.h +0 -162
  686. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  687. data/ext/pg_query/include/nodes/makefuncs.h +0 -109
  688. data/ext/pg_query/include/nodes/memnodes.h +0 -110
  689. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
  690. data/ext/pg_query/include/nodes/nodes.h +0 -861
  691. data/ext/pg_query/include/nodes/params.h +0 -170
  692. data/ext/pg_query/include/nodes/parsenodes.h +0 -3812
  693. data/ext/pg_query/include/nodes/pathnodes.h +0 -2734
  694. data/ext/pg_query/include/nodes/pg_list.h +0 -612
  695. data/ext/pg_query/include/nodes/plannodes.h +0 -1349
  696. data/ext/pg_query/include/nodes/primnodes.h +0 -1593
  697. data/ext/pg_query/include/nodes/print.h +0 -34
  698. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  699. data/ext/pg_query/include/nodes/value.h +0 -80
  700. data/ext/pg_query/include/optimizer/cost.h +0 -213
  701. data/ext/pg_query/include/optimizer/geqo.h +0 -90
  702. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  703. data/ext/pg_query/include/optimizer/optimizer.h +0 -202
  704. data/ext/pg_query/include/optimizer/paths.h +0 -257
  705. data/ext/pg_query/include/optimizer/planmain.h +0 -120
  706. data/ext/pg_query/include/parser/analyze.h +0 -63
  707. data/ext/pg_query/include/parser/gram.h +0 -1101
  708. data/ext/pg_query/include/parser/gramparse.h +0 -75
  709. data/ext/pg_query/include/parser/kwlist.h +0 -487
  710. data/ext/pg_query/include/parser/parse_agg.h +0 -63
  711. data/ext/pg_query/include/parser/parse_coerce.h +0 -100
  712. data/ext/pg_query/include/parser/parse_expr.h +0 -25
  713. data/ext/pg_query/include/parser/parse_func.h +0 -74
  714. data/ext/pg_query/include/parser/parse_node.h +0 -339
  715. data/ext/pg_query/include/parser/parse_oper.h +0 -65
  716. data/ext/pg_query/include/parser/parse_relation.h +0 -124
  717. data/ext/pg_query/include/parser/parse_type.h +0 -60
  718. data/ext/pg_query/include/parser/parser.h +0 -68
  719. data/ext/pg_query/include/parser/parsetree.h +0 -61
  720. data/ext/pg_query/include/parser/scanner.h +0 -152
  721. data/ext/pg_query/include/parser/scansup.h +0 -27
  722. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  723. data/ext/pg_query/include/pg_config.h +0 -1037
  724. data/ext/pg_query/include/pg_config_manual.h +0 -410
  725. data/ext/pg_query/include/pg_config_os.h +0 -8
  726. data/ext/pg_query/include/pg_getopt.h +0 -56
  727. data/ext/pg_query/include/pg_trace.h +0 -17
  728. data/ext/pg_query/include/pgstat.h +0 -699
  729. data/ext/pg_query/include/pgtime.h +0 -94
  730. data/ext/pg_query/include/pl_gram.h +0 -383
  731. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  732. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  733. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -111
  734. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -244
  735. data/ext/pg_query/include/plerrcodes.h +0 -998
  736. data/ext/pg_query/include/plpgsql.h +0 -1345
  737. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
  738. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  739. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  740. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  741. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  742. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  743. data/ext/pg_query/include/port/atomics.h +0 -524
  744. data/ext/pg_query/include/port/pg_bitutils.h +0 -302
  745. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  746. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  747. data/ext/pg_query/include/port.h +0 -553
  748. data/ext/pg_query/include/portability/instr_time.h +0 -256
  749. data/ext/pg_query/include/postgres.h +0 -808
  750. data/ext/pg_query/include/postgres_ext.h +0 -74
  751. data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
  752. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  753. data/ext/pg_query/include/postmaster/bgworker.h +0 -162
  754. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  755. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  756. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  757. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  758. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  759. data/ext/pg_query/include/postmaster/postmaster.h +0 -78
  760. data/ext/pg_query/include/postmaster/startup.h +0 -39
  761. data/ext/pg_query/include/postmaster/syslogger.h +0 -103
  762. data/ext/pg_query/include/postmaster/walwriter.h +0 -21
  763. data/ext/pg_query/include/regex/regex.h +0 -186
  764. data/ext/pg_query/include/replication/logicallauncher.h +0 -29
  765. data/ext/pg_query/include/replication/logicalproto.h +0 -254
  766. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  767. data/ext/pg_query/include/replication/origin.h +0 -73
  768. data/ext/pg_query/include/replication/reorderbuffer.h +0 -685
  769. data/ext/pg_query/include/replication/slot.h +0 -230
  770. data/ext/pg_query/include/replication/syncrep.h +0 -115
  771. data/ext/pg_query/include/replication/walreceiver.h +0 -472
  772. data/ext/pg_query/include/replication/walsender.h +0 -74
  773. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  774. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -38
  775. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
  776. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  777. data/ext/pg_query/include/storage/backendid.h +0 -37
  778. data/ext/pg_query/include/storage/block.h +0 -115
  779. data/ext/pg_query/include/storage/buf.h +0 -46
  780. data/ext/pg_query/include/storage/bufmgr.h +0 -297
  781. data/ext/pg_query/include/storage/bufpage.h +0 -457
  782. data/ext/pg_query/include/storage/condition_variable.h +0 -73
  783. data/ext/pg_query/include/storage/dsm.h +0 -64
  784. data/ext/pg_query/include/storage/dsm_impl.h +0 -76
  785. data/ext/pg_query/include/storage/fd.h +0 -198
  786. data/ext/pg_query/include/storage/fileset.h +0 -40
  787. data/ext/pg_query/include/storage/ipc.h +0 -84
  788. data/ext/pg_query/include/storage/item.h +0 -19
  789. data/ext/pg_query/include/storage/itemid.h +0 -184
  790. data/ext/pg_query/include/storage/itemptr.h +0 -208
  791. data/ext/pg_query/include/storage/large_object.h +0 -100
  792. data/ext/pg_query/include/storage/latch.h +0 -186
  793. data/ext/pg_query/include/storage/lmgr.h +0 -115
  794. data/ext/pg_query/include/storage/lock.h +0 -616
  795. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  796. data/ext/pg_query/include/storage/lwlock.h +0 -206
  797. data/ext/pg_query/include/storage/lwlocknames.h +0 -50
  798. data/ext/pg_query/include/storage/off.h +0 -57
  799. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  800. data/ext/pg_query/include/storage/pg_shmem.h +0 -92
  801. data/ext/pg_query/include/storage/pmsignal.h +0 -105
  802. data/ext/pg_query/include/storage/predicate.h +0 -87
  803. data/ext/pg_query/include/storage/proc.h +0 -461
  804. data/ext/pg_query/include/storage/procarray.h +0 -98
  805. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  806. data/ext/pg_query/include/storage/procsignal.h +0 -71
  807. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  808. data/ext/pg_query/include/storage/s_lock.h +0 -1110
  809. data/ext/pg_query/include/storage/sharedfileset.h +0 -37
  810. data/ext/pg_query/include/storage/shm_mq.h +0 -86
  811. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  812. data/ext/pg_query/include/storage/shmem.h +0 -81
  813. data/ext/pg_query/include/storage/sinval.h +0 -153
  814. data/ext/pg_query/include/storage/sinvaladt.h +0 -43
  815. data/ext/pg_query/include/storage/smgr.h +0 -111
  816. data/ext/pg_query/include/storage/spin.h +0 -77
  817. data/ext/pg_query/include/storage/standby.h +0 -98
  818. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  819. data/ext/pg_query/include/storage/sync.h +0 -66
  820. data/ext/pg_query/include/tcop/cmdtag.h +0 -58
  821. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
  822. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  823. data/ext/pg_query/include/tcop/dest.h +0 -149
  824. data/ext/pg_query/include/tcop/fastpath.h +0 -20
  825. data/ext/pg_query/include/tcop/pquery.h +0 -51
  826. data/ext/pg_query/include/tcop/tcopprot.h +0 -97
  827. data/ext/pg_query/include/tcop/utility.h +0 -112
  828. data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
  829. data/ext/pg_query/include/utils/acl.h +0 -333
  830. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  831. data/ext/pg_query/include/utils/array.h +0 -464
  832. data/ext/pg_query/include/utils/backend_progress.h +0 -44
  833. data/ext/pg_query/include/utils/backend_status.h +0 -321
  834. data/ext/pg_query/include/utils/builtins.h +0 -127
  835. data/ext/pg_query/include/utils/bytea.h +0 -28
  836. data/ext/pg_query/include/utils/catcache.h +0 -231
  837. data/ext/pg_query/include/utils/date.h +0 -90
  838. data/ext/pg_query/include/utils/datetime.h +0 -344
  839. data/ext/pg_query/include/utils/datum.h +0 -76
  840. data/ext/pg_query/include/utils/dsa.h +0 -123
  841. data/ext/pg_query/include/utils/dynahash.h +0 -20
  842. data/ext/pg_query/include/utils/elog.h +0 -470
  843. data/ext/pg_query/include/utils/errcodes.h +0 -354
  844. data/ext/pg_query/include/utils/expandeddatum.h +0 -159
  845. data/ext/pg_query/include/utils/expandedrecord.h +0 -231
  846. data/ext/pg_query/include/utils/float.h +0 -356
  847. data/ext/pg_query/include/utils/fmgroids.h +0 -3261
  848. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2829
  849. data/ext/pg_query/include/utils/fmgrtab.h +0 -49
  850. data/ext/pg_query/include/utils/guc.h +0 -469
  851. data/ext/pg_query/include/utils/guc_tables.h +0 -276
  852. data/ext/pg_query/include/utils/hsearch.h +0 -153
  853. data/ext/pg_query/include/utils/inval.h +0 -68
  854. data/ext/pg_query/include/utils/lsyscache.h +0 -208
  855. data/ext/pg_query/include/utils/memdebug.h +0 -82
  856. data/ext/pg_query/include/utils/memutils.h +0 -230
  857. data/ext/pg_query/include/utils/numeric.h +0 -90
  858. data/ext/pg_query/include/utils/palloc.h +0 -158
  859. data/ext/pg_query/include/utils/partcache.h +0 -102
  860. data/ext/pg_query/include/utils/pg_locale.h +0 -127
  861. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  862. data/ext/pg_query/include/utils/pgstat_internal.h +0 -784
  863. data/ext/pg_query/include/utils/pidfile.h +0 -56
  864. data/ext/pg_query/include/utils/plancache.h +0 -236
  865. data/ext/pg_query/include/utils/portal.h +0 -252
  866. data/ext/pg_query/include/utils/probes.h +0 -114
  867. data/ext/pg_query/include/utils/ps_status.h +0 -25
  868. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  869. data/ext/pg_query/include/utils/queryjumble.h +0 -88
  870. data/ext/pg_query/include/utils/regproc.h +0 -39
  871. data/ext/pg_query/include/utils/rel.h +0 -695
  872. data/ext/pg_query/include/utils/relcache.h +0 -153
  873. data/ext/pg_query/include/utils/reltrigger.h +0 -81
  874. data/ext/pg_query/include/utils/resowner.h +0 -86
  875. data/ext/pg_query/include/utils/rls.h +0 -50
  876. data/ext/pg_query/include/utils/ruleutils.h +0 -47
  877. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  878. data/ext/pg_query/include/utils/snapmgr.h +0 -179
  879. data/ext/pg_query/include/utils/snapshot.h +0 -219
  880. data/ext/pg_query/include/utils/sortsupport.h +0 -391
  881. data/ext/pg_query/include/utils/syscache.h +0 -224
  882. data/ext/pg_query/include/utils/timeout.h +0 -95
  883. data/ext/pg_query/include/utils/timestamp.h +0 -117
  884. data/ext/pg_query/include/utils/tuplesort.h +0 -291
  885. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  886. data/ext/pg_query/include/utils/typcache.h +0 -209
  887. data/ext/pg_query/include/utils/tzparser.h +0 -39
  888. data/ext/pg_query/include/utils/varlena.h +0 -41
  889. data/ext/pg_query/include/utils/wait_event.h +0 -289
  890. data/ext/pg_query/include/utils/xml.h +0 -84
  891. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  892. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  893. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  894. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  895. data/ext/pg_query/src_common_pg_prng.c +0 -152
  896. data/ext/pg_query/src_common_string.c +0 -92
  897. data/ext/pg_query/src_port_pgsleep.c +0 -69
  898. data/ext/pg_query/src_port_strnlen.c +0 -39
  899. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
  900. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  901. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -4,7 +4,6 @@
4
4
  * - errstart
5
5
  * - PG_exception_stack
6
6
  * - write_stderr
7
- * - err_gettext
8
7
  * - in_error_recursion_trouble
9
8
  * - error_context_stack
10
9
  * - errordata_stack_depth
@@ -13,6 +12,8 @@
13
12
  * - is_log_level_output
14
13
  * - should_output_to_client
15
14
  * - recursion_depth
15
+ * - get_error_stack_entry
16
+ * - set_stack_entry_domain
16
17
  * - errmsg_internal
17
18
  * - errcode
18
19
  * - errmsg
@@ -23,11 +24,19 @@
23
24
  * - pg_re_throw
24
25
  * - EmitErrorReport
25
26
  * - emit_log_hook
27
+ * - saved_timeval_set
28
+ * - formatted_log_time
26
29
  * - send_message_to_server_log
27
30
  * - send_message_to_frontend
31
+ * - pgwin32_dispatch_queued_signals
32
+ * - set_stack_entry_location
28
33
  * - matches_backtrace_functions
34
+ * - backtrace_function_list
29
35
  * - set_backtrace
36
+ * - FreeErrorDataContents
30
37
  * - geterrcode
38
+ * - errsave_start
39
+ * - errsave_finish
31
40
  * - errhint
32
41
  * - errposition
33
42
  * - internalerrposition
@@ -38,6 +47,9 @@
38
47
  * - errcontext_msg
39
48
  * - CopyErrorData
40
49
  * - FlushErrorState
50
+ * - pg_signal_queue
51
+ * - pg_signal_mask
52
+ * - pgwin32_dispatch_queued_signals
41
53
  *--------------------------------------------------------------------
42
54
  */
43
55
 
@@ -86,7 +98,7 @@
86
98
  * overflow.)
87
99
  *
88
100
  *
89
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
101
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
90
102
  * Portions Copyright (c) 1994, Regents of the University of California
91
103
  *
92
104
  *
@@ -109,12 +121,12 @@
109
121
  #include <execinfo.h>
110
122
  #endif
111
123
 
112
- #include "access/transam.h"
113
124
  #include "access/xact.h"
114
125
  #include "libpq/libpq.h"
115
126
  #include "libpq/pqformat.h"
116
127
  #include "mb/pg_wchar.h"
117
128
  #include "miscadmin.h"
129
+ #include "nodes/miscnodes.h"
118
130
  #include "pgstat.h"
119
131
  #include "postmaster/bgworker.h"
120
132
  #include "postmaster/postmaster.h"
@@ -122,9 +134,10 @@
122
134
  #include "storage/ipc.h"
123
135
  #include "storage/proc.h"
124
136
  #include "tcop/tcopprot.h"
125
- #include "utils/guc.h"
137
+ #include "utils/guc_hooks.h"
126
138
  #include "utils/memutils.h"
127
139
  #include "utils/ps_status.h"
140
+ #include "utils/varlena.h"
128
141
 
129
142
 
130
143
  /* In this module, access gettext() via err_gettext() */
@@ -159,6 +172,10 @@ __thread emit_log_hook_type emit_log_hook = NULL;
159
172
 
160
173
 
161
174
 
175
+ /* Processed form of backtrace_functions GUC */
176
+ static __thread char *backtrace_function_list;
177
+
178
+
162
179
  #ifdef HAVE_SYSLOG
163
180
 
164
181
  /*
@@ -199,13 +216,15 @@ static __thread int recursion_depth = 0;
199
216
 
200
217
  /*
201
218
  * Saved timeval and buffers for formatted timestamps that might be used by
202
- * both log_line_prefix and csv logs.
219
+ * log_line_prefix, csv logs and JSON logs.
203
220
  */
204
221
 
222
+ static __thread bool saved_timeval_set = false;
205
223
 
206
224
 
207
225
  #define FORMATTED_TS_LEN 128
208
226
 
227
+ static __thread char formatted_log_time[FORMATTED_TS_LEN];
209
228
 
210
229
 
211
230
 
@@ -221,10 +240,17 @@ static __thread int recursion_depth = 0;
221
240
 
222
241
 
223
242
  static const char *err_gettext(const char *str) pg_attribute_format_arg(1);
243
+ static ErrorData *get_error_stack_entry(void);
244
+ static void set_stack_entry_domain(ErrorData *edata, const char *domain);
245
+ static void set_stack_entry_location(ErrorData *edata,
246
+ const char *filename, int lineno,
247
+ const char *funcname);
248
+ static bool matches_backtrace_functions(const char *funcname);
224
249
  static pg_noinline void set_backtrace(ErrorData *edata, int num_skip);
225
250
  static void set_errdata_field(MemoryContextData *cxt, char **ptr, const char *str);
251
+ static void FreeErrorDataContents(ErrorData *edata);
226
252
  static void write_console(const char *line, int len);
227
- static const char *process_log_prefix_padding(const char *p, int *padding);
253
+ static const char *process_log_prefix_padding(const char *p, int *ppadding);
228
254
  static void log_line_prefix(StringInfo buf, ErrorData *edata);
229
255
  static void send_message_to_server_log(ErrorData *edata);
230
256
  static void send_message_to_frontend(ErrorData *edata);
@@ -282,24 +308,8 @@ should_output_to_server(int elevel)
282
308
  /*
283
309
  * should_output_to_client --- should message of given elevel go to the client?
284
310
  */
285
- static inline bool
286
- should_output_to_client(int elevel)
287
- {
288
- if (whereToSendOutput == DestRemote && elevel != LOG_SERVER_ONLY)
289
- {
290
- /*
291
- * client_min_messages is honored only after we complete the
292
- * authentication handshake. This is required both for security
293
- * reasons and because many clients can't handle NOTICE messages
294
- * during authentication.
295
- */
296
- if (ClientAuthInProgress)
297
- return (elevel >= ERROR);
298
- else
299
- return (elevel >= client_min_messages || elevel == INFO);
300
- }
301
- return false;
302
- }
311
+ static inline bool should_output_to_client(int elevel) { return false; }
312
+
303
313
 
304
314
 
305
315
  /*
@@ -332,18 +342,9 @@ in_error_recursion_trouble(void)
332
342
  * message, since there's a significant probability that that's exactly
333
343
  * what's causing the recursion.
334
344
  */
335
- static inline const char *
336
- err_gettext(const char *str)
337
- {
338
345
  #ifdef ENABLE_NLS
339
- if (in_error_recursion_trouble())
340
- return str;
341
- else
342
- return gettext(str);
343
346
  #else
344
- return str;
345
347
  #endif
346
- }
347
348
 
348
349
  /*
349
350
  * errstart_cold
@@ -468,27 +469,13 @@ errstart(int elevel, const char *domain)
468
469
  debug_query_string = NULL;
469
470
  }
470
471
  }
471
- if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE)
472
- {
473
- /*
474
- * Wups, stack not big enough. We treat this as a PANIC condition
475
- * because it suggests an infinite loop of errors during error
476
- * recovery.
477
- */
478
- errordata_stack_depth = -1; /* make room on stack */
479
- ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded")));
480
- }
481
472
 
482
473
  /* Initialize data for this error frame */
483
- edata = &errordata[errordata_stack_depth];
484
- MemSet(edata, 0, sizeof(ErrorData));
474
+ edata = get_error_stack_entry();
485
475
  edata->elevel = elevel;
486
476
  edata->output_to_server = output_to_server;
487
477
  edata->output_to_client = output_to_client;
488
- /* the default text domain is the backend's */
489
- edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres");
490
- /* initialize context_domain the same way (see set_errcontext_domain()) */
491
- edata->context_domain = edata->domain;
478
+ set_stack_entry_domain(edata, domain);
492
479
  /* Select default errcode based on elevel */
493
480
  if (elevel >= ERROR)
494
481
  edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;
@@ -496,8 +483,6 @@ errstart(int elevel, const char *domain)
496
483
  edata->sqlerrcode = ERRCODE_WARNING;
497
484
  else
498
485
  edata->sqlerrcode = ERRCODE_SUCCESSFUL_COMPLETION;
499
- /* errno is saved here so that error parameter eval can't change it */
500
- edata->saved_errno = errno;
501
486
 
502
487
  /*
503
488
  * Any allocations for this error state level should go into ErrorContext
@@ -508,32 +493,6 @@ errstart(int elevel, const char *domain)
508
493
  return true;
509
494
  }
510
495
 
511
- /*
512
- * Checks whether the given funcname matches backtrace_functions; see
513
- * check_backtrace_functions.
514
- */
515
- static bool
516
- matches_backtrace_functions(const char *funcname)
517
- {
518
- char *p;
519
-
520
- if (!backtrace_symbol_list || funcname == NULL || funcname[0] == '\0')
521
- return false;
522
-
523
- p = backtrace_symbol_list;
524
- for (;;)
525
- {
526
- if (*p == '\0') /* end of backtrace_symbol_list */
527
- break;
528
-
529
- if (strcmp(funcname, p) == 0)
530
- return true;
531
- p += strlen(p) + 1;
532
- }
533
-
534
- return false;
535
- }
536
-
537
496
  /*
538
497
  * errfinish --- end an error-reporting cycle
539
498
  *
@@ -554,23 +513,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
554
513
  CHECK_STACK_DEPTH();
555
514
 
556
515
  /* Save the last few bits of error state into the stack entry */
557
- if (filename)
558
- {
559
- const char *slash;
560
-
561
- /* keep only base name, useful especially for vpath builds */
562
- slash = strrchr(filename, '/');
563
- if (slash)
564
- filename = slash + 1;
565
- /* Some Windows compilers use backslashes in __FILE__ strings */
566
- slash = strrchr(filename, '\\');
567
- if (slash)
568
- filename = slash + 1;
569
- }
570
-
571
- edata->filename = filename;
572
- edata->lineno = lineno;
573
- edata->funcname = funcname;
516
+ set_stack_entry_location(edata, filename, lineno, funcname);
574
517
 
575
518
  elevel = edata->elevel;
576
519
 
@@ -580,6 +523,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
580
523
  */
581
524
  oldcontext = MemoryContextSwitchTo(ErrorContext);
582
525
 
526
+ /* Collect backtrace, if enabled and we didn't already */
583
527
  if (!edata->backtrace &&
584
528
  edata->funcname &&
585
529
  backtrace_functions &&
@@ -630,31 +574,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
630
574
  EmitErrorReport();
631
575
 
632
576
  /* Now free up subsidiary data attached to stack entry, and release it */
633
- if (edata->message)
634
- pfree(edata->message);
635
- if (edata->detail)
636
- pfree(edata->detail);
637
- if (edata->detail_log)
638
- pfree(edata->detail_log);
639
- if (edata->hint)
640
- pfree(edata->hint);
641
- if (edata->context)
642
- pfree(edata->context);
643
- if (edata->backtrace)
644
- pfree(edata->backtrace);
645
- if (edata->schema_name)
646
- pfree(edata->schema_name);
647
- if (edata->table_name)
648
- pfree(edata->table_name);
649
- if (edata->column_name)
650
- pfree(edata->column_name);
651
- if (edata->datatype_name)
652
- pfree(edata->datatype_name);
653
- if (edata->constraint_name)
654
- pfree(edata->constraint_name);
655
- if (edata->internalquery)
656
- pfree(edata->internalquery);
657
-
577
+ FreeErrorDataContents(edata);
658
578
  errordata_stack_depth--;
659
579
 
660
580
  /* Exit error-handling context */
@@ -681,8 +601,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
681
601
  * Any other code you might be tempted to add here should probably be
682
602
  * in an on_proc_exit or on_shmem_exit callback instead.
683
603
  */
684
- fflush(stdout);
685
- fflush(stderr);
604
+ fflush(NULL);
686
605
 
687
606
  /*
688
607
  * Let the cumulative stats system know. Only mark the session as
@@ -708,8 +627,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
708
627
  * XXX: what if we are *in* the postmaster? abort() won't kill our
709
628
  * children...
710
629
  */
711
- fflush(stdout);
712
- fflush(stderr);
630
+ fflush(NULL);
713
631
  abort();
714
632
  }
715
633
 
@@ -722,6 +640,242 @@ errfinish(const char *filename, int lineno, const char *funcname)
722
640
  }
723
641
 
724
642
 
643
+ /*
644
+ * errsave_start --- begin a "soft" error-reporting cycle
645
+ *
646
+ * If "context" isn't an ErrorSaveContext node, this behaves as
647
+ * errstart(ERROR, domain), and the errsave() macro ends up acting
648
+ * exactly like ereport(ERROR, ...).
649
+ *
650
+ * If "context" is an ErrorSaveContext node, but the node creator only wants
651
+ * notification of the fact of a soft error without any details, we just set
652
+ * the error_occurred flag in the ErrorSaveContext node and return false,
653
+ * which will cause us to skip the remaining error processing steps.
654
+ *
655
+ * Otherwise, create and initialize error stack entry and return true.
656
+ * Subsequently, errmsg() and perhaps other routines will be called to further
657
+ * populate the stack entry. Finally, errsave_finish() will be called to
658
+ * tidy up.
659
+ */
660
+ bool
661
+ errsave_start(struct Node *context, const char *domain)
662
+ {
663
+ ErrorSaveContext *escontext;
664
+ ErrorData *edata;
665
+
666
+ /*
667
+ * Do we have a context for soft error reporting? If not, just punt to
668
+ * errstart().
669
+ */
670
+ if (context == NULL || !IsA(context, ErrorSaveContext))
671
+ return errstart(ERROR, domain);
672
+
673
+ /* Report that a soft error was detected */
674
+ escontext = (ErrorSaveContext *) context;
675
+ escontext->error_occurred = true;
676
+
677
+ /* Nothing else to do if caller wants no further details */
678
+ if (!escontext->details_wanted)
679
+ return false;
680
+
681
+ /*
682
+ * Okay, crank up a stack entry to store the info in.
683
+ */
684
+
685
+ recursion_depth++;
686
+
687
+ /* Initialize data for this error frame */
688
+ edata = get_error_stack_entry();
689
+ edata->elevel = LOG; /* signal all is well to errsave_finish */
690
+ set_stack_entry_domain(edata, domain);
691
+ /* Select default errcode based on the assumed elevel of ERROR */
692
+ edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;
693
+
694
+ /*
695
+ * Any allocations for this error state level should go into the caller's
696
+ * context. We don't need to pollute ErrorContext, or even require it to
697
+ * exist, in this code path.
698
+ */
699
+ edata->assoc_context = CurrentMemoryContext;
700
+
701
+ recursion_depth--;
702
+ return true;
703
+ }
704
+
705
+ /*
706
+ * errsave_finish --- end a "soft" error-reporting cycle
707
+ *
708
+ * If errsave_start() decided this was a regular error, behave as
709
+ * errfinish(). Otherwise, package up the error details and save
710
+ * them in the ErrorSaveContext node.
711
+ */
712
+ void
713
+ errsave_finish(struct Node *context, const char *filename, int lineno,
714
+ const char *funcname)
715
+ {
716
+ ErrorSaveContext *escontext = (ErrorSaveContext *) context;
717
+ ErrorData *edata = &errordata[errordata_stack_depth];
718
+
719
+ /* verify stack depth before accessing *edata */
720
+ CHECK_STACK_DEPTH();
721
+
722
+ /*
723
+ * If errsave_start punted to errstart, then elevel will be ERROR or
724
+ * perhaps even PANIC. Punt likewise to errfinish.
725
+ */
726
+ if (edata->elevel >= ERROR)
727
+ {
728
+ errfinish(filename, lineno, funcname);
729
+ pg_unreachable();
730
+ }
731
+
732
+ /*
733
+ * Else, we should package up the stack entry contents and deliver them to
734
+ * the caller.
735
+ */
736
+ recursion_depth++;
737
+
738
+ /* Save the last few bits of error state into the stack entry */
739
+ set_stack_entry_location(edata, filename, lineno, funcname);
740
+
741
+ /* Replace the LOG value that errsave_start inserted */
742
+ edata->elevel = ERROR;
743
+
744
+ /*
745
+ * We skip calling backtrace and context functions, which are more likely
746
+ * to cause trouble than provide useful context; they might act on the
747
+ * assumption that a transaction abort is about to occur.
748
+ */
749
+
750
+ /*
751
+ * Make a copy of the error info for the caller. All the subsidiary
752
+ * strings are already in the caller's context, so it's sufficient to
753
+ * flat-copy the stack entry.
754
+ */
755
+ escontext->error_data = palloc_object(ErrorData);
756
+ memcpy(escontext->error_data, edata, sizeof(ErrorData));
757
+
758
+ /* Exit error-handling context */
759
+ errordata_stack_depth--;
760
+ recursion_depth--;
761
+ }
762
+
763
+
764
+ /*
765
+ * get_error_stack_entry --- allocate and initialize a new stack entry
766
+ *
767
+ * The entry should be freed, when we're done with it, by calling
768
+ * FreeErrorDataContents() and then decrementing errordata_stack_depth.
769
+ *
770
+ * Returning the entry's address is just a notational convenience,
771
+ * since it had better be errordata[errordata_stack_depth].
772
+ *
773
+ * Although the error stack is not large, we don't expect to run out of space.
774
+ * Using more than one entry implies a new error report during error recovery,
775
+ * which is possible but already suggests we're in trouble. If we exhaust the
776
+ * stack, almost certainly we are in an infinite loop of errors during error
777
+ * recovery, so we give up and PANIC.
778
+ *
779
+ * (Note that this is distinct from the recursion_depth checks, which
780
+ * guard against recursion while handling a single stack entry.)
781
+ */
782
+ static ErrorData *
783
+ get_error_stack_entry(void)
784
+ {
785
+ ErrorData *edata;
786
+
787
+ /* Allocate error frame */
788
+ errordata_stack_depth++;
789
+ if (unlikely(errordata_stack_depth >= ERRORDATA_STACK_SIZE))
790
+ {
791
+ /* Wups, stack not big enough */
792
+ errordata_stack_depth = -1; /* make room on stack */
793
+ ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded")));
794
+ }
795
+
796
+ /* Initialize error frame to all zeroes/NULLs */
797
+ edata = &errordata[errordata_stack_depth];
798
+ memset(edata, 0, sizeof(ErrorData));
799
+
800
+ /* Save errno immediately to ensure error parameter eval can't change it */
801
+ edata->saved_errno = errno;
802
+
803
+ return edata;
804
+ }
805
+
806
+ /*
807
+ * set_stack_entry_domain --- fill in the internationalization domain
808
+ */
809
+ static void
810
+ set_stack_entry_domain(ErrorData *edata, const char *domain)
811
+ {
812
+ /* the default text domain is the backend's */
813
+ edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres");
814
+ /* initialize context_domain the same way (see set_errcontext_domain()) */
815
+ edata->context_domain = edata->domain;
816
+ }
817
+
818
+ /*
819
+ * set_stack_entry_location --- fill in code-location details
820
+ *
821
+ * Store the values of __FILE__, __LINE__, and __func__ from the call site.
822
+ * We make an effort to normalize __FILE__, since compilers are inconsistent
823
+ * about how much of the path they'll include, and we'd prefer that the
824
+ * behavior not depend on that (especially, that it not vary with build path).
825
+ */
826
+ static void
827
+ set_stack_entry_location(ErrorData *edata,
828
+ const char *filename, int lineno,
829
+ const char *funcname)
830
+ {
831
+ if (filename)
832
+ {
833
+ const char *slash;
834
+
835
+ /* keep only base name, useful especially for vpath builds */
836
+ slash = strrchr(filename, '/');
837
+ if (slash)
838
+ filename = slash + 1;
839
+ /* Some Windows compilers use backslashes in __FILE__ strings */
840
+ slash = strrchr(filename, '\\');
841
+ if (slash)
842
+ filename = slash + 1;
843
+ }
844
+
845
+ edata->filename = filename;
846
+ edata->lineno = lineno;
847
+ edata->funcname = funcname;
848
+ }
849
+
850
+ /*
851
+ * matches_backtrace_functions --- checks whether the given funcname matches
852
+ * backtrace_functions
853
+ *
854
+ * See check_backtrace_functions.
855
+ */
856
+ static bool
857
+ matches_backtrace_functions(const char *funcname)
858
+ {
859
+ const char *p;
860
+
861
+ if (!backtrace_function_list || funcname == NULL || funcname[0] == '\0')
862
+ return false;
863
+
864
+ p = backtrace_function_list;
865
+ for (;;)
866
+ {
867
+ if (*p == '\0') /* end of backtrace_function_list */
868
+ break;
869
+
870
+ if (strcmp(funcname, p) == 0)
871
+ return true;
872
+ p += strlen(p) + 1;
873
+ }
874
+
875
+ return false;
876
+ }
877
+
878
+
725
879
  /*
726
880
  * errcode --- add SQLSTATE error code to the current error
727
881
  *
@@ -752,8 +906,6 @@ errcode(int sqlerrcode)
752
906
  */
753
907
  #ifdef EROFS
754
908
  #endif
755
- #if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */
756
- #endif
757
909
 
758
910
  /*
759
911
  * errcode_for_socket_access --- add SQLSTATE error code to the current error
@@ -1214,6 +1366,14 @@ geterrcode(void)
1214
1366
  return edata->sqlerrcode;
1215
1367
  }
1216
1368
 
1369
+ /*
1370
+ * geterrlevel --- return the currently set error level
1371
+ *
1372
+ * This is only intended for use in error callback subroutines, since there
1373
+ * is no other place outside elog.c where the concept is meaningful.
1374
+ */
1375
+
1376
+
1217
1377
  /*
1218
1378
  * geterrposition --- return the currently set error position (0 if none)
1219
1379
  *
@@ -1292,6 +1452,14 @@ EmitErrorReport(void)
1292
1452
  CHECK_STACK_DEPTH();
1293
1453
  oldcontext = MemoryContextSwitchTo(edata->assoc_context);
1294
1454
 
1455
+ /*
1456
+ * Reset the formatted timestamp fields before emitting any logs. This
1457
+ * includes all the log destinations and emit_log_hook, as the latter
1458
+ * could use log_line_prefix or the formatted timestamps.
1459
+ */
1460
+ saved_timeval_set = false;
1461
+ formatted_log_time[0] = '\0';
1462
+
1295
1463
  /*
1296
1464
  * Call hook before sending message to log. The hook function is allowed
1297
1465
  * to turn off edata->output_to_server, so we must recheck that afterward.
@@ -1351,7 +1519,21 @@ CopyErrorData(void)
1351
1519
  newedata = (ErrorData *) palloc(sizeof(ErrorData));
1352
1520
  memcpy(newedata, edata, sizeof(ErrorData));
1353
1521
 
1354
- /* Make copies of separately-allocated fields */
1522
+ /*
1523
+ * Make copies of separately-allocated strings. Note that we copy even
1524
+ * theoretically-constant strings such as filename. This is because those
1525
+ * could point into JIT-created code segments that might get unloaded at
1526
+ * transaction cleanup. In some cases we need the copied ErrorData to
1527
+ * survive transaction boundaries, so we'd better copy those strings too.
1528
+ */
1529
+ if (newedata->filename)
1530
+ newedata->filename = pstrdup(newedata->filename);
1531
+ if (newedata->funcname)
1532
+ newedata->funcname = pstrdup(newedata->funcname);
1533
+ if (newedata->domain)
1534
+ newedata->domain = pstrdup(newedata->domain);
1535
+ if (newedata->context_domain)
1536
+ newedata->context_domain = pstrdup(newedata->context_domain);
1355
1537
  if (newedata->message)
1356
1538
  newedata->message = pstrdup(newedata->message);
1357
1539
  if (newedata->detail)
@@ -1364,6 +1546,8 @@ CopyErrorData(void)
1364
1546
  newedata->context = pstrdup(newedata->context);
1365
1547
  if (newedata->backtrace)
1366
1548
  newedata->backtrace = pstrdup(newedata->backtrace);
1549
+ if (newedata->message_id)
1550
+ newedata->message_id = pstrdup(newedata->message_id);
1367
1551
  if (newedata->schema_name)
1368
1552
  newedata->schema_name = pstrdup(newedata->schema_name);
1369
1553
  if (newedata->table_name)
@@ -1391,6 +1575,40 @@ CopyErrorData(void)
1391
1575
  */
1392
1576
 
1393
1577
 
1578
+ /*
1579
+ * FreeErrorDataContents --- free the subsidiary data of an ErrorData.
1580
+ *
1581
+ * This can be used on either an error stack entry or a copied ErrorData.
1582
+ */
1583
+ static void
1584
+ FreeErrorDataContents(ErrorData *edata)
1585
+ {
1586
+ if (edata->message)
1587
+ pfree(edata->message);
1588
+ if (edata->detail)
1589
+ pfree(edata->detail);
1590
+ if (edata->detail_log)
1591
+ pfree(edata->detail_log);
1592
+ if (edata->hint)
1593
+ pfree(edata->hint);
1594
+ if (edata->context)
1595
+ pfree(edata->context);
1596
+ if (edata->backtrace)
1597
+ pfree(edata->backtrace);
1598
+ if (edata->schema_name)
1599
+ pfree(edata->schema_name);
1600
+ if (edata->table_name)
1601
+ pfree(edata->table_name);
1602
+ if (edata->column_name)
1603
+ pfree(edata->column_name);
1604
+ if (edata->datatype_name)
1605
+ pfree(edata->datatype_name);
1606
+ if (edata->constraint_name)
1607
+ pfree(edata->constraint_name);
1608
+ if (edata->internalquery)
1609
+ pfree(edata->internalquery);
1610
+ }
1611
+
1394
1612
  /*
1395
1613
  * FlushErrorState --- flush the error state after error recovery
1396
1614
  *
@@ -1411,7 +1629,7 @@ FlushErrorState(void)
1411
1629
  errordata_stack_depth = -1;
1412
1630
  recursion_depth = 0;
1413
1631
  /* Delete all data in ErrorContext */
1414
- MemoryContextResetAndDeleteChildren(ErrorContext);
1632
+ MemoryContextReset(ErrorContext);
1415
1633
  }
1416
1634
 
1417
1635
  /*
@@ -1479,8 +1697,7 @@ pg_re_throw(void)
1479
1697
  }
1480
1698
 
1481
1699
  /* Doesn't return ... */
1482
- ExceptionalCondition("pg_re_throw tried to return", "FailedAssertion",
1483
- __FILE__, __LINE__);
1700
+ ExceptionalCondition("pg_re_throw tried to return", __FILE__, __LINE__);
1484
1701
  }
1485
1702
 
1486
1703
 
@@ -1504,13 +1721,49 @@ pg_re_throw(void)
1504
1721
 
1505
1722
 
1506
1723
 
1724
+ /*
1725
+ * GUC check_hook for backtrace_functions
1726
+ *
1727
+ * We split the input string, where commas separate function names
1728
+ * and certain whitespace chars are ignored, into a \0-separated (and
1729
+ * \0\0-terminated) list of function names. This formulation allows
1730
+ * easy scanning when an error is thrown while avoiding the use of
1731
+ * non-reentrant strtok(), as well as keeping the output data in a
1732
+ * single palloc() chunk.
1733
+ */
1734
+
1735
+
1736
+ /*
1737
+ * GUC assign_hook for backtrace_functions
1738
+ */
1739
+
1740
+
1741
+ /*
1742
+ * GUC check_hook for log_destination
1743
+ */
1507
1744
  #ifdef HAVE_SYSLOG
1745
+ #endif
1746
+ #ifdef WIN32
1747
+ #endif
1508
1748
 
1509
1749
  /*
1510
- * Set or update the parameters for syslog logging
1750
+ * GUC assign_hook for log_destination
1511
1751
  */
1512
1752
 
1513
1753
 
1754
+ /*
1755
+ * GUC assign_hook for syslog_ident
1756
+ */
1757
+ #ifdef HAVE_SYSLOG
1758
+ #endif
1759
+
1760
+ /*
1761
+ * GUC assign_hook for syslog_facility
1762
+ */
1763
+ #ifdef HAVE_SYSLOG
1764
+ #endif
1765
+
1766
+ #ifdef HAVE_SYSLOG
1514
1767
 
1515
1768
  /*
1516
1769
  * Write a message line to syslog
@@ -1524,108 +1777,12 @@ pg_re_throw(void)
1524
1777
  * interfaces (e.g. CreateFileA()) expect string arguments in this encoding.
1525
1778
  * Every process in a given system will find the same value at all times.
1526
1779
  */
1527
- static int
1528
- GetACPEncoding(void)
1529
- {
1530
- static int encoding = -2;
1531
-
1532
- if (encoding == -2)
1533
- encoding = pg_codepage_to_encoding(GetACP());
1534
1780
 
1535
- return encoding;
1536
- }
1537
1781
 
1538
1782
  /*
1539
1783
  * Write a message line to the windows event log
1540
1784
  */
1541
- static void
1542
- write_eventlog(int level, const char *line, int len)
1543
- {
1544
- WCHAR *utf16;
1545
- int eventlevel = EVENTLOG_ERROR_TYPE;
1546
- static HANDLE evtHandle = INVALID_HANDLE_VALUE;
1547
-
1548
- if (evtHandle == INVALID_HANDLE_VALUE)
1549
- {
1550
- evtHandle = RegisterEventSource(NULL,
1551
- event_source ? event_source : DEFAULT_EVENT_SOURCE);
1552
- if (evtHandle == NULL)
1553
- {
1554
- evtHandle = INVALID_HANDLE_VALUE;
1555
- return;
1556
- }
1557
- }
1558
1785
 
1559
- switch (level)
1560
- {
1561
- case DEBUG5:
1562
- case DEBUG4:
1563
- case DEBUG3:
1564
- case DEBUG2:
1565
- case DEBUG1:
1566
- case LOG:
1567
- case LOG_SERVER_ONLY:
1568
- case INFO:
1569
- case NOTICE:
1570
- eventlevel = EVENTLOG_INFORMATION_TYPE;
1571
- break;
1572
- case WARNING:
1573
- case WARNING_CLIENT_ONLY:
1574
- eventlevel = EVENTLOG_WARNING_TYPE;
1575
- break;
1576
- case ERROR:
1577
- case FATAL:
1578
- case PANIC:
1579
- default:
1580
- eventlevel = EVENTLOG_ERROR_TYPE;
1581
- break;
1582
- }
1583
-
1584
- /*
1585
- * If message character encoding matches the encoding expected by
1586
- * ReportEventA(), call it to avoid the hazards of conversion. Otherwise,
1587
- * try to convert the message to UTF16 and write it with ReportEventW().
1588
- * Fall back on ReportEventA() if conversion failed.
1589
- *
1590
- * Since we palloc the structure required for conversion, also fall
1591
- * through to writing unconverted if we have not yet set up
1592
- * CurrentMemoryContext.
1593
- *
1594
- * Also verify that we are not on our way into error recursion trouble due
1595
- * to error messages thrown deep inside pgwin32_message_to_UTF16().
1596
- */
1597
- if (!in_error_recursion_trouble() &&
1598
- CurrentMemoryContext != NULL &&
1599
- GetMessageEncoding() != GetACPEncoding())
1600
- {
1601
- utf16 = pgwin32_message_to_UTF16(line, len, NULL);
1602
- if (utf16)
1603
- {
1604
- ReportEventW(evtHandle,
1605
- eventlevel,
1606
- 0,
1607
- 0, /* All events are Id 0 */
1608
- NULL,
1609
- 1,
1610
- 0,
1611
- (LPCWSTR *) &utf16,
1612
- NULL);
1613
- /* XXX Try ReportEventA() when ReportEventW() fails? */
1614
-
1615
- pfree(utf16);
1616
- return;
1617
- }
1618
- }
1619
- ReportEventA(evtHandle,
1620
- eventlevel,
1621
- 0,
1622
- 0, /* All events are Id 0 */
1623
- NULL,
1624
- 1,
1625
- 0,
1626
- &line,
1627
- NULL);
1628
- }
1629
1786
  #endif /* WIN32 */
1630
1787
 
1631
1788
  #ifdef WIN32
@@ -1677,7 +1834,12 @@ write_eventlog(int level, const char *line, int len)
1677
1834
 
1678
1835
 
1679
1836
  /*
1680
- * Format tag info for log lines; append to the provided buffer.
1837
+ * Format log status information using Log_line_prefix.
1838
+ */
1839
+
1840
+
1841
+ /*
1842
+ * Format log status info; append to the provided buffer.
1681
1843
  */
1682
1844
 
1683
1845
 
@@ -1765,57 +1927,22 @@ static void send_message_to_frontend(ErrorData *edata) {}
1765
1927
  * not available). Used before ereport/elog can be used
1766
1928
  * safely (memory context, GUC load etc)
1767
1929
  */
1930
+
1768
1931
  void
1769
1932
  write_stderr(const char *fmt,...)
1770
1933
  {
1771
- va_list ap;
1772
-
1773
- #ifdef WIN32
1774
- char errbuf[2048]; /* Arbitrary size? */
1775
- #endif
1776
-
1777
- fmt = _(fmt);
1778
-
1934
+ va_list ap;
1779
1935
  va_start(ap, fmt);
1780
- #ifndef WIN32
1781
- /* On Unix, we just fprintf to stderr */
1782
1936
  vfprintf(stderr, fmt, ap);
1783
1937
  fflush(stderr);
1784
- #else
1785
- vsnprintf(errbuf, sizeof(errbuf), fmt, ap);
1786
-
1787
- /*
1788
- * On Win32, we print to stderr if running on a console, or write to
1789
- * eventlog if running as a service
1790
- */
1791
- if (pgwin32_is_service()) /* Running as a service */
1792
- {
1793
- write_eventlog(ERROR, errbuf, strlen(errbuf));
1794
- }
1795
- else
1796
- {
1797
- /* Not running as service, write to stderr */
1798
- write_console(errbuf, strlen(errbuf));
1799
- fflush(stderr);
1800
- }
1801
- #endif
1802
1938
  va_end(ap);
1803
1939
  }
1804
1940
 
1805
1941
 
1806
- /*
1807
- * Adjust the level of a recovery-related message per trace_recovery_messages.
1808
- *
1809
- * The argument is the default log level of the message, eg, DEBUG2. (This
1810
- * should only be applied to DEBUGn log messages, otherwise it's a no-op.)
1811
- * If the level is >= trace_recovery_messages, we return LOG, causing the
1812
- * message to be logged unconditionally (for most settings of
1813
- * log_min_messages). Otherwise, we return the argument unchanged.
1814
- * The message will then be shown based on the setting of log_min_messages.
1815
- *
1816
- * Intention is to keep this for at least the whole of the 9.0 production
1817
- * release, so we can more easily diagnose production problems in the field.
1818
- * It should go away eventually, though, because it's an ugly and
1819
- * hard-to-explain kluge.
1820
- */
1942
+ #ifdef WIN32
1943
+ __thread volatile int pg_signal_queue;
1821
1944
 
1945
+ __thread int pg_signal_mask;
1946
+
1947
+ void pgwin32_dispatch_queued_signals(void) {}
1948
+ #endif