pg_query 5.0.0 → 6.0.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 +27 -0
- data/README.md +1 -1
- data/Rakefile +3 -4
- data/ext/pg_query/extconf.rb +14 -4
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2901 -1794
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +211 -24
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +272 -53
- data/ext/pg_query/include/postgres/access/amapi.h +299 -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 +237 -0
- data/ext/pg_query/include/postgres/access/gin.h +91 -0
- data/ext/pg_query/include/postgres/access/htup.h +89 -0
- data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
- data/ext/pg_query/include/postgres/access/itup.h +170 -0
- data/ext/pg_query/include/postgres/access/parallel.h +81 -0
- data/ext/pg_query/include/postgres/access/printtup.h +35 -0
- data/ext/pg_query/include/postgres/access/relation.h +28 -0
- data/ext/pg_query/include/postgres/access/relscan.h +191 -0
- data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/postgres/access/sdir.h +67 -0
- data/ext/pg_query/include/postgres/access/skey.h +151 -0
- data/ext/pg_query/include/postgres/access/slru.h +221 -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 +2109 -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 +375 -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 +89 -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 +91 -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/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 +453 -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/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 +358 -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 +792 -0
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/postgres/miscadmin.h +519 -0
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
- data/ext/pg_query/include/postgres/nodes/execnodes.h +2852 -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 +3435 -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 +2335 -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 +102 -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 +977 -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 +584 -0
- data/ext/pg_query/include/postgres/port.h +524 -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/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 +743 -0
- data/ext/pg_query/include/postgres/replication/slot.h +285 -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 +59 -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 +491 -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 +127 -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 +230 -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 +808 -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/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 +131 -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 +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.c +9 -0
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_fingerprint.c +4 -5
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +18 -17
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +1 -1
- data/ext/pg_query/postgres_deparse.c +409 -21
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +60 -190
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +16 -4
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +19 -81
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -8
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- 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 +18 -1
- data/ext/pg_query/src_common_wchar.c +45 -108
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +251 -32
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +4 -4
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +26 -3
- data/lib/pg_query/treewalker.rb +52 -12
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +444 -400
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -292
- data/ext/pg_query/include/access/attmap.h +0 -54
- data/ext/pg_query/include/access/attnum.h +0 -64
- data/ext/pg_query/include/access/clog.h +0 -63
- data/ext/pg_query/include/access/commit_ts.h +0 -74
- data/ext/pg_query/include/access/detoast.h +0 -82
- data/ext/pg_query/include/access/genam.h +0 -233
- data/ext/pg_query/include/access/gin.h +0 -91
- data/ext/pg_query/include/access/htup.h +0 -89
- data/ext/pg_query/include/access/htup_details.h +0 -811
- data/ext/pg_query/include/access/itup.h +0 -170
- data/ext/pg_query/include/access/parallel.h +0 -82
- data/ext/pg_query/include/access/printtup.h +0 -35
- data/ext/pg_query/include/access/relation.h +0 -28
- data/ext/pg_query/include/access/relscan.h +0 -191
- data/ext/pg_query/include/access/rmgrlist.h +0 -49
- data/ext/pg_query/include/access/sdir.h +0 -67
- data/ext/pg_query/include/access/skey.h +0 -151
- data/ext/pg_query/include/access/stratnum.h +0 -85
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -28
- data/ext/pg_query/include/access/tableam.h +0 -2100
- data/ext/pg_query/include/access/toast_compression.h +0 -73
- data/ext/pg_query/include/access/transam.h +0 -375
- data/ext/pg_query/include/access/tsmapi.h +0 -82
- data/ext/pg_query/include/access/tupconvert.h +0 -54
- data/ext/pg_query/include/access/tupdesc.h +0 -154
- data/ext/pg_query/include/access/tupmacs.h +0 -207
- data/ext/pg_query/include/access/twophase.h +0 -65
- data/ext/pg_query/include/access/xact.h +0 -530
- data/ext/pg_query/include/access/xlog.h +0 -302
- data/ext/pg_query/include/access/xlog_internal.h +0 -404
- data/ext/pg_query/include/access/xlogbackup.h +0 -41
- data/ext/pg_query/include/access/xlogdefs.h +0 -82
- data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
- data/ext/pg_query/include/access/xlogreader.h +0 -444
- data/ext/pg_query/include/access/xlogrecord.h +0 -248
- data/ext/pg_query/include/access/xlogrecovery.h +0 -158
- data/ext/pg_query/include/archive/archive_module.h +0 -59
- data/ext/pg_query/include/c.h +0 -1379
- data/ext/pg_query/include/catalog/catalog.h +0 -45
- data/ext/pg_query/include/catalog/catversion.h +0 -62
- data/ext/pg_query/include/catalog/dependency.h +0 -270
- data/ext/pg_query/include/catalog/genbki.h +0 -143
- data/ext/pg_query/include/catalog/index.h +0 -214
- data/ext/pg_query/include/catalog/indexing.h +0 -54
- data/ext/pg_query/include/catalog/namespace.h +0 -190
- data/ext/pg_query/include/catalog/objectaccess.h +0 -267
- data/ext/pg_query/include/catalog/objectaddress.h +0 -89
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
- data/ext/pg_query/include/catalog/pg_am.h +0 -63
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -223
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
- data/ext/pg_query/include/catalog/pg_authid.h +0 -63
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_class.h +0 -230
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
- data/ext/pg_query/include/catalog/pg_collation.h +0 -100
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -63
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
- data/ext/pg_query/include/catalog/pg_control.h +0 -258
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
- data/ext/pg_query/include/catalog/pg_database.h +0 -124
- data/ext/pg_query/include/catalog/pg_database_d.h +0 -52
- data/ext/pg_query/include/catalog/pg_depend.h +0 -77
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_index.h +0 -90
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_language.h +0 -72
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
- data/ext/pg_query/include/catalog/pg_operator.h +0 -107
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -64
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -51
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_proc.h +0 -220
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
- data/ext/pg_query/include/catalog/pg_publication.h +0 -158
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform.h +0 -48
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_type.h +0 -404
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
- data/ext/pg_query/include/catalog/storage.h +0 -50
- data/ext/pg_query/include/commands/async.h +0 -53
- data/ext/pg_query/include/commands/dbcommands.h +0 -37
- data/ext/pg_query/include/commands/defrem.h +0 -161
- data/ext/pg_query/include/commands/event_trigger.h +0 -88
- data/ext/pg_query/include/commands/explain.h +0 -129
- 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 -288
- data/ext/pg_query/include/commands/vacuum.h +0 -386
- data/ext/pg_query/include/common/cryptohash.h +0 -39
- 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/int.h +0 -437
- data/ext/pg_query/include/common/ip.h +0 -33
- data/ext/pg_query/include/common/keywords.h +0 -29
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/pg_prng.h +0 -61
- data/ext/pg_query/include/common/relpath.h +0 -97
- data/ext/pg_query/include/common/scram-common.h +0 -70
- data/ext/pg_query/include/common/sha2.h +0 -32
- data/ext/pg_query/include/common/string.h +0 -44
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
- data/ext/pg_query/include/copyfuncs.funcs.c +0 -5013
- data/ext/pg_query/include/copyfuncs.switch.c +0 -938
- data/ext/pg_query/include/datatype/timestamp.h +0 -243
- data/ext/pg_query/include/equalfuncs.funcs.c +0 -3097
- data/ext/pg_query/include/equalfuncs.switch.c +0 -785
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -680
- data/ext/pg_query/include/executor/functions.h +0 -55
- data/ext/pg_query/include/executor/instrument.h +0 -118
- data/ext/pg_query/include/executor/spi.h +0 -213
- data/ext/pg_query/include/executor/tablefunc.h +0 -67
- data/ext/pg_query/include/executor/tuptable.h +0 -494
- data/ext/pg_query/include/fmgr.h +0 -800
- data/ext/pg_query/include/foreign/fdwapi.h +0 -294
- data/ext/pg_query/include/funcapi.h +0 -360
- data/ext/pg_query/include/gram.h +0 -1127
- data/ext/pg_query/include/gramparse.h +0 -75
- data/ext/pg_query/include/jit/jit.h +0 -105
- data/ext/pg_query/include/kwlist_d.h +0 -1119
- data/ext/pg_query/include/lib/dshash.h +0 -115
- data/ext/pg_query/include/lib/ilist.h +0 -1159
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1184
- data/ext/pg_query/include/lib/sort_template.h +0 -432
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -37
- data/ext/pg_query/include/libpq/crypt.h +0 -47
- data/ext/pg_query/include/libpq/hba.h +0 -186
- data/ext/pg_query/include/libpq/libpq-be.h +0 -354
- data/ext/pg_query/include/libpq/libpq.h +0 -144
- data/ext/pg_query/include/libpq/pqcomm.h +0 -163
- data/ext/pg_query/include/libpq/pqformat.h +0 -210
- data/ext/pg_query/include/libpq/pqsignal.h +0 -54
- data/ext/pg_query/include/libpq/sasl.h +0 -136
- data/ext/pg_query/include/libpq/scram.h +0 -37
- data/ext/pg_query/include/mb/pg_wchar.h +0 -772
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -507
- data/ext/pg_query/include/nodes/bitmapset.h +0 -126
- data/ext/pg_query/include/nodes/execnodes.h +0 -2768
- data/ext/pg_query/include/nodes/extensible.h +0 -164
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -121
- data/ext/pg_query/include/nodes/memnodes.h +0 -113
- data/ext/pg_query/include/nodes/miscnodes.h +0 -56
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -222
- data/ext/pg_query/include/nodes/nodes.h +0 -446
- data/ext/pg_query/include/nodes/nodetags.h +0 -471
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -4050
- data/ext/pg_query/include/nodes/pathnodes.h +0 -3384
- data/ext/pg_query/include/nodes/pg_list.h +0 -635
- data/ext/pg_query/include/nodes/plannodes.h +0 -1592
- data/ext/pg_query/include/nodes/primnodes.h +0 -2041
- data/ext/pg_query/include/nodes/print.h +0 -34
- data/ext/pg_query/include/nodes/queryjumble.h +0 -86
- data/ext/pg_query/include/nodes/replnodes.h +0 -111
- data/ext/pg_query/include/nodes/supportnodes.h +0 -346
- data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
- data/ext/pg_query/include/nodes/value.h +0 -90
- data/ext/pg_query/include/optimizer/cost.h +0 -215
- data/ext/pg_query/include/optimizer/geqo.h +0 -90
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -202
- data/ext/pg_query/include/optimizer/paths.h +0 -266
- data/ext/pg_query/include/optimizer/planmain.h +0 -117
- data/ext/pg_query/include/parser/analyze.h +0 -64
- data/ext/pg_query/include/parser/kwlist.h +0 -498
- data/ext/pg_query/include/parser/parse_agg.h +0 -65
- data/ext/pg_query/include/parser/parse_coerce.h +0 -102
- data/ext/pg_query/include/parser/parse_expr.h +0 -25
- data/ext/pg_query/include/parser/parse_func.h +0 -74
- data/ext/pg_query/include/parser/parse_node.h +0 -357
- data/ext/pg_query/include/parser/parse_oper.h +0 -65
- data/ext/pg_query/include/parser/parse_relation.h +0 -129
- data/ext/pg_query/include/parser/parse_type.h +0 -61
- data/ext/pg_query/include/parser/parser.h +0 -68
- data/ext/pg_query/include/parser/parsetree.h +0 -61
- data/ext/pg_query/include/parser/scanner.h +0 -152
- data/ext/pg_query/include/parser/scansup.h +0 -27
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -843
- data/ext/pg_query/include/pg_config_manual.h +0 -372
- 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 -778
- data/ext/pg_query/include/pgtime.h +0 -94
- 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 -998
- data/ext/pg_query/include/plpgsql.h +0 -1340
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
- data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
- data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
- data/ext/pg_query/include/port/atomics/fallback.h +0 -170
- data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
- data/ext/pg_query/include/port/atomics/generic.h +0 -401
- data/ext/pg_query/include/port/atomics.h +0 -519
- data/ext/pg_query/include/port/pg_bitutils.h +0 -339
- 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/simd.h +0 -375
- data/ext/pg_query/include/port.h +0 -520
- data/ext/pg_query/include/portability/instr_time.h +0 -197
- data/ext/pg_query/include/postgres.h +0 -579
- data/ext/pg_query/include/postmaster/autovacuum.h +0 -80
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/bgworker.h +0 -162
- data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
- data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/interrupt.h +0 -32
- data/ext/pg_query/include/postmaster/pgarch.h +0 -36
- data/ext/pg_query/include/postmaster/postmaster.h +0 -81
- data/ext/pg_query/include/postmaster/startup.h +0 -41
- data/ext/pg_query/include/postmaster/syslogger.h +0 -103
- data/ext/pg_query/include/postmaster/walwriter.h +0 -23
- data/ext/pg_query/include/regex/regex.h +0 -189
- data/ext/pg_query/include/replication/logicallauncher.h +0 -34
- data/ext/pg_query/include/replication/logicalproto.h +0 -274
- data/ext/pg_query/include/replication/logicalworker.h +0 -32
- data/ext/pg_query/include/replication/origin.h +0 -73
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -753
- data/ext/pg_query/include/replication/slot.h +0 -249
- data/ext/pg_query/include/replication/syncrep.h +0 -109
- data/ext/pg_query/include/replication/walreceiver.h +0 -478
- 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 -35
- data/ext/pg_query/include/rewrite/rewriteManip.h +0 -96
- data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
- data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +0 -5321
- data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +0 -3354
- data/ext/pg_query/include/storage/backendid.h +0 -37
- data/ext/pg_query/include/storage/block.h +0 -108
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -393
- data/ext/pg_query/include/storage/bufpage.h +0 -510
- data/ext/pg_query/include/storage/condition_variable.h +0 -73
- data/ext/pg_query/include/storage/dsm.h +0 -61
- data/ext/pg_query/include/storage/dsm_impl.h +0 -79
- data/ext/pg_query/include/storage/fd.h +0 -202
- data/ext/pg_query/include/storage/fileset.h +0 -40
- data/ext/pg_query/include/storage/ipc.h +0 -84
- data/ext/pg_query/include/storage/item.h +0 -19
- data/ext/pg_query/include/storage/itemid.h +0 -184
- data/ext/pg_query/include/storage/itemptr.h +0 -245
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -194
- data/ext/pg_query/include/storage/lmgr.h +0 -120
- data/ext/pg_query/include/storage/lock.h +0 -624
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -220
- data/ext/pg_query/include/storage/lwlocknames.h +0 -50
- data/ext/pg_query/include/storage/off.h +0 -57
- data/ext/pg_query/include/storage/pg_sema.h +0 -61
- data/ext/pg_query/include/storage/pg_shmem.h +0 -92
- data/ext/pg_query/include/storage/pmsignal.h +0 -105
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -466
- data/ext/pg_query/include/storage/procarray.h +0 -99
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -73
- data/ext/pg_query/include/storage/relfilelocator.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -867
- data/ext/pg_query/include/storage/sharedfileset.h +0 -37
- data/ext/pg_query/include/storage/shm_mq.h +0 -86
- data/ext/pg_query/include/storage/shm_toc.h +0 -58
- data/ext/pg_query/include/storage/shmem.h +0 -59
- data/ext/pg_query/include/storage/sinval.h +0 -153
- data/ext/pg_query/include/storage/sinvaladt.h +0 -45
- data/ext/pg_query/include/storage/smgr.h +0 -113
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -99
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -66
- data/ext/pg_query/include/tcop/cmdtag.h +0 -63
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
- data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
- data/ext/pg_query/include/tcop/dest.h +0 -147
- data/ext/pg_query/include/tcop/fastpath.h +0 -20
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -94
- data/ext/pg_query/include/tcop/utility.h +0 -112
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -96
- data/ext/pg_query/include/utils/acl.h +0 -278
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -482
- data/ext/pg_query/include/utils/backend_progress.h +0 -45
- data/ext/pg_query/include/utils/backend_status.h +0 -342
- data/ext/pg_query/include/utils/builtins.h +0 -136
- data/ext/pg_query/include/utils/bytea.h +0 -28
- data/ext/pg_query/include/utils/catcache.h +0 -231
- data/ext/pg_query/include/utils/date.h +0 -118
- data/ext/pg_query/include/utils/datetime.h +0 -364
- data/ext/pg_query/include/utils/datum.h +0 -76
- data/ext/pg_query/include/utils/dsa.h +0 -127
- data/ext/pg_query/include/utils/elog.h +0 -545
- data/ext/pg_query/include/utils/errcodes.h +0 -354
- data/ext/pg_query/include/utils/expandeddatum.h +0 -170
- data/ext/pg_query/include/utils/expandedrecord.h +0 -241
- data/ext/pg_query/include/utils/float.h +0 -357
- data/ext/pg_query/include/utils/fmgroids.h +0 -3314
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2871
- data/ext/pg_query/include/utils/fmgrtab.h +0 -49
- data/ext/pg_query/include/utils/guc.h +0 -442
- data/ext/pg_query/include/utils/guc_hooks.h +0 -163
- data/ext/pg_query/include/utils/guc_tables.h +0 -322
- data/ext/pg_query/include/utils/hsearch.h +0 -153
- data/ext/pg_query/include/utils/inval.h +0 -68
- data/ext/pg_query/include/utils/logtape.h +0 -77
- data/ext/pg_query/include/utils/lsyscache.h +0 -212
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -186
- data/ext/pg_query/include/utils/memutils_internal.h +0 -136
- data/ext/pg_query/include/utils/memutils_memorychunk.h +0 -237
- data/ext/pg_query/include/utils/numeric.h +0 -105
- data/ext/pg_query/include/utils/palloc.h +0 -165
- data/ext/pg_query/include/utils/partcache.h +0 -103
- data/ext/pg_query/include/utils/pg_locale.h +0 -135
- data/ext/pg_query/include/utils/pgstat_internal.h +0 -814
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/plancache.h +0 -236
- data/ext/pg_query/include/utils/portal.h +0 -252
- data/ext/pg_query/include/utils/queryenvironment.h +0 -74
- data/ext/pg_query/include/utils/regproc.h +0 -39
- data/ext/pg_query/include/utils/rel.h +0 -712
- data/ext/pg_query/include/utils/relcache.h +0 -158
- 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/ruleutils.h +0 -52
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -181
- data/ext/pg_query/include/utils/snapshot.h +0 -219
- data/ext/pg_query/include/utils/sortsupport.h +0 -391
- data/ext/pg_query/include/utils/syscache.h +0 -227
- data/ext/pg_query/include/utils/timeout.h +0 -95
- data/ext/pg_query/include/utils/timestamp.h +0 -147
- data/ext/pg_query/include/utils/tuplesort.h +0 -445
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -209
- data/ext/pg_query/include/utils/varlena.h +0 -53
- data/ext/pg_query/include/utils/wait_event.h +0 -294
- data/ext/pg_query/include/utils/xml.h +0 -94
- data/ext/pg_query/include/varatt.h +0 -358
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2220
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{commands → postgres/commands}/user.h +0 -0
- /data/ext/pg_query/include/{common → postgres/common}/unicode_nonspacing_table.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/probes.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/ps_status.h +0 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* trigger.h
|
|
4
|
+
* Declarations for trigger handling.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* src/include/commands/trigger.h
|
|
10
|
+
*
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
#ifndef TRIGGER_H
|
|
14
|
+
#define TRIGGER_H
|
|
15
|
+
|
|
16
|
+
#include "access/tableam.h"
|
|
17
|
+
#include "catalog/objectaddress.h"
|
|
18
|
+
#include "nodes/execnodes.h"
|
|
19
|
+
#include "nodes/parsenodes.h"
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* TriggerData is the node type that is passed as fmgr "context" info
|
|
23
|
+
* when a function is called by the trigger manager.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#define CALLED_AS_TRIGGER(fcinfo) \
|
|
27
|
+
((fcinfo)->context != NULL && IsA((fcinfo)->context, TriggerData))
|
|
28
|
+
|
|
29
|
+
typedef uint32 TriggerEvent;
|
|
30
|
+
|
|
31
|
+
typedef struct TriggerData
|
|
32
|
+
{
|
|
33
|
+
NodeTag type;
|
|
34
|
+
TriggerEvent tg_event;
|
|
35
|
+
Relation tg_relation;
|
|
36
|
+
HeapTuple tg_trigtuple;
|
|
37
|
+
HeapTuple tg_newtuple;
|
|
38
|
+
Trigger *tg_trigger;
|
|
39
|
+
TupleTableSlot *tg_trigslot;
|
|
40
|
+
TupleTableSlot *tg_newslot;
|
|
41
|
+
Tuplestorestate *tg_oldtable;
|
|
42
|
+
Tuplestorestate *tg_newtable;
|
|
43
|
+
const Bitmapset *tg_updatedcols;
|
|
44
|
+
} TriggerData;
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* The state for capturing old and new tuples into transition tables for a
|
|
48
|
+
* single ModifyTable node (or other operation source, e.g. copyfrom.c).
|
|
49
|
+
*
|
|
50
|
+
* This is per-caller to avoid conflicts in setting
|
|
51
|
+
* tcs_original_insert_tuple. Note, however, that the pointed-to
|
|
52
|
+
* private data may be shared across multiple callers.
|
|
53
|
+
*/
|
|
54
|
+
struct AfterTriggersTableData; /* private in trigger.c */
|
|
55
|
+
|
|
56
|
+
typedef struct TransitionCaptureState
|
|
57
|
+
{
|
|
58
|
+
/*
|
|
59
|
+
* Is there at least one trigger specifying each transition relation on
|
|
60
|
+
* the relation explicitly named in the DML statement or COPY command?
|
|
61
|
+
* Note: in current usage, these flags could be part of the private state,
|
|
62
|
+
* but it seems possibly useful to let callers see them.
|
|
63
|
+
*/
|
|
64
|
+
bool tcs_delete_old_table;
|
|
65
|
+
bool tcs_update_old_table;
|
|
66
|
+
bool tcs_update_new_table;
|
|
67
|
+
bool tcs_insert_new_table;
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* For INSERT and COPY, it would be wasteful to convert tuples from child
|
|
71
|
+
* format to parent format after they have already been converted in the
|
|
72
|
+
* opposite direction during routing. In that case we bypass conversion
|
|
73
|
+
* and allow the inserting code (copyfrom.c and nodeModifyTable.c) to
|
|
74
|
+
* provide a slot containing the original tuple directly.
|
|
75
|
+
*/
|
|
76
|
+
TupleTableSlot *tcs_original_insert_tuple;
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* Private data including the tuplestore(s) into which to insert tuples.
|
|
80
|
+
*/
|
|
81
|
+
struct AfterTriggersTableData *tcs_private;
|
|
82
|
+
} TransitionCaptureState;
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* TriggerEvent bit flags
|
|
86
|
+
*
|
|
87
|
+
* Note that we assume different event types (INSERT/DELETE/UPDATE/TRUNCATE)
|
|
88
|
+
* can't be OR'd together in a single TriggerEvent. This is unlike the
|
|
89
|
+
* situation for pg_trigger rows, so pg_trigger.tgtype uses a different
|
|
90
|
+
* representation!
|
|
91
|
+
*/
|
|
92
|
+
#define TRIGGER_EVENT_INSERT 0x00000000
|
|
93
|
+
#define TRIGGER_EVENT_DELETE 0x00000001
|
|
94
|
+
#define TRIGGER_EVENT_UPDATE 0x00000002
|
|
95
|
+
#define TRIGGER_EVENT_TRUNCATE 0x00000003
|
|
96
|
+
#define TRIGGER_EVENT_OPMASK 0x00000003
|
|
97
|
+
|
|
98
|
+
#define TRIGGER_EVENT_ROW 0x00000004
|
|
99
|
+
|
|
100
|
+
#define TRIGGER_EVENT_BEFORE 0x00000008
|
|
101
|
+
#define TRIGGER_EVENT_AFTER 0x00000000
|
|
102
|
+
#define TRIGGER_EVENT_INSTEAD 0x00000010
|
|
103
|
+
#define TRIGGER_EVENT_TIMINGMASK 0x00000018
|
|
104
|
+
|
|
105
|
+
/* More TriggerEvent flags, used only within trigger.c */
|
|
106
|
+
|
|
107
|
+
#define AFTER_TRIGGER_DEFERRABLE 0x00000020
|
|
108
|
+
#define AFTER_TRIGGER_INITDEFERRED 0x00000040
|
|
109
|
+
|
|
110
|
+
#define TRIGGER_FIRED_BY_INSERT(event) \
|
|
111
|
+
(((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_INSERT)
|
|
112
|
+
|
|
113
|
+
#define TRIGGER_FIRED_BY_DELETE(event) \
|
|
114
|
+
(((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_DELETE)
|
|
115
|
+
|
|
116
|
+
#define TRIGGER_FIRED_BY_UPDATE(event) \
|
|
117
|
+
(((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_UPDATE)
|
|
118
|
+
|
|
119
|
+
#define TRIGGER_FIRED_BY_TRUNCATE(event) \
|
|
120
|
+
(((event) & TRIGGER_EVENT_OPMASK) == TRIGGER_EVENT_TRUNCATE)
|
|
121
|
+
|
|
122
|
+
#define TRIGGER_FIRED_FOR_ROW(event) \
|
|
123
|
+
((event) & TRIGGER_EVENT_ROW)
|
|
124
|
+
|
|
125
|
+
#define TRIGGER_FIRED_FOR_STATEMENT(event) \
|
|
126
|
+
(!TRIGGER_FIRED_FOR_ROW(event))
|
|
127
|
+
|
|
128
|
+
#define TRIGGER_FIRED_BEFORE(event) \
|
|
129
|
+
(((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_BEFORE)
|
|
130
|
+
|
|
131
|
+
#define TRIGGER_FIRED_AFTER(event) \
|
|
132
|
+
(((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_AFTER)
|
|
133
|
+
|
|
134
|
+
#define TRIGGER_FIRED_INSTEAD(event) \
|
|
135
|
+
(((event) & TRIGGER_EVENT_TIMINGMASK) == TRIGGER_EVENT_INSTEAD)
|
|
136
|
+
|
|
137
|
+
/*
|
|
138
|
+
* Definitions for replication role based firing.
|
|
139
|
+
*/
|
|
140
|
+
#define SESSION_REPLICATION_ROLE_ORIGIN 0
|
|
141
|
+
#define SESSION_REPLICATION_ROLE_REPLICA 1
|
|
142
|
+
#define SESSION_REPLICATION_ROLE_LOCAL 2
|
|
143
|
+
extern PGDLLIMPORT int SessionReplicationRole;
|
|
144
|
+
|
|
145
|
+
/*
|
|
146
|
+
* States at which a trigger can be fired. These are the
|
|
147
|
+
* possible values for pg_trigger.tgenabled.
|
|
148
|
+
*/
|
|
149
|
+
#define TRIGGER_FIRES_ON_ORIGIN 'O'
|
|
150
|
+
#define TRIGGER_FIRES_ALWAYS 'A'
|
|
151
|
+
#define TRIGGER_FIRES_ON_REPLICA 'R'
|
|
152
|
+
#define TRIGGER_DISABLED 'D'
|
|
153
|
+
|
|
154
|
+
extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
|
|
155
|
+
Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid,
|
|
156
|
+
Oid funcoid, Oid parentTriggerOid, Node *whenClause,
|
|
157
|
+
bool isInternal, bool in_partition);
|
|
158
|
+
extern ObjectAddress CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
|
|
159
|
+
Oid relOid, Oid refRelOid, Oid constraintOid,
|
|
160
|
+
Oid indexOid, Oid funcoid, Oid parentTriggerOid,
|
|
161
|
+
Node *whenClause, bool isInternal, bool in_partition,
|
|
162
|
+
char trigger_fires_when);
|
|
163
|
+
|
|
164
|
+
extern void TriggerSetParentTrigger(Relation trigRel,
|
|
165
|
+
Oid childTrigId,
|
|
166
|
+
Oid parentTrigId,
|
|
167
|
+
Oid childTableId);
|
|
168
|
+
extern void RemoveTriggerById(Oid trigOid);
|
|
169
|
+
extern Oid get_trigger_oid(Oid relid, const char *trigname, bool missing_ok);
|
|
170
|
+
|
|
171
|
+
extern ObjectAddress renametrig(RenameStmt *stmt);
|
|
172
|
+
|
|
173
|
+
extern void EnableDisableTrigger(Relation rel, const char *tgname, Oid tgparent,
|
|
174
|
+
char fires_when, bool skip_system, bool recurse,
|
|
175
|
+
LOCKMODE lockmode);
|
|
176
|
+
|
|
177
|
+
extern void RelationBuildTriggers(Relation relation);
|
|
178
|
+
|
|
179
|
+
extern TriggerDesc *CopyTriggerDesc(TriggerDesc *trigdesc);
|
|
180
|
+
|
|
181
|
+
extern const char *FindTriggerIncompatibleWithInheritance(TriggerDesc *trigdesc);
|
|
182
|
+
|
|
183
|
+
extern TransitionCaptureState *MakeTransitionCaptureState(TriggerDesc *trigdesc,
|
|
184
|
+
Oid relid, CmdType cmdType);
|
|
185
|
+
|
|
186
|
+
extern void FreeTriggerDesc(TriggerDesc *trigdesc);
|
|
187
|
+
|
|
188
|
+
extern void ExecBSInsertTriggers(EState *estate,
|
|
189
|
+
ResultRelInfo *relinfo);
|
|
190
|
+
extern void ExecASInsertTriggers(EState *estate,
|
|
191
|
+
ResultRelInfo *relinfo,
|
|
192
|
+
TransitionCaptureState *transition_capture);
|
|
193
|
+
extern bool ExecBRInsertTriggers(EState *estate,
|
|
194
|
+
ResultRelInfo *relinfo,
|
|
195
|
+
TupleTableSlot *slot);
|
|
196
|
+
extern void ExecARInsertTriggers(EState *estate,
|
|
197
|
+
ResultRelInfo *relinfo,
|
|
198
|
+
TupleTableSlot *slot,
|
|
199
|
+
List *recheckIndexes,
|
|
200
|
+
TransitionCaptureState *transition_capture);
|
|
201
|
+
extern bool ExecIRInsertTriggers(EState *estate,
|
|
202
|
+
ResultRelInfo *relinfo,
|
|
203
|
+
TupleTableSlot *slot);
|
|
204
|
+
extern void ExecBSDeleteTriggers(EState *estate,
|
|
205
|
+
ResultRelInfo *relinfo);
|
|
206
|
+
extern void ExecASDeleteTriggers(EState *estate,
|
|
207
|
+
ResultRelInfo *relinfo,
|
|
208
|
+
TransitionCaptureState *transition_capture);
|
|
209
|
+
extern bool ExecBRDeleteTriggers(EState *estate,
|
|
210
|
+
EPQState *epqstate,
|
|
211
|
+
ResultRelInfo *relinfo,
|
|
212
|
+
ItemPointer tupleid,
|
|
213
|
+
HeapTuple fdw_trigtuple,
|
|
214
|
+
TupleTableSlot **epqslot,
|
|
215
|
+
TM_Result *tmresult,
|
|
216
|
+
TM_FailureData *tmfd);
|
|
217
|
+
extern void ExecARDeleteTriggers(EState *estate,
|
|
218
|
+
ResultRelInfo *relinfo,
|
|
219
|
+
ItemPointer tupleid,
|
|
220
|
+
HeapTuple fdw_trigtuple,
|
|
221
|
+
TransitionCaptureState *transition_capture,
|
|
222
|
+
bool is_crosspart_update);
|
|
223
|
+
extern bool ExecIRDeleteTriggers(EState *estate,
|
|
224
|
+
ResultRelInfo *relinfo,
|
|
225
|
+
HeapTuple trigtuple);
|
|
226
|
+
extern void ExecBSUpdateTriggers(EState *estate,
|
|
227
|
+
ResultRelInfo *relinfo);
|
|
228
|
+
extern void ExecASUpdateTriggers(EState *estate,
|
|
229
|
+
ResultRelInfo *relinfo,
|
|
230
|
+
TransitionCaptureState *transition_capture);
|
|
231
|
+
extern bool ExecBRUpdateTriggers(EState *estate,
|
|
232
|
+
EPQState *epqstate,
|
|
233
|
+
ResultRelInfo *relinfo,
|
|
234
|
+
ItemPointer tupleid,
|
|
235
|
+
HeapTuple fdw_trigtuple,
|
|
236
|
+
TupleTableSlot *newslot,
|
|
237
|
+
TM_Result *tmresult,
|
|
238
|
+
TM_FailureData *tmfd);
|
|
239
|
+
extern void ExecARUpdateTriggers(EState *estate,
|
|
240
|
+
ResultRelInfo *relinfo,
|
|
241
|
+
ResultRelInfo *src_partinfo,
|
|
242
|
+
ResultRelInfo *dst_partinfo,
|
|
243
|
+
ItemPointer tupleid,
|
|
244
|
+
HeapTuple fdw_trigtuple,
|
|
245
|
+
TupleTableSlot *newslot,
|
|
246
|
+
List *recheckIndexes,
|
|
247
|
+
TransitionCaptureState *transition_capture,
|
|
248
|
+
bool is_crosspart_update);
|
|
249
|
+
extern bool ExecIRUpdateTriggers(EState *estate,
|
|
250
|
+
ResultRelInfo *relinfo,
|
|
251
|
+
HeapTuple trigtuple,
|
|
252
|
+
TupleTableSlot *newslot);
|
|
253
|
+
extern void ExecBSTruncateTriggers(EState *estate,
|
|
254
|
+
ResultRelInfo *relinfo);
|
|
255
|
+
extern void ExecASTruncateTriggers(EState *estate,
|
|
256
|
+
ResultRelInfo *relinfo);
|
|
257
|
+
|
|
258
|
+
extern void AfterTriggerBeginXact(void);
|
|
259
|
+
extern void AfterTriggerBeginQuery(void);
|
|
260
|
+
extern void AfterTriggerEndQuery(EState *estate);
|
|
261
|
+
extern void AfterTriggerFireDeferred(void);
|
|
262
|
+
extern void AfterTriggerEndXact(bool isCommit);
|
|
263
|
+
extern void AfterTriggerBeginSubXact(void);
|
|
264
|
+
extern void AfterTriggerEndSubXact(bool isCommit);
|
|
265
|
+
extern void AfterTriggerSetState(ConstraintsSetStmt *stmt);
|
|
266
|
+
extern bool AfterTriggerPendingOnRel(Oid relid);
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
/*
|
|
270
|
+
* in utils/adt/ri_triggers.c
|
|
271
|
+
*/
|
|
272
|
+
extern bool RI_FKey_pk_upd_check_required(Trigger *trigger, Relation pk_rel,
|
|
273
|
+
TupleTableSlot *oldslot, TupleTableSlot *newslot);
|
|
274
|
+
extern bool RI_FKey_fk_upd_check_required(Trigger *trigger, Relation fk_rel,
|
|
275
|
+
TupleTableSlot *oldslot, TupleTableSlot *newslot);
|
|
276
|
+
extern bool RI_Initial_Check(Trigger *trigger,
|
|
277
|
+
Relation fk_rel, Relation pk_rel);
|
|
278
|
+
extern void RI_PartitionRemove_Check(Trigger *trigger, Relation fk_rel,
|
|
279
|
+
Relation pk_rel);
|
|
280
|
+
|
|
281
|
+
/* result values for RI_FKey_trigger_type: */
|
|
282
|
+
#define RI_TRIGGER_PK 1 /* is a trigger on the PK relation */
|
|
283
|
+
#define RI_TRIGGER_FK 2 /* is a trigger on the FK relation */
|
|
284
|
+
#define RI_TRIGGER_NONE 0 /* is not an RI trigger function */
|
|
285
|
+
|
|
286
|
+
extern int RI_FKey_trigger_type(Oid tgfoid);
|
|
287
|
+
|
|
288
|
+
#endif /* TRIGGER_H */
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* vacuum.h
|
|
4
|
+
* header file for postgres vacuum cleaner and statistics analyzer
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
|
+
*
|
|
10
|
+
* src/include/commands/vacuum.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef VACUUM_H
|
|
15
|
+
#define VACUUM_H
|
|
16
|
+
|
|
17
|
+
#include "access/htup.h"
|
|
18
|
+
#include "access/genam.h"
|
|
19
|
+
#include "access/parallel.h"
|
|
20
|
+
#include "access/tidstore.h"
|
|
21
|
+
#include "catalog/pg_class.h"
|
|
22
|
+
#include "catalog/pg_statistic.h"
|
|
23
|
+
#include "catalog/pg_type.h"
|
|
24
|
+
#include "parser/parse_node.h"
|
|
25
|
+
#include "storage/buf.h"
|
|
26
|
+
#include "storage/lock.h"
|
|
27
|
+
#include "utils/relcache.h"
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
* Flags for amparallelvacuumoptions to control the participation of bulkdelete
|
|
31
|
+
* and vacuumcleanup in parallel vacuum.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* Both bulkdelete and vacuumcleanup are disabled by default. This will be
|
|
36
|
+
* used by IndexAM's that don't want to or cannot participate in parallel
|
|
37
|
+
* vacuum. For example, if an index AM doesn't have a way to communicate the
|
|
38
|
+
* index statistics allocated by the first ambulkdelete call to the subsequent
|
|
39
|
+
* ones until amvacuumcleanup, the index AM cannot participate in parallel
|
|
40
|
+
* vacuum.
|
|
41
|
+
*/
|
|
42
|
+
#define VACUUM_OPTION_NO_PARALLEL 0
|
|
43
|
+
|
|
44
|
+
/*
|
|
45
|
+
* bulkdelete can be performed in parallel. This option can be used by
|
|
46
|
+
* index AMs that need to scan indexes to delete tuples.
|
|
47
|
+
*/
|
|
48
|
+
#define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0)
|
|
49
|
+
|
|
50
|
+
/*
|
|
51
|
+
* vacuumcleanup can be performed in parallel if bulkdelete is not performed
|
|
52
|
+
* yet. This will be used by IndexAM's that can scan the index if the
|
|
53
|
+
* bulkdelete is not performed.
|
|
54
|
+
*/
|
|
55
|
+
#define VACUUM_OPTION_PARALLEL_COND_CLEANUP (1 << 1)
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* vacuumcleanup can be performed in parallel even if bulkdelete has already
|
|
59
|
+
* processed the index. This will be used by IndexAM's that scan the index
|
|
60
|
+
* during the cleanup phase of index irrespective of whether the index is
|
|
61
|
+
* already scanned or not during bulkdelete phase.
|
|
62
|
+
*/
|
|
63
|
+
#define VACUUM_OPTION_PARALLEL_CLEANUP (1 << 2)
|
|
64
|
+
|
|
65
|
+
/* value for checking vacuum flags */
|
|
66
|
+
#define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1)
|
|
67
|
+
|
|
68
|
+
/* Abstract type for parallel vacuum state */
|
|
69
|
+
typedef struct ParallelVacuumState ParallelVacuumState;
|
|
70
|
+
|
|
71
|
+
/*----------
|
|
72
|
+
* ANALYZE builds one of these structs for each attribute (column) that is
|
|
73
|
+
* to be analyzed. The struct and subsidiary data are in anl_context,
|
|
74
|
+
* so they live until the end of the ANALYZE operation.
|
|
75
|
+
*
|
|
76
|
+
* The type-specific typanalyze function is passed a pointer to this struct
|
|
77
|
+
* and must return true to continue analysis, false to skip analysis of this
|
|
78
|
+
* column. In the true case it must set the compute_stats and minrows fields,
|
|
79
|
+
* and can optionally set extra_data to pass additional info to compute_stats.
|
|
80
|
+
* minrows is its request for the minimum number of sample rows to be gathered
|
|
81
|
+
* (but note this request might not be honored, eg if there are fewer rows
|
|
82
|
+
* than that in the table).
|
|
83
|
+
*
|
|
84
|
+
* The compute_stats routine will be called after sample rows have been
|
|
85
|
+
* gathered. Aside from this struct, it is passed:
|
|
86
|
+
* fetchfunc: a function for accessing the column values from the
|
|
87
|
+
* sample rows
|
|
88
|
+
* samplerows: the number of sample tuples
|
|
89
|
+
* totalrows: estimated total number of rows in relation
|
|
90
|
+
* The fetchfunc may be called with rownum running from 0 to samplerows-1.
|
|
91
|
+
* It returns a Datum and an isNull flag.
|
|
92
|
+
*
|
|
93
|
+
* compute_stats should set stats_valid true if it is able to compute
|
|
94
|
+
* any useful statistics. If it does, the remainder of the struct holds
|
|
95
|
+
* the information to be stored in a pg_statistic row for the column. Be
|
|
96
|
+
* careful to allocate any pointed-to data in anl_context, which will NOT
|
|
97
|
+
* be CurrentMemoryContext when compute_stats is called.
|
|
98
|
+
*
|
|
99
|
+
* Note: all comparisons done for statistical purposes should use the
|
|
100
|
+
* underlying column's collation (attcollation), except in situations
|
|
101
|
+
* where a noncollatable container type contains a collatable type;
|
|
102
|
+
* in that case use the type's default collation. Be sure to record
|
|
103
|
+
* the appropriate collation in stacoll.
|
|
104
|
+
*----------
|
|
105
|
+
*/
|
|
106
|
+
typedef struct VacAttrStats *VacAttrStatsP;
|
|
107
|
+
|
|
108
|
+
typedef Datum (*AnalyzeAttrFetchFunc) (VacAttrStatsP stats, int rownum,
|
|
109
|
+
bool *isNull);
|
|
110
|
+
|
|
111
|
+
typedef void (*AnalyzeAttrComputeStatsFunc) (VacAttrStatsP stats,
|
|
112
|
+
AnalyzeAttrFetchFunc fetchfunc,
|
|
113
|
+
int samplerows,
|
|
114
|
+
double totalrows);
|
|
115
|
+
|
|
116
|
+
typedef struct VacAttrStats
|
|
117
|
+
{
|
|
118
|
+
/*
|
|
119
|
+
* These fields are set up by the main ANALYZE code before invoking the
|
|
120
|
+
* type-specific typanalyze function. They don't necessarily match what
|
|
121
|
+
* is in pg_attribute, because some index opclasses store a different type
|
|
122
|
+
* than the underlying column/expression. Therefore, use these fields for
|
|
123
|
+
* information about the datatype being fed to the typanalyze function.
|
|
124
|
+
*/
|
|
125
|
+
int attstattarget; /* -1 to use default */
|
|
126
|
+
Oid attrtypid; /* type of data being analyzed */
|
|
127
|
+
int32 attrtypmod; /* typmod of data being analyzed */
|
|
128
|
+
Form_pg_type attrtype; /* copy of pg_type row for attrtypid */
|
|
129
|
+
Oid attrcollid; /* collation of data being analyzed */
|
|
130
|
+
MemoryContext anl_context; /* where to save long-lived data */
|
|
131
|
+
|
|
132
|
+
/*
|
|
133
|
+
* These fields must be filled in by the typanalyze routine, unless it
|
|
134
|
+
* returns false.
|
|
135
|
+
*/
|
|
136
|
+
AnalyzeAttrComputeStatsFunc compute_stats; /* function pointer */
|
|
137
|
+
int minrows; /* Minimum # of rows wanted for stats */
|
|
138
|
+
void *extra_data; /* for extra type-specific data */
|
|
139
|
+
|
|
140
|
+
/*
|
|
141
|
+
* These fields are to be filled in by the compute_stats routine. (They
|
|
142
|
+
* are initialized to zero when the struct is created.)
|
|
143
|
+
*/
|
|
144
|
+
bool stats_valid;
|
|
145
|
+
float4 stanullfrac; /* fraction of entries that are NULL */
|
|
146
|
+
int32 stawidth; /* average width of column values */
|
|
147
|
+
float4 stadistinct; /* # distinct values */
|
|
148
|
+
int16 stakind[STATISTIC_NUM_SLOTS];
|
|
149
|
+
Oid staop[STATISTIC_NUM_SLOTS];
|
|
150
|
+
Oid stacoll[STATISTIC_NUM_SLOTS];
|
|
151
|
+
int numnumbers[STATISTIC_NUM_SLOTS];
|
|
152
|
+
float4 *stanumbers[STATISTIC_NUM_SLOTS];
|
|
153
|
+
int numvalues[STATISTIC_NUM_SLOTS];
|
|
154
|
+
Datum *stavalues[STATISTIC_NUM_SLOTS];
|
|
155
|
+
|
|
156
|
+
/*
|
|
157
|
+
* These fields describe the stavalues[n] element types. They will be
|
|
158
|
+
* initialized to match attrtypid, but a custom typanalyze function might
|
|
159
|
+
* want to store an array of something other than the analyzed column's
|
|
160
|
+
* elements. It should then overwrite these fields.
|
|
161
|
+
*/
|
|
162
|
+
Oid statypid[STATISTIC_NUM_SLOTS];
|
|
163
|
+
int16 statyplen[STATISTIC_NUM_SLOTS];
|
|
164
|
+
bool statypbyval[STATISTIC_NUM_SLOTS];
|
|
165
|
+
char statypalign[STATISTIC_NUM_SLOTS];
|
|
166
|
+
|
|
167
|
+
/*
|
|
168
|
+
* These fields are private to the main ANALYZE code and should not be
|
|
169
|
+
* looked at by type-specific functions.
|
|
170
|
+
*/
|
|
171
|
+
int tupattnum; /* attribute number within tuples */
|
|
172
|
+
HeapTuple *rows; /* access info for std fetch function */
|
|
173
|
+
TupleDesc tupDesc;
|
|
174
|
+
Datum *exprvals; /* access info for index fetch function */
|
|
175
|
+
bool *exprnulls;
|
|
176
|
+
int rowstride;
|
|
177
|
+
} VacAttrStats;
|
|
178
|
+
|
|
179
|
+
/* flag bits for VacuumParams->options */
|
|
180
|
+
#define VACOPT_VACUUM 0x01 /* do VACUUM */
|
|
181
|
+
#define VACOPT_ANALYZE 0x02 /* do ANALYZE */
|
|
182
|
+
#define VACOPT_VERBOSE 0x04 /* output INFO instrumentation messages */
|
|
183
|
+
#define VACOPT_FREEZE 0x08 /* FREEZE option */
|
|
184
|
+
#define VACOPT_FULL 0x10 /* FULL (non-concurrent) vacuum */
|
|
185
|
+
#define VACOPT_SKIP_LOCKED 0x20 /* skip if cannot get lock */
|
|
186
|
+
#define VACOPT_PROCESS_MAIN 0x40 /* process main relation */
|
|
187
|
+
#define VACOPT_PROCESS_TOAST 0x80 /* process the TOAST table, if any */
|
|
188
|
+
#define VACOPT_DISABLE_PAGE_SKIPPING 0x100 /* don't skip any pages */
|
|
189
|
+
#define VACOPT_SKIP_DATABASE_STATS 0x200 /* skip vac_update_datfrozenxid() */
|
|
190
|
+
#define VACOPT_ONLY_DATABASE_STATS 0x400 /* only vac_update_datfrozenxid() */
|
|
191
|
+
|
|
192
|
+
/*
|
|
193
|
+
* Values used by index_cleanup and truncate params.
|
|
194
|
+
*
|
|
195
|
+
* VACOPTVALUE_UNSPECIFIED is used as an initial placeholder when VACUUM
|
|
196
|
+
* command has no explicit value. When that happens the final usable value
|
|
197
|
+
* comes from the corresponding reloption (though the reloption default is
|
|
198
|
+
* usually used).
|
|
199
|
+
*/
|
|
200
|
+
typedef enum VacOptValue
|
|
201
|
+
{
|
|
202
|
+
VACOPTVALUE_UNSPECIFIED = 0,
|
|
203
|
+
VACOPTVALUE_AUTO,
|
|
204
|
+
VACOPTVALUE_DISABLED,
|
|
205
|
+
VACOPTVALUE_ENABLED,
|
|
206
|
+
} VacOptValue;
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
* Parameters customizing behavior of VACUUM and ANALYZE.
|
|
210
|
+
*
|
|
211
|
+
* Note that at least one of VACOPT_VACUUM and VACOPT_ANALYZE must be set
|
|
212
|
+
* in options.
|
|
213
|
+
*
|
|
214
|
+
* When adding a new VacuumParam member, consider adding it to vacuumdb as
|
|
215
|
+
* well.
|
|
216
|
+
*/
|
|
217
|
+
typedef struct VacuumParams
|
|
218
|
+
{
|
|
219
|
+
bits32 options; /* bitmask of VACOPT_* */
|
|
220
|
+
int freeze_min_age; /* min freeze age, -1 to use default */
|
|
221
|
+
int freeze_table_age; /* age at which to scan whole table */
|
|
222
|
+
int multixact_freeze_min_age; /* min multixact freeze age, -1 to
|
|
223
|
+
* use default */
|
|
224
|
+
int multixact_freeze_table_age; /* multixact age at which to scan
|
|
225
|
+
* whole table */
|
|
226
|
+
bool is_wraparound; /* force a for-wraparound vacuum */
|
|
227
|
+
int log_min_duration; /* minimum execution threshold in ms at
|
|
228
|
+
* which autovacuum is logged, -1 to use
|
|
229
|
+
* default */
|
|
230
|
+
VacOptValue index_cleanup; /* Do index vacuum and cleanup */
|
|
231
|
+
VacOptValue truncate; /* Truncate empty pages at the end */
|
|
232
|
+
Oid toast_parent; /* for privilege checks when recursing */
|
|
233
|
+
|
|
234
|
+
/*
|
|
235
|
+
* The number of parallel vacuum workers. 0 by default which means choose
|
|
236
|
+
* based on the number of indexes. -1 indicates parallel vacuum is
|
|
237
|
+
* disabled.
|
|
238
|
+
*/
|
|
239
|
+
int nworkers;
|
|
240
|
+
} VacuumParams;
|
|
241
|
+
|
|
242
|
+
/*
|
|
243
|
+
* VacuumCutoffs is immutable state that describes the cutoffs used by VACUUM.
|
|
244
|
+
* Established at the beginning of each VACUUM operation.
|
|
245
|
+
*/
|
|
246
|
+
struct VacuumCutoffs
|
|
247
|
+
{
|
|
248
|
+
/*
|
|
249
|
+
* Existing pg_class fields at start of VACUUM
|
|
250
|
+
*/
|
|
251
|
+
TransactionId relfrozenxid;
|
|
252
|
+
MultiXactId relminmxid;
|
|
253
|
+
|
|
254
|
+
/*
|
|
255
|
+
* OldestXmin is the Xid below which tuples deleted by any xact (that
|
|
256
|
+
* committed) should be considered DEAD, not just RECENTLY_DEAD.
|
|
257
|
+
*
|
|
258
|
+
* OldestMxact is the Mxid below which MultiXacts are definitely not seen
|
|
259
|
+
* as visible by any running transaction.
|
|
260
|
+
*
|
|
261
|
+
* OldestXmin and OldestMxact are also the most recent values that can
|
|
262
|
+
* ever be passed to vac_update_relstats() as frozenxid and minmulti
|
|
263
|
+
* arguments at the end of VACUUM. These same values should be passed
|
|
264
|
+
* when it turns out that VACUUM will leave no unfrozen XIDs/MXIDs behind
|
|
265
|
+
* in the table.
|
|
266
|
+
*/
|
|
267
|
+
TransactionId OldestXmin;
|
|
268
|
+
MultiXactId OldestMxact;
|
|
269
|
+
|
|
270
|
+
/*
|
|
271
|
+
* FreezeLimit is the Xid below which all Xids are definitely frozen or
|
|
272
|
+
* removed in pages VACUUM scans and cleanup locks.
|
|
273
|
+
*
|
|
274
|
+
* MultiXactCutoff is the value below which all MultiXactIds are
|
|
275
|
+
* definitely removed from Xmax in pages VACUUM scans and cleanup locks.
|
|
276
|
+
*/
|
|
277
|
+
TransactionId FreezeLimit;
|
|
278
|
+
MultiXactId MultiXactCutoff;
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
/*
|
|
282
|
+
* VacDeadItemsInfo stores supplemental information for dead tuple TID
|
|
283
|
+
* storage (i.e. TidStore).
|
|
284
|
+
*/
|
|
285
|
+
typedef struct VacDeadItemsInfo
|
|
286
|
+
{
|
|
287
|
+
size_t max_bytes; /* the maximum bytes TidStore can use */
|
|
288
|
+
int64 num_items; /* current # of entries */
|
|
289
|
+
} VacDeadItemsInfo;
|
|
290
|
+
|
|
291
|
+
/* GUC parameters */
|
|
292
|
+
extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */
|
|
293
|
+
extern PGDLLIMPORT int vacuum_freeze_min_age;
|
|
294
|
+
extern PGDLLIMPORT int vacuum_freeze_table_age;
|
|
295
|
+
extern PGDLLIMPORT int vacuum_multixact_freeze_min_age;
|
|
296
|
+
extern PGDLLIMPORT int vacuum_multixact_freeze_table_age;
|
|
297
|
+
extern PGDLLIMPORT int vacuum_failsafe_age;
|
|
298
|
+
extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
|
|
299
|
+
|
|
300
|
+
/*
|
|
301
|
+
* Maximum value for default_statistics_target and per-column statistics
|
|
302
|
+
* targets. This is fairly arbitrary, mainly to prevent users from creating
|
|
303
|
+
* unreasonably large statistics that the system cannot handle well.
|
|
304
|
+
*/
|
|
305
|
+
#define MAX_STATISTICS_TARGET 10000
|
|
306
|
+
|
|
307
|
+
/* Variables for cost-based parallel vacuum */
|
|
308
|
+
extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
|
|
309
|
+
extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
|
|
310
|
+
extern PGDLLIMPORT int VacuumCostBalanceLocal;
|
|
311
|
+
|
|
312
|
+
extern PGDLLIMPORT bool VacuumFailsafeActive;
|
|
313
|
+
extern PGDLLIMPORT double vacuum_cost_delay;
|
|
314
|
+
extern PGDLLIMPORT int vacuum_cost_limit;
|
|
315
|
+
|
|
316
|
+
/* in commands/vacuum.c */
|
|
317
|
+
extern void ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel);
|
|
318
|
+
extern void vacuum(List *relations, VacuumParams *params,
|
|
319
|
+
BufferAccessStrategy bstrategy, MemoryContext vac_context,
|
|
320
|
+
bool isTopLevel);
|
|
321
|
+
extern void vac_open_indexes(Relation relation, LOCKMODE lockmode,
|
|
322
|
+
int *nindexes, Relation **Irel);
|
|
323
|
+
extern void vac_close_indexes(int nindexes, Relation *Irel, LOCKMODE lockmode);
|
|
324
|
+
extern double vac_estimate_reltuples(Relation relation,
|
|
325
|
+
BlockNumber total_pages,
|
|
326
|
+
BlockNumber scanned_pages,
|
|
327
|
+
double scanned_tuples);
|
|
328
|
+
extern void vac_update_relstats(Relation relation,
|
|
329
|
+
BlockNumber num_pages,
|
|
330
|
+
double num_tuples,
|
|
331
|
+
BlockNumber num_all_visible_pages,
|
|
332
|
+
bool hasindex,
|
|
333
|
+
TransactionId frozenxid,
|
|
334
|
+
MultiXactId minmulti,
|
|
335
|
+
bool *frozenxid_updated,
|
|
336
|
+
bool *minmulti_updated,
|
|
337
|
+
bool in_outer_xact);
|
|
338
|
+
extern bool vacuum_get_cutoffs(Relation rel, const VacuumParams *params,
|
|
339
|
+
struct VacuumCutoffs *cutoffs);
|
|
340
|
+
extern bool vacuum_xid_failsafe_check(const struct VacuumCutoffs *cutoffs);
|
|
341
|
+
extern void vac_update_datfrozenxid(void);
|
|
342
|
+
extern void vacuum_delay_point(void);
|
|
343
|
+
extern bool vacuum_is_permitted_for_relation(Oid relid, Form_pg_class reltuple,
|
|
344
|
+
bits32 options);
|
|
345
|
+
extern Relation vacuum_open_relation(Oid relid, RangeVar *relation,
|
|
346
|
+
bits32 options, bool verbose,
|
|
347
|
+
LOCKMODE lmode);
|
|
348
|
+
extern IndexBulkDeleteResult *vac_bulkdel_one_index(IndexVacuumInfo *ivinfo,
|
|
349
|
+
IndexBulkDeleteResult *istat,
|
|
350
|
+
TidStore *dead_items,
|
|
351
|
+
VacDeadItemsInfo *dead_items_info);
|
|
352
|
+
extern IndexBulkDeleteResult *vac_cleanup_one_index(IndexVacuumInfo *ivinfo,
|
|
353
|
+
IndexBulkDeleteResult *istat);
|
|
354
|
+
|
|
355
|
+
/* In postmaster/autovacuum.c */
|
|
356
|
+
extern void AutoVacuumUpdateCostLimit(void);
|
|
357
|
+
extern void VacuumUpdateCosts(void);
|
|
358
|
+
|
|
359
|
+
/* in commands/vacuumparallel.c */
|
|
360
|
+
extern ParallelVacuumState *parallel_vacuum_init(Relation rel, Relation *indrels,
|
|
361
|
+
int nindexes, int nrequested_workers,
|
|
362
|
+
int vac_work_mem, int elevel,
|
|
363
|
+
BufferAccessStrategy bstrategy);
|
|
364
|
+
extern void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats);
|
|
365
|
+
extern TidStore *parallel_vacuum_get_dead_items(ParallelVacuumState *pvs,
|
|
366
|
+
VacDeadItemsInfo **dead_items_info_p);
|
|
367
|
+
extern void parallel_vacuum_reset_dead_items(ParallelVacuumState *pvs);
|
|
368
|
+
extern void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs,
|
|
369
|
+
long num_table_tuples,
|
|
370
|
+
int num_index_scans);
|
|
371
|
+
extern void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs,
|
|
372
|
+
long num_table_tuples,
|
|
373
|
+
int num_index_scans,
|
|
374
|
+
bool estimated_count);
|
|
375
|
+
extern void parallel_vacuum_main(dsm_segment *seg, shm_toc *toc);
|
|
376
|
+
|
|
377
|
+
/* in commands/analyze.c */
|
|
378
|
+
extern void analyze_rel(Oid relid, RangeVar *relation,
|
|
379
|
+
VacuumParams *params, List *va_cols, bool in_outer_xact,
|
|
380
|
+
BufferAccessStrategy bstrategy);
|
|
381
|
+
extern bool std_typanalyze(VacAttrStats *stats);
|
|
382
|
+
|
|
383
|
+
/* in utils/misc/sampling.c --- duplicate of declarations in utils/sampling.h */
|
|
384
|
+
extern double anl_random_fract(void);
|
|
385
|
+
extern double anl_init_selection_state(int n);
|
|
386
|
+
extern double anl_get_next_S(double t, int n, double *stateptr);
|
|
387
|
+
|
|
388
|
+
#endif /* VACUUM_H */
|