pg_query 2.2.0 → 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 +86 -0
- data/README.md +57 -31
- 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 +30 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +839 -290
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +638 -481
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +6786 -4193
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +450 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1489 -1044
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +157 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1933 -1410
- 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/rmgr.h +62 -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 +8077 -6217
- data/ext/pg_query/include/protobuf/pg_query.pb.h +132024 -88124
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +24028 -17173
- data/ext/pg_query/pg_query_deparse.c +1 -9902
- data/ext/pg_query/pg_query_fingerprint.c +42 -18
- 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 -25
- data/ext/pg_query/pg_query_normalize.c +44 -3
- data/ext/pg_query/pg_query_outfuncs_json.c +62 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- 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 +45 -10
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_scan.c +4 -3
- data/ext/pg_query/pg_query_split.c +6 -5
- 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 +262 -71
- data/ext/pg_query/src_backend_catalog_pg_proc.c +3 -2
- data/ext/pg_query/src_backend_commands_define.c +12 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +142 -156
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +100 -5881
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3831
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +89 -18
- data/ext/pg_query/src_backend_nodes_makefuncs.c +138 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +433 -132
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +45255 -38885
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +6999 -3438
- data/ext/pg_query/src_backend_parser_scansup.c +5 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +156 -114
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +14 -2
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +247 -34
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +543 -343
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +47 -18
- data/ext/pg_query/src_backend_utils_init_globals.c +22 -7
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +84 -148
- 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 +708 -499
- 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 +710 -218
- 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 +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +602 -510
- 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 +754 -178
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +143 -24
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1295 -1255
- 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 +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +20 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +283 -54
- data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +56 -39
- data/ext/pg_query/src_port_strerror.c +9 -21
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +10 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +3 -3
- data/lib/pg_query/parse.rb +25 -15
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +181 -3038
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +55 -8
- data/lib/pg_query/truncate.rb +19 -21
- data/lib/pg_query/version.rb +1 -1
- metadata +447 -436
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -246
- 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 -61
- data/ext/pg_query/include/access/commit_ts.h +0 -77
- data/ext/pg_query/include/access/detoast.h +0 -92
- data/ext/pg_query/include/access/genam.h +0 -228
- 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 -819
- data/ext/pg_query/include/access/itup.h +0 -161
- 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 -176
- data/ext/pg_query/include/access/rmgr.h +0 -35
- 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 -83
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -27
- data/ext/pg_query/include/access/tableam.h +0 -1825
- data/ext/pg_query/include/access/transam.h +0 -265
- 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 -63
- data/ext/pg_query/include/access/xact.h +0 -469
- data/ext/pg_query/include/access/xlog.h +0 -398
- data/ext/pg_query/include/access/xlog_internal.h +0 -339
- data/ext/pg_query/include/access/xlogdefs.h +0 -109
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/access/xlogreader.h +0 -337
- data/ext/pg_query/include/access/xlogrecord.h +0 -227
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/c.h +0 -1334
- data/ext/pg_query/include/catalog/catalog.h +0 -42
- data/ext/pg_query/include/catalog/catversion.h +0 -58
- data/ext/pg_query/include/catalog/dependency.h +0 -277
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/index.h +0 -199
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/catalog/namespace.h +0 -188
- data/ext/pg_query/include/catalog/objectaccess.h +0 -197
- data/ext/pg_query/include/catalog/objectaddress.h +0 -84
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -176
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -77
- data/ext/pg_query/include/catalog/pg_am.h +0 -60
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -204
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_authid.h +0 -58
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_class.h +0 -200
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -103
- data/ext/pg_query/include/catalog/pg_collation.h +0 -73
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -247
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -67
- data/ext/pg_query/include/catalog/pg_control.h +0 -252
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -72
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_depend.h +0 -73
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -51
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_index.h +0 -80
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -56
- data/ext/pg_query/include/catalog/pg_language.h +0 -67
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -39
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -59
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -85
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_operator.h +0 -104
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -60
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -63
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_proc.h +0 -211
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -99
- data/ext/pg_query/include/catalog/pg_publication.h +0 -118
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -57
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -29
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -275
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -194
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -74
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -40
- data/ext/pg_query/include/catalog/pg_transform.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -137
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -50
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -54
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -57
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -48
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_type.h +0 -373
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -285
- data/ext/pg_query/include/catalog/storage.h +0 -48
- data/ext/pg_query/include/commands/async.h +0 -54
- data/ext/pg_query/include/commands/dbcommands.h +0 -35
- data/ext/pg_query/include/commands/defrem.h +0 -173
- 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 -285
- data/ext/pg_query/include/commands/user.h +0 -37
- data/ext/pg_query/include/commands/vacuum.h +0 -293
- 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 -37
- data/ext/pg_query/include/common/keywords.h +0 -33
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/relpath.h +0 -90
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/common/unicode_combining_table.h +0 -196
- data/ext/pg_query/include/datatype/timestamp.h +0 -197
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -620
- data/ext/pg_query/include/executor/functions.h +0 -41
- data/ext/pg_query/include/executor/instrument.h +0 -101
- data/ext/pg_query/include/executor/spi.h +0 -175
- 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 -775
- data/ext/pg_query/include/funcapi.h +0 -348
- 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 -1072
- data/ext/pg_query/include/lib/ilist.h +0 -727
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1059
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -29
- data/ext/pg_query/include/libpq/crypt.h +0 -46
- data/ext/pg_query/include/libpq/hba.h +0 -140
- data/ext/pg_query/include/libpq/libpq-be.h +0 -326
- data/ext/pg_query/include/libpq/libpq.h +0 -134
- data/ext/pg_query/include/libpq/pqcomm.h +0 -208
- 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 -673
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -489
- data/ext/pg_query/include/nodes/bitmapset.h +0 -122
- data/ext/pg_query/include/nodes/execnodes.h +0 -2523
- data/ext/pg_query/include/nodes/extensible.h +0 -160
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -108
- data/ext/pg_query/include/nodes/memnodes.h +0 -108
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
- data/ext/pg_query/include/nodes/nodes.h +0 -842
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -3580
- data/ext/pg_query/include/nodes/pathnodes.h +0 -2557
- data/ext/pg_query/include/nodes/pg_list.h +0 -606
- data/ext/pg_query/include/nodes/plannodes.h +0 -1266
- data/ext/pg_query/include/nodes/primnodes.h +0 -1541
- 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 -61
- data/ext/pg_query/include/optimizer/cost.h +0 -206
- data/ext/pg_query/include/optimizer/geqo.h +0 -88
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -194
- data/ext/pg_query/include/optimizer/paths.h +0 -257
- data/ext/pg_query/include/optimizer/planmain.h +0 -119
- data/ext/pg_query/include/parser/analyze.h +0 -49
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/gramparse.h +0 -75
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_agg.h +0 -68
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_coerce.h +0 -98
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_expr.h +0 -26
- data/ext/pg_query/include/parser/parse_func.h +0 -73
- data/ext/pg_query/include/parser/parse_node.h +0 -327
- data/ext/pg_query/include/parser/parse_oper.h +0 -67
- data/ext/pg_query/include/parser/parse_relation.h +0 -123
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parse_type.h +0 -60
- data/ext/pg_query/include/parser/parser.h +0 -41
- 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 -30
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -995
- data/ext/pg_query/include/pg_config_manual.h +0 -357
- 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 -1488
- data/ext/pg_query/include/pgtime.h +0 -84
- data/ext/pg_query/include/pl_gram.h +0 -385
- 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 -112
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
- data/ext/pg_query/include/plerrcodes.h +0 -990
- data/ext/pg_query/include/plpgsql.h +0 -1347
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -26
- 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 -272
- 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 -528
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postgres.h +0 -764
- 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/bgworker.h +0 -161
- 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 -39
- data/ext/pg_query/include/postmaster/postmaster.h +0 -77
- data/ext/pg_query/include/postmaster/syslogger.h +0 -98
- data/ext/pg_query/include/postmaster/walwriter.h +0 -21
- data/ext/pg_query/include/regex/regex.h +0 -184
- data/ext/pg_query/include/replication/logicallauncher.h +0 -31
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- 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 -468
- data/ext/pg_query/include/replication/slot.h +0 -219
- data/ext/pg_query/include/replication/syncrep.h +0 -115
- data/ext/pg_query/include/replication/walreceiver.h +0 -340
- 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 -40
- 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 -121
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -292
- data/ext/pg_query/include/storage/bufpage.h +0 -459
- data/ext/pg_query/include/storage/condition_variable.h +0 -62
- data/ext/pg_query/include/storage/dsm.h +0 -61
- data/ext/pg_query/include/storage/dsm_impl.h +0 -75
- data/ext/pg_query/include/storage/fd.h +0 -168
- data/ext/pg_query/include/storage/ipc.h +0 -81
- 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 -206
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -190
- data/ext/pg_query/include/storage/lmgr.h +0 -114
- data/ext/pg_query/include/storage/lock.h +0 -613
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -233
- data/ext/pg_query/include/storage/lwlocknames.h +0 -51
- 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 -90
- data/ext/pg_query/include/storage/pmsignal.h +0 -94
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -347
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -75
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -1071
- data/ext/pg_query/include/storage/sharedfileset.h +0 -45
- data/ext/pg_query/include/storage/shm_mq.h +0 -85
- 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 -109
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -91
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -62
- data/ext/pg_query/include/tcop/cmdtag.h +0 -58
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -217
- 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 -21
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -89
- data/ext/pg_query/include/tcop/utility.h +0 -108
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
- data/ext/pg_query/include/utils/acl.h +0 -312
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -459
- data/ext/pg_query/include/utils/builtins.h +0 -128
- data/ext/pg_query/include/utils/bytea.h +0 -27
- 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 -343
- data/ext/pg_query/include/utils/datum.h +0 -68
- data/ext/pg_query/include/utils/dsa.h +0 -123
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/elog.h +0 -439
- data/ext/pg_query/include/utils/errcodes.h +0 -352
- 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 -2657
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2646
- data/ext/pg_query/include/utils/fmgrtab.h +0 -48
- data/ext/pg_query/include/utils/guc.h +0 -443
- data/ext/pg_query/include/utils/guc_tables.h +0 -272
- data/ext/pg_query/include/utils/hsearch.h +0 -149
- data/ext/pg_query/include/utils/inval.h +0 -65
- data/ext/pg_query/include/utils/lsyscache.h +0 -198
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -225
- data/ext/pg_query/include/utils/numeric.h +0 -76
- data/ext/pg_query/include/utils/palloc.h +0 -136
- data/ext/pg_query/include/utils/partcache.h +0 -102
- data/ext/pg_query/include/utils/pg_locale.h +0 -119
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/plancache.h +0 -235
- data/ext/pg_query/include/utils/portal.h +0 -254
- 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/regproc.h +0 -28
- data/ext/pg_query/include/utils/rel.h +0 -643
- data/ext/pg_query/include/utils/relcache.h +0 -150
- 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 -44
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -159
- data/ext/pg_query/include/utils/snapshot.h +0 -206
- data/ext/pg_query/include/utils/sortsupport.h +0 -276
- data/ext/pg_query/include/utils/syscache.h +0 -219
- data/ext/pg_query/include/utils/timeout.h +0 -88
- data/ext/pg_query/include/utils/timestamp.h +0 -116
- data/ext/pg_query/include/utils/tuplesort.h +0 -277
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -202
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/include/utils/varlena.h +0 -39
- data/ext/pg_query/include/utils/xml.h +0 -84
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1832
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- 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/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -1,28 +1,42 @@
|
|
1
1
|
/*--------------------------------------------------------------------
|
2
2
|
* Symbols referenced in this file:
|
3
|
+
* - errstart_cold
|
3
4
|
* - errstart
|
4
5
|
* - PG_exception_stack
|
5
6
|
* - write_stderr
|
6
|
-
* - err_gettext
|
7
7
|
* - in_error_recursion_trouble
|
8
8
|
* - error_context_stack
|
9
9
|
* - errordata_stack_depth
|
10
10
|
* - errordata
|
11
|
+
* - should_output_to_server
|
11
12
|
* - is_log_level_output
|
13
|
+
* - should_output_to_client
|
12
14
|
* - recursion_depth
|
15
|
+
* - get_error_stack_entry
|
16
|
+
* - set_stack_entry_domain
|
13
17
|
* - errmsg_internal
|
14
18
|
* - errcode
|
15
19
|
* - errmsg
|
16
20
|
* - errdetail
|
21
|
+
* - errhidestmt
|
22
|
+
* - errhidecontext
|
17
23
|
* - errfinish
|
18
24
|
* - pg_re_throw
|
19
25
|
* - EmitErrorReport
|
20
26
|
* - emit_log_hook
|
27
|
+
* - saved_timeval_set
|
28
|
+
* - formatted_log_time
|
21
29
|
* - send_message_to_server_log
|
22
30
|
* - send_message_to_frontend
|
31
|
+
* - pgwin32_dispatch_queued_signals
|
32
|
+
* - set_stack_entry_location
|
23
33
|
* - matches_backtrace_functions
|
34
|
+
* - backtrace_function_list
|
24
35
|
* - set_backtrace
|
36
|
+
* - FreeErrorDataContents
|
25
37
|
* - geterrcode
|
38
|
+
* - errsave_start
|
39
|
+
* - errsave_finish
|
26
40
|
* - errhint
|
27
41
|
* - errposition
|
28
42
|
* - internalerrposition
|
@@ -33,6 +47,9 @@
|
|
33
47
|
* - errcontext_msg
|
34
48
|
* - CopyErrorData
|
35
49
|
* - FlushErrorState
|
50
|
+
* - pg_signal_queue
|
51
|
+
* - pg_signal_mask
|
52
|
+
* - pgwin32_dispatch_queued_signals
|
36
53
|
*--------------------------------------------------------------------
|
37
54
|
*/
|
38
55
|
|
@@ -81,7 +98,7 @@
|
|
81
98
|
* overflow.)
|
82
99
|
*
|
83
100
|
*
|
84
|
-
* Portions Copyright (c) 1996-
|
101
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
85
102
|
* Portions Copyright (c) 1994, Regents of the University of California
|
86
103
|
*
|
87
104
|
*
|
@@ -104,21 +121,23 @@
|
|
104
121
|
#include <execinfo.h>
|
105
122
|
#endif
|
106
123
|
|
107
|
-
#include "access/transam.h"
|
108
124
|
#include "access/xact.h"
|
109
125
|
#include "libpq/libpq.h"
|
110
126
|
#include "libpq/pqformat.h"
|
111
127
|
#include "mb/pg_wchar.h"
|
112
128
|
#include "miscadmin.h"
|
129
|
+
#include "nodes/miscnodes.h"
|
130
|
+
#include "pgstat.h"
|
113
131
|
#include "postmaster/bgworker.h"
|
114
132
|
#include "postmaster/postmaster.h"
|
115
133
|
#include "postmaster/syslogger.h"
|
116
134
|
#include "storage/ipc.h"
|
117
135
|
#include "storage/proc.h"
|
118
136
|
#include "tcop/tcopprot.h"
|
119
|
-
#include "utils/
|
137
|
+
#include "utils/guc_hooks.h"
|
120
138
|
#include "utils/memutils.h"
|
121
139
|
#include "utils/ps_status.h"
|
140
|
+
#include "utils/varlena.h"
|
122
141
|
|
123
142
|
|
124
143
|
/* In this module, access gettext() via err_gettext() */
|
@@ -153,6 +172,10 @@ __thread emit_log_hook_type emit_log_hook = NULL;
|
|
153
172
|
|
154
173
|
|
155
174
|
|
175
|
+
/* Processed form of backtrace_functions GUC */
|
176
|
+
static __thread char *backtrace_function_list;
|
177
|
+
|
178
|
+
|
156
179
|
#ifdef HAVE_SYSLOG
|
157
180
|
|
158
181
|
/*
|
@@ -193,13 +216,15 @@ static __thread int recursion_depth = 0;
|
|
193
216
|
|
194
217
|
/*
|
195
218
|
* Saved timeval and buffers for formatted timestamps that might be used by
|
196
|
-
*
|
219
|
+
* log_line_prefix, csv logs and JSON logs.
|
197
220
|
*/
|
198
221
|
|
222
|
+
static __thread bool saved_timeval_set = false;
|
199
223
|
|
200
224
|
|
201
225
|
#define FORMATTED_TS_LEN 128
|
202
226
|
|
227
|
+
static __thread char formatted_log_time[FORMATTED_TS_LEN];
|
203
228
|
|
204
229
|
|
205
230
|
|
@@ -215,20 +240,87 @@ static __thread int recursion_depth = 0;
|
|
215
240
|
|
216
241
|
|
217
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);
|
218
249
|
static pg_noinline void set_backtrace(ErrorData *edata, int num_skip);
|
219
250
|
static void set_errdata_field(MemoryContextData *cxt, char **ptr, const char *str);
|
251
|
+
static void FreeErrorDataContents(ErrorData *edata);
|
220
252
|
static void write_console(const char *line, int len);
|
221
|
-
static
|
222
|
-
static void setup_formatted_start_time(void);
|
223
|
-
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);
|
224
254
|
static void log_line_prefix(StringInfo buf, ErrorData *edata);
|
225
|
-
static void write_csvlog(ErrorData *edata);
|
226
255
|
static void send_message_to_server_log(ErrorData *edata);
|
227
|
-
static void write_pipe_chunks(char *data, int len, int dest);
|
228
256
|
static void send_message_to_frontend(ErrorData *edata);
|
229
|
-
static const char *error_severity(int elevel);
|
230
257
|
static void append_with_tabs(StringInfo buf, const char *str);
|
231
|
-
|
258
|
+
|
259
|
+
|
260
|
+
/*
|
261
|
+
* is_log_level_output -- is elevel logically >= log_min_level?
|
262
|
+
*
|
263
|
+
* We use this for tests that should consider LOG to sort out-of-order,
|
264
|
+
* between ERROR and FATAL. Generally this is the right thing for testing
|
265
|
+
* whether a message should go to the postmaster log, whereas a simple >=
|
266
|
+
* test is correct for testing whether the message should go to the client.
|
267
|
+
*/
|
268
|
+
static inline bool
|
269
|
+
is_log_level_output(int elevel, int log_min_level)
|
270
|
+
{
|
271
|
+
if (elevel == LOG || elevel == LOG_SERVER_ONLY)
|
272
|
+
{
|
273
|
+
if (log_min_level == LOG || log_min_level <= ERROR)
|
274
|
+
return true;
|
275
|
+
}
|
276
|
+
else if (elevel == WARNING_CLIENT_ONLY)
|
277
|
+
{
|
278
|
+
/* never sent to log, regardless of log_min_level */
|
279
|
+
return false;
|
280
|
+
}
|
281
|
+
else if (log_min_level == LOG)
|
282
|
+
{
|
283
|
+
/* elevel != LOG */
|
284
|
+
if (elevel >= FATAL)
|
285
|
+
return true;
|
286
|
+
}
|
287
|
+
/* Neither is LOG */
|
288
|
+
else if (elevel >= log_min_level)
|
289
|
+
return true;
|
290
|
+
|
291
|
+
return false;
|
292
|
+
}
|
293
|
+
|
294
|
+
/*
|
295
|
+
* Policy-setting subroutines. These are fairly simple, but it seems wise
|
296
|
+
* to have the code in just one place.
|
297
|
+
*/
|
298
|
+
|
299
|
+
/*
|
300
|
+
* should_output_to_server --- should message of given elevel go to the log?
|
301
|
+
*/
|
302
|
+
static inline bool
|
303
|
+
should_output_to_server(int elevel)
|
304
|
+
{
|
305
|
+
return is_log_level_output(elevel, log_min_messages);
|
306
|
+
}
|
307
|
+
|
308
|
+
/*
|
309
|
+
* should_output_to_client --- should message of given elevel go to the client?
|
310
|
+
*/
|
311
|
+
static inline bool should_output_to_client(int elevel) { return false; }
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
/*
|
316
|
+
* message_level_is_interesting --- would ereport/elog do anything?
|
317
|
+
*
|
318
|
+
* Returns true if ereport/elog with this elevel will not be a no-op.
|
319
|
+
* This is useful to short-circuit any expensive preparatory work that
|
320
|
+
* might be needed for a logging message. There is no point in
|
321
|
+
* prepending this to a bare ereport/elog call, however.
|
322
|
+
*/
|
323
|
+
|
232
324
|
|
233
325
|
|
234
326
|
/*
|
@@ -250,19 +342,23 @@ in_error_recursion_trouble(void)
|
|
250
342
|
* message, since there's a significant probability that that's exactly
|
251
343
|
* what's causing the recursion.
|
252
344
|
*/
|
253
|
-
static inline const char *
|
254
|
-
err_gettext(const char *str)
|
255
|
-
{
|
256
345
|
#ifdef ENABLE_NLS
|
257
|
-
if (in_error_recursion_trouble())
|
258
|
-
return str;
|
259
|
-
else
|
260
|
-
return gettext(str);
|
261
346
|
#else
|
262
|
-
return str;
|
263
347
|
#endif
|
264
|
-
}
|
265
348
|
|
349
|
+
/*
|
350
|
+
* errstart_cold
|
351
|
+
* A simple wrapper around errstart, but hinted to be "cold". Supporting
|
352
|
+
* compilers are more likely to move code for branches containing this
|
353
|
+
* function into an area away from the calling function's code. This can
|
354
|
+
* result in more commonly executed code being more compact and fitting
|
355
|
+
* on fewer cache lines.
|
356
|
+
*/
|
357
|
+
pg_attribute_cold bool
|
358
|
+
errstart_cold(int elevel, const char *domain)
|
359
|
+
{
|
360
|
+
return errstart(elevel, domain);
|
361
|
+
}
|
266
362
|
|
267
363
|
/*
|
268
364
|
* errstart --- begin an error-reporting cycle
|
@@ -332,27 +428,8 @@ errstart(int elevel, const char *domain)
|
|
332
428
|
* warning or less and not enabled for logging, just return false without
|
333
429
|
* starting up any error logging machinery.
|
334
430
|
*/
|
335
|
-
|
336
|
-
|
337
|
-
output_to_server = is_log_level_output(elevel, log_min_messages);
|
338
|
-
|
339
|
-
/* Determine whether message is enabled for client output */
|
340
|
-
if (whereToSendOutput == DestRemote && elevel != LOG_SERVER_ONLY)
|
341
|
-
{
|
342
|
-
/*
|
343
|
-
* client_min_messages is honored only after we complete the
|
344
|
-
* authentication handshake. This is required both for security
|
345
|
-
* reasons and because many clients can't handle NOTICE messages
|
346
|
-
* during authentication.
|
347
|
-
*/
|
348
|
-
if (ClientAuthInProgress)
|
349
|
-
output_to_client = (elevel >= ERROR);
|
350
|
-
else
|
351
|
-
output_to_client = (elevel >= client_min_messages ||
|
352
|
-
elevel == INFO);
|
353
|
-
}
|
354
|
-
|
355
|
-
/* Skip processing effort if non-error message will not be output */
|
431
|
+
output_to_server = should_output_to_server(elevel);
|
432
|
+
output_to_client = should_output_to_client(elevel);
|
356
433
|
if (elevel < ERROR && !output_to_server && !output_to_client)
|
357
434
|
return false;
|
358
435
|
|
@@ -392,36 +469,20 @@ errstart(int elevel, const char *domain)
|
|
392
469
|
debug_query_string = NULL;
|
393
470
|
}
|
394
471
|
}
|
395
|
-
if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE)
|
396
|
-
{
|
397
|
-
/*
|
398
|
-
* Wups, stack not big enough. We treat this as a PANIC condition
|
399
|
-
* because it suggests an infinite loop of errors during error
|
400
|
-
* recovery.
|
401
|
-
*/
|
402
|
-
errordata_stack_depth = -1; /* make room on stack */
|
403
|
-
ereport(PANIC, (errmsg_internal("ERRORDATA_STACK_SIZE exceeded")));
|
404
|
-
}
|
405
472
|
|
406
473
|
/* Initialize data for this error frame */
|
407
|
-
edata =
|
408
|
-
MemSet(edata, 0, sizeof(ErrorData));
|
474
|
+
edata = get_error_stack_entry();
|
409
475
|
edata->elevel = elevel;
|
410
476
|
edata->output_to_server = output_to_server;
|
411
477
|
edata->output_to_client = output_to_client;
|
412
|
-
|
413
|
-
edata->domain = domain ? domain : PG_TEXTDOMAIN("postgres");
|
414
|
-
/* initialize context_domain the same way (see set_errcontext_domain()) */
|
415
|
-
edata->context_domain = edata->domain;
|
478
|
+
set_stack_entry_domain(edata, domain);
|
416
479
|
/* Select default errcode based on elevel */
|
417
480
|
if (elevel >= ERROR)
|
418
481
|
edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;
|
419
|
-
else if (elevel
|
482
|
+
else if (elevel >= WARNING)
|
420
483
|
edata->sqlerrcode = ERRCODE_WARNING;
|
421
484
|
else
|
422
485
|
edata->sqlerrcode = ERRCODE_SUCCESSFUL_COMPLETION;
|
423
|
-
/* errno is saved here so that error parameter eval can't change it */
|
424
|
-
edata->saved_errno = errno;
|
425
486
|
|
426
487
|
/*
|
427
488
|
* Any allocations for this error state level should go into ErrorContext
|
@@ -432,32 +493,6 @@ errstart(int elevel, const char *domain)
|
|
432
493
|
return true;
|
433
494
|
}
|
434
495
|
|
435
|
-
/*
|
436
|
-
* Checks whether the given funcname matches backtrace_functions; see
|
437
|
-
* check_backtrace_functions.
|
438
|
-
*/
|
439
|
-
static bool
|
440
|
-
matches_backtrace_functions(const char *funcname)
|
441
|
-
{
|
442
|
-
char *p;
|
443
|
-
|
444
|
-
if (!backtrace_symbol_list || funcname == NULL || funcname[0] == '\0')
|
445
|
-
return false;
|
446
|
-
|
447
|
-
p = backtrace_symbol_list;
|
448
|
-
for (;;)
|
449
|
-
{
|
450
|
-
if (*p == '\0') /* end of backtrace_symbol_list */
|
451
|
-
break;
|
452
|
-
|
453
|
-
if (strcmp(funcname, p) == 0)
|
454
|
-
return true;
|
455
|
-
p += strlen(p) + 1;
|
456
|
-
}
|
457
|
-
|
458
|
-
return false;
|
459
|
-
}
|
460
|
-
|
461
496
|
/*
|
462
497
|
* errfinish --- end an error-reporting cycle
|
463
498
|
*
|
@@ -478,19 +513,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
|
|
478
513
|
CHECK_STACK_DEPTH();
|
479
514
|
|
480
515
|
/* Save the last few bits of error state into the stack entry */
|
481
|
-
|
482
|
-
{
|
483
|
-
const char *slash;
|
484
|
-
|
485
|
-
/* keep only base name, useful especially for vpath builds */
|
486
|
-
slash = strrchr(filename, '/');
|
487
|
-
if (slash)
|
488
|
-
filename = slash + 1;
|
489
|
-
}
|
490
|
-
|
491
|
-
edata->filename = filename;
|
492
|
-
edata->lineno = lineno;
|
493
|
-
edata->funcname = funcname;
|
516
|
+
set_stack_entry_location(edata, filename, lineno, funcname);
|
494
517
|
|
495
518
|
elevel = edata->elevel;
|
496
519
|
|
@@ -500,6 +523,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
|
|
500
523
|
*/
|
501
524
|
oldcontext = MemoryContextSwitchTo(ErrorContext);
|
502
525
|
|
526
|
+
/* Collect backtrace, if enabled and we didn't already */
|
503
527
|
if (!edata->backtrace &&
|
504
528
|
edata->funcname &&
|
505
529
|
backtrace_functions &&
|
@@ -546,45 +570,11 @@ errfinish(const char *filename, int lineno, const char *funcname)
|
|
546
570
|
PG_RE_THROW();
|
547
571
|
}
|
548
572
|
|
549
|
-
/*
|
550
|
-
* If we are doing FATAL or PANIC, abort any old-style COPY OUT in
|
551
|
-
* progress, so that we can report the message before dying. (Without
|
552
|
-
* this, pq_putmessage will refuse to send the message at all, which is
|
553
|
-
* what we want for NOTICE messages, but not for fatal exits.) This hack
|
554
|
-
* is necessary because of poor design of old-style copy protocol.
|
555
|
-
*/
|
556
|
-
if (elevel >= FATAL && whereToSendOutput == DestRemote)
|
557
|
-
pq_endcopyout(true);
|
558
|
-
|
559
573
|
/* Emit the message to the right places */
|
560
574
|
EmitErrorReport();
|
561
575
|
|
562
576
|
/* Now free up subsidiary data attached to stack entry, and release it */
|
563
|
-
|
564
|
-
pfree(edata->message);
|
565
|
-
if (edata->detail)
|
566
|
-
pfree(edata->detail);
|
567
|
-
if (edata->detail_log)
|
568
|
-
pfree(edata->detail_log);
|
569
|
-
if (edata->hint)
|
570
|
-
pfree(edata->hint);
|
571
|
-
if (edata->context)
|
572
|
-
pfree(edata->context);
|
573
|
-
if (edata->backtrace)
|
574
|
-
pfree(edata->backtrace);
|
575
|
-
if (edata->schema_name)
|
576
|
-
pfree(edata->schema_name);
|
577
|
-
if (edata->table_name)
|
578
|
-
pfree(edata->table_name);
|
579
|
-
if (edata->column_name)
|
580
|
-
pfree(edata->column_name);
|
581
|
-
if (edata->datatype_name)
|
582
|
-
pfree(edata->datatype_name);
|
583
|
-
if (edata->constraint_name)
|
584
|
-
pfree(edata->constraint_name);
|
585
|
-
if (edata->internalquery)
|
586
|
-
pfree(edata->internalquery);
|
587
|
-
|
577
|
+
FreeErrorDataContents(edata);
|
588
578
|
errordata_stack_depth--;
|
589
579
|
|
590
580
|
/* Exit error-handling context */
|
@@ -611,8 +601,14 @@ errfinish(const char *filename, int lineno, const char *funcname)
|
|
611
601
|
* Any other code you might be tempted to add here should probably be
|
612
602
|
* in an on_proc_exit or on_shmem_exit callback instead.
|
613
603
|
*/
|
614
|
-
fflush(
|
615
|
-
|
604
|
+
fflush(NULL);
|
605
|
+
|
606
|
+
/*
|
607
|
+
* Let the cumulative stats system know. Only mark the session as
|
608
|
+
* terminated by fatal error if there is no other known cause.
|
609
|
+
*/
|
610
|
+
if (pgStatSessionEndCause == DISCONNECT_NORMAL)
|
611
|
+
pgStatSessionEndCause = DISCONNECT_FATAL;
|
616
612
|
|
617
613
|
/*
|
618
614
|
* Do normal process-exit cleanup, then return exit code 1 to indicate
|
@@ -631,8 +627,7 @@ errfinish(const char *filename, int lineno, const char *funcname)
|
|
631
627
|
* XXX: what if we are *in* the postmaster? abort() won't kill our
|
632
628
|
* children...
|
633
629
|
*/
|
634
|
-
fflush(
|
635
|
-
fflush(stderr);
|
630
|
+
fflush(NULL);
|
636
631
|
abort();
|
637
632
|
}
|
638
633
|
|
@@ -645,6 +640,242 @@ errfinish(const char *filename, int lineno, const char *funcname)
|
|
645
640
|
}
|
646
641
|
|
647
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
|
+
|
648
879
|
/*
|
649
880
|
* errcode --- add SQLSTATE error code to the current error
|
650
881
|
*
|
@@ -675,8 +906,6 @@ errcode(int sqlerrcode)
|
|
675
906
|
*/
|
676
907
|
#ifdef EROFS
|
677
908
|
#endif
|
678
|
-
#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */
|
679
|
-
#endif
|
680
909
|
|
681
910
|
/*
|
682
911
|
* errcode_for_socket_access --- add SQLSTATE error code to the current error
|
@@ -687,8 +916,7 @@ errcode(int sqlerrcode)
|
|
687
916
|
* NOTE: the primary error message string should generally include %m
|
688
917
|
* when this is used.
|
689
918
|
*/
|
690
|
-
|
691
|
-
#endif
|
919
|
+
|
692
920
|
|
693
921
|
|
694
922
|
/*
|
@@ -953,6 +1181,13 @@ errhint(const char *fmt,...)
|
|
953
1181
|
}
|
954
1182
|
|
955
1183
|
|
1184
|
+
/*
|
1185
|
+
* errhint_plural --- add a hint error message text to the current error,
|
1186
|
+
* with support for pluralization of the message text
|
1187
|
+
*/
|
1188
|
+
|
1189
|
+
|
1190
|
+
|
956
1191
|
/*
|
957
1192
|
* errcontext_msg --- add a context error message text to the current error
|
958
1193
|
*
|
@@ -1006,7 +1241,18 @@ set_errcontext_domain(const char *domain)
|
|
1006
1241
|
*
|
1007
1242
|
* This should be called if the message text already includes the statement.
|
1008
1243
|
*/
|
1244
|
+
int
|
1245
|
+
errhidestmt(bool hide_stmt)
|
1246
|
+
{
|
1247
|
+
ErrorData *edata = &errordata[errordata_stack_depth];
|
1248
|
+
|
1249
|
+
/* we don't bother incrementing recursion_depth */
|
1250
|
+
CHECK_STACK_DEPTH();
|
1251
|
+
|
1252
|
+
edata->hide_stmt = hide_stmt;
|
1009
1253
|
|
1254
|
+
return 0; /* return value does not matter */
|
1255
|
+
}
|
1010
1256
|
|
1011
1257
|
/*
|
1012
1258
|
* errhidecontext --- optionally suppress CONTEXT: field of log entry
|
@@ -1014,17 +1260,18 @@ set_errcontext_domain(const char *domain)
|
|
1014
1260
|
* This should only be used for verbose debugging messages where the repeated
|
1015
1261
|
* inclusion of context would bloat the log volume too much.
|
1016
1262
|
*/
|
1263
|
+
int
|
1264
|
+
errhidecontext(bool hide_ctx)
|
1265
|
+
{
|
1266
|
+
ErrorData *edata = &errordata[errordata_stack_depth];
|
1017
1267
|
|
1268
|
+
/* we don't bother incrementing recursion_depth */
|
1269
|
+
CHECK_STACK_DEPTH();
|
1018
1270
|
|
1271
|
+
edata->hide_ctx = hide_ctx;
|
1019
1272
|
|
1020
|
-
/*
|
1021
|
-
|
1022
|
-
*
|
1023
|
-
* This is used when backwards compatibility demands that the function
|
1024
|
-
* name appear in messages sent to old-protocol clients. Note that the
|
1025
|
-
* passed string is expected to be a non-freeable constant string.
|
1026
|
-
*/
|
1027
|
-
|
1273
|
+
return 0; /* return value does not matter */
|
1274
|
+
}
|
1028
1275
|
|
1029
1276
|
/*
|
1030
1277
|
* errposition --- add cursor position to the current error
|
@@ -1119,6 +1366,14 @@ geterrcode(void)
|
|
1119
1366
|
return edata->sqlerrcode;
|
1120
1367
|
}
|
1121
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
|
+
|
1122
1377
|
/*
|
1123
1378
|
* geterrposition --- return the currently set error position (0 if none)
|
1124
1379
|
*
|
@@ -1197,6 +1452,14 @@ EmitErrorReport(void)
|
|
1197
1452
|
CHECK_STACK_DEPTH();
|
1198
1453
|
oldcontext = MemoryContextSwitchTo(edata->assoc_context);
|
1199
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
|
+
|
1200
1463
|
/*
|
1201
1464
|
* Call hook before sending message to log. The hook function is allowed
|
1202
1465
|
* to turn off edata->output_to_server, so we must recheck that afterward.
|
@@ -1256,7 +1519,21 @@ CopyErrorData(void)
|
|
1256
1519
|
newedata = (ErrorData *) palloc(sizeof(ErrorData));
|
1257
1520
|
memcpy(newedata, edata, sizeof(ErrorData));
|
1258
1521
|
|
1259
|
-
/*
|
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);
|
1260
1537
|
if (newedata->message)
|
1261
1538
|
newedata->message = pstrdup(newedata->message);
|
1262
1539
|
if (newedata->detail)
|
@@ -1269,6 +1546,8 @@ CopyErrorData(void)
|
|
1269
1546
|
newedata->context = pstrdup(newedata->context);
|
1270
1547
|
if (newedata->backtrace)
|
1271
1548
|
newedata->backtrace = pstrdup(newedata->backtrace);
|
1549
|
+
if (newedata->message_id)
|
1550
|
+
newedata->message_id = pstrdup(newedata->message_id);
|
1272
1551
|
if (newedata->schema_name)
|
1273
1552
|
newedata->schema_name = pstrdup(newedata->schema_name);
|
1274
1553
|
if (newedata->table_name)
|
@@ -1296,6 +1575,40 @@ CopyErrorData(void)
|
|
1296
1575
|
*/
|
1297
1576
|
|
1298
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
|
+
|
1299
1612
|
/*
|
1300
1613
|
* FlushErrorState --- flush the error state after error recovery
|
1301
1614
|
*
|
@@ -1316,7 +1629,7 @@ FlushErrorState(void)
|
|
1316
1629
|
errordata_stack_depth = -1;
|
1317
1630
|
recursion_depth = 0;
|
1318
1631
|
/* Delete all data in ErrorContext */
|
1319
|
-
|
1632
|
+
MemoryContextReset(ErrorContext);
|
1320
1633
|
}
|
1321
1634
|
|
1322
1635
|
/*
|
@@ -1368,16 +1681,10 @@ pg_re_throw(void)
|
|
1368
1681
|
|
1369
1682
|
/*
|
1370
1683
|
* At least in principle, the increase in severity could have changed
|
1371
|
-
* where-to-output decisions, so recalculate.
|
1372
|
-
* sync with errstart(), which see for comments.
|
1684
|
+
* where-to-output decisions, so recalculate.
|
1373
1685
|
*/
|
1374
|
-
|
1375
|
-
|
1376
|
-
log_min_messages);
|
1377
|
-
else
|
1378
|
-
edata->output_to_server = (FATAL >= log_min_messages);
|
1379
|
-
if (whereToSendOutput == DestRemote)
|
1380
|
-
edata->output_to_client = true;
|
1686
|
+
edata->output_to_server = should_output_to_server(FATAL);
|
1687
|
+
edata->output_to_client = should_output_to_client(FATAL);
|
1381
1688
|
|
1382
1689
|
/*
|
1383
1690
|
* We can use errfinish() for the rest, but we don't want it to call
|
@@ -1390,8 +1697,7 @@ pg_re_throw(void)
|
|
1390
1697
|
}
|
1391
1698
|
|
1392
1699
|
/* Doesn't return ... */
|
1393
|
-
ExceptionalCondition("pg_re_throw tried to return",
|
1394
|
-
__FILE__, __LINE__);
|
1700
|
+
ExceptionalCondition("pg_re_throw tried to return", __FILE__, __LINE__);
|
1395
1701
|
}
|
1396
1702
|
|
1397
1703
|
|
@@ -1415,13 +1721,49 @@ pg_re_throw(void)
|
|
1415
1721
|
|
1416
1722
|
|
1417
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
|
+
*/
|
1418
1744
|
#ifdef HAVE_SYSLOG
|
1745
|
+
#endif
|
1746
|
+
#ifdef WIN32
|
1747
|
+
#endif
|
1748
|
+
|
1749
|
+
/*
|
1750
|
+
* GUC assign_hook for log_destination
|
1751
|
+
*/
|
1752
|
+
|
1419
1753
|
|
1420
1754
|
/*
|
1421
|
-
*
|
1755
|
+
* GUC assign_hook for syslog_ident
|
1422
1756
|
*/
|
1757
|
+
#ifdef HAVE_SYSLOG
|
1758
|
+
#endif
|
1423
1759
|
|
1760
|
+
/*
|
1761
|
+
* GUC assign_hook for syslog_facility
|
1762
|
+
*/
|
1763
|
+
#ifdef HAVE_SYSLOG
|
1764
|
+
#endif
|
1424
1765
|
|
1766
|
+
#ifdef HAVE_SYSLOG
|
1425
1767
|
|
1426
1768
|
/*
|
1427
1769
|
* Write a message line to syslog
|
@@ -1435,107 +1777,12 @@ pg_re_throw(void)
|
|
1435
1777
|
* interfaces (e.g. CreateFileA()) expect string arguments in this encoding.
|
1436
1778
|
* Every process in a given system will find the same value at all times.
|
1437
1779
|
*/
|
1438
|
-
static int
|
1439
|
-
GetACPEncoding(void)
|
1440
|
-
{
|
1441
|
-
static int encoding = -2;
|
1442
1780
|
|
1443
|
-
if (encoding == -2)
|
1444
|
-
encoding = pg_codepage_to_encoding(GetACP());
|
1445
|
-
|
1446
|
-
return encoding;
|
1447
|
-
}
|
1448
1781
|
|
1449
1782
|
/*
|
1450
1783
|
* Write a message line to the windows event log
|
1451
1784
|
*/
|
1452
|
-
static void
|
1453
|
-
write_eventlog(int level, const char *line, int len)
|
1454
|
-
{
|
1455
|
-
WCHAR *utf16;
|
1456
|
-
int eventlevel = EVENTLOG_ERROR_TYPE;
|
1457
|
-
static HANDLE evtHandle = INVALID_HANDLE_VALUE;
|
1458
1785
|
|
1459
|
-
if (evtHandle == INVALID_HANDLE_VALUE)
|
1460
|
-
{
|
1461
|
-
evtHandle = RegisterEventSource(NULL,
|
1462
|
-
event_source ? event_source : DEFAULT_EVENT_SOURCE);
|
1463
|
-
if (evtHandle == NULL)
|
1464
|
-
{
|
1465
|
-
evtHandle = INVALID_HANDLE_VALUE;
|
1466
|
-
return;
|
1467
|
-
}
|
1468
|
-
}
|
1469
|
-
|
1470
|
-
switch (level)
|
1471
|
-
{
|
1472
|
-
case DEBUG5:
|
1473
|
-
case DEBUG4:
|
1474
|
-
case DEBUG3:
|
1475
|
-
case DEBUG2:
|
1476
|
-
case DEBUG1:
|
1477
|
-
case LOG:
|
1478
|
-
case LOG_SERVER_ONLY:
|
1479
|
-
case INFO:
|
1480
|
-
case NOTICE:
|
1481
|
-
eventlevel = EVENTLOG_INFORMATION_TYPE;
|
1482
|
-
break;
|
1483
|
-
case WARNING:
|
1484
|
-
eventlevel = EVENTLOG_WARNING_TYPE;
|
1485
|
-
break;
|
1486
|
-
case ERROR:
|
1487
|
-
case FATAL:
|
1488
|
-
case PANIC:
|
1489
|
-
default:
|
1490
|
-
eventlevel = EVENTLOG_ERROR_TYPE;
|
1491
|
-
break;
|
1492
|
-
}
|
1493
|
-
|
1494
|
-
/*
|
1495
|
-
* If message character encoding matches the encoding expected by
|
1496
|
-
* ReportEventA(), call it to avoid the hazards of conversion. Otherwise,
|
1497
|
-
* try to convert the message to UTF16 and write it with ReportEventW().
|
1498
|
-
* Fall back on ReportEventA() if conversion failed.
|
1499
|
-
*
|
1500
|
-
* Since we palloc the structure required for conversion, also fall
|
1501
|
-
* through to writing unconverted if we have not yet set up
|
1502
|
-
* CurrentMemoryContext.
|
1503
|
-
*
|
1504
|
-
* Also verify that we are not on our way into error recursion trouble due
|
1505
|
-
* to error messages thrown deep inside pgwin32_message_to_UTF16().
|
1506
|
-
*/
|
1507
|
-
if (!in_error_recursion_trouble() &&
|
1508
|
-
CurrentMemoryContext != NULL &&
|
1509
|
-
GetMessageEncoding() != GetACPEncoding())
|
1510
|
-
{
|
1511
|
-
utf16 = pgwin32_message_to_UTF16(line, len, NULL);
|
1512
|
-
if (utf16)
|
1513
|
-
{
|
1514
|
-
ReportEventW(evtHandle,
|
1515
|
-
eventlevel,
|
1516
|
-
0,
|
1517
|
-
0, /* All events are Id 0 */
|
1518
|
-
NULL,
|
1519
|
-
1,
|
1520
|
-
0,
|
1521
|
-
(LPCWSTR *) &utf16,
|
1522
|
-
NULL);
|
1523
|
-
/* XXX Try ReportEventA() when ReportEventW() fails? */
|
1524
|
-
|
1525
|
-
pfree(utf16);
|
1526
|
-
return;
|
1527
|
-
}
|
1528
|
-
}
|
1529
|
-
ReportEventA(evtHandle,
|
1530
|
-
eventlevel,
|
1531
|
-
0,
|
1532
|
-
0, /* All events are Id 0 */
|
1533
|
-
NULL,
|
1534
|
-
1,
|
1535
|
-
0,
|
1536
|
-
&line,
|
1537
|
-
NULL);
|
1538
|
-
}
|
1539
1786
|
#endif /* WIN32 */
|
1540
1787
|
|
1541
1788
|
#ifdef WIN32
|
@@ -1543,39 +1790,56 @@ write_eventlog(int level, const char *line, int len)
|
|
1543
1790
|
#endif
|
1544
1791
|
|
1545
1792
|
/*
|
1546
|
-
*
|
1793
|
+
* get_formatted_log_time -- compute and get the log timestamp.
|
1794
|
+
*
|
1795
|
+
* The timestamp is computed if not set yet, so as it is kept consistent
|
1796
|
+
* among all the log destinations that require it to be consistent. Note
|
1797
|
+
* that the computed timestamp is returned in a static buffer, not
|
1798
|
+
* palloc()'d.
|
1547
1799
|
*/
|
1548
1800
|
|
1549
1801
|
|
1550
1802
|
/*
|
1551
|
-
*
|
1803
|
+
* reset_formatted_start_time -- reset the start timestamp
|
1552
1804
|
*/
|
1553
1805
|
|
1554
1806
|
|
1555
1807
|
/*
|
1556
|
-
*
|
1557
|
-
* string in log_line_prefix
|
1808
|
+
* get_formatted_start_time -- compute and get the start timestamp.
|
1558
1809
|
*
|
1559
|
-
*
|
1560
|
-
*
|
1810
|
+
* The timestamp is computed if not set yet. Note that the computed
|
1811
|
+
* timestamp is returned in a static buffer, not palloc()'d.
|
1812
|
+
*/
|
1813
|
+
|
1814
|
+
|
1815
|
+
/*
|
1816
|
+
* check_log_of_query -- check if a query can be logged
|
1817
|
+
*/
|
1818
|
+
|
1819
|
+
|
1820
|
+
/*
|
1821
|
+
* get_backend_type_for_log -- backend type for log entries
|
1822
|
+
*
|
1823
|
+
* Returns a pointer to a static buffer, not palloc()'d.
|
1561
1824
|
*/
|
1562
1825
|
|
1563
1826
|
|
1564
1827
|
/*
|
1565
|
-
*
|
1828
|
+
* process_log_prefix_padding --- helper function for processing the format
|
1829
|
+
* string in log_line_prefix
|
1830
|
+
*
|
1831
|
+
* Note: This function returns NULL if it finds something which
|
1832
|
+
* it deems invalid in the format string.
|
1566
1833
|
*/
|
1567
1834
|
|
1568
1835
|
|
1569
1836
|
/*
|
1570
|
-
*
|
1571
|
-
* We use the PostgreSQL defaults for CSV, i.e. quote = escape = '"'
|
1572
|
-
* If it's NULL, append nothing.
|
1837
|
+
* Format log status information using Log_line_prefix.
|
1573
1838
|
*/
|
1574
1839
|
|
1575
1840
|
|
1576
1841
|
/*
|
1577
|
-
*
|
1578
|
-
* format which is described in doc/src/sgml/config.sgml.
|
1842
|
+
* Format log status info; append to the provided buffer.
|
1579
1843
|
*/
|
1580
1844
|
|
1581
1845
|
|
@@ -1663,86 +1927,22 @@ static void send_message_to_frontend(ErrorData *edata) {}
|
|
1663
1927
|
* not available). Used before ereport/elog can be used
|
1664
1928
|
* safely (memory context, GUC load etc)
|
1665
1929
|
*/
|
1930
|
+
|
1666
1931
|
void
|
1667
1932
|
write_stderr(const char *fmt,...)
|
1668
1933
|
{
|
1669
|
-
va_list
|
1670
|
-
|
1671
|
-
#ifdef WIN32
|
1672
|
-
char errbuf[2048]; /* Arbitrary size? */
|
1673
|
-
#endif
|
1674
|
-
|
1675
|
-
fmt = _(fmt);
|
1676
|
-
|
1934
|
+
va_list ap;
|
1677
1935
|
va_start(ap, fmt);
|
1678
|
-
#ifndef WIN32
|
1679
|
-
/* On Unix, we just fprintf to stderr */
|
1680
1936
|
vfprintf(stderr, fmt, ap);
|
1681
1937
|
fflush(stderr);
|
1682
|
-
#else
|
1683
|
-
vsnprintf(errbuf, sizeof(errbuf), fmt, ap);
|
1684
|
-
|
1685
|
-
/*
|
1686
|
-
* On Win32, we print to stderr if running on a console, or write to
|
1687
|
-
* eventlog if running as a service
|
1688
|
-
*/
|
1689
|
-
if (pgwin32_is_service()) /* Running as a service */
|
1690
|
-
{
|
1691
|
-
write_eventlog(ERROR, errbuf, strlen(errbuf));
|
1692
|
-
}
|
1693
|
-
else
|
1694
|
-
{
|
1695
|
-
/* Not running as service, write to stderr */
|
1696
|
-
write_console(errbuf, strlen(errbuf));
|
1697
|
-
fflush(stderr);
|
1698
|
-
}
|
1699
|
-
#endif
|
1700
1938
|
va_end(ap);
|
1701
1939
|
}
|
1702
1940
|
|
1703
1941
|
|
1704
|
-
|
1705
|
-
|
1706
|
-
*
|
1707
|
-
* We use this for tests that should consider LOG to sort out-of-order,
|
1708
|
-
* between ERROR and FATAL. Generally this is the right thing for testing
|
1709
|
-
* whether a message should go to the postmaster log, whereas a simple >=
|
1710
|
-
* test is correct for testing whether the message should go to the client.
|
1711
|
-
*/
|
1712
|
-
static bool
|
1713
|
-
is_log_level_output(int elevel, int log_min_level)
|
1714
|
-
{
|
1715
|
-
if (elevel == LOG || elevel == LOG_SERVER_ONLY)
|
1716
|
-
{
|
1717
|
-
if (log_min_level == LOG || log_min_level <= ERROR)
|
1718
|
-
return true;
|
1719
|
-
}
|
1720
|
-
else if (log_min_level == LOG)
|
1721
|
-
{
|
1722
|
-
/* elevel != LOG */
|
1723
|
-
if (elevel >= FATAL)
|
1724
|
-
return true;
|
1725
|
-
}
|
1726
|
-
/* Neither is LOG */
|
1727
|
-
else if (elevel >= log_min_level)
|
1728
|
-
return true;
|
1729
|
-
|
1730
|
-
return false;
|
1731
|
-
}
|
1942
|
+
#ifdef WIN32
|
1943
|
+
__thread volatile int pg_signal_queue;
|
1732
1944
|
|
1733
|
-
|
1734
|
-
* Adjust the level of a recovery-related message per trace_recovery_messages.
|
1735
|
-
*
|
1736
|
-
* The argument is the default log level of the message, eg, DEBUG2. (This
|
1737
|
-
* should only be applied to DEBUGn log messages, otherwise it's a no-op.)
|
1738
|
-
* If the level is >= trace_recovery_messages, we return LOG, causing the
|
1739
|
-
* message to be logged unconditionally (for most settings of
|
1740
|
-
* log_min_messages). Otherwise, we return the argument unchanged.
|
1741
|
-
* The message will then be shown based on the setting of log_min_messages.
|
1742
|
-
*
|
1743
|
-
* Intention is to keep this for at least the whole of the 9.0 production
|
1744
|
-
* release, so we can more easily diagnose production problems in the field.
|
1745
|
-
* It should go away eventually, though, because it's an ugly and
|
1746
|
-
* hard-to-explain kluge.
|
1747
|
-
*/
|
1945
|
+
__thread int pg_signal_mask;
|
1748
1946
|
|
1947
|
+
void pgwin32_dispatch_queued_signals(void) {}
|
1948
|
+
#endif
|