aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Geoghegan <pg@bowt.ie>2019-04-04 17:25:35 -0700
committerPeter Geoghegan <pg@bowt.ie>2019-04-04 17:25:35 -0700
commit344b7e11bbaf5e11f2497b11405e63d190043cfe (patch)
tree0bf3a19565db3b71580662e2104ac88b5192c56c
parent86b85044e823a304d2a265abc030254d39efe7df (diff)
downloadpostgresql-344b7e11bbaf5e11f2497b11405e63d190043cfe.tar.gz
postgresql-344b7e11bbaf5e11f2497b11405e63d190043cfe.zip
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.
-rw-r--r--contrib/amcheck/expected/check_btree.out13
-rw-r--r--contrib/amcheck/sql/check_btree.sql13
-rw-r--r--src/test/regress/expected/create_index.out3
-rw-r--r--src/test/regress/sql/create_index.sql3
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;