109 lines
4.6 KiB
MySQL
109 lines
4.6 KiB
MySQL
|
CREATE TABLE test_hash (a int, b text);
|
||
|
INSERT INTO test_hash VALUES (1, 'one');
|
||
|
CREATE INDEX test_hash_a_idx ON test_hash USING hash (a);
|
||
|
|
||
|
\x
|
||
|
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 0));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 1));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 2));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 3));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 4));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 5));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash_a_idx', 6));
|
||
|
|
||
|
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', -1);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 0);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 1);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 2);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 3);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 4);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 5);
|
||
|
SELECT * FROM hash_bitmap_info('test_hash_a_idx', 6);
|
||
|
|
||
|
|
||
|
SELECT magic, version, ntuples, bsize, bmsize, bmshift, maxbucket, highmask,
|
||
|
lowmask, ovflpoint, firstfree, nmaps, procid, spares, mapp FROM
|
||
|
hash_metapage_info(get_raw_page('test_hash_a_idx', 0));
|
||
|
|
||
|
SELECT magic, version, ntuples, bsize, bmsize, bmshift, maxbucket, highmask,
|
||
|
lowmask, ovflpoint, firstfree, nmaps, procid, spares, mapp FROM
|
||
|
hash_metapage_info(get_raw_page('test_hash_a_idx', 1));
|
||
|
|
||
|
SELECT magic, version, ntuples, bsize, bmsize, bmshift, maxbucket, highmask,
|
||
|
lowmask, ovflpoint, firstfree, nmaps, procid, spares, mapp FROM
|
||
|
hash_metapage_info(get_raw_page('test_hash_a_idx', 2));
|
||
|
|
||
|
SELECT magic, version, ntuples, bsize, bmsize, bmshift, maxbucket, highmask,
|
||
|
lowmask, ovflpoint, firstfree, nmaps, procid, spares, mapp FROM
|
||
|
hash_metapage_info(get_raw_page('test_hash_a_idx', 3));
|
||
|
|
||
|
SELECT magic, version, ntuples, bsize, bmsize, bmshift, maxbucket, highmask,
|
||
|
lowmask, ovflpoint, firstfree, nmaps, procid, spares, mapp FROM
|
||
|
hash_metapage_info(get_raw_page('test_hash_a_idx', 4));
|
||
|
|
||
|
SELECT magic, version, ntuples, bsize, bmsize, bmshift, maxbucket, highmask,
|
||
|
lowmask, ovflpoint, firstfree, nmaps, procid, spares, mapp FROM
|
||
|
hash_metapage_info(get_raw_page('test_hash_a_idx', 5));
|
||
|
|
||
|
SELECT live_items, dead_items, page_size, hasho_prevblkno, hasho_nextblkno,
|
||
|
hasho_bucket, hasho_flag, hasho_page_id FROM
|
||
|
hash_page_stats(get_raw_page('test_hash_a_idx', 0));
|
||
|
|
||
|
SELECT live_items, dead_items, page_size, hasho_prevblkno, hasho_nextblkno,
|
||
|
hasho_bucket, hasho_flag, hasho_page_id FROM
|
||
|
hash_page_stats(get_raw_page('test_hash_a_idx', 1));
|
||
|
|
||
|
SELECT live_items, dead_items, page_size, hasho_prevblkno, hasho_nextblkno,
|
||
|
hasho_bucket, hasho_flag, hasho_page_id FROM
|
||
|
hash_page_stats(get_raw_page('test_hash_a_idx', 2));
|
||
|
|
||
|
SELECT live_items, dead_items, page_size, hasho_prevblkno, hasho_nextblkno,
|
||
|
hasho_bucket, hasho_flag, hasho_page_id FROM
|
||
|
hash_page_stats(get_raw_page('test_hash_a_idx', 3));
|
||
|
|
||
|
SELECT live_items, dead_items, page_size, hasho_prevblkno, hasho_nextblkno,
|
||
|
hasho_bucket, hasho_flag, hasho_page_id FROM
|
||
|
hash_page_stats(get_raw_page('test_hash_a_idx', 4));
|
||
|
|
||
|
SELECT live_items, dead_items, page_size, hasho_prevblkno, hasho_nextblkno,
|
||
|
hasho_bucket, hasho_flag, hasho_page_id FROM
|
||
|
hash_page_stats(get_raw_page('test_hash_a_idx', 5));
|
||
|
|
||
|
SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 0));
|
||
|
SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 1));
|
||
|
SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 2));
|
||
|
SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 3));
|
||
|
SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 4));
|
||
|
SELECT * FROM hash_page_items(get_raw_page('test_hash_a_idx', 5));
|
||
|
|
||
|
-- Failure with non-hash index
|
||
|
CREATE INDEX test_hash_a_btree ON test_hash USING btree (a);
|
||
|
SELECT hash_bitmap_info('test_hash_a_btree', 0);
|
||
|
|
||
|
-- Failure with various modes.
|
||
|
-- Suppress the DETAIL message, to allow the tests to work across various
|
||
|
-- page sizes and architectures.
|
||
|
\set VERBOSITY terse
|
||
|
-- invalid page size
|
||
|
SELECT hash_metapage_info('aaa'::bytea);
|
||
|
SELECT hash_page_items('bbb'::bytea);
|
||
|
SELECT hash_page_stats('ccc'::bytea);
|
||
|
SELECT hash_page_type('ddd'::bytea);
|
||
|
-- invalid special area size
|
||
|
SELECT hash_metapage_info(get_raw_page('test_hash', 0));
|
||
|
SELECT hash_page_items(get_raw_page('test_hash', 0));
|
||
|
SELECT hash_page_stats(get_raw_page('test_hash', 0));
|
||
|
SELECT hash_page_type(get_raw_page('test_hash', 0));
|
||
|
\set VERBOSITY default
|
||
|
|
||
|
-- Tests with all-zero pages.
|
||
|
SHOW block_size \gset
|
||
|
SELECT hash_metapage_info(decode(repeat('00', :block_size), 'hex'));
|
||
|
SELECT hash_page_items(decode(repeat('00', :block_size), 'hex'));
|
||
|
SELECT hash_page_stats(decode(repeat('00', :block_size), 'hex'));
|
||
|
SELECT hash_page_type(decode(repeat('00', :block_size), 'hex'));
|
||
|
|
||
|
DROP TABLE test_hash;
|