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
@@ -0,0 +1,219 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* snapshot.h
|
4
|
+
* POSTGRES snapshot definition
|
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/utils/snapshot.h
|
10
|
+
*
|
11
|
+
*-------------------------------------------------------------------------
|
12
|
+
*/
|
13
|
+
#ifndef SNAPSHOT_H
|
14
|
+
#define SNAPSHOT_H
|
15
|
+
|
16
|
+
#include "access/htup.h"
|
17
|
+
#include "access/xlogdefs.h"
|
18
|
+
#include "datatype/timestamp.h"
|
19
|
+
#include "lib/pairingheap.h"
|
20
|
+
#include "storage/buf.h"
|
21
|
+
|
22
|
+
|
23
|
+
/*
|
24
|
+
* The different snapshot types. We use SnapshotData structures to represent
|
25
|
+
* both "regular" (MVCC) snapshots and "special" snapshots that have non-MVCC
|
26
|
+
* semantics. The specific semantics of a snapshot are encoded by its type.
|
27
|
+
*
|
28
|
+
* The behaviour of each type of snapshot should be documented alongside its
|
29
|
+
* enum value, best in terms that are not specific to an individual table AM.
|
30
|
+
*
|
31
|
+
* The reason the snapshot type rather than a callback as it used to be is
|
32
|
+
* that that allows to use the same snapshot for different table AMs without
|
33
|
+
* having one callback per AM.
|
34
|
+
*/
|
35
|
+
typedef enum SnapshotType
|
36
|
+
{
|
37
|
+
/*-------------------------------------------------------------------------
|
38
|
+
* A tuple is visible iff the tuple is valid for the given MVCC snapshot.
|
39
|
+
*
|
40
|
+
* Here, we consider the effects of:
|
41
|
+
* - all transactions committed as of the time of the given snapshot
|
42
|
+
* - previous commands of this transaction
|
43
|
+
*
|
44
|
+
* Does _not_ include:
|
45
|
+
* - transactions shown as in-progress by the snapshot
|
46
|
+
* - transactions started after the snapshot was taken
|
47
|
+
* - changes made by the current command
|
48
|
+
* -------------------------------------------------------------------------
|
49
|
+
*/
|
50
|
+
SNAPSHOT_MVCC = 0,
|
51
|
+
|
52
|
+
/*-------------------------------------------------------------------------
|
53
|
+
* A tuple is visible iff the tuple is valid "for itself".
|
54
|
+
*
|
55
|
+
* Here, we consider the effects of:
|
56
|
+
* - all committed transactions (as of the current instant)
|
57
|
+
* - previous commands of this transaction
|
58
|
+
* - changes made by the current command
|
59
|
+
*
|
60
|
+
* Does _not_ include:
|
61
|
+
* - in-progress transactions (as of the current instant)
|
62
|
+
* -------------------------------------------------------------------------
|
63
|
+
*/
|
64
|
+
SNAPSHOT_SELF,
|
65
|
+
|
66
|
+
/*
|
67
|
+
* Any tuple is visible.
|
68
|
+
*/
|
69
|
+
SNAPSHOT_ANY,
|
70
|
+
|
71
|
+
/*
|
72
|
+
* A tuple is visible iff the tuple is valid as a TOAST row.
|
73
|
+
*/
|
74
|
+
SNAPSHOT_TOAST,
|
75
|
+
|
76
|
+
/*-------------------------------------------------------------------------
|
77
|
+
* A tuple is visible iff the tuple is valid including effects of open
|
78
|
+
* transactions.
|
79
|
+
*
|
80
|
+
* Here, we consider the effects of:
|
81
|
+
* - all committed and in-progress transactions (as of the current instant)
|
82
|
+
* - previous commands of this transaction
|
83
|
+
* - changes made by the current command
|
84
|
+
*
|
85
|
+
* This is essentially like SNAPSHOT_SELF as far as effects of the current
|
86
|
+
* transaction and committed/aborted xacts are concerned. However, it
|
87
|
+
* also includes the effects of other xacts still in progress.
|
88
|
+
*
|
89
|
+
* A special hack is that when a snapshot of this type is used to
|
90
|
+
* determine tuple visibility, the passed-in snapshot struct is used as an
|
91
|
+
* output argument to return the xids of concurrent xacts that affected
|
92
|
+
* the tuple. snapshot->xmin is set to the tuple's xmin if that is
|
93
|
+
* another transaction that's still in progress; or to
|
94
|
+
* InvalidTransactionId if the tuple's xmin is committed good, committed
|
95
|
+
* dead, or my own xact. Similarly for snapshot->xmax and the tuple's
|
96
|
+
* xmax. If the tuple was inserted speculatively, meaning that the
|
97
|
+
* inserter might still back down on the insertion without aborting the
|
98
|
+
* whole transaction, the associated token is also returned in
|
99
|
+
* snapshot->speculativeToken. See also InitDirtySnapshot().
|
100
|
+
* -------------------------------------------------------------------------
|
101
|
+
*/
|
102
|
+
SNAPSHOT_DIRTY,
|
103
|
+
|
104
|
+
/*
|
105
|
+
* A tuple is visible iff it follows the rules of SNAPSHOT_MVCC, but
|
106
|
+
* supports being called in timetravel context (for decoding catalog
|
107
|
+
* contents in the context of logical decoding).
|
108
|
+
*/
|
109
|
+
SNAPSHOT_HISTORIC_MVCC,
|
110
|
+
|
111
|
+
/*
|
112
|
+
* A tuple is visible iff the tuple might be visible to some transaction;
|
113
|
+
* false if it's surely dead to everyone, i.e., vacuumable.
|
114
|
+
*
|
115
|
+
* For visibility checks snapshot->min must have been set up with the xmin
|
116
|
+
* horizon to use.
|
117
|
+
*/
|
118
|
+
SNAPSHOT_NON_VACUUMABLE,
|
119
|
+
} SnapshotType;
|
120
|
+
|
121
|
+
typedef struct SnapshotData *Snapshot;
|
122
|
+
|
123
|
+
#define InvalidSnapshot ((Snapshot) NULL)
|
124
|
+
|
125
|
+
/*
|
126
|
+
* Struct representing all kind of possible snapshots.
|
127
|
+
*
|
128
|
+
* There are several different kinds of snapshots:
|
129
|
+
* * Normal MVCC snapshots
|
130
|
+
* * MVCC snapshots taken during recovery (in Hot-Standby mode)
|
131
|
+
* * Historic MVCC snapshots used during logical decoding
|
132
|
+
* * snapshots passed to HeapTupleSatisfiesDirty()
|
133
|
+
* * snapshots passed to HeapTupleSatisfiesNonVacuumable()
|
134
|
+
* * snapshots used for SatisfiesAny, Toast, Self where no members are
|
135
|
+
* accessed.
|
136
|
+
*
|
137
|
+
* TODO: It's probably a good idea to split this struct using a NodeTag
|
138
|
+
* similar to how parser and executor nodes are handled, with one type for
|
139
|
+
* each different kind of snapshot to avoid overloading the meaning of
|
140
|
+
* individual fields.
|
141
|
+
*/
|
142
|
+
typedef struct SnapshotData
|
143
|
+
{
|
144
|
+
SnapshotType snapshot_type; /* type of snapshot */
|
145
|
+
|
146
|
+
/*
|
147
|
+
* The remaining fields are used only for MVCC snapshots, and are normally
|
148
|
+
* just zeroes in special snapshots. (But xmin and xmax are used
|
149
|
+
* specially by HeapTupleSatisfiesDirty, and xmin is used specially by
|
150
|
+
* HeapTupleSatisfiesNonVacuumable.)
|
151
|
+
*
|
152
|
+
* An MVCC snapshot can never see the effects of XIDs >= xmax. It can see
|
153
|
+
* the effects of all older XIDs except those listed in the snapshot. xmin
|
154
|
+
* is stored as an optimization to avoid needing to search the XID arrays
|
155
|
+
* for most tuples.
|
156
|
+
*/
|
157
|
+
TransactionId xmin; /* all XID < xmin are visible to me */
|
158
|
+
TransactionId xmax; /* all XID >= xmax are invisible to me */
|
159
|
+
|
160
|
+
/*
|
161
|
+
* For normal MVCC snapshot this contains the all xact IDs that are in
|
162
|
+
* progress, unless the snapshot was taken during recovery in which case
|
163
|
+
* it's empty. For historic MVCC snapshots, the meaning is inverted, i.e.
|
164
|
+
* it contains *committed* transactions between xmin and xmax.
|
165
|
+
*
|
166
|
+
* note: all ids in xip[] satisfy xmin <= xip[i] < xmax
|
167
|
+
*/
|
168
|
+
TransactionId *xip;
|
169
|
+
uint32 xcnt; /* # of xact ids in xip[] */
|
170
|
+
|
171
|
+
/*
|
172
|
+
* For non-historic MVCC snapshots, this contains subxact IDs that are in
|
173
|
+
* progress (and other transactions that are in progress if taken during
|
174
|
+
* recovery). For historic snapshot it contains *all* xids assigned to the
|
175
|
+
* replayed transaction, including the toplevel xid.
|
176
|
+
*
|
177
|
+
* note: all ids in subxip[] are >= xmin, but we don't bother filtering
|
178
|
+
* out any that are >= xmax
|
179
|
+
*/
|
180
|
+
TransactionId *subxip;
|
181
|
+
int32 subxcnt; /* # of xact ids in subxip[] */
|
182
|
+
bool suboverflowed; /* has the subxip array overflowed? */
|
183
|
+
|
184
|
+
bool takenDuringRecovery; /* recovery-shaped snapshot? */
|
185
|
+
bool copied; /* false if it's a static snapshot */
|
186
|
+
|
187
|
+
CommandId curcid; /* in my xact, CID < curcid are visible */
|
188
|
+
|
189
|
+
/*
|
190
|
+
* An extra return value for HeapTupleSatisfiesDirty, not used in MVCC
|
191
|
+
* snapshots.
|
192
|
+
*/
|
193
|
+
uint32 speculativeToken;
|
194
|
+
|
195
|
+
/*
|
196
|
+
* For SNAPSHOT_NON_VACUUMABLE (and hopefully more in the future) this is
|
197
|
+
* used to determine whether row could be vacuumed.
|
198
|
+
*/
|
199
|
+
struct GlobalVisState *vistest;
|
200
|
+
|
201
|
+
/*
|
202
|
+
* Book-keeping information, used by the snapshot manager
|
203
|
+
*/
|
204
|
+
uint32 active_count; /* refcount on ActiveSnapshot stack */
|
205
|
+
uint32 regd_count; /* refcount on RegisteredSnapshots */
|
206
|
+
pairingheap_node ph_node; /* link in the RegisteredSnapshots heap */
|
207
|
+
|
208
|
+
TimestampTz whenTaken; /* timestamp when snapshot was taken */
|
209
|
+
XLogRecPtr lsn; /* position in the WAL stream when taken */
|
210
|
+
|
211
|
+
/*
|
212
|
+
* The transaction completion count at the time GetSnapshotData() built
|
213
|
+
* this snapshot. Allows to avoid re-computing static snapshots when no
|
214
|
+
* transactions completed since the last GetSnapshotData().
|
215
|
+
*/
|
216
|
+
uint64 snapXactCompletionCount;
|
217
|
+
} SnapshotData;
|
218
|
+
|
219
|
+
#endif /* SNAPSHOT_H */
|
@@ -0,0 +1,391 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* sortsupport.h
|
4
|
+
* Framework for accelerated sorting.
|
5
|
+
*
|
6
|
+
* Traditionally, PostgreSQL has implemented sorting by repeatedly invoking
|
7
|
+
* an SQL-callable comparison function "cmp(x, y) returns int" on pairs of
|
8
|
+
* values to be compared, where the comparison function is the BTORDER_PROC
|
9
|
+
* pg_amproc support function of the appropriate btree index opclass.
|
10
|
+
*
|
11
|
+
* This file defines alternative APIs that allow sorting to be performed with
|
12
|
+
* reduced overhead. To support lower-overhead sorting, a btree opclass may
|
13
|
+
* provide a BTSORTSUPPORT_PROC pg_amproc entry, which must take a single
|
14
|
+
* argument of type internal and return void. The argument is actually a
|
15
|
+
* pointer to a SortSupportData struct, which is defined below.
|
16
|
+
*
|
17
|
+
* If provided, the BTSORTSUPPORT function will be called during sort setup,
|
18
|
+
* and it must initialize the provided struct with pointers to function(s)
|
19
|
+
* that can be called to perform sorting. This API is defined to allow
|
20
|
+
* multiple acceleration mechanisms to be supported, but no opclass is
|
21
|
+
* required to provide all of them. The BTSORTSUPPORT function should
|
22
|
+
* simply not set any function pointers for mechanisms it doesn't support.
|
23
|
+
* Opclasses that provide BTSORTSUPPORT and don't provide a comparator
|
24
|
+
* function will have a shim set up by sort support automatically. However,
|
25
|
+
* opclasses that support the optional additional abbreviated key capability
|
26
|
+
* must always provide an authoritative comparator used to tie-break
|
27
|
+
* inconclusive abbreviated comparisons and also used when aborting
|
28
|
+
* abbreviation. Furthermore, a converter and abort/costing function must be
|
29
|
+
* provided.
|
30
|
+
*
|
31
|
+
* All sort support functions will be passed the address of the
|
32
|
+
* SortSupportData struct when called, so they can use it to store
|
33
|
+
* additional private data as needed. In particular, for collation-aware
|
34
|
+
* datatypes, the ssup_collation field is set before calling BTSORTSUPPORT
|
35
|
+
* and is available to all support functions. Additional opclass-dependent
|
36
|
+
* data can be stored using the ssup_extra field. Any such data
|
37
|
+
* should be allocated in the ssup_cxt memory context.
|
38
|
+
*
|
39
|
+
* Note: since pg_amproc functions are indexed by (lefttype, righttype)
|
40
|
+
* it is possible to associate a BTSORTSUPPORT function with a cross-type
|
41
|
+
* comparison. This could sensibly be used to provide a fast comparator
|
42
|
+
* function for such cases, but probably not any other acceleration method.
|
43
|
+
*
|
44
|
+
*
|
45
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
46
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
47
|
+
*
|
48
|
+
* src/include/utils/sortsupport.h
|
49
|
+
*
|
50
|
+
*-------------------------------------------------------------------------
|
51
|
+
*/
|
52
|
+
#ifndef SORTSUPPORT_H
|
53
|
+
#define SORTSUPPORT_H
|
54
|
+
|
55
|
+
#include "access/attnum.h"
|
56
|
+
#include "utils/relcache.h"
|
57
|
+
|
58
|
+
typedef struct SortSupportData *SortSupport;
|
59
|
+
|
60
|
+
typedef struct SortSupportData
|
61
|
+
{
|
62
|
+
/*
|
63
|
+
* These fields are initialized before calling the BTSORTSUPPORT function
|
64
|
+
* and should not be changed later.
|
65
|
+
*/
|
66
|
+
MemoryContext ssup_cxt; /* Context containing sort info */
|
67
|
+
Oid ssup_collation; /* Collation to use, or InvalidOid */
|
68
|
+
|
69
|
+
/*
|
70
|
+
* Additional sorting parameters; but unlike ssup_collation, these can be
|
71
|
+
* changed after BTSORTSUPPORT is called, so don't use them in selecting
|
72
|
+
* sort support functions.
|
73
|
+
*/
|
74
|
+
bool ssup_reverse; /* descending-order sort? */
|
75
|
+
bool ssup_nulls_first; /* sort nulls first? */
|
76
|
+
|
77
|
+
/*
|
78
|
+
* These fields are workspace for callers, and should not be touched by
|
79
|
+
* opclass-specific functions.
|
80
|
+
*/
|
81
|
+
AttrNumber ssup_attno; /* column number to sort */
|
82
|
+
|
83
|
+
/*
|
84
|
+
* ssup_extra is zeroed before calling the BTSORTSUPPORT function, and is
|
85
|
+
* not touched subsequently by callers.
|
86
|
+
*/
|
87
|
+
void *ssup_extra; /* Workspace for opclass functions */
|
88
|
+
|
89
|
+
/*
|
90
|
+
* Function pointers are zeroed before calling the BTSORTSUPPORT function,
|
91
|
+
* and must be set by it for any acceleration methods it wants to supply.
|
92
|
+
* The comparator pointer must be set, others are optional.
|
93
|
+
*/
|
94
|
+
|
95
|
+
/*
|
96
|
+
* Comparator function has the same API as the traditional btree
|
97
|
+
* comparison function, ie, return <0, 0, or >0 according as x is less
|
98
|
+
* than, equal to, or greater than y. Note that x and y are guaranteed
|
99
|
+
* not null, and there is no way to return null either.
|
100
|
+
*
|
101
|
+
* This may be either the authoritative comparator, or the abbreviated
|
102
|
+
* comparator. Core code may switch this over the initial preference of
|
103
|
+
* an opclass support function despite originally indicating abbreviation
|
104
|
+
* was applicable, by assigning the authoritative comparator back.
|
105
|
+
*/
|
106
|
+
int (*comparator) (Datum x, Datum y, SortSupport ssup);
|
107
|
+
|
108
|
+
/*
|
109
|
+
* "Abbreviated key" infrastructure follows.
|
110
|
+
*
|
111
|
+
* All callbacks must be set by sortsupport opclasses that make use of
|
112
|
+
* this optional additional infrastructure (unless for whatever reasons
|
113
|
+
* the opclass doesn't proceed with abbreviation, in which case
|
114
|
+
* abbrev_converter must not be set).
|
115
|
+
*
|
116
|
+
* This allows opclass authors to supply a conversion routine, used to
|
117
|
+
* create an alternative representation of the underlying type (an
|
118
|
+
* "abbreviated key"). This representation must be pass-by-value and
|
119
|
+
* typically will use some ad-hoc format that only the opclass has
|
120
|
+
* knowledge of. An alternative comparator, used only with this
|
121
|
+
* alternative representation must also be provided (which is assigned to
|
122
|
+
* "comparator"). This representation is a simple approximation of the
|
123
|
+
* original Datum. It must be possible to compare datums of this
|
124
|
+
* representation with each other using the supplied alternative
|
125
|
+
* comparator, and have any non-zero return value be a reliable proxy for
|
126
|
+
* what a proper comparison would indicate. Returning zero from the
|
127
|
+
* alternative comparator does not indicate equality, as with a
|
128
|
+
* conventional support routine 1, though -- it indicates that it wasn't
|
129
|
+
* possible to determine how the two abbreviated values compared. A
|
130
|
+
* proper comparison, using "abbrev_full_comparator"/
|
131
|
+
* ApplySortAbbrevFullComparator() is therefore required. In many cases
|
132
|
+
* this results in most or all comparisons only using the cheap
|
133
|
+
* alternative comparison func, which is typically implemented as code
|
134
|
+
* that compiles to just a few CPU instructions. CPU cache miss penalties
|
135
|
+
* are expensive; to get good overall performance, sort infrastructure
|
136
|
+
* must heavily weigh cache performance.
|
137
|
+
*
|
138
|
+
* Opclass authors must consider the final cardinality of abbreviated keys
|
139
|
+
* when devising an encoding scheme. It's possible for a strategy to work
|
140
|
+
* better than an alternative strategy with one usage pattern, while the
|
141
|
+
* reverse might be true for another usage pattern. All of these factors
|
142
|
+
* must be considered.
|
143
|
+
*/
|
144
|
+
|
145
|
+
/*
|
146
|
+
* "abbreviate" concerns whether or not the abbreviated key optimization
|
147
|
+
* is applicable in principle (that is, the sortsupport routine needs to
|
148
|
+
* know if its dealing with a key where an abbreviated representation can
|
149
|
+
* usefully be packed together. Conventionally, this is the leading
|
150
|
+
* attribute key). Note, however, that in order to determine that
|
151
|
+
* abbreviation is not in play, the core code always checks whether or not
|
152
|
+
* the opclass has set abbrev_converter. This is a one way, one time
|
153
|
+
* message to the opclass.
|
154
|
+
*/
|
155
|
+
bool abbreviate;
|
156
|
+
|
157
|
+
/*
|
158
|
+
* Converter to abbreviated format, from original representation. Core
|
159
|
+
* code uses this callback to convert from a pass-by-reference "original"
|
160
|
+
* Datum to a pass-by-value abbreviated key Datum. Note that original is
|
161
|
+
* guaranteed NOT NULL, because it doesn't make sense to factor NULLness
|
162
|
+
* into ad-hoc cost model.
|
163
|
+
*
|
164
|
+
* abbrev_converter is tested to see if abbreviation is in play. Core
|
165
|
+
* code may set it to NULL to indicate abbreviation should not be used
|
166
|
+
* (which is something sortsupport routines need not concern themselves
|
167
|
+
* with). However, sortsupport routines must not set it when it is
|
168
|
+
* immediately established that abbreviation should not proceed (e.g., for
|
169
|
+
* !abbreviate calls, or due to platform-specific impediments to using
|
170
|
+
* abbreviation).
|
171
|
+
*/
|
172
|
+
Datum (*abbrev_converter) (Datum original, SortSupport ssup);
|
173
|
+
|
174
|
+
/*
|
175
|
+
* abbrev_abort callback allows clients to verify that the current
|
176
|
+
* strategy is working out, using a sortsupport routine defined ad-hoc
|
177
|
+
* cost model. If there is a lot of duplicate abbreviated keys in
|
178
|
+
* practice, it's useful to be able to abandon the strategy before paying
|
179
|
+
* too high a cost in conversion (perhaps certain opclass-specific
|
180
|
+
* adaptations are useful too).
|
181
|
+
*/
|
182
|
+
bool (*abbrev_abort) (int memtupcount, SortSupport ssup);
|
183
|
+
|
184
|
+
/*
|
185
|
+
* Full, authoritative comparator for key that an abbreviated
|
186
|
+
* representation was generated for, used when an abbreviated comparison
|
187
|
+
* was inconclusive (by calling ApplySortAbbrevFullComparator()), or used
|
188
|
+
* to replace "comparator" when core system ultimately decides against
|
189
|
+
* abbreviation.
|
190
|
+
*/
|
191
|
+
int (*abbrev_full_comparator) (Datum x, Datum y, SortSupport ssup);
|
192
|
+
} SortSupportData;
|
193
|
+
|
194
|
+
|
195
|
+
/*
|
196
|
+
* Apply a sort comparator function and return a 3-way comparison result.
|
197
|
+
* This takes care of handling reverse-sort and NULLs-ordering properly.
|
198
|
+
*/
|
199
|
+
static inline int
|
200
|
+
ApplySortComparator(Datum datum1, bool isNull1,
|
201
|
+
Datum datum2, bool isNull2,
|
202
|
+
SortSupport ssup)
|
203
|
+
{
|
204
|
+
int compare;
|
205
|
+
|
206
|
+
if (isNull1)
|
207
|
+
{
|
208
|
+
if (isNull2)
|
209
|
+
compare = 0; /* NULL "=" NULL */
|
210
|
+
else if (ssup->ssup_nulls_first)
|
211
|
+
compare = -1; /* NULL "<" NOT_NULL */
|
212
|
+
else
|
213
|
+
compare = 1; /* NULL ">" NOT_NULL */
|
214
|
+
}
|
215
|
+
else if (isNull2)
|
216
|
+
{
|
217
|
+
if (ssup->ssup_nulls_first)
|
218
|
+
compare = 1; /* NOT_NULL ">" NULL */
|
219
|
+
else
|
220
|
+
compare = -1; /* NOT_NULL "<" NULL */
|
221
|
+
}
|
222
|
+
else
|
223
|
+
{
|
224
|
+
compare = ssup->comparator(datum1, datum2, ssup);
|
225
|
+
if (ssup->ssup_reverse)
|
226
|
+
INVERT_COMPARE_RESULT(compare);
|
227
|
+
}
|
228
|
+
|
229
|
+
return compare;
|
230
|
+
}
|
231
|
+
|
232
|
+
static inline int
|
233
|
+
ApplyUnsignedSortComparator(Datum datum1, bool isNull1,
|
234
|
+
Datum datum2, bool isNull2,
|
235
|
+
SortSupport ssup)
|
236
|
+
{
|
237
|
+
int compare;
|
238
|
+
|
239
|
+
if (isNull1)
|
240
|
+
{
|
241
|
+
if (isNull2)
|
242
|
+
compare = 0; /* NULL "=" NULL */
|
243
|
+
else if (ssup->ssup_nulls_first)
|
244
|
+
compare = -1; /* NULL "<" NOT_NULL */
|
245
|
+
else
|
246
|
+
compare = 1; /* NULL ">" NOT_NULL */
|
247
|
+
}
|
248
|
+
else if (isNull2)
|
249
|
+
{
|
250
|
+
if (ssup->ssup_nulls_first)
|
251
|
+
compare = 1; /* NOT_NULL ">" NULL */
|
252
|
+
else
|
253
|
+
compare = -1; /* NOT_NULL "<" NULL */
|
254
|
+
}
|
255
|
+
else
|
256
|
+
{
|
257
|
+
compare = datum1 < datum2 ? -1 : datum1 > datum2 ? 1 : 0;
|
258
|
+
if (ssup->ssup_reverse)
|
259
|
+
INVERT_COMPARE_RESULT(compare);
|
260
|
+
}
|
261
|
+
|
262
|
+
return compare;
|
263
|
+
}
|
264
|
+
|
265
|
+
#if SIZEOF_DATUM >= 8
|
266
|
+
static inline int
|
267
|
+
ApplySignedSortComparator(Datum datum1, bool isNull1,
|
268
|
+
Datum datum2, bool isNull2,
|
269
|
+
SortSupport ssup)
|
270
|
+
{
|
271
|
+
int compare;
|
272
|
+
|
273
|
+
if (isNull1)
|
274
|
+
{
|
275
|
+
if (isNull2)
|
276
|
+
compare = 0; /* NULL "=" NULL */
|
277
|
+
else if (ssup->ssup_nulls_first)
|
278
|
+
compare = -1; /* NULL "<" NOT_NULL */
|
279
|
+
else
|
280
|
+
compare = 1; /* NULL ">" NOT_NULL */
|
281
|
+
}
|
282
|
+
else if (isNull2)
|
283
|
+
{
|
284
|
+
if (ssup->ssup_nulls_first)
|
285
|
+
compare = 1; /* NOT_NULL ">" NULL */
|
286
|
+
else
|
287
|
+
compare = -1; /* NOT_NULL "<" NULL */
|
288
|
+
}
|
289
|
+
else
|
290
|
+
{
|
291
|
+
compare = DatumGetInt64(datum1) < DatumGetInt64(datum2) ? -1 :
|
292
|
+
DatumGetInt64(datum1) > DatumGetInt64(datum2) ? 1 : 0;
|
293
|
+
if (ssup->ssup_reverse)
|
294
|
+
INVERT_COMPARE_RESULT(compare);
|
295
|
+
}
|
296
|
+
|
297
|
+
return compare;
|
298
|
+
}
|
299
|
+
#endif
|
300
|
+
|
301
|
+
static inline int
|
302
|
+
ApplyInt32SortComparator(Datum datum1, bool isNull1,
|
303
|
+
Datum datum2, bool isNull2,
|
304
|
+
SortSupport ssup)
|
305
|
+
{
|
306
|
+
int compare;
|
307
|
+
|
308
|
+
if (isNull1)
|
309
|
+
{
|
310
|
+
if (isNull2)
|
311
|
+
compare = 0; /* NULL "=" NULL */
|
312
|
+
else if (ssup->ssup_nulls_first)
|
313
|
+
compare = -1; /* NULL "<" NOT_NULL */
|
314
|
+
else
|
315
|
+
compare = 1; /* NULL ">" NOT_NULL */
|
316
|
+
}
|
317
|
+
else if (isNull2)
|
318
|
+
{
|
319
|
+
if (ssup->ssup_nulls_first)
|
320
|
+
compare = 1; /* NOT_NULL ">" NULL */
|
321
|
+
else
|
322
|
+
compare = -1; /* NOT_NULL "<" NULL */
|
323
|
+
}
|
324
|
+
else
|
325
|
+
{
|
326
|
+
compare = DatumGetInt32(datum1) < DatumGetInt32(datum2) ? -1 :
|
327
|
+
DatumGetInt32(datum1) > DatumGetInt32(datum2) ? 1 : 0;
|
328
|
+
if (ssup->ssup_reverse)
|
329
|
+
INVERT_COMPARE_RESULT(compare);
|
330
|
+
}
|
331
|
+
|
332
|
+
return compare;
|
333
|
+
}
|
334
|
+
|
335
|
+
/*
|
336
|
+
* Apply a sort comparator function and return a 3-way comparison using full,
|
337
|
+
* authoritative comparator. This takes care of handling reverse-sort and
|
338
|
+
* NULLs-ordering properly.
|
339
|
+
*/
|
340
|
+
static inline int
|
341
|
+
ApplySortAbbrevFullComparator(Datum datum1, bool isNull1,
|
342
|
+
Datum datum2, bool isNull2,
|
343
|
+
SortSupport ssup)
|
344
|
+
{
|
345
|
+
int compare;
|
346
|
+
|
347
|
+
if (isNull1)
|
348
|
+
{
|
349
|
+
if (isNull2)
|
350
|
+
compare = 0; /* NULL "=" NULL */
|
351
|
+
else if (ssup->ssup_nulls_first)
|
352
|
+
compare = -1; /* NULL "<" NOT_NULL */
|
353
|
+
else
|
354
|
+
compare = 1; /* NULL ">" NOT_NULL */
|
355
|
+
}
|
356
|
+
else if (isNull2)
|
357
|
+
{
|
358
|
+
if (ssup->ssup_nulls_first)
|
359
|
+
compare = 1; /* NOT_NULL ">" NULL */
|
360
|
+
else
|
361
|
+
compare = -1; /* NOT_NULL "<" NULL */
|
362
|
+
}
|
363
|
+
else
|
364
|
+
{
|
365
|
+
compare = ssup->abbrev_full_comparator(datum1, datum2, ssup);
|
366
|
+
if (ssup->ssup_reverse)
|
367
|
+
INVERT_COMPARE_RESULT(compare);
|
368
|
+
}
|
369
|
+
|
370
|
+
return compare;
|
371
|
+
}
|
372
|
+
|
373
|
+
/*
|
374
|
+
* Datum comparison functions that we have specialized sort routines for.
|
375
|
+
* Datatypes that install these as their comparator or abbreviated comparator
|
376
|
+
* are eligible for faster sorting.
|
377
|
+
*/
|
378
|
+
extern int ssup_datum_unsigned_cmp(Datum x, Datum y, SortSupport ssup);
|
379
|
+
#if SIZEOF_DATUM >= 8
|
380
|
+
extern int ssup_datum_signed_cmp(Datum x, Datum y, SortSupport ssup);
|
381
|
+
#endif
|
382
|
+
extern int ssup_datum_int32_cmp(Datum x, Datum y, SortSupport ssup);
|
383
|
+
|
384
|
+
/* Other functions in utils/sort/sortsupport.c */
|
385
|
+
extern void PrepareSortSupportComparisonShim(Oid cmpFunc, SortSupport ssup);
|
386
|
+
extern void PrepareSortSupportFromOrderingOp(Oid orderingOp, SortSupport ssup);
|
387
|
+
extern void PrepareSortSupportFromIndexRel(Relation indexRel, int16 strategy,
|
388
|
+
SortSupport ssup);
|
389
|
+
extern void PrepareSortSupportFromGistIndexRel(Relation indexRel, SortSupport ssup);
|
390
|
+
|
391
|
+
#endif /* SORTSUPPORT_H */
|