mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
7f563c09f8
Add a new, optional, capability to bt_index_check() and bt_index_parent_check(): check that each heap tuple that should have an index entry does in fact have one. The extra checking is performed at the end of the existing nbtree checks. This is implemented by using a Bloom filter data structure. The implementation performs set membership tests within a callback (the same type of callback that each index AM registers for CREATE INDEX). The Bloom filter is populated during the initial index verification scan. Reusing the CREATE INDEX infrastructure allows the new verification option to automatically benefit from the heap consistency checks that CREATE INDEX already performs. CREATE INDEX does thorough sanity checking of HOT chains, so the new check actually manages to detect problems in heap-only tuples. Author: Peter Geoghegan Reviewed-By: Pavan Deolasee, Andres Freund Discussion: https://postgr.es/m/CAH2-Wzm5VmG7cu1N-H=nnS57wZThoSDQU+F5dewx3o84M+jY=g@mail.gmail.com
30 lines
931 B
SQL
30 lines
931 B
SQL
/* contrib/amcheck/amcheck--1.0--1.1.sql */
|
|
|
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "ALTER EXTENSION amcheck UPDATE TO '1.1'" to load this file. \quit
|
|
|
|
-- In order to avoid issues with dependencies when updating amcheck to 1.1,
|
|
-- create new, overloaded versions of the 1.0 functions
|
|
|
|
--
|
|
-- bt_index_check()
|
|
--
|
|
CREATE FUNCTION bt_index_check(index regclass,
|
|
heapallindexed boolean)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'bt_index_check'
|
|
LANGUAGE C STRICT PARALLEL RESTRICTED;
|
|
|
|
--
|
|
-- bt_index_parent_check()
|
|
--
|
|
CREATE FUNCTION bt_index_parent_check(index regclass,
|
|
heapallindexed boolean)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'bt_index_parent_check'
|
|
LANGUAGE C STRICT PARALLEL RESTRICTED;
|
|
|
|
-- Don't want these to be available to public
|
|
REVOKE ALL ON FUNCTION bt_index_check(regclass, boolean) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION bt_index_parent_check(regclass, boolean) FROM PUBLIC;
|