postgresql/doc/src/sgml
Peter Geoghegan 0b018fabaa Set relfrozenxid to oldest extant XID seen by VACUUM.
When VACUUM set relfrozenxid before now, it set it to whatever value was
used to determine which tuples to freeze -- the FreezeLimit cutoff.
This approach was very naive.  The relfrozenxid invariant only requires
that new relfrozenxid values be <= the oldest extant XID remaining in
the table (at the point that the VACUUM operation ends), which in
general might be much more recent than FreezeLimit.

VACUUM now carefully tracks the oldest remaining XID/MultiXactId as it
goes (the oldest remaining values _after_ lazy_scan_prune processing).
The final values are set as the table's new relfrozenxid and new
relminmxid in pg_class at the end of each VACUUM.  The oldest XID might
come from a tuple's xmin, xmax, or xvac fields.  It might even come from
one of the table's remaining MultiXacts.

Final relfrozenxid values must still be >= FreezeLimit in an aggressive
VACUUM (FreezeLimit still acts as a lower bound on the final value that
aggressive VACUUM can set relfrozenxid to).  Since standard VACUUMs
still make no guarantees about advancing relfrozenxid, they might as
well set relfrozenxid to a value from well before FreezeLimit when the
opportunity presents itself.  In general standard VACUUMs may now set
relfrozenxid to any value > the original relfrozenxid and <= OldestXmin.

Credit for the general idea of using the oldest extant XID to set
pg_class.relfrozenxid at the end of VACUUM goes to Andres Freund.

