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,96 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* rewriteManip.h
|
4
|
+
* Querytree manipulation subroutines for query rewriter.
|
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/rewrite/rewriteManip.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef REWRITEMANIP_H
|
15
|
+
#define REWRITEMANIP_H
|
16
|
+
|
17
|
+
#include "nodes/parsenodes.h"
|
18
|
+
|
19
|
+
struct AttrMap; /* avoid including attmap.h here */
|
20
|
+
|
21
|
+
|
22
|
+
typedef struct replace_rte_variables_context replace_rte_variables_context;
|
23
|
+
|
24
|
+
typedef Node *(*replace_rte_variables_callback) (Var *var,
|
25
|
+
replace_rte_variables_context *context);
|
26
|
+
|
27
|
+
struct replace_rte_variables_context
|
28
|
+
{
|
29
|
+
replace_rte_variables_callback callback; /* callback function */
|
30
|
+
void *callback_arg; /* context data for callback function */
|
31
|
+
int target_varno; /* RTE index to search for */
|
32
|
+
int sublevels_up; /* (current) nesting depth */
|
33
|
+
bool inserted_sublink; /* have we inserted a SubLink? */
|
34
|
+
};
|
35
|
+
|
36
|
+
typedef enum ReplaceVarsNoMatchOption
|
37
|
+
{
|
38
|
+
REPLACEVARS_REPORT_ERROR, /* throw error if no match */
|
39
|
+
REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */
|
40
|
+
REPLACEVARS_SUBSTITUTE_NULL, /* replace with a NULL Const */
|
41
|
+
} ReplaceVarsNoMatchOption;
|
42
|
+
|
43
|
+
|
44
|
+
extern void CombineRangeTables(List **dst_rtable, List **dst_perminfos,
|
45
|
+
List *src_rtable, List *src_perminfos);
|
46
|
+
extern void OffsetVarNodes(Node *node, int offset, int sublevels_up);
|
47
|
+
extern void ChangeVarNodes(Node *node, int rt_index, int new_index,
|
48
|
+
int sublevels_up);
|
49
|
+
extern void IncrementVarSublevelsUp(Node *node, int delta_sublevels_up,
|
50
|
+
int min_sublevels_up);
|
51
|
+
extern void IncrementVarSublevelsUp_rtable(List *rtable,
|
52
|
+
int delta_sublevels_up, int min_sublevels_up);
|
53
|
+
|
54
|
+
extern bool rangeTableEntry_used(Node *node, int rt_index,
|
55
|
+
int sublevels_up);
|
56
|
+
|
57
|
+
extern Query *getInsertSelectQuery(Query *parsetree, Query ***subquery_ptr);
|
58
|
+
|
59
|
+
extern void AddQual(Query *parsetree, Node *qual);
|
60
|
+
extern void AddInvertedQual(Query *parsetree, Node *qual);
|
61
|
+
|
62
|
+
extern bool contain_aggs_of_level(Node *node, int levelsup);
|
63
|
+
extern int locate_agg_of_level(Node *node, int levelsup);
|
64
|
+
extern bool contain_windowfuncs(Node *node);
|
65
|
+
extern int locate_windowfunc(Node *node);
|
66
|
+
extern bool checkExprHasSubLink(Node *node);
|
67
|
+
|
68
|
+
extern Node *add_nulling_relids(Node *node,
|
69
|
+
const Bitmapset *target_relids,
|
70
|
+
const Bitmapset *added_relids);
|
71
|
+
extern Node *remove_nulling_relids(Node *node,
|
72
|
+
const Bitmapset *removable_relids,
|
73
|
+
const Bitmapset *except_relids);
|
74
|
+
|
75
|
+
extern Node *replace_rte_variables(Node *node,
|
76
|
+
int target_varno, int sublevels_up,
|
77
|
+
replace_rte_variables_callback callback,
|
78
|
+
void *callback_arg,
|
79
|
+
bool *outer_hasSubLinks);
|
80
|
+
extern Node *replace_rte_variables_mutator(Node *node,
|
81
|
+
replace_rte_variables_context *context);
|
82
|
+
|
83
|
+
extern Node *map_variable_attnos(Node *node,
|
84
|
+
int target_varno, int sublevels_up,
|
85
|
+
const struct AttrMap *attno_map,
|
86
|
+
Oid to_rowtype, bool *found_whole_row);
|
87
|
+
|
88
|
+
extern Node *ReplaceVarsFromTargetList(Node *node,
|
89
|
+
int target_varno, int sublevels_up,
|
90
|
+
RangeTblEntry *target_rte,
|
91
|
+
List *targetlist,
|
92
|
+
ReplaceVarsNoMatchOption nomatch_option,
|
93
|
+
int nomatch_varno,
|
94
|
+
bool *outer_hasSubLinks);
|
95
|
+
|
96
|
+
#endif /* REWRITEMANIP_H */
|
@@ -0,0 +1,26 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* rewriteSupport.h
|
4
|
+
*
|
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/rewrite/rewriteSupport.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef REWRITESUPPORT_H
|
15
|
+
#define REWRITESUPPORT_H
|
16
|
+
|
17
|
+
/* The ON SELECT rule of a view is always named this: */
|
18
|
+
#define ViewSelectRuleName "_RETURN"
|
19
|
+
|
20
|
+
extern bool IsDefinedRewriteRule(Oid owningRel, const char *ruleName);
|
21
|
+
|
22
|
+
extern void SetRelationRuleStatus(Oid relationId, bool relHasRules);
|
23
|
+
|
24
|
+
extern Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok);
|
25
|
+
|
26
|
+
#endif /* REWRITESUPPORT_H */
|
@@ -0,0 +1,108 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* block.h
|
4
|
+
* POSTGRES disk block definitions.
|
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/storage/block.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef BLOCK_H
|
15
|
+
#define BLOCK_H
|
16
|
+
|
17
|
+
/*
|
18
|
+
* BlockNumber:
|
19
|
+
*
|
20
|
+
* each data file (heap or index) is divided into postgres disk blocks
|
21
|
+
* (which may be thought of as the unit of i/o -- a postgres buffer
|
22
|
+
* contains exactly one disk block). the blocks are numbered
|
23
|
+
* sequentially, 0 to 0xFFFFFFFE.
|
24
|
+
*
|
25
|
+
* InvalidBlockNumber is the same thing as P_NEW in bufmgr.h.
|
26
|
+
*
|
27
|
+
* the access methods, the buffer manager and the storage manager are
|
28
|
+
* more or less the only pieces of code that should be accessing disk
|
29
|
+
* blocks directly.
|
30
|
+
*/
|
31
|
+
typedef uint32 BlockNumber;
|
32
|
+
|
33
|
+
#define InvalidBlockNumber ((BlockNumber) 0xFFFFFFFF)
|
34
|
+
|
35
|
+
#define MaxBlockNumber ((BlockNumber) 0xFFFFFFFE)
|
36
|
+
|
37
|
+
/*
|
38
|
+
* BlockId:
|
39
|
+
*
|
40
|
+
* this is a storage type for BlockNumber. in other words, this type
|
41
|
+
* is used for on-disk structures (e.g., in HeapTupleData) whereas
|
42
|
+
* BlockNumber is the type on which calculations are performed (e.g.,
|
43
|
+
* in access method code).
|
44
|
+
*
|
45
|
+
* there doesn't appear to be any reason to have separate types except
|
46
|
+
* for the fact that BlockIds can be SHORTALIGN'd (and therefore any
|
47
|
+
* structures that contains them, such as ItemPointerData, can also be
|
48
|
+
* SHORTALIGN'd). this is an important consideration for reducing the
|
49
|
+
* space requirements of the line pointer (ItemIdData) array on each
|
50
|
+
* page and the header of each heap or index tuple, so it doesn't seem
|
51
|
+
* wise to change this without good reason.
|
52
|
+
*/
|
53
|
+
typedef struct BlockIdData
|
54
|
+
{
|
55
|
+
uint16 bi_hi;
|
56
|
+
uint16 bi_lo;
|
57
|
+
} BlockIdData;
|
58
|
+
|
59
|
+
typedef BlockIdData *BlockId; /* block identifier */
|
60
|
+
|
61
|
+
/* ----------------
|
62
|
+
* support functions
|
63
|
+
* ----------------
|
64
|
+
*/
|
65
|
+
|
66
|
+
/*
|
67
|
+
* BlockNumberIsValid
|
68
|
+
* True iff blockNumber is valid.
|
69
|
+
*/
|
70
|
+
static inline bool
|
71
|
+
BlockNumberIsValid(BlockNumber blockNumber)
|
72
|
+
{
|
73
|
+
return blockNumber != InvalidBlockNumber;
|
74
|
+
}
|
75
|
+
|
76
|
+
/*
|
77
|
+
* BlockIdSet
|
78
|
+
* Sets a block identifier to the specified value.
|
79
|
+
*/
|
80
|
+
static inline void
|
81
|
+
BlockIdSet(BlockIdData *blockId, BlockNumber blockNumber)
|
82
|
+
{
|
83
|
+
blockId->bi_hi = blockNumber >> 16;
|
84
|
+
blockId->bi_lo = blockNumber & 0xffff;
|
85
|
+
}
|
86
|
+
|
87
|
+
/*
|
88
|
+
* BlockIdEquals
|
89
|
+
* Check for block number equality.
|
90
|
+
*/
|
91
|
+
static inline bool
|
92
|
+
BlockIdEquals(const BlockIdData *blockId1, const BlockIdData *blockId2)
|
93
|
+
{
|
94
|
+
return (blockId1->bi_hi == blockId2->bi_hi &&
|
95
|
+
blockId1->bi_lo == blockId2->bi_lo);
|
96
|
+
}
|
97
|
+
|
98
|
+
/*
|
99
|
+
* BlockIdGetBlockNumber
|
100
|
+
* Retrieve the block number from a block identifier.
|
101
|
+
*/
|
102
|
+
static inline BlockNumber
|
103
|
+
BlockIdGetBlockNumber(const BlockIdData *blockId)
|
104
|
+
{
|
105
|
+
return (((BlockNumber) blockId->bi_hi) << 16) | ((BlockNumber) blockId->bi_lo);
|
106
|
+
}
|
107
|
+
|
108
|
+
#endif /* BLOCK_H */
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* buf.h
|
4
|
+
* Basic buffer manager data types.
|
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/storage/buf.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef BUF_H
|
15
|
+
#define BUF_H
|
16
|
+
|
17
|
+
/*
|
18
|
+
* Buffer identifiers.
|
19
|
+
*
|
20
|
+
* Zero is invalid, positive is the index of a shared buffer (1..NBuffers),
|
21
|
+
* negative is the index of a local buffer (-1 .. -NLocBuffer).
|
22
|
+
*/
|
23
|
+
typedef int Buffer;
|
24
|
+
|
25
|
+
#define InvalidBuffer 0
|
26
|
+
|
27
|
+
/*
|
28
|
+
* BufferIsInvalid
|
29
|
+
* True iff the buffer is invalid.
|
30
|
+
*/
|
31
|
+
#define BufferIsInvalid(buffer) ((buffer) == InvalidBuffer)
|
32
|
+
|
33
|
+
/*
|
34
|
+
* BufferIsLocal
|
35
|
+
* True iff the buffer is local (not visible to other backends).
|
36
|
+
*/
|
37
|
+
#define BufferIsLocal(buffer) ((buffer) < 0)
|
38
|
+
|
39
|
+
/*
|
40
|
+
* Buffer access strategy objects.
|
41
|
+
*
|
42
|
+
* BufferAccessStrategyData is private to freelist.c
|
43
|
+
*/
|
44
|
+
typedef struct BufferAccessStrategyData *BufferAccessStrategy;
|
45
|
+
|
46
|
+
#endif /* BUF_H */
|
@@ -0,0 +1,411 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* bufmgr.h
|
4
|
+
* POSTGRES buffer manager definitions.
|
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/storage/bufmgr.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef BUFMGR_H
|
15
|
+
#define BUFMGR_H
|
16
|
+
|
17
|
+
#include "port/pg_iovec.h"
|
18
|
+
#include "storage/block.h"
|
19
|
+
#include "storage/buf.h"
|
20
|
+
#include "storage/bufpage.h"
|
21
|
+
#include "storage/relfilelocator.h"
|
22
|
+
#include "utils/relcache.h"
|
23
|
+
#include "utils/snapmgr.h"
|
24
|
+
|
25
|
+
typedef void *Block;
|
26
|
+
|
27
|
+
/*
|
28
|
+
* Possible arguments for GetAccessStrategy().
|
29
|
+
*
|
30
|
+
* If adding a new BufferAccessStrategyType, also add a new IOContext so
|
31
|
+
* IO statistics using this strategy are tracked.
|
32
|
+
*/
|
33
|
+
typedef enum BufferAccessStrategyType
|
34
|
+
{
|
35
|
+
BAS_NORMAL, /* Normal random access */
|
36
|
+
BAS_BULKREAD, /* Large read-only scan (hint bit updates are
|
37
|
+
* ok) */
|
38
|
+
BAS_BULKWRITE, /* Large multi-block write (e.g. COPY IN) */
|
39
|
+
BAS_VACUUM, /* VACUUM */
|
40
|
+
} BufferAccessStrategyType;
|
41
|
+
|
42
|
+
/* Possible modes for ReadBufferExtended() */
|
43
|
+
typedef enum
|
44
|
+
{
|
45
|
+
RBM_NORMAL, /* Normal read */
|
46
|
+
RBM_ZERO_AND_LOCK, /* Don't read from disk, caller will
|
47
|
+
* initialize. Also locks the page. */
|
48
|
+
RBM_ZERO_AND_CLEANUP_LOCK, /* Like RBM_ZERO_AND_LOCK, but locks the page
|
49
|
+
* in "cleanup" mode */
|
50
|
+
RBM_ZERO_ON_ERROR, /* Read, but return an all-zeros page on error */
|
51
|
+
RBM_NORMAL_NO_LOG, /* Don't log page as invalid during WAL
|
52
|
+
* replay; otherwise same as RBM_NORMAL */
|
53
|
+
} ReadBufferMode;
|
54
|
+
|
55
|
+
/*
|
56
|
+
* Type returned by PrefetchBuffer().
|
57
|
+
*/
|
58
|
+
typedef struct PrefetchBufferResult
|
59
|
+
{
|
60
|
+
Buffer recent_buffer; /* If valid, a hit (recheck needed!) */
|
61
|
+
bool initiated_io; /* If true, a miss resulting in async I/O */
|
62
|
+
} PrefetchBufferResult;
|
63
|
+
|
64
|
+
/*
|
65
|
+
* Flags influencing the behaviour of ExtendBufferedRel*
|
66
|
+
*/
|
67
|
+
typedef enum ExtendBufferedFlags
|
68
|
+
{
|
69
|
+
/*
|
70
|
+
* Don't acquire extension lock. This is safe only if the relation isn't
|
71
|
+
* shared, an access exclusive lock is held or if this is the startup
|
72
|
+
* process.
|
73
|
+
*/
|
74
|
+
EB_SKIP_EXTENSION_LOCK = (1 << 0),
|
75
|
+
|
76
|
+
/* Is this extension part of recovery? */
|
77
|
+
EB_PERFORMING_RECOVERY = (1 << 1),
|
78
|
+
|
79
|
+
/*
|
80
|
+
* Should the fork be created if it does not currently exist? This likely
|
81
|
+
* only ever makes sense for relation forks.
|
82
|
+
*/
|
83
|
+
EB_CREATE_FORK_IF_NEEDED = (1 << 2),
|
84
|
+
|
85
|
+
/* Should the first (possibly only) return buffer be returned locked? */
|
86
|
+
EB_LOCK_FIRST = (1 << 3),
|
87
|
+
|
88
|
+
/* Should the smgr size cache be cleared? */
|
89
|
+
EB_CLEAR_SIZE_CACHE = (1 << 4),
|
90
|
+
|
91
|
+
/* internal flags follow */
|
92
|
+
EB_LOCK_TARGET = (1 << 5),
|
93
|
+
} ExtendBufferedFlags;
|
94
|
+
|
95
|
+
/*
|
96
|
+
* Some functions identify relations either by relation or smgr +
|
97
|
+
* relpersistence. Used via the BMR_REL()/BMR_SMGR() macros below. This
|
98
|
+
* allows us to use the same function for both recovery and normal operation.
|
99
|
+
*/
|
100
|
+
typedef struct BufferManagerRelation
|
101
|
+
{
|
102
|
+
Relation rel;
|
103
|
+
struct SMgrRelationData *smgr;
|
104
|
+
char relpersistence;
|
105
|
+
} BufferManagerRelation;
|
106
|
+
|
107
|
+
#define BMR_REL(p_rel) ((BufferManagerRelation){.rel = p_rel})
|
108
|
+
#define BMR_SMGR(p_smgr, p_relpersistence) ((BufferManagerRelation){.smgr = p_smgr, .relpersistence = p_relpersistence})
|
109
|
+
|
110
|
+
/* Zero out page if reading fails. */
|
111
|
+
#define READ_BUFFERS_ZERO_ON_ERROR (1 << 0)
|
112
|
+
/* Call smgrprefetch() if I/O necessary. */
|
113
|
+
#define READ_BUFFERS_ISSUE_ADVICE (1 << 1)
|
114
|
+
|
115
|
+
struct ReadBuffersOperation
|
116
|
+
{
|
117
|
+
/*
|
118
|
+
* The following members should be set by the caller. If only smgr is
|
119
|
+
* provided without rel, then smgr_persistence can be set to override the
|
120
|
+
* default assumption of RELPERSISTENCE_PERMANENT.
|
121
|
+
*/
|
122
|
+
Relation rel;
|
123
|
+
struct SMgrRelationData *smgr;
|
124
|
+
char smgr_persistence;
|
125
|
+
ForkNumber forknum;
|
126
|
+
BufferAccessStrategy strategy;
|
127
|
+
|
128
|
+
/*
|
129
|
+
* The following private members are private state for communication
|
130
|
+
* between StartReadBuffers() and WaitReadBuffers(), initialized only if
|
131
|
+
* an actual read is required, and should not be modified.
|
132
|
+
*/
|
133
|
+
Buffer *buffers;
|
134
|
+
BlockNumber blocknum;
|
135
|
+
int flags;
|
136
|
+
int16 nblocks;
|
137
|
+
int16 io_buffers_len;
|
138
|
+
};
|
139
|
+
|
140
|
+
typedef struct ReadBuffersOperation ReadBuffersOperation;
|
141
|
+
|
142
|
+
/* forward declared, to avoid having to expose buf_internals.h here */
|
143
|
+
struct WritebackContext;
|
144
|
+
|
145
|
+
/* forward declared, to avoid including smgr.h here */
|
146
|
+
struct SMgrRelationData;
|
147
|
+
|
148
|
+
/* in globals.c ... this duplicates miscadmin.h */
|
149
|
+
extern PGDLLIMPORT int NBuffers;
|
150
|
+
|
151
|
+
/* in bufmgr.c */
|
152
|
+
extern PGDLLIMPORT bool zero_damaged_pages;
|
153
|
+
extern PGDLLIMPORT int bgwriter_lru_maxpages;
|
154
|
+
extern PGDLLIMPORT double bgwriter_lru_multiplier;
|
155
|
+
extern PGDLLIMPORT bool track_io_timing;
|
156
|
+
|
157
|
+
/* only applicable when prefetching is available */
|
158
|
+
#ifdef USE_PREFETCH
|
159
|
+
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 1
|
160
|
+
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 10
|
161
|
+
#else
|
162
|
+
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0
|
163
|
+
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 0
|
164
|
+
#endif
|
165
|
+
extern PGDLLIMPORT int effective_io_concurrency;
|
166
|
+
extern PGDLLIMPORT int maintenance_io_concurrency;
|
167
|
+
|
168
|
+
#define MAX_IO_COMBINE_LIMIT PG_IOV_MAX
|
169
|
+
#define DEFAULT_IO_COMBINE_LIMIT Min(MAX_IO_COMBINE_LIMIT, (128 * 1024) / BLCKSZ)
|
170
|
+
extern PGDLLIMPORT int io_combine_limit;
|
171
|
+
|
172
|
+
extern PGDLLIMPORT int checkpoint_flush_after;
|
173
|
+
extern PGDLLIMPORT int backend_flush_after;
|
174
|
+
extern PGDLLIMPORT int bgwriter_flush_after;
|
175
|
+
|
176
|
+
/* in buf_init.c */
|
177
|
+
extern PGDLLIMPORT char *BufferBlocks;
|
178
|
+
|
179
|
+
/* in localbuf.c */
|
180
|
+
extern PGDLLIMPORT int NLocBuffer;
|
181
|
+
extern PGDLLIMPORT Block *LocalBufferBlockPointers;
|
182
|
+
extern PGDLLIMPORT int32 *LocalRefCount;
|
183
|
+
|
184
|
+
/* upper limit for effective_io_concurrency */
|
185
|
+
#define MAX_IO_CONCURRENCY 1000
|
186
|
+
|
187
|
+
/* special block number for ReadBuffer() */
|
188
|
+
#define P_NEW InvalidBlockNumber /* grow the file to get a new page */
|
189
|
+
|
190
|
+
/*
|
191
|
+
* Buffer content lock modes (mode argument for LockBuffer())
|
192
|
+
*/
|
193
|
+
#define BUFFER_LOCK_UNLOCK 0
|
194
|
+
#define BUFFER_LOCK_SHARE 1
|
195
|
+
#define BUFFER_LOCK_EXCLUSIVE 2
|
196
|
+
|
197
|
+
|
198
|
+
/*
|
199
|
+
* prototypes for functions in bufmgr.c
|
200
|
+
*/
|
201
|
+
extern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_reln,
|
202
|
+
ForkNumber forkNum,
|
203
|
+
BlockNumber blockNum);
|
204
|
+
extern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum,
|
205
|
+
BlockNumber blockNum);
|
206
|
+
extern bool ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum,
|
207
|
+
BlockNumber blockNum, Buffer recent_buffer);
|
208
|
+
extern Buffer ReadBuffer(Relation reln, BlockNumber blockNum);
|
209
|
+
extern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum,
|
210
|
+
BlockNumber blockNum, ReadBufferMode mode,
|
211
|
+
BufferAccessStrategy strategy);
|
212
|
+
extern Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator,
|
213
|
+
ForkNumber forkNum, BlockNumber blockNum,
|
214
|
+
ReadBufferMode mode, BufferAccessStrategy strategy,
|
215
|
+
bool permanent);
|
216
|
+
|
217
|
+
extern bool StartReadBuffer(ReadBuffersOperation *operation,
|
218
|
+
Buffer *buffer,
|
219
|
+
BlockNumber blocknum,
|
220
|
+
int flags);
|
221
|
+
extern bool StartReadBuffers(ReadBuffersOperation *operation,
|
222
|
+
Buffer *buffers,
|
223
|
+
BlockNumber blockNum,
|
224
|
+
int *nblocks,
|
225
|
+
int flags);
|
226
|
+
extern void WaitReadBuffers(ReadBuffersOperation *operation);
|
227
|
+
|
228
|
+
extern void ReleaseBuffer(Buffer buffer);
|
229
|
+
extern void UnlockReleaseBuffer(Buffer buffer);
|
230
|
+
extern bool BufferIsExclusiveLocked(Buffer buffer);
|
231
|
+
extern bool BufferIsDirty(Buffer buffer);
|
232
|
+
extern void MarkBufferDirty(Buffer buffer);
|
233
|
+
extern void IncrBufferRefCount(Buffer buffer);
|
234
|
+
extern void CheckBufferIsPinnedOnce(Buffer buffer);
|
235
|
+
extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation,
|
236
|
+
BlockNumber blockNum);
|
237
|
+
|
238
|
+
extern Buffer ExtendBufferedRel(BufferManagerRelation bmr,
|
239
|
+
ForkNumber forkNum,
|
240
|
+
BufferAccessStrategy strategy,
|
241
|
+
uint32 flags);
|
242
|
+
extern BlockNumber ExtendBufferedRelBy(BufferManagerRelation bmr,
|
243
|
+
ForkNumber fork,
|
244
|
+
BufferAccessStrategy strategy,
|
245
|
+
uint32 flags,
|
246
|
+
uint32 extend_by,
|
247
|
+
Buffer *buffers,
|
248
|
+
uint32 *extended_by);
|
249
|
+
extern Buffer ExtendBufferedRelTo(BufferManagerRelation bmr,
|
250
|
+
ForkNumber fork,
|
251
|
+
BufferAccessStrategy strategy,
|
252
|
+
uint32 flags,
|
253
|
+
BlockNumber extend_to,
|
254
|
+
ReadBufferMode mode);
|
255
|
+
|
256
|
+
extern void InitBufferPoolAccess(void);
|
257
|
+
extern void AtEOXact_Buffers(bool isCommit);
|
258
|
+
extern char *DebugPrintBufferRefcount(Buffer buffer);
|
259
|
+
extern void CheckPointBuffers(int flags);
|
260
|
+
extern BlockNumber BufferGetBlockNumber(Buffer buffer);
|
261
|
+
extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,
|
262
|
+
ForkNumber forkNum);
|
263
|
+
extern void FlushOneBuffer(Buffer buffer);
|
264
|
+
extern void FlushRelationBuffers(Relation rel);
|
265
|
+
extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels);
|
266
|
+
extern void CreateAndCopyRelationData(RelFileLocator src_rlocator,
|
267
|
+
RelFileLocator dst_rlocator,
|
268
|
+
bool permanent);
|
269
|
+
extern void FlushDatabaseBuffers(Oid dbid);
|
270
|
+
extern void DropRelationBuffers(struct SMgrRelationData *smgr_reln,
|
271
|
+
ForkNumber *forkNum,
|
272
|
+
int nforks, BlockNumber *firstDelBlock);
|
273
|
+
extern void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln,
|
274
|
+
int nlocators);
|
275
|
+
extern void DropDatabaseBuffers(Oid dbid);
|
276
|
+
|
277
|
+
#define RelationGetNumberOfBlocks(reln) \
|
278
|
+
RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM)
|
279
|
+
|
280
|
+
extern bool BufferIsPermanent(Buffer buffer);
|
281
|
+
extern XLogRecPtr BufferGetLSNAtomic(Buffer buffer);
|
282
|
+
|
283
|
+
#ifdef NOT_USED
|
284
|
+
extern void PrintPinnedBufs(void);
|
285
|
+
#endif
|
286
|
+
extern void BufferGetTag(Buffer buffer, RelFileLocator *rlocator,
|
287
|
+
ForkNumber *forknum, BlockNumber *blknum);
|
288
|
+
|
289
|
+
extern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std);
|
290
|
+
|
291
|
+
extern void UnlockBuffers(void);
|
292
|
+
extern void LockBuffer(Buffer buffer, int mode);
|
293
|
+
extern bool ConditionalLockBuffer(Buffer buffer);
|
294
|
+
extern void LockBufferForCleanup(Buffer buffer);
|
295
|
+
extern bool ConditionalLockBufferForCleanup(Buffer buffer);
|
296
|
+
extern bool IsBufferCleanupOK(Buffer buffer);
|
297
|
+
extern bool HoldingBufferPinThatDelaysRecovery(void);
|
298
|
+
|
299
|
+
extern bool BgBufferSync(struct WritebackContext *wb_context);
|
300
|
+
|
301
|
+
extern void LimitAdditionalPins(uint32 *additional_pins);
|
302
|
+
extern void LimitAdditionalLocalPins(uint32 *additional_pins);
|
303
|
+
|
304
|
+
extern bool EvictUnpinnedBuffer(Buffer buf);
|
305
|
+
|
306
|
+
/* in buf_init.c */
|
307
|
+
extern void InitBufferPool(void);
|
308
|
+
extern Size BufferShmemSize(void);
|
309
|
+
|
310
|
+
/* in localbuf.c */
|
311
|
+
extern void AtProcExit_LocalBuffers(void);
|
312
|
+
|
313
|
+
/* in freelist.c */
|
314
|
+
|
315
|
+
extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype);
|
316
|
+
extern BufferAccessStrategy GetAccessStrategyWithSize(BufferAccessStrategyType btype,
|
317
|
+
int ring_size_kb);
|
318
|
+
extern int GetAccessStrategyBufferCount(BufferAccessStrategy strategy);
|
319
|
+
extern int GetAccessStrategyPinLimit(BufferAccessStrategy strategy);
|
320
|
+
|
321
|
+
extern void FreeAccessStrategy(BufferAccessStrategy strategy);
|
322
|
+
|
323
|
+
|
324
|
+
/* inline functions */
|
325
|
+
|
326
|
+
/*
|
327
|
+
* Although this header file is nominally backend-only, certain frontend
|
328
|
+
* programs like pg_waldump include it. For compilers that emit static
|
329
|
+
* inline functions even when they're unused, that leads to unsatisfied
|
330
|
+
* external references; hence hide these with #ifndef FRONTEND.
|
331
|
+
*/
|
332
|
+
|
333
|
+
#ifndef FRONTEND
|
334
|
+
|
335
|
+
/*
|
336
|
+
* BufferIsValid
|
337
|
+
* True iff the given buffer number is valid (either as a shared
|
338
|
+
* or local buffer).
|
339
|
+
*
|
340
|
+
* Note: For a long time this was defined the same as BufferIsPinned,
|
341
|
+
* that is it would say False if you didn't hold a pin on the buffer.
|
342
|
+
* I believe this was bogus and served only to mask logic errors.
|
343
|
+
* Code should always know whether it has a buffer reference,
|
344
|
+
* independently of the pin state.
|
345
|
+
*
|
346
|
+
* Note: For a further long time this was not quite the inverse of the
|
347
|
+
* BufferIsInvalid() macro, in that it also did sanity checks to verify
|
348
|
+
* that the buffer number was in range. Most likely, this macro was
|
349
|
+
* originally intended only to be used in assertions, but its use has
|
350
|
+
* since expanded quite a bit, and the overhead of making those checks
|
351
|
+
* even in non-assert-enabled builds can be significant. Thus, we've
|
352
|
+
* now demoted the range checks to assertions within the macro itself.
|
353
|
+
*/
|
354
|
+
static inline bool
|
355
|
+
BufferIsValid(Buffer bufnum)
|
356
|
+
{
|
357
|
+
Assert(bufnum <= NBuffers);
|
358
|
+
Assert(bufnum >= -NLocBuffer);
|
359
|
+
|
360
|
+
return bufnum != InvalidBuffer;
|
361
|
+
}
|
362
|
+
|
363
|
+
/*
|
364
|
+
* BufferGetBlock
|
365
|
+
* Returns a reference to a disk page image associated with a buffer.
|
366
|
+
*
|
367
|
+
* Note:
|
368
|
+
* Assumes buffer is valid.
|
369
|
+
*/
|
370
|
+
static inline Block
|
371
|
+
BufferGetBlock(Buffer buffer)
|
372
|
+
{
|
373
|
+
Assert(BufferIsValid(buffer));
|
374
|
+
|
375
|
+
if (BufferIsLocal(buffer))
|
376
|
+
return LocalBufferBlockPointers[-buffer - 1];
|
377
|
+
else
|
378
|
+
return (Block) (BufferBlocks + ((Size) (buffer - 1)) * BLCKSZ);
|
379
|
+
}
|
380
|
+
|
381
|
+
/*
|
382
|
+
* BufferGetPageSize
|
383
|
+
* Returns the page size within a buffer.
|
384
|
+
*
|
385
|
+
* Notes:
|
386
|
+
* Assumes buffer is valid.
|
387
|
+
*
|
388
|
+
* The buffer can be a raw disk block and need not contain a valid
|
389
|
+
* (formatted) disk page.
|
390
|
+
*/
|
391
|
+
/* XXX should dig out of buffer descriptor */
|
392
|
+
static inline Size
|
393
|
+
BufferGetPageSize(Buffer buffer)
|
394
|
+
{
|
395
|
+
AssertMacro(BufferIsValid(buffer));
|
396
|
+
return (Size) BLCKSZ;
|
397
|
+
}
|
398
|
+
|
399
|
+
/*
|
400
|
+
* BufferGetPage
|
401
|
+
* Returns the page associated with a buffer.
|
402
|
+
*/
|
403
|
+
static inline Page
|
404
|
+
BufferGetPage(Buffer buffer)
|
405
|
+
{
|
406
|
+
return (Page) BufferGetBlock(buffer);
|
407
|
+
}
|
408
|
+
|
409
|
+
#endif /* FRONTEND */
|
410
|
+
|
411
|
+
#endif /* BUFMGR_H */
|