pgsql: amcheck: Move common routines into a separate module - Mailing list pgsql-committers

From Tomas Vondra
Subject pgsql: amcheck: Move common routines into a separate module
Date
Msg-id E1tyX2S-001b6O-1I@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
amcheck: Move common routines into a separate module

Before performing checks on an index, we need to take some safety
measures that apply to all index AMs. This includes:

* verifying that the index can be checked - Only selected AMs are
supported by amcheck (right now only B-Tree). The index has to be
valid and not a temporary index from another session.

* changing (and then restoring) user's security context

* obtaining proper locks on the index (and table, if needed)

* discarding GUC changes from the index functions

Until now this was implemented in the B-Tree amcheck module, but it's
something every AM will have to do. So relocate the code into a new
module verify_common for reuse.

The shared steps are implemented by amcheck_lock_relation_and_check(),
receiving the AM-specific verification as a callback. Custom parameters
may be supplied using a pointer.

Author: Andrey Borodin <amborodin@acm.org>
Reviewed-By: José Villanova <jose.arthur@gmail.com>
Reviewed-By: Aleksander Alekseev <aleksander@timescale.com>
Reviewed-By: Nikolay Samokhvalov <samokhvalov@gmail.com>
Reviewed-By: Andres Freund <andres@anarazel.de>
Reviewed-By: Tomas Vondra <tomas@vondra.me>
Reviewed-By: Mark Dilger <mark.dilger@enterprisedb.com>
Reviewed-By: Peter Geoghegan <pg@bowt.ie>
Reviewed-By: Kirill Reshke <reshkekirill@gmail.com>
Discussion: https://postgr.es/m/45AC9B0A-2B45-40EE-B08F-BDCF5739D1E1%40yandex-team.ru

Branch
------
master

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

Modified Files
--------------
contrib/amcheck/Makefile                 |   1 +
contrib/amcheck/expected/check_btree.out |   4 +-
contrib/amcheck/meson.build              |   1 +
contrib/amcheck/verify_common.c          | 191 ++++++++++++++++++++++
contrib/amcheck/verify_common.h          |  31 ++++
contrib/amcheck/verify_nbtree.c          | 267 ++++++++-----------------------
src/tools/pgindent/typedefs.list         |   1 +
7 files changed, 297 insertions(+), 199 deletions(-)


pgsql-committers by date:

Previous
From: Dean Rasheed
Date:
Subject: pgsql: Fix MERGE with DO NOTHING actions into a partitioned table.
Next
From: Peter Eisentraut
Date:
Subject: pgsql: pgbench: Make set_random_seed() 64-bit everywhere.