Author: Peter Geoghegan <pg@bowt.ie>
Reviewed-By: Andres Freund <andres@anarazel.de>
Reviewed-By: Robert Haas <robertmhaas@gmail.com>
Discussion: https://postgr.es/m/CAH2-WzkymFbz6D_vL+jmqSn_5q1wsFvFrE+37yLgL_Rkfd6Gzg@mail.gmail.com
2022-04-03 09:57:21 -07:00
..
images Replace genetic algorithm ASCII-art with a real figure 2019-08-19 12:05:38 -04:00
keywords SQL JSON functions 2022-03-30 16:30:37 -04:00
ref Use has_privs_for_roles for predefined role checks: round 2 2022-04-02 13:24:38 -04:00
.gitignore doc: Generate keywords table automatically 2019-05-07 15:29:39 +02:00
acronyms.sgml doc: Add acronyms for MITM and SNI 2021-06-25 11:29:03 +09:00
adminpack.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
advanced.sgml doc: adjust "cities" example to be consistent with other SQL 2021-07-02 20:42:46 -04:00
amcheck.sgml doc: Standardize capitalization of term "hot standby"/"Hot Standby" 2022-03-11 15:16:21 +09:00
appendix-obsolete-default-roles.sgml doc: Fix quoting markup 2021-07-05 08:26:00 +02:00
appendix-obsolete-pgreceivexlog.sgml Add a docs section for obsoleted and renamed functions and settings 2021-03-31 16:23:25 -04:00
appendix-obsolete-pgresetxlog.sgml Add a docs section for obsoleted and renamed functions and settings 2021-03-31 16:23:25 -04:00
appendix-obsolete-pgxlogdump.sgml Add a docs section for obsoleted and renamed functions and settings 2021-03-31 16:23:25 -04:00
appendix-obsolete-recovery-config.sgml Add a docs section for obsoleted and renamed functions and settings 2021-03-31 16:23:25 -04:00
appendix-obsolete.sgml Rename Default Roles to Predefined Roles 2021-04-01 15:32:06 -04:00
arch-dev.sgml Fix missing space in docs. 2021-11-24 18:32:56 +02:00
archive-modules.sgml Fix typo in archive modules docs 2022-02-09 15:36:46 +01:00
array.sgml Doc: correct nitpicky mistakes in array_position/array_positions examples. 2020-06-25 13:28:30 -04:00
auth-delay.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
auto-explain.sgml Fix some grammar and typos in comments and docs 2020-11-02 15:14:41 +09:00
backup-manifest.sgml doc: Spell checking 2020-07-05 15:37:57 +02:00
backup.sgml Allow archiving via loadable modules. 2022-02-03 14:05:02 -05:00
basebackup-to-shell.sgml Document basebackup_to_shell.required_role. 2022-03-30 15:40:04 -04:00
basic-archive.sgml Allow archiving via loadable modules. 2022-02-03 14:05:02 -05:00
bgworker.sgml Send NOTIFY signals during CommitTransaction. 2021-09-14 17:18:25 -04:00
biblio.sgml doc: Remove link to JSON support in the SQL specification 2022-01-06 11:41:09 +09:00
bki.sgml Some cleanup for change of collate and ctype fields to type text 2022-02-02 11:58:55 +01:00
bloom.sgml doc: make blooms docs match reality 2020-10-26 19:17:05 -04:00
brin.sgml docs: fix inconsistencies in markup and case 2021-07-15 23:22:58 +02:00
btree-gin.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
btree-gist.sgml Add bool to btree_gist documentation 2021-12-11 04:59:15 +01:00
btree.sgml doc: Fix some typos and markups 2021-09-29 11:56:13 +09:00
catalogs.sgml Add system view pg_ident_file_mappings 2022-03-29 10:15:48 +09:00
charset.sgml Add option to use ICU as global locale provider 2022-03-17 11:13:16 +01:00
citext.sgml Add deduplication to nbtree. 2020-02-26 13:05:30 -08:00
client-auth.sgml Add system view pg_ident_file_mappings 2022-03-29 10:15:48 +09:00
color.sgml Document color support 2020-03-29 11:15:11 +02:00
config.sgml Optimize order of GROUP BY keys 2022-03-31 01:13:33 +02:00
contrib-spi.sgml Remove timetravel extension. 2018-10-11 11:43:56 -07:00
contrib.sgml Add 'basebackup_to_shell' contrib module. 2022-03-15 13:24:23 -04:00
cube.sgml Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
custom-scan.sgml Allow CustomScan providers to say whether they support projections. 2021-07-06 18:10:20 -04:00
datatype.sgml Implement poly_distance(). 2021-12-13 17:33:32 -05:00
datetime.sgml Doc: fix bogus example about ambiguous timestamps. 2022-01-10 11:46:16 -05:00
dblink.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
ddl.sgml Doc: be clearer that foreign-table partitions need user-added constraints. 2022-02-05 12:55:44 -05:00
dfunc.sgml doc: Refresh more URLs in the docs 2020-07-18 22:43:35 +09:00
dict-int.sgml Add an "absval" parameter to allow contrib/dict_int to ignore signs. 2020-03-08 18:35:06 -04:00
dict-xsyn.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
diskusage.sgml Fix many typos and inconsistencies 2019-07-01 10:00:23 +09:00
dml.sgml doc: Improve wording 2021-04-07 13:52:26 +02:00
docguide.sgml Remove configure-time probe for DocBook DTD. 2020-11-30 15:24:13 -05:00
earthdistance.sgml Doc: add a glossary entry for "domain". 2021-07-30 14:50:21 -04:00
ecpg.sgml Remove 'datlastsysoid'. 2022-01-20 09:01:12 -05:00
errcodes.sgml Doc: remove now-redundant align specifications in colspecs. 2020-05-06 15:58:23 -04:00
event-trigger.sgml doc: Add ALTER/DROP ROUTINE to the event trigger matrix 2022-03-09 14:59:08 +09:00
extend.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
external-projects.sgml Update link for pllua 2020-10-19 13:48:00 +02:00
fdwhandler.sgml Doc: Tweak function prototype indentation for consistency. 2021-08-25 13:00:00 +09:00
features.sgml doc: Clean up title case use 2020-06-07 13:18:36 +02:00
file-fdw.sgml Add csvlog output for the new query_id value 2021-04-07 22:30:30 -04:00
filelist.sgml Add 'basebackup_to_shell' contrib module. 2022-03-15 13:24:23 -04:00
func.sgml Add range_agg with multirange inputs 2022-03-30 20:16:23 +02:00
fuzzystrmatch.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
generate-errcodes-table.pl Update copyright for 2022 2022-01-07 19:04:57 -05:00
generate-keywords-table.pl Update copyright for 2022 2022-01-07 19:04:57 -05:00
generic-wal.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
geqo.sgml doc: Refresh more URLs in the docs 2020-07-18 22:43:35 +09:00
gin.sgml doc: Remove more notes about compatibilities with past versions 2020-12-01 16:32:26 +09:00
gist.sgml Doc: fix minor issues in GiST support function documentation. 2021-10-04 13:34:31 -04:00
glossary.sgml Fix various typos, grammar and code style in comments and docs 2022-01-25 09:40:04 +09:00
hash.sgml Remove some trailing whitespace in documentation files 2022-01-27 18:31:01 +01:00
high-availability.sgml doc: Standardize capitalization of term "hot standby"/"Hot Standby" 2022-03-11 15:16:21 +09:00
history.sgml doc: Use proper em and en dashes 2019-10-25 20:39:41 +02:00
hstore.sgml plpython: Adjust docs after removal of Python 2 support. 2022-03-07 18:30:57 -08:00
indexam.sgml Fix various typos, grammar and code style in comments and docs 2022-01-25 09:40:04 +09:00
indices.sgml doc: clarify when expression indexes evaluate their expressions 2021-12-22 16:29:16 -05:00
info.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
information_schema.sgml Add UNIQUE null treatment option 2022-02-03 11:48:21 +01:00
install-binaries.sgml Expand installation documentation to cover binary installations 2020-10-06 14:15:32 +02:00
install-windows.sgml Make upgradecheck a no-op in MSVC's vcregress.pl 2022-04-02 12:06:11 +09:00
installation.sgml Set minimum required version of zstd as 1.4.0. 2022-04-01 11:05:52 -04:00
intagg.sgml Don't use SGML empty tags 2017-10-17 15:10:33 -04:00
intarray.sgml Doc: fix bogus intarray index example. 2021-06-03 21:07:20 -04:00
intro.sgml doc: Refresh more URLs in the docs 2020-07-18 22:43:35 +09:00
isn.sgml Misc documentation fixes. 2020-10-19 19:28:54 +03:00
jit.sgml Doc: tweak examples to silence line-too-long PDF build warnings. 2020-05-14 18:13:08 -04:00
json.sgml plpython: Adjust docs after removal of Python 2 support. 2022-03-07 18:30:57 -08:00
keywords.sgml Allow most keywords to be used as column labels without requiring AS. 2020-09-18 16:46:36 -04:00
legal.sgml Update copyright for 2022 2022-01-07 19:04:57 -05:00
libpq.sgml libpq: Allow IP address SANs in server certificates 2022-04-01 15:51:23 +02:00
limits.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
lo.sgml Doc: add a glossary entry for "domain". 2021-07-30 14:50:21 -04:00
lobj.sgml Doc: modernize documentation for lo_create()/lo_creat(). 2022-02-01 10:57:38 -05:00
logical-replication.sgml Add ALTER SUBSCRIPTION ... SKIP. 2022-03-22 07:11:19 +05:30
logicaldecoding.sgml Fix collection of typos in the code and the documentation 2022-03-15 11:29:35 +09:00
ltree.sgml plpython: Adjust docs after removal of Python 2 support. 2022-03-07 18:30:57 -08:00
maintenance.sgml Set relfrozenxid to oldest extant XID seen by VACUUM. 2022-04-03 09:57:21 -07:00
Makefile Change Texinfo output to UTF-8 2021-08-27 18:20:40 +02:00
manage-ag.sgml Doc: clean up some places that mentioned template1 but not template0. 2021-11-02 12:54:35 -04:00
mk_feature_tables.pl Initial pgindent and pgperltidy run for v13. 2020-05-14 13:06:50 -04:00
monitoring.sgml Add new block-by-block strategy for CREATE DATABASE. 2022-03-29 11:48:36 -04:00
mvcc.sgml Add support for MERGE SQL command 2022-03-28 16:47:48 +02:00
nls.sgml doc: improve NLS instruction wording 2021-01-05 14:26:37 -05:00
notation.sgml doc: clarify syntax notation, particularly parentheses 2022-02-02 21:53:52 -05:00
oid2name.sgml Doc: fix some description of environment variables with frontend tools 2020-03-09 10:53:22 +09:00
oldsnapshot.sgml Add new 'old_snapshot' contrib module. 2020-09-24 13:55:47 -04:00
pageinspect.sgml doc: Improve references to term "FSM" in pageinspect and pgfreespacemap 2022-03-09 10:43:25 +09:00
parallel.sgml doc: Replace some uses of "which" by "that" in parallel.sgml 2021-09-02 11:35:38 +09:00
passwordcheck.sgml doc: Update cracklib URL 2020-08-28 08:19:12 +02:00
perform.sgml Fix various typos, grammar and code style in comments and docs 2022-01-25 09:40:04 +09:00
pgbuffercache.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgcrypto.sgml pgcrypto: Remove non-OpenSSL support 2021-11-05 14:06:59 +01:00
pgfreespacemap.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgprewarm.sgml Convert documentation to DocBook XML 2017-11-23 09:44:28 -05:00
pgrowlocks.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgstatstatements.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
pgstattuple.sgml Revert "Avoid the creation of the free space map for small heap relations". 2019-05-07 09:30:24 +05:30
pgsurgery.sgml New contrib module, pg_surgery, with heap surgery functions. 2020-09-10 11:14:07 -04:00
pgtrgm.sgml Remove mention of the version number from pg_trgm docs 2021-05-04 03:59:21 +03:00
pgvisibility.sgml Use has_privs_for_roles for predefined role checks 2022-03-28 15:10:04 -04:00
planstats.sgml Doc: tweak examples to silence line-too-long PDF build warnings. 2020-05-14 18:13:08 -04:00
plhandler.sgml Add PL/Sample to src/test/modules/ 2020-08-18 11:10:50 +09:00
plperl.sgml dummy commit 2020-12-23 09:33:20 -05:00
plpgsql.sgml Add support for MERGE SQL command 2022-03-28 16:47:48 +02:00
plpython.sgml plpython: Adjust docs after removal of Python 2 support. 2022-03-07 18:30:57 -08:00
pltcl.sgml doc: clarify syntax notation, particularly parentheses 2022-02-02 21:53:52 -05:00
postgres-fdw.sgml Fix collection of typos in the code and the documentation 2022-03-15 11:29:35 +09:00
postgres.sgml Allow archiving via loadable modules. 2022-02-03 14:05:02 -05:00
problems.sgml Fix inconsistencies and typos in the tree 2019-07-22 10:01:50 +09:00
protocol.sgml Allow parallel zstd compression when taking a base backup. 2022-03-30 09:41:26 -04:00
queries.sgml Doc: improve description of UNION/INTERSECT/EXCEPT syntax. 2021-10-05 10:24:14 -04:00
query.sgml doc: Prefer explicit JOIN syntax over old implicit syntax in tutorial 2021-04-08 10:51:26 +02:00
rangetypes.sgml Revert 29854ee8d1 due to buildfarm failures 2021-06-15 21:44:40 +03:00
README.links doc: mention <link> can be inside of <command>, but not <xref> 2021-04-22 16:01:17 -04:00
reference.sgml Add support for MERGE SQL command 2022-03-28 16:47:48 +02:00
regress.sgml Test replay of regression tests, attempt II. 2022-01-17 16:34:55 +13:00
release-15.sgml Stamp HEAD as 15devel. 2021-06-28 11:31:16 -04:00
release.sgml Stamp HEAD as 15devel. 2021-06-28 11:31:16 -04:00
replication-origins.sgml doc: add commas after 'i.e.' and 'e.g.' 2020-08-31 18:33:37 -04:00
rowtypes.sgml Doc: add a glossary entry for "domain". 2021-07-30 14:50:21 -04:00
rules.sgml Add support for security invoker views. 2022-03-22 10:28:10 +00:00
runtime.sgml doc: Clarify when SSL actually means TLS 2022-03-30 13:07:30 +02:00
seg.sgml Remove deprecated containment operators for contrib types. 2021-03-05 10:45:41 -05:00
sepgsql.sgml doc: Fix link to SELinux user guide in sepgsql page 2021-10-28 09:25:55 +09:00
sourcerepo.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00
sources.sgml Doc: minor improvements for "Formatting" section. 2021-09-20 10:48:02 -04:00
spgist.sgml doc: Fix some typos and markups 2021-09-29 11:56:13 +09:00
spi.sgml Fix SPI's handling of errors during transaction commit. 2022-02-28 12:45:36 -05:00
sslinfo.sgml Introduce --with-ssl={openssl} as a configure option 2021-02-01 19:19:44 +09:00
standalone-install.xml Doc: tweak installation doc edits made by commit 76c2af926. 2019-09-06 11:24:42 -04:00
standalone-profile.xsl Remove unused chunk from standalone-profile.xsl 2021-10-30 12:38:14 +02:00
start.sgml Doc: update example connection-failure messages in the documentation. 2021-01-23 15:50:51 -05:00
storage.sgml doc: Improve references to term "FSM" in pageinspect and pgfreespacemap 2022-03-09 10:43:25 +09:00
stylesheet-common.xsl Doc: re-re-revise markup for tables of functions. 2020-04-30 00:34:12 -04:00
stylesheet-fo.xsl Doc: reformat catalog/view description tables. 2020-05-13 23:03:39 -04:00
stylesheet-hh.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet-html-common.xsl docs: Work around bug in the docbook xsl stylesheets. 2022-02-15 13:52:40 -08:00
stylesheet-html-nochunk.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet-man.xsl doc: Improve man build speed 2018-02-28 09:26:36 -05:00
stylesheet-speedup-common.xsl doc: Further speed improvements for HTML XSLT build 2016-12-22 15:41:44 -05:00
stylesheet-speedup-xhtml.xsl doc: Further speed improvements for HTML XSLT build 2016-12-22 15:41:44 -05:00
stylesheet-text.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
stylesheet.css Doc: reformat catalog/view description tables. 2020-05-13 23:03:39 -04:00
stylesheet.xsl Fix XML namespace declarations 2022-02-15 11:13:49 +01:00
syntax.sgml Remove operator_precedence_warning. 2020-12-08 16:29:52 -05:00
tableam.sgml doc: add commas after 'i.e.' and 'e.g.' 2020-08-31 18:33:37 -04:00
tablefunc.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
tablesample-method.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
tcn.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
test-decoding.sgml doc: Fix some typos and markups 2021-09-29 11:56:13 +09:00
textsearch.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
trigger.sgml Add support for MERGE SQL command 2022-03-28 16:47:48 +02:00
tsm-system-rows.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
tsm-system-time.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
typeconv.sgml Use the correct article for abbreviations 2021-06-11 13:38:04 +12:00
unaccent.sgml Mark some contrib modules as "trusted". 2020-02-13 15:02:35 -05:00
user-manag.sgml Add pg_checkpointer predefined role for CHECKPOINT command. 2021-11-09 16:59:14 -08:00
uuid-ossp.sgml docs: ulink all references to RFC's 2020-12-01 14:36:30 +02:00
vacuumlo.sgml doc: remove xreflabels from commits 75fcdd2ae2 and 85af628da5 2020-06-11 18:19:25 -04:00
wal.sgml Allow archiving via loadable modules. 2022-02-03 14:05:02 -05:00
xaggr.sgml Declare assorted array functions using anycompatible not anyelement. 2020-11-04 16:09:55 -05:00
xfunc.sgml Doc: improve xfunc-c-type-table. 2021-12-08 16:54:52 -05:00
xindex.sgml Doc: fix minor issues in GiST support function documentation. 2021-10-04 13:34:31 -04:00
xml2.sgml doc: add commas after 'i.e.' and 'e.g.' 2020-08-31 18:33:37 -04:00
xoper.sgml Remove support for postfix (right-unary) operators. 2020-09-17 19:38:05 -04:00
xplang.sgml Improve <xref> vs. <command> formatting in the documentation 2020-10-03 16:40:02 +02:00
xtypes.sgml doc: Clean up title case use 2019-09-08 10:27:29 +02:00

