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.
(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
-----------------------
--
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
-----------------------
-- 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
--
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
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;
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;