From 344b7e11bbaf5e11f2497b11405e63d190043cfe Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Thu, 4 Apr 2019 17:25:35 -0700 Subject: [PATCH] Add test coverage for rootdescend verification. Commit c1afd175, which added support for rootdescend verification to amcheck, added only minimal regression test coverage. Address this by making sure that rootdescend verification is run on a multi-level index. In passing, simplify some of the regression tests that exercise multi-level nbtree page deletion. Both issues spotted while rereviewing coverage of the nbtree patch series using gcov. --- contrib/amcheck/expected/check_btree.out | 13 +++++-------- contrib/amcheck/sql/check_btree.sql | 13 +++++-------- src/test/regress/expected/create_index.out | 3 --- src/test/regress/sql/create_index.sql | 3 --- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/contrib/amcheck/expected/check_btree.out b/contrib/amcheck/expected/check_btree.out index 6103aa4e472..605eb191445 100644 --- a/contrib/amcheck/expected/check_btree.out +++ b/contrib/amcheck/expected/check_btree.out @@ -109,17 +109,17 @@ SELECT bt_index_check('bttest_multi_idx'); (1 row) --- more expansive test for index with included columns -SELECT bt_index_parent_check('bttest_multi_idx', true); +-- more expansive tests for index with included columns +SELECT bt_index_parent_check('bttest_multi_idx', true, true); bt_index_parent_check ----------------------- (1 row) --- repeat expansive test for index built using insertions +-- repeat expansive tests for index built using insertions TRUNCATE bttest_multi; INSERT INTO bttest_multi SELECT i, i%2 FROM generate_series(1, 100000) as i; -SELECT bt_index_parent_check('bttest_multi_idx', true); +SELECT bt_index_parent_check('bttest_multi_idx', true, true); bt_index_parent_check ----------------------- @@ -131,14 +131,11 @@ SELECT bt_index_parent_check('bttest_multi_idx', true); -- INSERT INTO delete_test_table SELECT i, 1, 2, 3 FROM generate_series(1,80000) i; ALTER TABLE delete_test_table ADD PRIMARY KEY (a,b,c,d); --- Delete many entries, and vacuum. This causes page deletions. -DELETE FROM delete_test_table WHERE a > 40000; -VACUUM delete_test_table; -- Delete most entries, and vacuum, deleting internal pages and creating "fast -- root" DELETE FROM delete_test_table WHERE a < 79990; VACUUM delete_test_table; -SELECT bt_index_parent_check('delete_test_table_pkey', true, true); +SELECT bt_index_parent_check('delete_test_table_pkey', true); bt_index_parent_check ----------------------- diff --git a/contrib/amcheck/sql/check_btree.sql b/contrib/amcheck/sql/check_btree.sql index f3e365f4bdf..2fd3dc388b1 100644 --- a/contrib/amcheck/sql/check_btree.sql +++ b/contrib/amcheck/sql/check_btree.sql @@ -69,13 +69,13 @@ COMMIT; -- normal check outside of xact for index with included columns SELECT bt_index_check('bttest_multi_idx'); --- more expansive test for index with included columns -SELECT bt_index_parent_check('bttest_multi_idx', true); +-- more expansive tests for index with included columns +SELECT bt_index_parent_check('bttest_multi_idx', true, true); --- repeat expansive test for index built using insertions +-- repeat expansive tests for index built using insertions TRUNCATE bttest_multi; INSERT INTO bttest_multi SELECT i, i%2 FROM generate_series(1, 100000) as i; -SELECT bt_index_parent_check('bttest_multi_idx', true); +SELECT bt_index_parent_check('bttest_multi_idx', true, true); -- -- Test for multilevel page deletion/downlink present checks, and rootdescend @@ -83,14 +83,11 @@ SELECT bt_index_parent_check('bttest_multi_idx', true); -- INSERT INTO delete_test_table SELECT i, 1, 2, 3 FROM generate_series(1,80000) i; ALTER TABLE delete_test_table ADD PRIMARY KEY (a,b,c,d); --- Delete many entries, and vacuum. This causes page deletions. -DELETE FROM delete_test_table WHERE a > 40000; -VACUUM delete_test_table; -- Delete most entries, and vacuum, deleting internal pages and creating "fast -- root" DELETE FROM delete_test_table WHERE a < 79990; VACUUM delete_test_table; -SELECT bt_index_parent_check('delete_test_table_pkey', true, true); +SELECT bt_index_parent_check('delete_test_table_pkey', true); -- -- BUG #15597: must not assume consistent input toasting state when forming diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index 6b77d25debf..388d709875c 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -3225,9 +3225,6 @@ explain (costs off) CREATE TABLE delete_test_table (a bigint, b bigint, c bigint, d bigint); INSERT INTO delete_test_table SELECT i, 1, 2, 3 FROM generate_series(1,80000) i; ALTER TABLE delete_test_table ADD PRIMARY KEY (a,b,c,d); --- Delete many entries, and vacuum. This causes page deletions. -DELETE FROM delete_test_table WHERE a > 40000; -VACUUM delete_test_table; -- Delete most entries, and vacuum, deleting internal pages and creating "fast -- root" DELETE FROM delete_test_table WHERE a < 79990; diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index 9ff2dc68ff1..4d2535b4821 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -1146,9 +1146,6 @@ explain (costs off) CREATE TABLE delete_test_table (a bigint, b bigint, c bigint, d bigint); INSERT INTO delete_test_table SELECT i, 1, 2, 3 FROM generate_series(1,80000) i; ALTER TABLE delete_test_table ADD PRIMARY KEY (a,b,c,d); --- Delete many entries, and vacuum. This causes page deletions. -DELETE FROM delete_test_table WHERE a > 40000; -VACUUM delete_test_table; -- Delete most entries, and vacuum, deleting internal pages and creating "fast -- root" DELETE FROM delete_test_table WHERE a < 79990;