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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +61 -0
- data/README.md +7 -9
- data/Rakefile +5 -6
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +33 -9
- data/ext/pg_query/include/pg_query.h +28 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +599 -167
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +640 -520
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +6400 -4633
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +433 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1472 -1152
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +154 -124
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1886 -1506
- data/ext/pg_query/include/postgres/access/amapi.h +303 -0
- data/ext/pg_query/include/postgres/access/attmap.h +54 -0
- data/ext/pg_query/include/postgres/access/attnum.h +64 -0
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +62 -0
- data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
- data/ext/pg_query/include/postgres/access/detoast.h +82 -0
- data/ext/pg_query/include/postgres/access/genam.h +246 -0
- data/ext/pg_query/include/postgres/access/gin.h +91 -0
- data/ext/pg_query/include/postgres/access/htup.h +89 -0
- data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
- data/ext/pg_query/include/postgres/access/itup.h +170 -0
- data/ext/pg_query/include/postgres/access/parallel.h +81 -0
- data/ext/pg_query/include/postgres/access/printtup.h +35 -0
- data/ext/pg_query/include/postgres/access/relation.h +28 -0
- data/ext/pg_query/include/postgres/access/relscan.h +191 -0
- data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/postgres/access/sdir.h +67 -0
- data/ext/pg_query/include/postgres/access/skey.h +151 -0
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
- data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
- data/ext/pg_query/include/postgres/access/table.h +28 -0
- data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/postgres/access/transam.h +418 -0
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
- data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
- data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
- data/ext/pg_query/include/postgres/access/twophase.h +65 -0
- data/ext/pg_query/include/postgres/access/xact.h +530 -0
- data/ext/pg_query/include/postgres/access/xlog.h +310 -0
- data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
- data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
- data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
- data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
- data/ext/pg_query/include/postgres/c.h +1374 -0
- data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
- data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
- data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
- data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
- data/ext/pg_query/include/postgres/catalog/index.h +218 -0
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
- data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
- data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
- data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
- data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +49 -0
- data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
- data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
- data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
- data/ext/pg_query/include/postgres/commands/explain.h +145 -0
- data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
- data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
- data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
- data/ext/pg_query/include/postgres/commands/user.h +43 -0
- data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +512 -0
- data/ext/pg_query/include/postgres/common/keywords.h +29 -0
- data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
- data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
- data/ext/pg_query/include/postgres/common/relpath.h +97 -0
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
- data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
- data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
- data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
- data/ext/pg_query/include/postgres/executor/executor.h +681 -0
- data/ext/pg_query/include/postgres/executor/functions.h +56 -0
- data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
- data/ext/pg_query/include/postgres/executor/spi.h +207 -0
- data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
- data/ext/pg_query/include/postgres/fmgr.h +800 -0
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/postgres/funcapi.h +360 -0
- data/ext/pg_query/include/postgres/gram.h +1168 -0
- data/ext/pg_query/include/postgres/gramparse.h +75 -0
- data/ext/pg_query/include/postgres/jit/jit.h +106 -0
- data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
- data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
- data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
- data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
- data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
- data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
- data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
- data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
- data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
- data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/postgres/miscadmin.h +527 -0
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
- data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
- data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
- data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
- data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
- data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
- data/ext/pg_query/include/postgres/nodes/params.h +170 -0
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
- data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
- data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
- data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
- data/ext/pg_query/include/postgres/nodes/print.h +34 -0
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
- data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
- data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
- data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
- data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
- data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
- data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
- data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
- data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
- data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
- data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
- data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
- data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
- data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
- data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/postgres/pg_config.h +985 -0
- data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
- data/ext/pg_query/include/postgres/pg_trace.h +17 -0
- data/ext/pg_query/include/postgres/pgstat.h +780 -0
- data/ext/pg_query/include/postgres/pgtime.h +94 -0
- data/ext/pg_query/include/postgres/pl_gram.h +385 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
- data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
- data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
- data/ext/pg_query/include/postgres/port/atomics.h +606 -0
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
- data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +422 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
- data/ext/pg_query/include/postgres/port.h +555 -0
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
- data/ext/pg_query/include/postgres/regex/regex.h +272 -0
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
- data/ext/pg_query/include/postgres/replication/origin.h +73 -0
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
- data/ext/pg_query/include/postgres/replication/slot.h +289 -0
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
- data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
- data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/postgres/storage/block.h +108 -0
- data/ext/pg_query/include/postgres/storage/buf.h +46 -0
- data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
- data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
- data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
- data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
- data/ext/pg_query/include/postgres/storage/fd.h +219 -0
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
- data/ext/pg_query/include/postgres/storage/item.h +19 -0
- data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
- data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
- data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
- data/ext/pg_query/include/postgres/storage/latch.h +196 -0
- data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
- data/ext/pg_query/include/postgres/storage/lock.h +624 -0
- data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
- data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
- data/ext/pg_query/include/postgres/storage/off.h +57 -0
- data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
- data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
- data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
- data/ext/pg_query/include/postgres/storage/proc.h +488 -0
- data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
- data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
- data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
- data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
- data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
- data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
- data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
- data/ext/pg_query/include/postgres/storage/spin.h +77 -0
- data/ext/pg_query/include/postgres/storage/standby.h +109 -0
- data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/postgres/storage/sync.h +66 -0
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
- data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
- data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
- data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
- data/ext/pg_query/include/postgres/utils/acl.h +290 -0
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/postgres/utils/array.h +481 -0
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
- data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
- data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
- data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
- data/ext/pg_query/include/postgres/utils/date.h +118 -0
- data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
- data/ext/pg_query/include/postgres/utils/datum.h +76 -0
- data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
- data/ext/pg_query/include/postgres/utils/elog.h +540 -0
- data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
- data/ext/pg_query/include/postgres/utils/float.h +357 -0
- data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
- data/ext/pg_query/include/postgres/utils/guc.h +456 -0
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
- data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
- data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +68 -0
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
- data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
- data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
- data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
- data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
- data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
- data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
- data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
- data/ext/pg_query/include/postgres/utils/portal.h +252 -0
- data/ext/pg_query/include/postgres/utils/probes.h +114 -0
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/postgres/utils/rel.h +711 -0
- data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
- data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
- data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
- data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
- data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
- data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
- data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
- data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
- data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
- data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
- data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
- data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
- data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +94 -0
- data/ext/pg_query/include/postgres/varatt.h +358 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7723 -6368
- data/ext/pg_query/include/protobuf/pg_query.pb.h +120022 -87031
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +22595 -17738
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +43 -2
- data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_scan.c +2 -2
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11496 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +243 -63
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +140 -156
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +16 -8
- data/ext/pg_query/src_backend_nodes_makefuncs.c +134 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +391 -133
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +43710 -39953
- data/ext/pg_query/src_backend_parser_parser.c +34 -8
- data/ext/pg_query/src_backend_parser_scan.c +6971 -3373
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +99 -96
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +177 -30
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +397 -270
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +36 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +20 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +31 -84
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +704 -497
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +637 -233
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
- data/ext/pg_query/src_common_encnames.c +46 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +586 -517
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +21 -4
- data/ext/pg_query/src_common_wchar.c +100 -116
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +829 -763
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +251 -32
- data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
- data/ext/pg_query/src_port_snprintf.c +20 -27
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +5 -8
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +6 -8
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +173 -3196
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +52 -11
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +443 -442
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -290
- data/ext/pg_query/include/access/attmap.h +0 -52
- data/ext/pg_query/include/access/attnum.h +0 -64
- data/ext/pg_query/include/access/clog.h +0 -63
- data/ext/pg_query/include/access/commit_ts.h +0 -74
- data/ext/pg_query/include/access/detoast.h +0 -82
- data/ext/pg_query/include/access/genam.h +0 -231
- data/ext/pg_query/include/access/gin.h +0 -78
- data/ext/pg_query/include/access/htup.h +0 -89
- data/ext/pg_query/include/access/htup_details.h +0 -807
- data/ext/pg_query/include/access/itup.h +0 -167
- data/ext/pg_query/include/access/parallel.h +0 -82
- data/ext/pg_query/include/access/printtup.h +0 -35
- data/ext/pg_query/include/access/relation.h +0 -28
- data/ext/pg_query/include/access/relscan.h +0 -191
- data/ext/pg_query/include/access/rmgrlist.h +0 -49
- data/ext/pg_query/include/access/sdir.h +0 -58
- data/ext/pg_query/include/access/skey.h +0 -151
- data/ext/pg_query/include/access/stratnum.h +0 -85
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -28
- data/ext/pg_query/include/access/tableam.h +0 -2077
- data/ext/pg_query/include/access/toast_compression.h +0 -73
- data/ext/pg_query/include/access/transam.h +0 -375
- data/ext/pg_query/include/access/tupconvert.h +0 -51
- data/ext/pg_query/include/access/tupdesc.h +0 -154
- data/ext/pg_query/include/access/tupmacs.h +0 -247
- data/ext/pg_query/include/access/twophase.h +0 -65
- data/ext/pg_query/include/access/xact.h +0 -523
- data/ext/pg_query/include/access/xlog.h +0 -303
- data/ext/pg_query/include/access/xlog_internal.h +0 -366
- data/ext/pg_query/include/access/xlogdefs.h +0 -101
- data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
- data/ext/pg_query/include/access/xlogreader.h +0 -443
- data/ext/pg_query/include/access/xlogrecord.h +0 -236
- data/ext/pg_query/include/access/xlogrecovery.h +0 -157
- data/ext/pg_query/include/c.h +0 -1391
- data/ext/pg_query/include/catalog/catalog.h +0 -44
- data/ext/pg_query/include/catalog/catversion.h +0 -58
- data/ext/pg_query/include/catalog/dependency.h +0 -269
- data/ext/pg_query/include/catalog/genbki.h +0 -142
- data/ext/pg_query/include/catalog/index.h +0 -214
- data/ext/pg_query/include/catalog/indexing.h +0 -54
- data/ext/pg_query/include/catalog/namespace.h +0 -190
- data/ext/pg_query/include/catalog/objectaccess.h +0 -265
- data/ext/pg_query/include/catalog/objectaddress.h +0 -89
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
- data/ext/pg_query/include/catalog/pg_am.h +0 -63
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -221
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
- data/ext/pg_query/include/catalog/pg_authid.h +0 -63
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -57
- data/ext/pg_query/include/catalog/pg_class.h +0 -230
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
- data/ext/pg_query/include/catalog/pg_collation.h +0 -98
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -62
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
- data/ext/pg_query/include/catalog/pg_control.h +0 -250
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
- data/ext/pg_query/include/catalog/pg_depend.h +0 -77
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_index.h +0 -90
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_language.h +0 -72
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
- data/ext/pg_query/include/catalog/pg_operator.h +0 -107
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -63
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_proc.h +0 -220
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
- data/ext/pg_query/include/catalog/pg_publication.h +0 -161
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform.h +0 -48
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_type.h +0 -404
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
- data/ext/pg_query/include/catalog/storage.h +0 -50
- data/ext/pg_query/include/commands/async.h +0 -53
- data/ext/pg_query/include/commands/dbcommands.h +0 -36
- data/ext/pg_query/include/commands/defrem.h +0 -160
- data/ext/pg_query/include/commands/event_trigger.h +0 -88
- data/ext/pg_query/include/commands/explain.h +0 -127
- data/ext/pg_query/include/commands/prepare.h +0 -61
- data/ext/pg_query/include/commands/tablespace.h +0 -69
- data/ext/pg_query/include/commands/trigger.h +0 -287
- data/ext/pg_query/include/commands/user.h +0 -37
- data/ext/pg_query/include/commands/vacuum.h +0 -340
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/file_perm.h +0 -56
- data/ext/pg_query/include/common/hashfn.h +0 -104
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/common/keywords.h +0 -29
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/pg_prng.h +0 -60
- data/ext/pg_query/include/common/relpath.h +0 -90
- data/ext/pg_query/include/common/string.h +0 -42
- data/ext/pg_query/include/common/unicode_combining_table.h +0 -308
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
- data/ext/pg_query/include/datatype/timestamp.h +0 -236
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -663
- data/ext/pg_query/include/executor/functions.h +0 -55
- data/ext/pg_query/include/executor/instrument.h +0 -118
- data/ext/pg_query/include/executor/spi.h +0 -213
- data/ext/pg_query/include/executor/tablefunc.h +0 -67
- data/ext/pg_query/include/executor/tuptable.h +0 -487
- data/ext/pg_query/include/fmgr.h +0 -781
- data/ext/pg_query/include/funcapi.h +0 -360
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/jit/jit.h +0 -105
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/lib/dshash.h +0 -112
- data/ext/pg_query/include/lib/ilist.h +0 -746
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1184
- data/ext/pg_query/include/lib/sort_template.h +0 -432
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -31
- data/ext/pg_query/include/libpq/crypt.h +0 -47
- data/ext/pg_query/include/libpq/hba.h +0 -179
- data/ext/pg_query/include/libpq/libpq-be.h +0 -343
- data/ext/pg_query/include/libpq/libpq.h +0 -144
- data/ext/pg_query/include/libpq/pqcomm.h +0 -194
- data/ext/pg_query/include/libpq/pqformat.h +0 -210
- data/ext/pg_query/include/libpq/pqsignal.h +0 -42
- data/ext/pg_query/include/mb/pg_wchar.h +0 -755
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -495
- data/ext/pg_query/include/nodes/bitmapset.h +0 -122
- data/ext/pg_query/include/nodes/execnodes.h +0 -2715
- data/ext/pg_query/include/nodes/extensible.h +0 -162
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -109
- data/ext/pg_query/include/nodes/memnodes.h +0 -110
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
- data/ext/pg_query/include/nodes/nodes.h +0 -861
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -3812
- data/ext/pg_query/include/nodes/pathnodes.h +0 -2734
- data/ext/pg_query/include/nodes/pg_list.h +0 -612
- data/ext/pg_query/include/nodes/plannodes.h +0 -1349
- data/ext/pg_query/include/nodes/primnodes.h +0 -1593
- data/ext/pg_query/include/nodes/print.h +0 -34
- data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
- data/ext/pg_query/include/nodes/value.h +0 -80
- data/ext/pg_query/include/optimizer/cost.h +0 -213
- data/ext/pg_query/include/optimizer/geqo.h +0 -90
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -202
- data/ext/pg_query/include/optimizer/paths.h +0 -257
- data/ext/pg_query/include/optimizer/planmain.h +0 -120
- data/ext/pg_query/include/parser/analyze.h +0 -63
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/parser/gramparse.h +0 -75
- data/ext/pg_query/include/parser/kwlist.h +0 -487
- data/ext/pg_query/include/parser/parse_agg.h +0 -63
- data/ext/pg_query/include/parser/parse_coerce.h +0 -100
- data/ext/pg_query/include/parser/parse_expr.h +0 -25
- data/ext/pg_query/include/parser/parse_func.h +0 -74
- data/ext/pg_query/include/parser/parse_node.h +0 -339
- data/ext/pg_query/include/parser/parse_oper.h +0 -65
- data/ext/pg_query/include/parser/parse_relation.h +0 -124
- data/ext/pg_query/include/parser/parse_type.h +0 -60
- data/ext/pg_query/include/parser/parser.h +0 -68
- data/ext/pg_query/include/parser/parsetree.h +0 -61
- data/ext/pg_query/include/parser/scanner.h +0 -152
- data/ext/pg_query/include/parser/scansup.h +0 -27
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -1037
- data/ext/pg_query/include/pg_config_manual.h +0 -410
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pg_getopt.h +0 -56
- data/ext/pg_query/include/pg_trace.h +0 -17
- data/ext/pg_query/include/pgstat.h +0 -699
- data/ext/pg_query/include/pgtime.h +0 -94
- data/ext/pg_query/include/pl_gram.h +0 -383
- data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
- data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -111
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -244
- data/ext/pg_query/include/plerrcodes.h +0 -998
- data/ext/pg_query/include/plpgsql.h +0 -1345
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
- data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
- data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
- data/ext/pg_query/include/port/atomics/fallback.h +0 -170
- data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
- data/ext/pg_query/include/port/atomics/generic.h +0 -401
- data/ext/pg_query/include/port/atomics.h +0 -524
- data/ext/pg_query/include/port/pg_bitutils.h +0 -302
- data/ext/pg_query/include/port/pg_bswap.h +0 -161
- data/ext/pg_query/include/port/pg_crc32c.h +0 -101
- data/ext/pg_query/include/port.h +0 -553
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postgres.h +0 -808
- data/ext/pg_query/include/postgres_ext.h +0 -74
- data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/bgworker.h +0 -162
- data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
- data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/interrupt.h +0 -32
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/postmaster/postmaster.h +0 -78
- data/ext/pg_query/include/postmaster/startup.h +0 -39
- data/ext/pg_query/include/postmaster/syslogger.h +0 -103
- data/ext/pg_query/include/postmaster/walwriter.h +0 -21
- data/ext/pg_query/include/regex/regex.h +0 -186
- data/ext/pg_query/include/replication/logicallauncher.h +0 -29
- data/ext/pg_query/include/replication/logicalproto.h +0 -254
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/origin.h +0 -73
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -685
- data/ext/pg_query/include/replication/slot.h +0 -230
- data/ext/pg_query/include/replication/syncrep.h +0 -115
- data/ext/pg_query/include/replication/walreceiver.h +0 -472
- data/ext/pg_query/include/replication/walsender.h +0 -74
- data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
- data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -38
- data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
- data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
- data/ext/pg_query/include/storage/backendid.h +0 -37
- data/ext/pg_query/include/storage/block.h +0 -115
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -297
- data/ext/pg_query/include/storage/bufpage.h +0 -457
- data/ext/pg_query/include/storage/condition_variable.h +0 -73
- data/ext/pg_query/include/storage/dsm.h +0 -64
- data/ext/pg_query/include/storage/dsm_impl.h +0 -76
- data/ext/pg_query/include/storage/fd.h +0 -198
- data/ext/pg_query/include/storage/fileset.h +0 -40
- data/ext/pg_query/include/storage/ipc.h +0 -84
- data/ext/pg_query/include/storage/item.h +0 -19
- data/ext/pg_query/include/storage/itemid.h +0 -184
- data/ext/pg_query/include/storage/itemptr.h +0 -208
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -186
- data/ext/pg_query/include/storage/lmgr.h +0 -115
- data/ext/pg_query/include/storage/lock.h +0 -616
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -206
- data/ext/pg_query/include/storage/lwlocknames.h +0 -50
- data/ext/pg_query/include/storage/off.h +0 -57
- data/ext/pg_query/include/storage/pg_sema.h +0 -61
- data/ext/pg_query/include/storage/pg_shmem.h +0 -92
- data/ext/pg_query/include/storage/pmsignal.h +0 -105
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -461
- data/ext/pg_query/include/storage/procarray.h +0 -98
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -71
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -1110
- data/ext/pg_query/include/storage/sharedfileset.h +0 -37
- data/ext/pg_query/include/storage/shm_mq.h +0 -86
- data/ext/pg_query/include/storage/shm_toc.h +0 -58
- data/ext/pg_query/include/storage/shmem.h +0 -81
- data/ext/pg_query/include/storage/sinval.h +0 -153
- data/ext/pg_query/include/storage/sinvaladt.h +0 -43
- data/ext/pg_query/include/storage/smgr.h +0 -111
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -98
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -66
- data/ext/pg_query/include/tcop/cmdtag.h +0 -58
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
- data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
- data/ext/pg_query/include/tcop/dest.h +0 -149
- data/ext/pg_query/include/tcop/fastpath.h +0 -20
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -97
- data/ext/pg_query/include/tcop/utility.h +0 -112
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
- data/ext/pg_query/include/utils/acl.h +0 -333
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -464
- data/ext/pg_query/include/utils/backend_progress.h +0 -44
- data/ext/pg_query/include/utils/backend_status.h +0 -321
- data/ext/pg_query/include/utils/builtins.h +0 -127
- data/ext/pg_query/include/utils/bytea.h +0 -28
- data/ext/pg_query/include/utils/catcache.h +0 -231
- data/ext/pg_query/include/utils/date.h +0 -90
- data/ext/pg_query/include/utils/datetime.h +0 -344
- data/ext/pg_query/include/utils/datum.h +0 -76
- data/ext/pg_query/include/utils/dsa.h +0 -123
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/elog.h +0 -470
- data/ext/pg_query/include/utils/errcodes.h +0 -354
- data/ext/pg_query/include/utils/expandeddatum.h +0 -159
- data/ext/pg_query/include/utils/expandedrecord.h +0 -231
- data/ext/pg_query/include/utils/float.h +0 -356
- data/ext/pg_query/include/utils/fmgroids.h +0 -3261
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2829
- data/ext/pg_query/include/utils/fmgrtab.h +0 -49
- data/ext/pg_query/include/utils/guc.h +0 -469
- data/ext/pg_query/include/utils/guc_tables.h +0 -276
- data/ext/pg_query/include/utils/hsearch.h +0 -153
- data/ext/pg_query/include/utils/inval.h +0 -68
- data/ext/pg_query/include/utils/lsyscache.h +0 -208
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -230
- data/ext/pg_query/include/utils/numeric.h +0 -90
- data/ext/pg_query/include/utils/palloc.h +0 -158
- data/ext/pg_query/include/utils/partcache.h +0 -102
- data/ext/pg_query/include/utils/pg_locale.h +0 -127
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pgstat_internal.h +0 -784
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/plancache.h +0 -236
- data/ext/pg_query/include/utils/portal.h +0 -252
- data/ext/pg_query/include/utils/probes.h +0 -114
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/queryenvironment.h +0 -74
- data/ext/pg_query/include/utils/queryjumble.h +0 -88
- data/ext/pg_query/include/utils/regproc.h +0 -39
- data/ext/pg_query/include/utils/rel.h +0 -695
- data/ext/pg_query/include/utils/relcache.h +0 -153
- data/ext/pg_query/include/utils/reltrigger.h +0 -81
- data/ext/pg_query/include/utils/resowner.h +0 -86
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/ruleutils.h +0 -47
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -179
- data/ext/pg_query/include/utils/snapshot.h +0 -219
- data/ext/pg_query/include/utils/sortsupport.h +0 -391
- data/ext/pg_query/include/utils/syscache.h +0 -224
- data/ext/pg_query/include/utils/timeout.h +0 -95
- data/ext/pg_query/include/utils/timestamp.h +0 -117
- data/ext/pg_query/include/utils/tuplesort.h +0 -291
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -209
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/include/utils/varlena.h +0 -41
- data/ext/pg_query/include/utils/wait_event.h +0 -289
- data/ext/pg_query/include/utils/xml.h +0 -84
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /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-
|
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/
|
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
|
-
*
|
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 *
|
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
|
-
|
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 =
|
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
|
-
|
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
|
-
|
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
|
-
|
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(
|
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(
|
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
|
-
/*
|
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
|
-
|
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",
|
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
|
-
*
|
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
|
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
|
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
|
-
|
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
|