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 <amboro...@acm.org> Reviewed-By: José Villanova <jose.art...@gmail.com> Reviewed-By: Aleksander Alekseev <aleksan...@timescale.com> Reviewed-By: Nikolay Samokhvalov <samokhva...@gmail.com> Reviewed-By: Andres Freund <and...@anarazel.de> Reviewed-By: Tomas Vondra <to...@vondra.me> Reviewed-By: Mark Dilger <mark.dil...@enterprisedb.com> Reviewed-By: Peter Geoghegan <p...@bowt.ie> Reviewed-By: Kirill Reshke <reshkekir...@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(-)