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,444 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* xlogreader.h
|
4
|
+
* Definitions for the generic XLog reading facility
|
5
|
+
*
|
6
|
+
* Portions Copyright (c) 2013-2024, PostgreSQL Global Development Group
|
7
|
+
*
|
8
|
+
* IDENTIFICATION
|
9
|
+
* src/include/access/xlogreader.h
|
10
|
+
*
|
11
|
+
* NOTES
|
12
|
+
* See the definition of the XLogReaderState struct for instructions on
|
13
|
+
* how to use the XLogReader infrastructure.
|
14
|
+
*
|
15
|
+
* The basic idea is to allocate an XLogReaderState via
|
16
|
+
* XLogReaderAllocate(), position the reader to the first record with
|
17
|
+
* XLogBeginRead() or XLogFindNextRecord(), and call XLogReadRecord()
|
18
|
+
* until it returns NULL.
|
19
|
+
*
|
20
|
+
* Callers supply a page_read callback if they want to call
|
21
|
+
* XLogReadRecord or XLogFindNextRecord; it can be passed in as NULL
|
22
|
+
* otherwise. The WALRead function can be used as a helper to write
|
23
|
+
* page_read callbacks, but it is not mandatory; callers that use it,
|
24
|
+
* must supply segment_open callbacks. The segment_close callback
|
25
|
+
* must always be supplied.
|
26
|
+
*
|
27
|
+
* After reading a record with XLogReadRecord(), it's decomposed into
|
28
|
+
* the per-block and main data parts, and the parts can be accessed
|
29
|
+
* with the XLogRec* macros and functions. You can also decode a
|
30
|
+
* record that's already constructed in memory, without reading from
|
31
|
+
* disk, by calling the DecodeXLogRecord() function.
|
32
|
+
*-------------------------------------------------------------------------
|
33
|
+
*/
|
34
|
+
#ifndef XLOGREADER_H
|
35
|
+
#define XLOGREADER_H
|
36
|
+
|
37
|
+
#ifndef FRONTEND
|
38
|
+
#include "access/transam.h"
|
39
|
+
#endif
|
40
|
+
|
41
|
+
#include "access/xlogrecord.h"
|
42
|
+
#include "storage/buf.h"
|
43
|
+
|
44
|
+
/* WALOpenSegment represents a WAL segment being read. */
|
45
|
+
typedef struct WALOpenSegment
|
46
|
+
{
|
47
|
+
int ws_file; /* segment file descriptor */
|
48
|
+
XLogSegNo ws_segno; /* segment number */
|
49
|
+
TimeLineID ws_tli; /* timeline ID of the currently open file */
|
50
|
+
} WALOpenSegment;
|
51
|
+
|
52
|
+
/* WALSegmentContext carries context information about WAL segments to read */
|
53
|
+
typedef struct WALSegmentContext
|
54
|
+
{
|
55
|
+
char ws_dir[MAXPGPATH];
|
56
|
+
int ws_segsize;
|
57
|
+
} WALSegmentContext;
|
58
|
+
|
59
|
+
typedef struct XLogReaderState XLogReaderState;
|
60
|
+
|
61
|
+
/* Function type definitions for various xlogreader interactions */
|
62
|
+
typedef int (*XLogPageReadCB) (XLogReaderState *xlogreader,
|
63
|
+
XLogRecPtr targetPagePtr,
|
64
|
+
int reqLen,
|
65
|
+
XLogRecPtr targetRecPtr,
|
66
|
+
char *readBuf);
|
67
|
+
typedef void (*WALSegmentOpenCB) (XLogReaderState *xlogreader,
|
68
|
+
XLogSegNo nextSegNo,
|
69
|
+
TimeLineID *tli_p);
|
70
|
+
typedef void (*WALSegmentCloseCB) (XLogReaderState *xlogreader);
|
71
|
+
|
72
|
+
typedef struct XLogReaderRoutine
|
73
|
+
{
|
74
|
+
/*
|
75
|
+
* Data input callback
|
76
|
+
*
|
77
|
+
* This callback shall read at least reqLen valid bytes of the xlog page
|
78
|
+
* starting at targetPagePtr, and store them in readBuf. The callback
|
79
|
+
* shall return the number of bytes read (never more than XLOG_BLCKSZ), or
|
80
|
+
* -1 on failure. The callback shall sleep, if necessary, to wait for the
|
81
|
+
* requested bytes to become available. The callback will not be invoked
|
82
|
+
* again for the same page unless more than the returned number of bytes
|
83
|
+
* are needed.
|
84
|
+
*
|
85
|
+
* targetRecPtr is the position of the WAL record we're reading. Usually
|
86
|
+
* it is equal to targetPagePtr + reqLen, but sometimes xlogreader needs
|
87
|
+
* to read and verify the page or segment header, before it reads the
|
88
|
+
* actual WAL record it's interested in. In that case, targetRecPtr can
|
89
|
+
* be used to determine which timeline to read the page from.
|
90
|
+
*
|
91
|
+
* The callback shall set ->seg.ws_tli to the TLI of the file the page was
|
92
|
+
* read from.
|
93
|
+
*/
|
94
|
+
XLogPageReadCB page_read;
|
95
|
+
|
96
|
+
/*
|
97
|
+
* Callback to open the specified WAL segment for reading. ->seg.ws_file
|
98
|
+
* shall be set to the file descriptor of the opened segment. In case of
|
99
|
+
* failure, an error shall be raised by the callback and it shall not
|
100
|
+
* return.
|
101
|
+
*
|
102
|
+
* "nextSegNo" is the number of the segment to be opened.
|
103
|
+
*
|
104
|
+
* "tli_p" is an input/output argument. WALRead() uses it to pass the
|
105
|
+
* timeline in which the new segment should be found, but the callback can
|
106
|
+
* use it to return the TLI that it actually opened.
|
107
|
+
*/
|
108
|
+
WALSegmentOpenCB segment_open;
|
109
|
+
|
110
|
+
/*
|
111
|
+
* WAL segment close callback. ->seg.ws_file shall be set to a negative
|
112
|
+
* number.
|
113
|
+
*/
|
114
|
+
WALSegmentCloseCB segment_close;
|
115
|
+
} XLogReaderRoutine;
|
116
|
+
|
117
|
+
#define XL_ROUTINE(...) &(XLogReaderRoutine){__VA_ARGS__}
|
118
|
+
|
119
|
+
typedef struct
|
120
|
+
{
|
121
|
+
/* Is this block ref in use? */
|
122
|
+
bool in_use;
|
123
|
+
|
124
|
+
/* Identify the block this refers to */
|
125
|
+
RelFileLocator rlocator;
|
126
|
+
ForkNumber forknum;
|
127
|
+
BlockNumber blkno;
|
128
|
+
|
129
|
+
/* Prefetching workspace. */
|
130
|
+
Buffer prefetch_buffer;
|
131
|
+
|
132
|
+
/* copy of the fork_flags field from the XLogRecordBlockHeader */
|
133
|
+
uint8 flags;
|
134
|
+
|
135
|
+
/* Information on full-page image, if any */
|
136
|
+
bool has_image; /* has image, even for consistency checking */
|
137
|
+
bool apply_image; /* has image that should be restored */
|
138
|
+
char *bkp_image;
|
139
|
+
uint16 hole_offset;
|
140
|
+
uint16 hole_length;
|
141
|
+
uint16 bimg_len;
|
142
|
+
uint8 bimg_info;
|
143
|
+
|
144
|
+
/* Buffer holding the rmgr-specific data associated with this block */
|
145
|
+
bool has_data;
|
146
|
+
char *data;
|
147
|
+
uint16 data_len;
|
148
|
+
uint16 data_bufsz;
|
149
|
+
} DecodedBkpBlock;
|
150
|
+
|
151
|
+
/*
|
152
|
+
* The decoded contents of a record. This occupies a contiguous region of
|
153
|
+
* memory, with main_data and blocks[n].data pointing to memory after the
|
154
|
+
* members declared here.
|
155
|
+
*/
|
156
|
+
typedef struct DecodedXLogRecord
|
157
|
+
{
|
158
|
+
/* Private member used for resource management. */
|
159
|
+
size_t size; /* total size of decoded record */
|
160
|
+
bool oversized; /* outside the regular decode buffer? */
|
161
|
+
struct DecodedXLogRecord *next; /* decoded record queue link */
|
162
|
+
|
163
|
+
/* Public members. */
|
164
|
+
XLogRecPtr lsn; /* location */
|
165
|
+
XLogRecPtr next_lsn; /* location of next record */
|
166
|
+
XLogRecord header; /* header */
|
167
|
+
RepOriginId record_origin;
|
168
|
+
TransactionId toplevel_xid; /* XID of top-level transaction */
|
169
|
+
char *main_data; /* record's main data portion */
|
170
|
+
uint32 main_data_len; /* main data portion's length */
|
171
|
+
int max_block_id; /* highest block_id in use (-1 if none) */
|
172
|
+
DecodedBkpBlock blocks[FLEXIBLE_ARRAY_MEMBER];
|
173
|
+
} DecodedXLogRecord;
|
174
|
+
|
175
|
+
struct XLogReaderState
|
176
|
+
{
|
177
|
+
/*
|
178
|
+
* Operational callbacks
|
179
|
+
*/
|
180
|
+
XLogReaderRoutine routine;
|
181
|
+
|
182
|
+
/* ----------------------------------------
|
183
|
+
* Public parameters
|
184
|
+
* ----------------------------------------
|
185
|
+
*/
|
186
|
+
|
187
|
+
/*
|
188
|
+
* System identifier of the xlog files we're about to read. Set to zero
|
189
|
+
* (the default value) if unknown or unimportant.
|
190
|
+
*/
|
191
|
+
uint64 system_identifier;
|
192
|
+
|
193
|
+
/*
|
194
|
+
* Opaque data for callbacks to use. Not used by XLogReader.
|
195
|
+
*/
|
196
|
+
void *private_data;
|
197
|
+
|
198
|
+
/*
|
199
|
+
* Start and end point of last record read. EndRecPtr is also used as the
|
200
|
+
* position to read next. Calling XLogBeginRead() sets EndRecPtr to the
|
201
|
+
* starting position and ReadRecPtr to invalid.
|
202
|
+
*
|
203
|
+
* Start and end point of last record returned by XLogReadRecord(). These
|
204
|
+
* are also available as record->lsn and record->next_lsn.
|
205
|
+
*/
|
206
|
+
XLogRecPtr ReadRecPtr; /* start of last record read */
|
207
|
+
XLogRecPtr EndRecPtr; /* end+1 of last record read */
|
208
|
+
|
209
|
+
/*
|
210
|
+
* Set at the end of recovery: the start point of a partial record at the
|
211
|
+
* end of WAL (InvalidXLogRecPtr if there wasn't one), and the start
|
212
|
+
* location of its first contrecord that went missing.
|
213
|
+
*/
|
214
|
+
XLogRecPtr abortedRecPtr;
|
215
|
+
XLogRecPtr missingContrecPtr;
|
216
|
+
/* Set when XLP_FIRST_IS_OVERWRITE_CONTRECORD is found */
|
217
|
+
XLogRecPtr overwrittenRecPtr;
|
218
|
+
|
219
|
+
|
220
|
+
/* ----------------------------------------
|
221
|
+
* Decoded representation of current record
|
222
|
+
*
|
223
|
+
* Use XLogRecGet* functions to investigate the record; these fields
|
224
|
+
* should not be accessed directly.
|
225
|
+
* ----------------------------------------
|
226
|
+
* Start and end point of the last record read and decoded by
|
227
|
+
* XLogReadRecordInternal(). NextRecPtr is also used as the position to
|
228
|
+
* decode next. Calling XLogBeginRead() sets NextRecPtr and EndRecPtr to
|
229
|
+
* the requested starting position.
|
230
|
+
*/
|
231
|
+
XLogRecPtr DecodeRecPtr; /* start of last record decoded */
|
232
|
+
XLogRecPtr NextRecPtr; /* end+1 of last record decoded */
|
233
|
+
XLogRecPtr PrevRecPtr; /* start of previous record decoded */
|
234
|
+
|
235
|
+
/* Last record returned by XLogReadRecord(). */
|
236
|
+
DecodedXLogRecord *record;
|
237
|
+
|
238
|
+
/* ----------------------------------------
|
239
|
+
* private/internal state
|
240
|
+
* ----------------------------------------
|
241
|
+
*/
|
242
|
+
|
243
|
+
/*
|
244
|
+
* Buffer for decoded records. This is a circular buffer, though
|
245
|
+
* individual records can't be split in the middle, so some space is often
|
246
|
+
* wasted at the end. Oversized records that don't fit in this space are
|
247
|
+
* allocated separately.
|
248
|
+
*/
|
249
|
+
char *decode_buffer;
|
250
|
+
size_t decode_buffer_size;
|
251
|
+
bool free_decode_buffer; /* need to free? */
|
252
|
+
char *decode_buffer_head; /* data is read from the head */
|
253
|
+
char *decode_buffer_tail; /* new data is written at the tail */
|
254
|
+
|
255
|
+
/*
|
256
|
+
* Queue of records that have been decoded. This is a linked list that
|
257
|
+
* usually consists of consecutive records in decode_buffer, but may also
|
258
|
+
* contain oversized records allocated with palloc().
|
259
|
+
*/
|
260
|
+
DecodedXLogRecord *decode_queue_head; /* oldest decoded record */
|
261
|
+
DecodedXLogRecord *decode_queue_tail; /* newest decoded record */
|
262
|
+
|
263
|
+
/*
|
264
|
+
* Buffer for currently read page (XLOG_BLCKSZ bytes, valid up to at least
|
265
|
+
* readLen bytes)
|
266
|
+
*/
|
267
|
+
char *readBuf;
|
268
|
+
uint32 readLen;
|
269
|
+
|
270
|
+
/* last read XLOG position for data currently in readBuf */
|
271
|
+
WALSegmentContext segcxt;
|
272
|
+
WALOpenSegment seg;
|
273
|
+
uint32 segoff;
|
274
|
+
|
275
|
+
/*
|
276
|
+
* beginning of prior page read, and its TLI. Doesn't necessarily
|
277
|
+
* correspond to what's in readBuf; used for timeline sanity checks.
|
278
|
+
*/
|
279
|
+
XLogRecPtr latestPagePtr;
|
280
|
+
TimeLineID latestPageTLI;
|
281
|
+
|
282
|
+
/* beginning of the WAL record being read. */
|
283
|
+
XLogRecPtr currRecPtr;
|
284
|
+
/* timeline to read it from, 0 if a lookup is required */
|
285
|
+
TimeLineID currTLI;
|
286
|
+
|
287
|
+
/*
|
288
|
+
* Safe point to read to in currTLI if current TLI is historical
|
289
|
+
* (tliSwitchPoint) or InvalidXLogRecPtr if on current timeline.
|
290
|
+
*
|
291
|
+
* Actually set to the start of the segment containing the timeline switch
|
292
|
+
* that ends currTLI's validity, not the LSN of the switch its self, since
|
293
|
+
* we can't assume the old segment will be present.
|
294
|
+
*/
|
295
|
+
XLogRecPtr currTLIValidUntil;
|
296
|
+
|
297
|
+
/*
|
298
|
+
* If currTLI is not the most recent known timeline, the next timeline to
|
299
|
+
* read from when currTLIValidUntil is reached.
|
300
|
+
*/
|
301
|
+
TimeLineID nextTLI;
|
302
|
+
|
303
|
+
/*
|
304
|
+
* Buffer for current ReadRecord result (expandable), used when a record
|
305
|
+
* crosses a page boundary.
|
306
|
+
*/
|
307
|
+
char *readRecordBuf;
|
308
|
+
uint32 readRecordBufSize;
|
309
|
+
|
310
|
+
/* Buffer to hold error message */
|
311
|
+
char *errormsg_buf;
|
312
|
+
bool errormsg_deferred;
|
313
|
+
|
314
|
+
/*
|
315
|
+
* Flag to indicate to XLogPageReadCB that it should not block waiting for
|
316
|
+
* data.
|
317
|
+
*/
|
318
|
+
bool nonblocking;
|
319
|
+
};
|
320
|
+
|
321
|
+
/*
|
322
|
+
* Check if XLogNextRecord() has any more queued records or an error to return.
|
323
|
+
*/
|
324
|
+
static inline bool
|
325
|
+
XLogReaderHasQueuedRecordOrError(XLogReaderState *state)
|
326
|
+
{
|
327
|
+
return (state->decode_queue_head != NULL) || state->errormsg_deferred;
|
328
|
+
}
|
329
|
+
|
330
|
+
/* Get a new XLogReader */
|
331
|
+
extern XLogReaderState *XLogReaderAllocate(int wal_segment_size,
|
332
|
+
const char *waldir,
|
333
|
+
XLogReaderRoutine *routine,
|
334
|
+
void *private_data);
|
335
|
+
|
336
|
+
/* Free an XLogReader */
|
337
|
+
extern void XLogReaderFree(XLogReaderState *state);
|
338
|
+
|
339
|
+
/* Optionally provide a circular decoding buffer to allow readahead. */
|
340
|
+
extern void XLogReaderSetDecodeBuffer(XLogReaderState *state,
|
341
|
+
void *buffer,
|
342
|
+
size_t size);
|
343
|
+
|
344
|
+
/* Position the XLogReader to given record */
|
345
|
+
extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr);
|
346
|
+
extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr);
|
347
|
+
|
348
|
+
/* Return values from XLogPageReadCB. */
|
349
|
+
typedef enum XLogPageReadResult
|
350
|
+
{
|
351
|
+
XLREAD_SUCCESS = 0, /* record is successfully read */
|
352
|
+
XLREAD_FAIL = -1, /* failed during reading a record */
|
353
|
+
XLREAD_WOULDBLOCK = -2, /* nonblocking mode only, no data */
|
354
|
+
} XLogPageReadResult;
|
355
|
+
|
356
|
+
/* Read the next XLog record. Returns NULL on end-of-WAL or failure */
|
357
|
+
extern struct XLogRecord *XLogReadRecord(XLogReaderState *state,
|
358
|
+
char **errormsg);
|
359
|
+
|
360
|
+
/* Consume the next record or error. */
|
361
|
+
extern DecodedXLogRecord *XLogNextRecord(XLogReaderState *state,
|
362
|
+
char **errormsg);
|
363
|
+
|
364
|
+
/* Release the previously returned record, if necessary. */
|
365
|
+
extern XLogRecPtr XLogReleasePreviousRecord(XLogReaderState *state);
|
366
|
+
|
367
|
+
/* Try to read ahead, if there is data and space. */
|
368
|
+
extern DecodedXLogRecord *XLogReadAhead(XLogReaderState *state,
|
369
|
+
bool nonblocking);
|
370
|
+
|
371
|
+
/* Validate a page */
|
372
|
+
extern bool XLogReaderValidatePageHeader(XLogReaderState *state,
|
373
|
+
XLogRecPtr recptr, char *phdr);
|
374
|
+
|
375
|
+
/* Forget error produced by XLogReaderValidatePageHeader(). */
|
376
|
+
extern void XLogReaderResetError(XLogReaderState *state);
|
377
|
+
|
378
|
+
/*
|
379
|
+
* Error information from WALRead that both backend and frontend caller can
|
380
|
+
* process. Currently only errors from pg_pread can be reported.
|
381
|
+
*/
|
382
|
+
typedef struct WALReadError
|
383
|
+
{
|
384
|
+
int wre_errno; /* errno set by the last pg_pread() */
|
385
|
+
int wre_off; /* Offset we tried to read from. */
|
386
|
+
int wre_req; /* Bytes requested to be read. */
|
387
|
+
int wre_read; /* Bytes read by the last read(). */
|
388
|
+
WALOpenSegment wre_seg; /* Segment we tried to read from. */
|
389
|
+
} WALReadError;
|
390
|
+
|
391
|
+
extern bool WALRead(XLogReaderState *state,
|
392
|
+
char *buf, XLogRecPtr startptr, Size count,
|
393
|
+
TimeLineID tli, WALReadError *errinfo);
|
394
|
+
|
395
|
+
/* Functions for decoding an XLogRecord */
|
396
|
+
|
397
|
+
extern size_t DecodeXLogRecordRequiredSpace(size_t xl_tot_len);
|
398
|
+
extern bool DecodeXLogRecord(XLogReaderState *state,
|
399
|
+
DecodedXLogRecord *decoded,
|
400
|
+
XLogRecord *record,
|
401
|
+
XLogRecPtr lsn,
|
402
|
+
char **errormsg);
|
403
|
+
|
404
|
+
/*
|
405
|
+
* Macros that provide access to parts of the record most recently returned by
|
406
|
+
* XLogReadRecord() or XLogNextRecord().
|
407
|
+
*/
|
408
|
+
#define XLogRecGetTotalLen(decoder) ((decoder)->record->header.xl_tot_len)
|
409
|
+
#define XLogRecGetPrev(decoder) ((decoder)->record->header.xl_prev)
|
410
|
+
#define XLogRecGetInfo(decoder) ((decoder)->record->header.xl_info)
|
411
|
+
#define XLogRecGetRmid(decoder) ((decoder)->record->header.xl_rmid)
|
412
|
+
#define XLogRecGetXid(decoder) ((decoder)->record->header.xl_xid)
|
413
|
+
#define XLogRecGetOrigin(decoder) ((decoder)->record->record_origin)
|
414
|
+
#define XLogRecGetTopXid(decoder) ((decoder)->record->toplevel_xid)
|
415
|
+
#define XLogRecGetData(decoder) ((decoder)->record->main_data)
|
416
|
+
#define XLogRecGetDataLen(decoder) ((decoder)->record->main_data_len)
|
417
|
+
#define XLogRecHasAnyBlockRefs(decoder) ((decoder)->record->max_block_id >= 0)
|
418
|
+
#define XLogRecMaxBlockId(decoder) ((decoder)->record->max_block_id)
|
419
|
+
#define XLogRecGetBlock(decoder, i) (&(decoder)->record->blocks[(i)])
|
420
|
+
#define XLogRecHasBlockRef(decoder, block_id) \
|
421
|
+
(((decoder)->record->max_block_id >= (block_id)) && \
|
422
|
+
((decoder)->record->blocks[block_id].in_use))
|
423
|
+
#define XLogRecHasBlockImage(decoder, block_id) \
|
424
|
+
((decoder)->record->blocks[block_id].has_image)
|
425
|
+
#define XLogRecBlockImageApply(decoder, block_id) \
|
426
|
+
((decoder)->record->blocks[block_id].apply_image)
|
427
|
+
#define XLogRecHasBlockData(decoder, block_id) \
|
428
|
+
((decoder)->record->blocks[block_id].has_data)
|
429
|
+
|
430
|
+
#ifndef FRONTEND
|
431
|
+
extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
|
432
|
+
#endif
|
433
|
+
|
434
|
+
extern bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char *page);
|
435
|
+
extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len);
|
436
|
+
extern void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,
|
437
|
+
RelFileLocator *rlocator, ForkNumber *forknum,
|
438
|
+
BlockNumber *blknum);
|
439
|
+
extern bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id,
|
440
|
+
RelFileLocator *rlocator, ForkNumber *forknum,
|
441
|
+
BlockNumber *blknum,
|
442
|
+
Buffer *prefetch_buffer);
|
443
|
+
|
444
|
+
#endif /* XLOGREADER_H */
|
@@ -0,0 +1,248 @@
|
|
1
|
+
/*
|
2
|
+
* xlogrecord.h
|
3
|
+
*
|
4
|
+
* Definitions for the WAL record format.
|
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/access/xlogrecord.h
|
10
|
+
*/
|
11
|
+
#ifndef XLOGRECORD_H
|
12
|
+
#define XLOGRECORD_H
|
13
|
+
|
14
|
+
#include "access/rmgr.h"
|
15
|
+
#include "access/xlogdefs.h"
|
16
|
+
#include "port/pg_crc32c.h"
|
17
|
+
#include "storage/block.h"
|
18
|
+
#include "storage/relfilelocator.h"
|
19
|
+
|
20
|
+
/*
|
21
|
+
* The overall layout of an XLOG record is:
|
22
|
+
* Fixed-size header (XLogRecord struct)
|
23
|
+
* XLogRecordBlockHeader struct
|
24
|
+
* XLogRecordBlockHeader struct
|
25
|
+
* ...
|
26
|
+
* XLogRecordDataHeader[Short|Long] struct
|
27
|
+
* block data
|
28
|
+
* block data
|
29
|
+
* ...
|
30
|
+
* main data
|
31
|
+
*
|
32
|
+
* There can be zero or more XLogRecordBlockHeaders, and 0 or more bytes of
|
33
|
+
* rmgr-specific data not associated with a block. XLogRecord structs
|
34
|
+
* always start on MAXALIGN boundaries in the WAL files, but the rest of
|
35
|
+
* the fields are not aligned.
|
36
|
+
*
|
37
|
+
* The XLogRecordBlockHeader, XLogRecordDataHeaderShort and
|
38
|
+
* XLogRecordDataHeaderLong structs all begin with a single 'id' byte. It's
|
39
|
+
* used to distinguish between block references, and the main data structs.
|
40
|
+
*/
|
41
|
+
typedef struct XLogRecord
|
42
|
+
{
|
43
|
+
uint32 xl_tot_len; /* total len of entire record */
|
44
|
+
TransactionId xl_xid; /* xact id */
|
45
|
+
XLogRecPtr xl_prev; /* ptr to previous record in log */
|
46
|
+
uint8 xl_info; /* flag bits, see below */
|
47
|
+
RmgrId xl_rmid; /* resource manager for this record */
|
48
|
+
/* 2 bytes of padding here, initialize to zero */
|
49
|
+
pg_crc32c xl_crc; /* CRC for this record */
|
50
|
+
|
51
|
+
/* XLogRecordBlockHeaders and XLogRecordDataHeader follow, no padding */
|
52
|
+
|
53
|
+
} XLogRecord;
|
54
|
+
|
55
|
+
#define SizeOfXLogRecord (offsetof(XLogRecord, xl_crc) + sizeof(pg_crc32c))
|
56
|
+
|
57
|
+
/*
|
58
|
+
* The high 4 bits in xl_info may be used freely by rmgr. The
|
59
|
+
* XLR_SPECIAL_REL_UPDATE and XLR_CHECK_CONSISTENCY bits can be passed by
|
60
|
+
* XLogInsert caller. The rest are set internally by XLogInsert.
|
61
|
+
*/
|
62
|
+
#define XLR_INFO_MASK 0x0F
|
63
|
+
#define XLR_RMGR_INFO_MASK 0xF0
|
64
|
+
|
65
|
+
/*
|
66
|
+
* XLogReader needs to allocate all the data of a WAL record in a single
|
67
|
+
* chunk. This means that a single XLogRecord cannot exceed MaxAllocSize
|
68
|
+
* in length if we ignore any allocation overhead of the XLogReader.
|
69
|
+
*
|
70
|
+
* To accommodate some overhead, this value allows for 4M of allocation
|
71
|
+
* overhead, that should be plenty enough for what the XLogReader
|
72
|
+
* infrastructure expects as extra.
|
73
|
+
*/
|
74
|
+
#define XLogRecordMaxSize (1020 * 1024 * 1024)
|
75
|
+
|
76
|
+
/*
|
77
|
+
* If a WAL record modifies any relation files, in ways not covered by the
|
78
|
+
* usual block references, this flag is set. This is not used for anything
|
79
|
+
* by PostgreSQL itself, but it allows external tools that read WAL and keep
|
80
|
+
* track of modified blocks to recognize such special record types.
|
81
|
+
*/
|
82
|
+
#define XLR_SPECIAL_REL_UPDATE 0x01
|
83
|
+
|
84
|
+
/*
|
85
|
+
* Enforces consistency checks of replayed WAL at recovery. If enabled,
|
86
|
+
* each record will log a full-page write for each block modified by the
|
87
|
+
* record and will reuse it afterwards for consistency checks. The caller
|
88
|
+
* of XLogInsert can use this value if necessary, but if
|
89
|
+
* wal_consistency_checking is enabled for a rmgr this is set unconditionally.
|
90
|
+
*/
|
91
|
+
#define XLR_CHECK_CONSISTENCY 0x02
|
92
|
+
|
93
|
+
/*
|
94
|
+
* Header info for block data appended to an XLOG record.
|
95
|
+
*
|
96
|
+
* 'data_length' is the length of the rmgr-specific payload data associated
|
97
|
+
* with this block. It does not include the possible full page image, nor
|
98
|
+
* XLogRecordBlockHeader struct itself.
|
99
|
+
*
|
100
|
+
* Note that we don't attempt to align the XLogRecordBlockHeader struct!
|
101
|
+
* So, the struct must be copied to aligned local storage before use.
|
102
|
+
*/
|
103
|
+
typedef struct XLogRecordBlockHeader
|
104
|
+
{
|
105
|
+
uint8 id; /* block reference ID */
|
106
|
+
uint8 fork_flags; /* fork within the relation, and flags */
|
107
|
+
uint16 data_length; /* number of payload bytes (not including page
|
108
|
+
* image) */
|
109
|
+
|
110
|
+
/* If BKPBLOCK_HAS_IMAGE, an XLogRecordBlockImageHeader struct follows */
|
111
|
+
/* If BKPBLOCK_SAME_REL is not set, a RelFileLocator follows */
|
112
|
+
/* BlockNumber follows */
|
113
|
+
} XLogRecordBlockHeader;
|
114
|
+
|
115
|
+
#define SizeOfXLogRecordBlockHeader (offsetof(XLogRecordBlockHeader, data_length) + sizeof(uint16))
|
116
|
+
|
117
|
+
/*
|
118
|
+
* Additional header information when a full-page image is included
|
119
|
+
* (i.e. when BKPBLOCK_HAS_IMAGE is set).
|
120
|
+
*
|
121
|
+
* The XLOG code is aware that PG data pages usually contain an unused "hole"
|
122
|
+
* in the middle, which contains only zero bytes. Since we know that the
|
123
|
+
* "hole" is all zeros, we remove it from the stored data (and it's not counted
|
124
|
+
* in the XLOG record's CRC, either). Hence, the amount of block data actually
|
125
|
+
* present is (BLCKSZ - <length of "hole" bytes>).
|
126
|
+
*
|
127
|
+
* Additionally, when wal_compression is enabled, we will try to compress full
|
128
|
+
* page images using one of the supported algorithms, after removing the
|
129
|
+
* "hole". This can reduce the WAL volume, but at some extra cost of CPU spent
|
130
|
+
* on the compression during WAL logging. In this case, since the "hole"
|
131
|
+
* length cannot be calculated by subtracting the number of page image bytes
|
132
|
+
* from BLCKSZ, basically it needs to be stored as an extra information.
|
133
|
+
* But when no "hole" exists, we can assume that the "hole" length is zero
|
134
|
+
* and no such an extra information needs to be stored. Note that
|
135
|
+
* the original version of page image is stored in WAL instead of the
|
136
|
+
* compressed one if the number of bytes saved by compression is less than
|
137
|
+
* the length of extra information. Hence, when a page image is successfully
|
138
|
+
* compressed, the amount of block data actually present is less than
|
139
|
+
* BLCKSZ - the length of "hole" bytes - the length of extra information.
|
140
|
+
*/
|
141
|
+
typedef struct XLogRecordBlockImageHeader
|
142
|
+
{
|
143
|
+
uint16 length; /* number of page image bytes */
|
144
|
+
uint16 hole_offset; /* number of bytes before "hole" */
|
145
|
+
uint8 bimg_info; /* flag bits, see below */
|
146
|
+
|
147
|
+
/*
|
148
|
+
* If BKPIMAGE_HAS_HOLE and BKPIMAGE_COMPRESSED(), an
|
149
|
+
* XLogRecordBlockCompressHeader struct follows.
|
150
|
+
*/
|
151
|
+
} XLogRecordBlockImageHeader;
|
152
|
+
|
153
|
+
#define SizeOfXLogRecordBlockImageHeader \
|
154
|
+
(offsetof(XLogRecordBlockImageHeader, bimg_info) + sizeof(uint8))
|
155
|
+
|
156
|
+
/* Information stored in bimg_info */
|
157
|
+
#define BKPIMAGE_HAS_HOLE 0x01 /* page image has "hole" */
|
158
|
+
#define BKPIMAGE_APPLY 0x02 /* page image should be restored
|
159
|
+
* during replay */
|
160
|
+
/* compression methods supported */
|
161
|
+
#define BKPIMAGE_COMPRESS_PGLZ 0x04
|
162
|
+
#define BKPIMAGE_COMPRESS_LZ4 0x08
|
163
|
+
#define BKPIMAGE_COMPRESS_ZSTD 0x10
|
164
|
+
|
165
|
+
#define BKPIMAGE_COMPRESSED(info) \
|
166
|
+
((info & (BKPIMAGE_COMPRESS_PGLZ | BKPIMAGE_COMPRESS_LZ4 | \
|
167
|
+
BKPIMAGE_COMPRESS_ZSTD)) != 0)
|
168
|
+
|
169
|
+
/*
|
170
|
+
* Extra header information used when page image has "hole" and
|
171
|
+
* is compressed.
|
172
|
+
*/
|
173
|
+
typedef struct XLogRecordBlockCompressHeader
|
174
|
+
{
|
175
|
+
uint16 hole_length; /* number of bytes in "hole" */
|
176
|
+
} XLogRecordBlockCompressHeader;
|
177
|
+
|
178
|
+
#define SizeOfXLogRecordBlockCompressHeader \
|
179
|
+
sizeof(XLogRecordBlockCompressHeader)
|
180
|
+
|
181
|
+
/*
|
182
|
+
* Maximum size of the header for a block reference. This is used to size a
|
183
|
+
* temporary buffer for constructing the header.
|
184
|
+
*/
|
185
|
+
#define MaxSizeOfXLogRecordBlockHeader \
|
186
|
+
(SizeOfXLogRecordBlockHeader + \
|
187
|
+
SizeOfXLogRecordBlockImageHeader + \
|
188
|
+
SizeOfXLogRecordBlockCompressHeader + \
|
189
|
+
sizeof(RelFileLocator) + \
|
190
|
+
sizeof(BlockNumber))
|
191
|
+
|
192
|
+
/*
|
193
|
+
* The fork number fits in the lower 4 bits in the fork_flags field. The upper
|
194
|
+
* bits are used for flags.
|
195
|
+
*/
|
196
|
+
#define BKPBLOCK_FORK_MASK 0x0F
|
197
|
+
#define BKPBLOCK_FLAG_MASK 0xF0
|
198
|
+
#define BKPBLOCK_HAS_IMAGE 0x10 /* block data is an XLogRecordBlockImage */
|
199
|
+
#define BKPBLOCK_HAS_DATA 0x20
|
200
|
+
#define BKPBLOCK_WILL_INIT 0x40 /* redo will re-init the page */
|
201
|
+
#define BKPBLOCK_SAME_REL 0x80 /* RelFileLocator omitted, same as
|
202
|
+
* previous */
|
203
|
+
|
204
|
+
/*
|
205
|
+
* XLogRecordDataHeaderShort/Long are used for the "main data" portion of
|
206
|
+
* the record. If the length of the data is less than 256 bytes, the short
|
207
|
+
* form is used, with a single byte to hold the length. Otherwise the long
|
208
|
+
* form is used.
|
209
|
+
*
|
210
|
+
* (These structs are currently not used in the code, they are here just for
|
211
|
+
* documentation purposes).
|
212
|
+
*/
|
213
|
+
typedef struct XLogRecordDataHeaderShort
|
214
|
+
{
|
215
|
+
uint8 id; /* XLR_BLOCK_ID_DATA_SHORT */
|
216
|
+
uint8 data_length; /* number of payload bytes */
|
217
|
+
} XLogRecordDataHeaderShort;
|
218
|
+
|
219
|
+
#define SizeOfXLogRecordDataHeaderShort (sizeof(uint8) * 2)
|
220
|
+
|
221
|
+
typedef struct XLogRecordDataHeaderLong
|
222
|
+
{
|
223
|
+
uint8 id; /* XLR_BLOCK_ID_DATA_LONG */
|
224
|
+
/* followed by uint32 data_length, unaligned */
|
225
|
+
} XLogRecordDataHeaderLong;
|
226
|
+
|
227
|
+
#define SizeOfXLogRecordDataHeaderLong (sizeof(uint8) + sizeof(uint32))
|
228
|
+
|
229
|
+
/*
|
230
|
+
* Block IDs used to distinguish different kinds of record fragments. Block
|
231
|
+
* references are numbered from 0 to XLR_MAX_BLOCK_ID. A rmgr is free to use
|
232
|
+
* any ID number in that range (although you should stick to small numbers,
|
233
|
+
* because the WAL machinery is optimized for that case). A few ID
|
234
|
+
* numbers are reserved to denote the "main" data portion of the record,
|
235
|
+
* as well as replication-supporting transaction metadata.
|
236
|
+
*
|
237
|
+
* The maximum is currently set at 32, quite arbitrarily. Most records only
|
238
|
+
* need a handful of block references, but there are a few exceptions that
|
239
|
+
* need more.
|
240
|
+
*/
|
241
|
+
#define XLR_MAX_BLOCK_ID 32
|
242
|
+
|
243
|
+
#define XLR_BLOCK_ID_DATA_SHORT 255
|
244
|
+
#define XLR_BLOCK_ID_DATA_LONG 254
|
245
|
+
#define XLR_BLOCK_ID_ORIGIN 253
|
246
|
+
#define XLR_BLOCK_ID_TOPLEVEL_XID 252
|
247
|
+
|
248
|
+
#endif /* XLOGRECORD_H */
|