Teach contrib/amcheck to check the unique constraint violation Add the 'checkunique' argument to bt_index_check() and bt_index_parent_check(). When the flag is specified the procedures will check the unique constraint violation for unique indexes. Only one heap entry for all equal keys in the index should be visible (including posting list entries). Report an error otherwise.
pg_amcheck called with the --checkunique option will do the same check for all the indexes it checks. Author: Anastasia Lubennikova <[email protected]> Author: Pavel Borisov <[email protected]> Author: Maxim Orlov <[email protected]> Reviewed-by: Mark Dilger <[email protected]> Reviewed-by: Zhihong Yu <[email protected]> Reviewed-by: Peter Geoghegan <[email protected]> Reviewed-by: Aleksander Alekseev <[email protected]> Discussion: https://postgr.es/m/CALT9ZEHRn5xAM5boga0qnrCmPV52bScEK2QnQ1HmUZDD301JEg%40mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/5ae2087202af9fd804c8b8d76954bdd8bdf31e51 Modified Files -------------- contrib/amcheck/Makefile | 2 +- contrib/amcheck/amcheck--1.3--1.4.sql | 29 +++ contrib/amcheck/amcheck.control | 2 +- contrib/amcheck/expected/check_btree.out | 42 ++++ contrib/amcheck/meson.build | 2 + contrib/amcheck/sql/check_btree.sql | 14 ++ contrib/amcheck/t/004_verify_nbtree_unique.pl | 244 +++++++++++++++++++ contrib/amcheck/verify_nbtree.c | 330 ++++++++++++++++++++++++-- doc/src/sgml/amcheck.sgml | 14 +- doc/src/sgml/ref/pg_amcheck.sgml | 11 + src/bin/pg_amcheck/pg_amcheck.c | 48 +++- src/bin/pg_amcheck/t/003_check.pl | 50 ++++ src/bin/pg_amcheck/t/005_opclass_damage.pl | 65 +++++ 13 files changed, 830 insertions(+), 23 deletions(-)
