diff options
Diffstat (limited to 'src/test/regress/sql/btree_index.sql')
-rw-r--r-- | src/test/regress/sql/btree_index.sql | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/src/test/regress/sql/btree_index.sql b/src/test/regress/sql/btree_index.sql index 2b087be796c..19fbfa8b720 100644 --- a/src/test/regress/sql/btree_index.sql +++ b/src/test/regress/sql/btree_index.sql @@ -84,32 +84,23 @@ reset enable_indexscan; reset enable_bitmapscan; -- --- Test B-tree page deletion. In particular, deleting a non-leaf page. +-- Test B-tree fast path (cache rightmost leaf page) optimization. -- --- First create a tree that's at least four levels deep. The text inserted --- is long and poorly compressible. That way only a few index tuples fit on --- each page, allowing us to get a tall tree with fewer pages. -create table btree_tall_tbl(id int4, t text); -create index btree_tall_idx on btree_tall_tbl (id, t) with (fillfactor = 10); -insert into btree_tall_tbl - select g, g::text || '_' || - (select string_agg(md5(i::text), '_') from generate_series(1, 50) i) -from generate_series(1, 100) g; - --- Delete most entries, and vacuum. This causes page deletions. -delete from btree_tall_tbl where id < 950; -vacuum btree_tall_tbl; - +-- First create a tree that's at least three levels deep (i.e. has one level +-- between the root and leaf levels). The text inserted is long. It won't be +-- compressed because we use plain storage in the table. Only a few index +-- tuples fit on each internal page, allowing us to get a tall tree with few +-- pages. (A tall tree is required to trigger caching.) -- --- Test B-tree insertion with a metapage update (XLOG_BTREE_INSERT_META --- WAL record type). This happens when a "fast root" page is split. --- - --- The vacuum above should've turned the leaf page into a fast root. We just --- need to insert some rows to cause the fast root page to split. -insert into btree_tall_tbl (id, t) - select g, repeat('x', 100) from generate_series(1, 500) g; +-- The text column must be the leading column in the index, since suffix +-- truncation would otherwise truncate tuples on internal pages, leaving us +-- with a short tree. +create table btree_tall_tbl(id int4, t text); +alter table btree_tall_tbl alter COLUMN t set storage plain; +create index btree_tall_idx on btree_tall_tbl (t, id) with (fillfactor = 10); +insert into btree_tall_tbl select g, repeat('x', 250) +from generate_series(1, 130) g; -- -- Test vacuum_cleanup_index_scale_factor |