pg_query 5.1.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 +30 -0
- data/README.md +1 -1
- data/Rakefile +4 -4
- 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 +20 -6
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +14 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- 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 +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +17 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +35 -25
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +50 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +32 -37
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +72 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +53 -45
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
- data/ext/pg_query/include/postgres/port.h +39 -4
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
- data/ext/pg_query/include/postgres/replication/slot.h +45 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -26
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +10 -10
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +601 -172
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +18 -1
- data/ext/pg_query/src_common_wchar.c +92 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +15 -18
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/fingerprint.rb +3 -5
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +5 -7
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +27 -25
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +38 -15
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +31 -82
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -3,7 +3,7 @@
|
|
3
3
|
* walsender.h
|
4
4
|
* Exports from replication/walsender.c.
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 2010-
|
6
|
+
* Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group
|
7
7
|
*
|
8
8
|
* src/include/replication/walsender.h
|
9
9
|
*
|
@@ -12,7 +12,7 @@
|
|
12
12
|
#ifndef _WALSENDER_H
|
13
13
|
#define _WALSENDER_H
|
14
14
|
|
15
|
-
#include
|
15
|
+
#include "access/xlogdefs.h"
|
16
16
|
|
17
17
|
/*
|
18
18
|
* What to do with a snapshot in create replication slot command.
|
@@ -21,7 +21,7 @@ typedef enum
|
|
21
21
|
{
|
22
22
|
CRS_EXPORT_SNAPSHOT,
|
23
23
|
CRS_NOEXPORT_SNAPSHOT,
|
24
|
-
CRS_USE_SNAPSHOT
|
24
|
+
CRS_USE_SNAPSHOT,
|
25
25
|
} CRSSnapshotAction;
|
26
26
|
|
27
27
|
/* global state */
|
@@ -39,6 +39,8 @@ extern void InitWalSender(void);
|
|
39
39
|
extern bool exec_replication_command(const char *cmd_string);
|
40
40
|
extern void WalSndErrorCleanup(void);
|
41
41
|
extern void WalSndResourceCleanup(bool isCommit);
|
42
|
+
extern void PhysicalWakeupLogicalWalSnd(void);
|
43
|
+
extern XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli);
|
42
44
|
extern void WalSndSignals(void);
|
43
45
|
extern Size WalSndShmemSize(void);
|
44
46
|
extern void WalSndShmemInit(void);
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* prs2lock.h
|
4
4
|
* data structures for POSTGRES Rule System II (rewrite rules only)
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/rewrite/prs2lock.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* External interface to query rewriter.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/rewrite/rewriteHandler.h
|
@@ -25,11 +25,17 @@ extern void AcquireRewriteLocks(Query *parsetree,
|
|
25
25
|
extern Node *build_column_default(Relation rel, int attrno);
|
26
26
|
|
27
27
|
extern Query *get_view_query(Relation view);
|
28
|
+
extern bool view_has_instead_trigger(Relation view, CmdType event,
|
29
|
+
List *mergeActionList);
|
28
30
|
extern const char *view_query_is_auto_updatable(Query *viewquery,
|
29
31
|
bool check_cols);
|
30
32
|
extern int relation_is_updatable(Oid reloid,
|
31
33
|
List *outer_reloids,
|
32
34
|
bool include_triggers,
|
33
35
|
Bitmapset *include_cols);
|
36
|
+
extern void error_view_not_updatable(Relation view,
|
37
|
+
CmdType command,
|
38
|
+
List *mergeActionList,
|
39
|
+
const char *detail);
|
34
40
|
|
35
41
|
#endif /* REWRITEHANDLER_H */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Querytree manipulation subroutines for query rewriter.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/rewrite/rewriteManip.h
|
@@ -37,7 +37,7 @@ typedef enum ReplaceVarsNoMatchOption
|
|
37
37
|
{
|
38
38
|
REPLACEVARS_REPORT_ERROR, /* throw error if no match */
|
39
39
|
REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */
|
40
|
-
REPLACEVARS_SUBSTITUTE_NULL
|
40
|
+
REPLACEVARS_SUBSTITUTE_NULL, /* replace with a NULL Const */
|
41
41
|
} ReplaceVarsNoMatchOption;
|
42
42
|
|
43
43
|
|
@@ -4,7 +4,7 @@
|
|
4
4
|
*
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/rewrite/rewriteSupport.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES disk block definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/block.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Basic buffer manager data types.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/buf.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES buffer manager definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/bufmgr.h
|
@@ -14,6 +14,7 @@
|
|
14
14
|
#ifndef BUFMGR_H
|
15
15
|
#define BUFMGR_H
|
16
16
|
|
17
|
+
#include "port/pg_iovec.h"
|
17
18
|
#include "storage/block.h"
|
18
19
|
#include "storage/buf.h"
|
19
20
|
#include "storage/bufpage.h"
|
@@ -35,7 +36,7 @@ typedef enum BufferAccessStrategyType
|
|
35
36
|
BAS_BULKREAD, /* Large read-only scan (hint bit updates are
|
36
37
|
* ok) */
|
37
38
|
BAS_BULKWRITE, /* Large multi-block write (e.g. COPY IN) */
|
38
|
-
BAS_VACUUM /* VACUUM */
|
39
|
+
BAS_VACUUM, /* VACUUM */
|
39
40
|
} BufferAccessStrategyType;
|
40
41
|
|
41
42
|
/* Possible modes for ReadBufferExtended() */
|
@@ -47,7 +48,7 @@ typedef enum
|
|
47
48
|
RBM_ZERO_AND_CLEANUP_LOCK, /* Like RBM_ZERO_AND_LOCK, but locks the page
|
48
49
|
* in "cleanup" mode */
|
49
50
|
RBM_ZERO_ON_ERROR, /* Read, but return an all-zeros page on error */
|
50
|
-
RBM_NORMAL_NO_LOG /* Don't log page as invalid during WAL
|
51
|
+
RBM_NORMAL_NO_LOG, /* Don't log page as invalid during WAL
|
51
52
|
* replay; otherwise same as RBM_NORMAL */
|
52
53
|
} ReadBufferMode;
|
53
54
|
|
@@ -106,6 +107,37 @@ typedef struct BufferManagerRelation
|
|
106
107
|
#define BMR_REL(p_rel) ((BufferManagerRelation){.rel = p_rel})
|
107
108
|
#define BMR_SMGR(p_smgr, p_relpersistence) ((BufferManagerRelation){.smgr = p_smgr, .relpersistence = p_relpersistence})
|
108
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;
|
109
141
|
|
110
142
|
/* forward declared, to avoid having to expose buf_internals.h here */
|
111
143
|
struct WritebackContext;
|
@@ -133,6 +165,10 @@ extern PGDLLIMPORT bool track_io_timing;
|
|
133
165
|
extern PGDLLIMPORT int effective_io_concurrency;
|
134
166
|
extern PGDLLIMPORT int maintenance_io_concurrency;
|
135
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
|
+
|
136
172
|
extern PGDLLIMPORT int checkpoint_flush_after;
|
137
173
|
extern PGDLLIMPORT int backend_flush_after;
|
138
174
|
extern PGDLLIMPORT int bgwriter_flush_after;
|
@@ -177,8 +213,22 @@ extern Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator,
|
|
177
213
|
ForkNumber forkNum, BlockNumber blockNum,
|
178
214
|
ReadBufferMode mode, BufferAccessStrategy strategy,
|
179
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
|
+
|
180
228
|
extern void ReleaseBuffer(Buffer buffer);
|
181
229
|
extern void UnlockReleaseBuffer(Buffer buffer);
|
230
|
+
extern bool BufferIsExclusiveLocked(Buffer buffer);
|
231
|
+
extern bool BufferIsDirty(Buffer buffer);
|
182
232
|
extern void MarkBufferDirty(Buffer buffer);
|
183
233
|
extern void IncrBufferRefCount(Buffer buffer);
|
184
234
|
extern void CheckBufferIsPinnedOnce(Buffer buffer);
|
@@ -205,7 +255,7 @@ extern Buffer ExtendBufferedRelTo(BufferManagerRelation bmr,
|
|
205
255
|
|
206
256
|
extern void InitBufferPoolAccess(void);
|
207
257
|
extern void AtEOXact_Buffers(bool isCommit);
|
208
|
-
extern
|
258
|
+
extern char *DebugPrintBufferRefcount(Buffer buffer);
|
209
259
|
extern void CheckPointBuffers(int flags);
|
210
260
|
extern BlockNumber BufferGetBlockNumber(Buffer buffer);
|
211
261
|
extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,
|
@@ -246,11 +296,12 @@ extern bool ConditionalLockBufferForCleanup(Buffer buffer);
|
|
246
296
|
extern bool IsBufferCleanupOK(Buffer buffer);
|
247
297
|
extern bool HoldingBufferPinThatDelaysRecovery(void);
|
248
298
|
|
249
|
-
extern void AbortBufferIO(Buffer buffer);
|
250
|
-
|
251
299
|
extern bool BgBufferSync(struct WritebackContext *wb_context);
|
252
300
|
|
253
|
-
extern void
|
301
|
+
extern void LimitAdditionalPins(uint32 *additional_pins);
|
302
|
+
extern void LimitAdditionalLocalPins(uint32 *additional_pins);
|
303
|
+
|
304
|
+
extern bool EvictUnpinnedBuffer(Buffer buf);
|
254
305
|
|
255
306
|
/* in buf_init.c */
|
256
307
|
extern void InitBufferPool(void);
|
@@ -265,6 +316,7 @@ extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype);
|
|
265
316
|
extern BufferAccessStrategy GetAccessStrategyWithSize(BufferAccessStrategyType btype,
|
266
317
|
int ring_size_kb);
|
267
318
|
extern int GetAccessStrategyBufferCount(BufferAccessStrategy strategy);
|
319
|
+
extern int GetAccessStrategyPinLimit(BufferAccessStrategy strategy);
|
268
320
|
|
269
321
|
extern void FreeAccessStrategy(BufferAccessStrategy strategy);
|
270
322
|
|
@@ -347,9 +399,6 @@ BufferGetPageSize(Buffer buffer)
|
|
347
399
|
/*
|
348
400
|
* BufferGetPage
|
349
401
|
* Returns the page associated with a buffer.
|
350
|
-
*
|
351
|
-
* When this is called as part of a scan, there may be a need for a nearby
|
352
|
-
* call to TestForOldSnapshot(). See the definition of that for details.
|
353
402
|
*/
|
354
403
|
static inline Page
|
355
404
|
BufferGetPage(Buffer buffer)
|
@@ -357,37 +406,6 @@ BufferGetPage(Buffer buffer)
|
|
357
406
|
return (Page) BufferGetBlock(buffer);
|
358
407
|
}
|
359
408
|
|
360
|
-
/*
|
361
|
-
* Check whether the given snapshot is too old to have safely read the given
|
362
|
-
* page from the given table. If so, throw a "snapshot too old" error.
|
363
|
-
*
|
364
|
-
* This test generally needs to be performed after every BufferGetPage() call
|
365
|
-
* that is executed as part of a scan. It is not needed for calls made for
|
366
|
-
* modifying the page (for example, to position to the right place to insert a
|
367
|
-
* new index tuple or for vacuuming). It may also be omitted where calls to
|
368
|
-
* lower-level functions will have already performed the test.
|
369
|
-
*
|
370
|
-
* Note that a NULL snapshot argument is allowed and causes a fast return
|
371
|
-
* without error; this is to support call sites which can be called from
|
372
|
-
* either scans or index modification areas.
|
373
|
-
*
|
374
|
-
* For best performance, keep the tests that are fastest and/or most likely to
|
375
|
-
* exclude a page from old snapshot testing near the front.
|
376
|
-
*/
|
377
|
-
static inline void
|
378
|
-
TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
|
379
|
-
{
|
380
|
-
Assert(relation != NULL);
|
381
|
-
|
382
|
-
if (old_snapshot_threshold >= 0
|
383
|
-
&& (snapshot) != NULL
|
384
|
-
&& ((snapshot)->snapshot_type == SNAPSHOT_MVCC
|
385
|
-
|| (snapshot)->snapshot_type == SNAPSHOT_TOAST)
|
386
|
-
&& !XLogRecPtrIsInvalid((snapshot)->lsn)
|
387
|
-
&& PageGetLSN(page) > (snapshot)->lsn)
|
388
|
-
TestForOldSnapshot_impl(snapshot, relation);
|
389
|
-
}
|
390
|
-
|
391
409
|
#endif /* FRONTEND */
|
392
410
|
|
393
411
|
#endif /* BUFMGR_H */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Standard POSTGRES buffer page definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/bufpage.h
|
@@ -12,7 +12,7 @@
|
|
12
12
|
* can be canceled prior to the fulfillment of the condition) and do not
|
13
13
|
* use pointers internally (so that they are safe to use within DSMs).
|
14
14
|
*
|
15
|
-
* Portions Copyright (c) 1996-
|
15
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
16
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
17
17
|
*
|
18
18
|
* src/include/storage/condition_variable.h
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* dsm.h
|
4
4
|
* manage dynamic shared memory segments
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/storage/dsm.h
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* dsm_impl.h
|
4
4
|
* low-level dynamic shared memory primitives
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/storage/dsm_impl.h
|
@@ -63,7 +63,7 @@ typedef enum
|
|
63
63
|
DSM_OP_CREATE,
|
64
64
|
DSM_OP_ATTACH,
|
65
65
|
DSM_OP_DETACH,
|
66
|
-
DSM_OP_DESTROY
|
66
|
+
DSM_OP_DESTROY,
|
67
67
|
} dsm_op;
|
68
68
|
|
69
69
|
/* Create, attach to, detach from, resize, or destroy a segment. */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Virtual file descriptor definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/fd.h
|
@@ -15,7 +15,7 @@
|
|
15
15
|
/*
|
16
16
|
* calls:
|
17
17
|
*
|
18
|
-
* File {Close, Read, Write, Size, Sync}
|
18
|
+
* File {Close, Read, ReadV, Write, WriteV, Size, Sync}
|
19
19
|
* {Path Name Open, Allocate, Free} File
|
20
20
|
*
|
21
21
|
* These are NOT JUST RENAMINGS OF THE UNIX ROUTINES.
|
@@ -43,15 +43,11 @@
|
|
43
43
|
#ifndef FD_H
|
44
44
|
#define FD_H
|
45
45
|
|
46
|
+
#include "port/pg_iovec.h"
|
47
|
+
|
46
48
|
#include <dirent.h>
|
47
49
|
#include <fcntl.h>
|
48
50
|
|
49
|
-
typedef enum RecoveryInitSyncMethod
|
50
|
-
{
|
51
|
-
RECOVERY_INIT_SYNC_METHOD_FSYNC,
|
52
|
-
RECOVERY_INIT_SYNC_METHOD_SYNCFS
|
53
|
-
} RecoveryInitSyncMethod;
|
54
|
-
|
55
51
|
typedef int File;
|
56
52
|
|
57
53
|
|
@@ -111,8 +107,8 @@ extern File PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fil
|
|
111
107
|
extern File OpenTemporaryFile(bool interXact);
|
112
108
|
extern void FileClose(File file);
|
113
109
|
extern int FilePrefetch(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
114
|
-
extern
|
115
|
-
extern
|
110
|
+
extern ssize_t FileReadV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info);
|
111
|
+
extern ssize_t FileWriteV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info);
|
116
112
|
extern int FileSync(File file, uint32 wait_event_info);
|
117
113
|
extern int FileZero(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
118
114
|
extern int FileFallocate(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
@@ -186,6 +182,7 @@ extern int pg_fsync(int fd);
|
|
186
182
|
extern int pg_fsync_no_writethrough(int fd);
|
187
183
|
extern int pg_fsync_writethrough(int fd);
|
188
184
|
extern int pg_fdatasync(int fd);
|
185
|
+
extern bool pg_file_exists(const char *name);
|
189
186
|
extern void pg_flush_data(int fd, off_t offset, off_t nbytes);
|
190
187
|
extern int pg_truncate(const char *path, off_t length);
|
191
188
|
extern void fsync_fname(const char *fname, bool isdir);
|
@@ -195,8 +192,28 @@ extern int durable_unlink(const char *fname, int elevel);
|
|
195
192
|
extern void SyncDataDirectory(void);
|
196
193
|
extern int data_sync_elevel(int elevel);
|
197
194
|
|
198
|
-
|
199
|
-
|
200
|
-
|
195
|
+
static inline ssize_t
|
196
|
+
FileRead(File file, void *buffer, size_t amount, off_t offset,
|
197
|
+
uint32 wait_event_info)
|
198
|
+
{
|
199
|
+
struct iovec iov = {
|
200
|
+
.iov_base = buffer,
|
201
|
+
.iov_len = amount
|
202
|
+
};
|
203
|
+
|
204
|
+
return FileReadV(file, &iov, 1, offset, wait_event_info);
|
205
|
+
}
|
206
|
+
|
207
|
+
static inline ssize_t
|
208
|
+
FileWrite(File file, const void *buffer, size_t amount, off_t offset,
|
209
|
+
uint32 wait_event_info)
|
210
|
+
{
|
211
|
+
struct iovec iov = {
|
212
|
+
.iov_base = unconstify(void *, buffer),
|
213
|
+
.iov_len = amount
|
214
|
+
};
|
215
|
+
|
216
|
+
return FileWriteV(file, &iov, 1, offset, wait_event_info);
|
217
|
+
}
|
201
218
|
|
202
219
|
#endif /* FD_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* fileset.h
|
4
4
|
* Management of named temporary files.
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/storage/fileset.h
|
@@ -8,7 +8,7 @@
|
|
8
8
|
* exit-time cleanup for either a postmaster or a backend.
|
9
9
|
*
|
10
10
|
*
|
11
|
-
* Portions Copyright (c) 1996-
|
11
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
13
13
|
*
|
14
14
|
* src/include/storage/ipc.h
|
@@ -79,6 +79,9 @@ extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook;
|
|
79
79
|
|
80
80
|
extern Size CalculateShmemSize(int *num_semaphores);
|
81
81
|
extern void CreateSharedMemoryAndSemaphores(void);
|
82
|
+
#ifdef EXEC_BACKEND
|
83
|
+
extern void AttachSharedMemoryStructs(void);
|
84
|
+
#endif
|
82
85
|
extern void InitializeShmemGUCs(void);
|
83
86
|
|
84
87
|
#endif /* IPC_H */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES disk item definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/item.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Standard POSTGRES buffer page item identifier/line pointer definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/itemid.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES disk item pointer definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/itemptr.h
|
@@ -5,7 +5,7 @@
|
|
5
5
|
* zillions of large objects (internal, external, jaquith, inversion).
|
6
6
|
* Now we only support inversion.
|
7
7
|
*
|
8
|
-
* Portions Copyright (c) 1996-
|
8
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
10
10
|
*
|
11
11
|
* src/include/storage/large_object.h
|
@@ -90,7 +90,7 @@
|
|
90
90
|
* efficient than using WaitLatch or WaitLatchOrSocket.
|
91
91
|
*
|
92
92
|
*
|
93
|
-
* Portions Copyright (c) 1996-
|
93
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
94
94
|
* Portions Copyright (c) 1994, Regents of the University of California
|
95
95
|
*
|
96
96
|
* src/include/storage/latch.h
|
@@ -102,6 +102,8 @@
|
|
102
102
|
|
103
103
|
#include <signal.h>
|
104
104
|
|
105
|
+
#include "utils/resowner.h"
|
106
|
+
|
105
107
|
/*
|
106
108
|
* Latch structure should be treated as opaque and only accessed through
|
107
109
|
* the public functions. It is defined here to allow embedding Latches as
|
@@ -173,7 +175,7 @@ extern void SetLatch(Latch *latch);
|
|
173
175
|
extern void ResetLatch(Latch *latch);
|
174
176
|
extern void ShutdownLatchSupport(void);
|
175
177
|
|
176
|
-
extern WaitEventSet *CreateWaitEventSet(
|
178
|
+
extern WaitEventSet *CreateWaitEventSet(ResourceOwner resowner, int nevents);
|
177
179
|
extern void FreeWaitEventSet(WaitEventSet *set);
|
178
180
|
extern void FreeWaitEventSetAfterFork(WaitEventSet *set);
|
179
181
|
extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd,
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES lock manager definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/storage/lmgr.h
|
@@ -31,7 +31,7 @@ typedef enum XLTW_Oper
|
|
31
31
|
XLTW_InsertIndex,
|
32
32
|
XLTW_InsertIndexUnique,
|
33
33
|
XLTW_FetchUpdated,
|
34
|
-
XLTW_RecheckExclusionConstr
|
34
|
+
XLTW_RecheckExclusionConstr,
|
35
35
|
} XLTW_Oper;
|
36
36
|
|
37
37
|
extern void RelationInitLockInfo(Relation relation);
|
@@ -48,6 +48,8 @@ extern bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode);
|
|
48
48
|
extern void UnlockRelation(Relation relation, LOCKMODE lockmode);
|
49
49
|
extern bool CheckRelationLockedByMe(Relation relation, LOCKMODE lockmode,
|
50
50
|
bool orstronger);
|
51
|
+
extern bool CheckRelationOidLockedByMe(Oid relid, LOCKMODE lockmode,
|
52
|
+
bool orstronger);
|
51
53
|
extern bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode);
|
52
54
|
|
53
55
|
extern void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode);
|
@@ -93,12 +95,16 @@ extern void SpeculativeInsertionWait(TransactionId xid, uint32 token);
|
|
93
95
|
/* Lock a general object (other than a relation) of the current database */
|
94
96
|
extern void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid,
|
95
97
|
LOCKMODE lockmode);
|
98
|
+
extern bool ConditionalLockDatabaseObject(Oid classid, Oid objid,
|
99
|
+
uint16 objsubid, LOCKMODE lockmode);
|
96
100
|
extern void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid,
|
97
101
|
LOCKMODE lockmode);
|
98
102
|
|
99
103
|
/* Lock a shared-across-databases object (other than a relation) */
|
100
104
|
extern void LockSharedObject(Oid classid, Oid objid, uint16 objsubid,
|
101
105
|
LOCKMODE lockmode);
|
106
|
+
extern bool ConditionalLockSharedObject(Oid classid, Oid objid, uint16 objsubid,
|
107
|
+
LOCKMODE lockmode);
|
102
108
|
extern void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid,
|
103
109
|
LOCKMODE lockmode);
|
104
110
|
|