diff --git a/src/test/regress/expected/hash_index.out b/src/test/regress/expected/hash_index.out index 0403540..258d501 100644 --- a/src/test/regress/expected/hash_index.out +++ b/src/test/regress/expected/hash_index.out @@ -333,6 +333,25 @@ ROLLBACK; INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 50) as i; CHECKPOINT; VACUUM hash_cleanup_heap; +-- Test insert-driven cleanup of dead index tuples (_hash_vacuum_one_page). +TRUNCATE hash_cleanup_heap; +INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 1000) as i; +DELETE FROM hash_cleanup_heap + WHERE ctid IN ('(0,5)','(0,10)','(0,15)','(0,20)','(0,25)', + '(0,30)','(0,35)','(0,40)','(0,45)','(0,50)'); +SET enable_seqscan = off; +SET enable_bitmapscan = off; +SELECT count(*) FROM hash_cleanup_heap WHERE keycol = 1; + count +------- + 990 +(1 row) + +INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 200) as i; +RESET enable_seqscan; +RESET enable_bitmapscan; -- Clean up. DROP TABLE hash_cleanup_heap; -- Index on temp table. diff --git a/src/test/regress/sql/hash_index.sql b/src/test/regress/sql/hash_index.sql index 60571f6..1c85d98 100644 --- a/src/test/regress/sql/hash_index.sql +++ b/src/test/regress/sql/hash_index.sql @@ -314,6 +314,21 @@ INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 50) as i; CHECKPOINT; VACUUM hash_cleanup_heap; +-- Test insert-driven cleanup of dead index tuples (_hash_vacuum_one_page). +TRUNCATE hash_cleanup_heap; +INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 1000) as i; +DELETE FROM hash_cleanup_heap + WHERE ctid IN ('(0,5)','(0,10)','(0,15)','(0,20)','(0,25)', + '(0,30)','(0,35)','(0,40)','(0,45)','(0,50)'); +SET enable_seqscan = off; +SET enable_bitmapscan = off; +SELECT count(*) FROM hash_cleanup_heap WHERE keycol = 1; +INSERT INTO hash_cleanup_heap SELECT 1 FROM generate_series(1, 200) as i; +RESET enable_seqscan; +RESET enable_bitmapscan; + -- Clean up. DROP TABLE hash_cleanup_heap;