Add posting list tuple amcheck test case.
authorPeter Geoghegan <pg@bowt.ie>
Mon, 4 May 2020 18:23:44 +0000 (11:23 -0700)
committerPeter Geoghegan <pg@bowt.ie>
Mon, 4 May 2020 18:23:44 +0000 (11:23 -0700)
Add a test case to contrib/amcheck that creates coverage of code paths
that are used to verify posting list tuples (tuples created when
deduplication merges together existing tuples to avoid a leaf page
split).

contrib/amcheck/expected/check_btree.out
contrib/amcheck/sql/check_btree.sql

index d7480fc96dc603a7769c09ecf9bc4b84e60e279e..f82f48d23b78f52a4de6e0096a50a13ce846b844 100644 (file)
@@ -10,7 +10,7 @@ ALTER TABLE delete_test_table SET (autovacuum_enabled = false);
 INSERT INTO bttest_a SELECT * FROM generate_series(1, 100000);
 INSERT INTO bttest_b SELECT * FROM generate_series(100000, 1, -1);
 INSERT INTO bttest_multi SELECT i, i%2  FROM generate_series(1, 100000) as i;
-CREATE INDEX bttest_a_idx ON bttest_a USING btree (id);
+CREATE INDEX bttest_a_idx ON bttest_a USING btree (id) WITH (deduplicate_items = ON);
 CREATE INDEX bttest_b_idx ON bttest_b USING btree (id);
 CREATE UNIQUE INDEX bttest_multi_idx ON bttest_multi
 USING btree (id) INCLUDE (data);
@@ -102,6 +102,15 @@ WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx
 (0 rows)
 
 COMMIT;
+-- Deduplication
+TRUNCATE bttest_a;
+INSERT INTO bttest_a SELECT 42 FROM generate_series(1, 2000);
+SELECT bt_index_check('bttest_a_idx', true);
+ bt_index_check 
+----------------
+(1 row)
+
 -- normal check outside of xact for index with included columns
 SELECT bt_index_check('bttest_multi_idx');
  bt_index_check 
index 9a1987598da9855c529e474475aaceb567e0b378..a1fef644cb08c166f4053b05ec63827230d4bbc0 100644 (file)
@@ -13,7 +13,7 @@ INSERT INTO bttest_a SELECT * FROM generate_series(1, 100000);
 INSERT INTO bttest_b SELECT * FROM generate_series(100000, 1, -1);
 INSERT INTO bttest_multi SELECT i, i%2  FROM generate_series(1, 100000) as i;
 
-CREATE INDEX bttest_a_idx ON bttest_a USING btree (id);
+CREATE INDEX bttest_a_idx ON bttest_a USING btree (id) WITH (deduplicate_items = ON);
 CREATE INDEX bttest_b_idx ON bttest_b USING btree (id);
 CREATE UNIQUE INDEX bttest_multi_idx ON bttest_multi
 USING btree (id) INCLUDE (data);
@@ -67,6 +67,11 @@ WHERE relation = ANY(ARRAY['bttest_a', 'bttest_a_idx', 'bttest_b', 'bttest_b_idx
     AND pid = pg_backend_pid();
 COMMIT;
 
+-- Deduplication
+TRUNCATE bttest_a;
+INSERT INTO bttest_a SELECT 42 FROM generate_series(1, 2000);
+SELECT bt_index_check('bttest_a_idx', true);
+
 -- normal check outside of xact for index with included columns
 SELECT bt_index_check('bttest_multi_idx');
 -- more expansive tests for index with included columns