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,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 */
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* cryptohash.h
|
4
|
+
* Generic headers for cryptographic hash functions.
|
5
|
+
*
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
8
|
+
*
|
9
|
+
* IDENTIFICATION
|
10
|
+
* src/include/common/cryptohash.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
|
15
|
+
#ifndef PG_CRYPTOHASH_H
|
16
|
+
#define PG_CRYPTOHASH_H
|
17
|
+
|
18
|
+
/* Context Structures for each hash function */
|
19
|
+
typedef enum
|
20
|
+
{
|
21
|
+
PG_MD5 = 0,
|
22
|
+
PG_SHA1,
|
23
|
+
PG_SHA224,
|
24
|
+
PG_SHA256,
|
25
|
+
PG_SHA384,
|
26
|
+
PG_SHA512,
|
27
|
+
} pg_cryptohash_type;
|
28
|
+
|
29
|
+
/* opaque context, private to each cryptohash implementation */
|
30
|
+
typedef struct pg_cryptohash_ctx pg_cryptohash_ctx;
|
31
|
+
|
32
|
+
extern pg_cryptohash_ctx *pg_cryptohash_create(pg_cryptohash_type type);
|
33
|
+
extern int pg_cryptohash_init(pg_cryptohash_ctx *ctx);
|
34
|
+
extern int pg_cryptohash_update(pg_cryptohash_ctx *ctx, const uint8 *data, size_t len);
|
35
|
+
extern int pg_cryptohash_final(pg_cryptohash_ctx *ctx, uint8 *dest, size_t len);
|
36
|
+
extern void pg_cryptohash_free(pg_cryptohash_ctx *ctx);
|
37
|
+
extern const char *pg_cryptohash_error(pg_cryptohash_ctx *ctx);
|
38
|
+
|
39
|
+
#endif /* PG_CRYPTOHASH_H */
|
@@ -0,0 +1,56 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* File and directory permission definitions
|
4
|
+
*
|
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/common/file_perm.h
|
10
|
+
*
|
11
|
+
*-------------------------------------------------------------------------
|
12
|
+
*/
|
13
|
+
#ifndef FILE_PERM_H
|
14
|
+
#define FILE_PERM_H
|
15
|
+
|
16
|
+
#include <sys/stat.h>
|
17
|
+
|
18
|
+
/*
|
19
|
+
* Mode mask for data directory permissions that only allows the owner to
|
20
|
+
* read/write directories and files.
|
21
|
+
*
|
22
|
+
* This is the default.
|
23
|
+
*/
|
24
|
+
#define PG_MODE_MASK_OWNER (S_IRWXG | S_IRWXO)
|
25
|
+
|
26
|
+
/*
|
27
|
+
* Mode mask for data directory permissions that also allows group read/execute.
|
28
|
+
*/
|
29
|
+
#define PG_MODE_MASK_GROUP (S_IWGRP | S_IRWXO)
|
30
|
+
|
31
|
+
/* Default mode for creating directories */
|
32
|
+
#define PG_DIR_MODE_OWNER S_IRWXU
|
33
|
+
|
34
|
+
/* Mode for creating directories that allows group read/execute */
|
35
|
+
#define PG_DIR_MODE_GROUP (S_IRWXU | S_IRGRP | S_IXGRP)
|
36
|
+
|
37
|
+
/* Default mode for creating files */
|
38
|
+
#define PG_FILE_MODE_OWNER (S_IRUSR | S_IWUSR)
|
39
|
+
|
40
|
+
/* Mode for creating files that allows group read */
|
41
|
+
#define PG_FILE_MODE_GROUP (S_IRUSR | S_IWUSR | S_IRGRP)
|
42
|
+
|
43
|
+
/* Modes for creating directories and files in the data directory */
|
44
|
+
extern PGDLLIMPORT int pg_dir_create_mode;
|
45
|
+
extern PGDLLIMPORT int pg_file_create_mode;
|
46
|
+
|
47
|
+
/* Mode mask to pass to umask() */
|
48
|
+
extern PGDLLIMPORT int pg_mode_mask;
|
49
|
+
|
50
|
+
/* Set permissions and mask based on the provided mode */
|
51
|
+
extern void SetDataDirectoryCreatePerm(int dataDirMode);
|
52
|
+
|
53
|
+
/* Set permissions and mask based on the mode of the data directory */
|
54
|
+
extern bool GetDataDirectoryCreatePerm(const char *dataDir);
|
55
|
+
|
56
|
+
#endif /* FILE_PERM_H */
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* Assorted utility functions to work on files.
|
4
|
+
*
|
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/common/file_utils.h
|
10
|
+
*
|
11
|
+
*-------------------------------------------------------------------------
|
12
|
+
*/
|
13
|
+
#ifndef FILE_UTILS_H
|
14
|
+
#define FILE_UTILS_H
|
15
|
+
|
16
|
+
#include <dirent.h>
|
17
|
+
|
18
|
+
typedef enum PGFileType
|
19
|
+
{
|
20
|
+
PGFILETYPE_ERROR,
|
21
|
+
PGFILETYPE_UNKNOWN,
|
22
|
+
PGFILETYPE_REG,
|
23
|
+
PGFILETYPE_DIR,
|
24
|
+
PGFILETYPE_LNK,
|
25
|
+
} PGFileType;
|
26
|
+
|
27
|
+
typedef enum DataDirSyncMethod
|
28
|
+
{
|
29
|
+
DATA_DIR_SYNC_METHOD_FSYNC,
|
30
|
+
DATA_DIR_SYNC_METHOD_SYNCFS,
|
31
|
+
} DataDirSyncMethod;
|
32
|
+
|
33
|
+
struct iovec; /* avoid including port/pg_iovec.h here */
|
34
|
+
|
35
|
+
#ifdef FRONTEND
|
36
|
+
extern int fsync_fname(const char *fname, bool isdir);
|
37
|
+
extern void sync_pgdata(const char *pg_data, int serverVersion,
|
38
|
+
DataDirSyncMethod sync_method);
|
39
|
+
extern void sync_dir_recurse(const char *dir, DataDirSyncMethod sync_method);
|
40
|
+
extern int durable_rename(const char *oldfile, const char *newfile);
|
41
|
+
extern int fsync_parent_path(const char *fname);
|
42
|
+
#endif
|
43
|
+
|
44
|
+
extern PGFileType get_dirent_type(const char *path,
|
45
|
+
const struct dirent *de,
|
46
|
+
bool look_through_symlinks,
|
47
|
+
int elevel);
|
48
|
+
|
49
|
+
extern int compute_remaining_iovec(struct iovec *destination,
|
50
|
+
const struct iovec *source,
|
51
|
+
int iovcnt,
|
52
|
+
size_t transferred);
|
53
|
+
|
54
|
+
extern ssize_t pg_pwritev_with_retry(int fd,
|
55
|
+
const struct iovec *iov,
|
56
|
+
int iovcnt,
|
57
|
+
off_t offset);
|
58
|
+
|
59
|
+
extern ssize_t pg_pwrite_zeros(int fd, size_t size, off_t offset);
|
60
|
+
|
61
|
+
/* Filename components */
|
62
|
+
#define PG_TEMP_FILES_DIR "pgsql_tmp"
|
63
|
+
#define PG_TEMP_FILE_PREFIX "pgsql_tmp"
|
64
|
+
|
65
|
+
#endif /* FILE_UTILS_H */
|
@@ -0,0 +1,119 @@
|
|
1
|
+
/*
|
2
|
+
* Utilities for working with hash values.
|
3
|
+
*
|
4
|
+
* Portions Copyright (c) 2017-2024, PostgreSQL Global Development Group
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef HASHFN_H
|
8
|
+
#define HASHFN_H
|
9
|
+
|
10
|
+
|
11
|
+
/*
|
12
|
+
* Rotate the high 32 bits and the low 32 bits separately. The standard
|
13
|
+
* hash function sometimes rotates the low 32 bits by one bit when
|
14
|
+
* combining elements. We want extended hash functions to be compatible with
|
15
|
+
* that algorithm when the seed is 0, so we can't just do a normal rotation.
|
16
|
+
* This works, though.
|
17
|
+
*/
|
18
|
+
#define ROTATE_HIGH_AND_LOW_32BITS(v) \
|
19
|
+
((((v) << 1) & UINT64CONST(0xfffffffefffffffe)) | \
|
20
|
+
(((v) >> 31) & UINT64CONST(0x100000001)))
|
21
|
+
|
22
|
+
|
23
|
+
extern uint32 hash_bytes(const unsigned char *k, int keylen);
|
24
|
+
extern uint64 hash_bytes_extended(const unsigned char *k,
|
25
|
+
int keylen, uint64 seed);
|
26
|
+
extern uint32 hash_bytes_uint32(uint32 k);
|
27
|
+
extern uint64 hash_bytes_uint32_extended(uint32 k, uint64 seed);
|
28
|
+
|
29
|
+
#ifndef FRONTEND
|
30
|
+
static inline Datum
|
31
|
+
hash_any(const unsigned char *k, int keylen)
|
32
|
+
{
|
33
|
+
return UInt32GetDatum(hash_bytes(k, keylen));
|
34
|
+
}
|
35
|
+
|
36
|
+
static inline Datum
|
37
|
+
hash_any_extended(const unsigned char *k, int keylen, uint64 seed)
|
38
|
+
{
|
39
|
+
return UInt64GetDatum(hash_bytes_extended(k, keylen, seed));
|
40
|
+
}
|
41
|
+
|
42
|
+
static inline Datum
|
43
|
+
hash_uint32(uint32 k)
|
44
|
+
{
|
45
|
+
return UInt32GetDatum(hash_bytes_uint32(k));
|
46
|
+
}
|
47
|
+
|
48
|
+
static inline Datum
|
49
|
+
hash_uint32_extended(uint32 k, uint64 seed)
|
50
|
+
{
|
51
|
+
return UInt64GetDatum(hash_bytes_uint32_extended(k, seed));
|
52
|
+
}
|
53
|
+
#endif
|
54
|
+
|
55
|
+
extern uint32 string_hash(const void *key, Size keysize);
|
56
|
+
extern uint32 tag_hash(const void *key, Size keysize);
|
57
|
+
extern uint32 uint32_hash(const void *key, Size keysize);
|
58
|
+
|
59
|
+
#define oid_hash uint32_hash /* Remove me eventually */
|
60
|
+
|
61
|
+
/*
|
62
|
+
* Combine two 32-bit hash values, resulting in another hash value, with
|
63
|
+
* decent bit mixing.
|
64
|
+
*
|
65
|
+
* Similar to boost's hash_combine().
|
66
|
+
*/
|
67
|
+
static inline uint32
|
68
|
+
hash_combine(uint32 a, uint32 b)
|
69
|
+
{
|
70
|
+
a ^= b + 0x9e3779b9 + (a << 6) + (a >> 2);
|
71
|
+
return a;
|
72
|
+
}
|
73
|
+
|
74
|
+
/*
|
75
|
+
* Combine two 64-bit hash values, resulting in another hash value, using the
|
76
|
+
* same kind of technique as hash_combine(). Testing shows that this also
|
77
|
+
* produces good bit mixing.
|
78
|
+
*/
|
79
|
+
static inline uint64
|
80
|
+
hash_combine64(uint64 a, uint64 b)
|
81
|
+
{
|
82
|
+
/* 0x49a0f4dd15e5a8e3 is 64bit random data */
|
83
|
+
a ^= b + UINT64CONST(0x49a0f4dd15e5a8e3) + (a << 54) + (a >> 7);
|
84
|
+
return a;
|
85
|
+
}
|
86
|
+
|
87
|
+
/*
|
88
|
+
* Simple inline murmur hash implementation hashing a 32 bit integer, for
|
89
|
+
* performance.
|
90
|
+
*/
|
91
|
+
static inline uint32
|
92
|
+
murmurhash32(uint32 data)
|
93
|
+
{
|
94
|
+
uint32 h = data;
|
95
|
+
|
96
|
+
h ^= h >> 16;
|
97
|
+
h *= 0x85ebca6b;
|
98
|
+
h ^= h >> 13;
|
99
|
+
h *= 0xc2b2ae35;
|
100
|
+
h ^= h >> 16;
|
101
|
+
return h;
|
102
|
+
}
|
103
|
+
|
104
|
+
/* 64-bit variant */
|
105
|
+
static inline uint64
|
106
|
+
murmurhash64(uint64 data)
|
107
|
+
{
|
108
|
+
uint64 h = data;
|
109
|
+
|
110
|
+
h ^= h >> 33;
|
111
|
+
h *= 0xff51afd7ed558ccd;
|
112
|
+
h ^= h >> 33;
|
113
|
+
h *= 0xc4ceb9fe1a85ec53;
|
114
|
+
h ^= h >> 33;
|
115
|
+
|
116
|
+
return h;
|
117
|
+
}
|
118
|
+
|
119
|
+
#endif /* HASHFN_H */
|