diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/pageinspect/expected/brin.out | 18 | ||||
-rw-r--r-- | contrib/pageinspect/sql/brin.sql | 17 |
2 files changed, 35 insertions, 0 deletions
diff --git a/contrib/pageinspect/expected/brin.out b/contrib/pageinspect/expected/brin.out index 098ddc202f4..3f6e5174bc6 100644 --- a/contrib/pageinspect/expected/brin.out +++ b/contrib/pageinspect/expected/brin.out @@ -89,4 +89,22 @@ SELECT brin_revmap_data(decode(repeat('00', :block_size), 'hex')); (1 row) +-- Test that partial indexes have all pages, including empty ones. +CREATE TABLE test2 (a int); +INSERT INTO test2 SELECT i FROM generate_series(1,1000) s(i); +-- No rows match the index predicate, make sure the index has the right number +-- of ranges (same as number of page ranges). +CREATE INDEX ON test2 USING brin (a) WITH (pages_per_range=1) WHERE (a IS NULL); +ANALYZE test2; +-- Does the index have one summary of the relation? +SELECT (COUNT(*) = (SELECT relpages FROM pg_class WHERE relname = 'test2')) AS ranges_do_match + FROM generate_series((SELECT (lastrevmappage + 1) FROM brin_metapage_info(get_raw_page('test2_a_idx', 0))), + (SELECT (relpages - 1) FROM pg_class WHERE relname = 'test2_a_idx')) AS pages(p), + LATERAL brin_page_items(get_raw_page('test2_a_idx', p), 'test2_a_idx') AS items; + ranges_do_match +----------------- + t +(1 row) + DROP TABLE test1; +DROP TABLE test2; diff --git a/contrib/pageinspect/sql/brin.sql b/contrib/pageinspect/sql/brin.sql index 96b4645187e..50f260b8e1f 100644 --- a/contrib/pageinspect/sql/brin.sql +++ b/contrib/pageinspect/sql/brin.sql @@ -36,4 +36,21 @@ SELECT brin_page_items(decode(repeat('00', :block_size), 'hex'), 'test1_a_idx'); SELECT brin_metapage_info(decode(repeat('00', :block_size), 'hex')); SELECT brin_revmap_data(decode(repeat('00', :block_size), 'hex')); +-- Test that partial indexes have all pages, including empty ones. +CREATE TABLE test2 (a int); +INSERT INTO test2 SELECT i FROM generate_series(1,1000) s(i); + +-- No rows match the index predicate, make sure the index has the right number +-- of ranges (same as number of page ranges). +CREATE INDEX ON test2 USING brin (a) WITH (pages_per_range=1) WHERE (a IS NULL); + +ANALYZE test2; + +-- Does the index have one summary of the relation? +SELECT (COUNT(*) = (SELECT relpages FROM pg_class WHERE relname = 'test2')) AS ranges_do_match + FROM generate_series((SELECT (lastrevmappage + 1) FROM brin_metapage_info(get_raw_page('test2_a_idx', 0))), + (SELECT (relpages - 1) FROM pg_class WHERE relname = 'test2_a_idx')) AS pages(p), + LATERAL brin_page_items(get_raw_page('test2_a_idx', p), 'test2_a_idx') AS items; + DROP TABLE test1; +DROP TABLE test2; |