pgsql: Allow pg_class xid & multixid horizons to not be set.

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Allow pg_class xid & multixid horizons to not be set.
Date: 2019-04-24 04:42:20
Message-ID: E1hJ9jg-0003nx-QO@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Allow pg_class xid & multixid horizons to not be set.

This allows table AMs that don't need these horizons. This was already
documented in the tableam relation_set_new_filenode callback, but an
assert prevented if from actually working (the test AM code contained
the change itself). Defang the asserts in the general code, and move
the stronger ones into heap AM.

Relatedly, after CLUSTER/VACUUM, we'd always assign a relfrozenxid /
relminmxid. Change the table_relation_copy_for_cluster() interface to
allow the AM to overwrite the horizons that get set on the pg_class
entry. This'd also in the future allow AMs like heap to compute a
relfrozenxid during rewrite that's the table's actual minimum rather
than a pre-determined value. Arguably it'd have been better to move
the whole computation / setting of those values into the callback, but
it seems likely that for other reasons it'd be better to be able to
use one value to vacuum/cluster multiple tables (e.g. a toast's
horizon shouldn't be different than the table's).

Reported-By: Heikki Linnakangas
Author: Andres Freund
Discussion: https://postgr.es/m/9a7fb9cc-2419-5db7-8840-ddc10c93f122@iki.fi

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/fdc7efcc30b1da950ade72fd35852c21bf8de839

Modified Files
--------------
src/backend/access/heap/heapam_handler.c | 8 ++---
src/backend/access/heap/vacuumlazy.c | 4 +++
src/backend/commands/cluster.c | 24 +++++++++------
src/backend/commands/vacuum.c | 53 +++++++++++++++++++++++---------
src/backend/postmaster/autovacuum.c | 4 +--
src/include/access/tableam.h | 35 ++++++++++++---------
6 files changed, 83 insertions(+), 45 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Etsuro Fujita 2019-04-24 09:52:01 pgsql: postgres_fdw: Fix incorrect handling of row movement for remote
Previous Message Michael Paquier 2019-04-24 00:06:57 pgsql: Fix detection of passwords hashed with MD5