<!-- doc/src/sgml/README.links -->

Linking within DocBook documents can be confusing, so here is a summary:


Intra-document Linking
----------------------

<xref>
	use to get chapter/section number from the title of the target
	link, or xreflabel if defined at the target, or refentrytitle if target
        is a refentry;  has no close tag
	http://www.oasis-open.org/docbook/documentation/reference/html/xref.html

linkend=
	controls the target of the link/xref, required

endterm=
	for <xref>, allows the text of the link/xref to be taken from a
	different link target title

<link>
	use to supply text for the link, only uses linkend, requires </link>
	http://www.oasis-open.org/docbook/documentation/reference/html/link.html
	can be embedded inside of <command>, unlike <xref>


External Linking
----------------

<ulink>
	like <link>, but uses a URL (not a document target);  requires
	</ulink>; if no text is specified, the URL appears as the link
	text
	http://www.oasis-open.org/docbook/documentation/reference/html/ulink.html

url=
	used by <ulink> to specify the URL, required


Guidelines
----------

- For an internal link, if you want to supply text, use <link>, else
  <xref>.

- Specific nouns like GUC variables, SQL commands, and contrib modules
  usually have xreflabels.

- For an external link, use <ulink>, with or without link text.

- xreflabels added to tags prevent the chapter/section for id's from being
  referenced;  only the xreflabel is accessible.  Therefore, use xreflabels
  only when linking is common, and chapter/section information is unneeded.