mirror of https://github.com/postgres/postgres
parent
3a47c704fb
commit
adfb81d9e1
@ -0,0 +1,4 @@ |
|||||||
|
# Generated subdirectories |
||||||
|
/log/ |
||||||
|
/results/ |
||||||
|
/tmp_check/ |
@ -0,0 +1,51 @@ |
|||||||
|
CREATE TABLE test1 (a int, b text); |
||||||
|
INSERT INTO test1 VALUES (1, 'one'); |
||||||
|
CREATE INDEX test1_a_idx ON test1 USING brin (a); |
||||||
|
SELECT brin_page_type(get_raw_page('test1_a_idx', 0)); |
||||||
|
brin_page_type |
||||||
|
---------------- |
||||||
|
meta |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT brin_page_type(get_raw_page('test1_a_idx', 1)); |
||||||
|
brin_page_type |
||||||
|
---------------- |
||||||
|
revmap |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT brin_page_type(get_raw_page('test1_a_idx', 2)); |
||||||
|
brin_page_type |
||||||
|
---------------- |
||||||
|
regular |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT * FROM brin_metapage_info(get_raw_page('test1_a_idx', 0)); |
||||||
|
magic | version | pagesperrange | lastrevmappage |
||||||
|
------------+---------+---------------+---------------- |
||||||
|
0xA8109CFA | 1 | 128 | 1 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT * FROM brin_metapage_info(get_raw_page('test1_a_idx', 1)); |
||||||
|
ERROR: page is not a BRIN page of type "metapage" |
||||||
|
DETAIL: Expected special type 0000f091, got 0000f092. |
||||||
|
SELECT * FROM brin_revmap_data(get_raw_page('test1_a_idx', 0)) LIMIT 5; |
||||||
|
ERROR: page is not a BRIN page of type "revmap" |
||||||
|
DETAIL: Expected special type 0000f092, got 0000f091. |
||||||
|
SELECT * FROM brin_revmap_data(get_raw_page('test1_a_idx', 1)) LIMIT 5; |
||||||
|
pages |
||||||
|
------- |
||||||
|
(2,1) |
||||||
|
(0,0) |
||||||
|
(0,0) |
||||||
|
(0,0) |
||||||
|
(0,0) |
||||||
|
(5 rows) |
||||||
|
|
||||||
|
SELECT * FROM brin_page_items(get_raw_page('test1_a_idx', 2), 'test1_a_idx') |
||||||
|
ORDER BY blknum, attnum LIMIT 5; |
||||||
|
itemoffset | blknum | attnum | allnulls | hasnulls | placeholder | value |
||||||
|
------------+--------+--------+----------+----------+-------------+---------- |
||||||
|
1 | 0 | 1 | f | f | f | {1 .. 1} |
||||||
|
(1 row) |
||||||
|
|
||||||
|
DROP TABLE test1; |
@ -0,0 +1,45 @@ |
|||||||
|
CREATE TABLE test1 (a int, b text); |
||||||
|
INSERT INTO test1 VALUES (1, 'one'); |
||||||
|
CREATE INDEX test1_a_idx ON test1 USING btree (a); |
||||||
|
\x |
||||||
|
SELECT * FROM bt_metap('test1_a_idx'); |
||||||
|
-[ RECORD 1 ]----- |
||||||
|
magic | 340322 |
||||||
|
version | 2 |
||||||
|
root | 1 |
||||||
|
level | 0 |
||||||
|
fastroot | 1 |
||||||
|
fastlevel | 0 |
||||||
|
|
||||||
|
SELECT * FROM bt_page_stats('test1_a_idx', 0); |
||||||
|
ERROR: block 0 is a meta page |
||||||
|
SELECT * FROM bt_page_stats('test1_a_idx', 1); |
||||||
|
-[ RECORD 1 ]-+----- |
||||||
|
blkno | 1 |
||||||
|
type | l |
||||||
|
live_items | 1 |
||||||
|
dead_items | 0 |
||||||
|
avg_item_size | 16 |
||||||
|
page_size | 8192 |
||||||
|
free_size | 8128 |
||||||
|
btpo_prev | 0 |
||||||
|
btpo_next | 0 |
||||||
|
btpo | 0 |
||||||
|
btpo_flags | 3 |
||||||
|
|
||||||
|
SELECT * FROM bt_page_stats('test1_a_idx', 2); |
||||||
|
ERROR: block number out of range |
||||||
|
SELECT * FROM bt_page_items('test1_a_idx', 0); |
||||||
|
ERROR: block 0 is a meta page |
||||||
|
SELECT * FROM bt_page_items('test1_a_idx', 1); |
||||||
|
-[ RECORD 1 ]----------------------- |
||||||
|
itemoffset | 1 |
||||||
|
ctid | (0,1) |
||||||
|
itemlen | 16 |
||||||
|
nulls | f |
||||||
|
vars | f |
||||||
|
data | 01 00 00 00 00 00 00 00 |
||||||
|
|
||||||
|
SELECT * FROM bt_page_items('test1_a_idx', 2); |
||||||
|
ERROR: block number out of range |
||||||
|
DROP TABLE test1; |
@ -0,0 +1,30 @@ |
|||||||
|
CREATE TABLE test1 (x int, y int[]); |
||||||
|
INSERT INTO test1 VALUES (1, ARRAY[11, 111]); |
||||||
|
CREATE INDEX test1_y_idx ON test1 USING gin (y); |
||||||
|
\x |
||||||
|
SELECT * FROM gin_metapage_info(get_raw_page('test1_y_idx', 0)); |
||||||
|
-[ RECORD 1 ]----+----------- |
||||||
|
pending_head | 4294967295 |
||||||
|
pending_tail | 4294967295 |
||||||
|
tail_free_size | 0 |
||||||
|
n_pending_pages | 0 |
||||||
|
n_pending_tuples | 0 |
||||||
|
n_total_pages | 2 |
||||||
|
n_entry_pages | 1 |
||||||
|
n_data_pages | 0 |
||||||
|
n_entries | 2 |
||||||
|
version | 2 |
||||||
|
|
||||||
|
SELECT * FROM gin_metapage_info(get_raw_page('test1_y_idx', 1)); |
||||||
|
ERROR: input page is not a GIN metapage |
||||||
|
DETAIL: Flags 0002, expected 0008 |
||||||
|
SELECT * FROM gin_page_opaque_info(get_raw_page('test1_y_idx', 1)); |
||||||
|
-[ RECORD 1 ]--------- |
||||||
|
rightlink | 4294967295 |
||||||
|
maxoff | 0 |
||||||
|
flags | {leaf} |
||||||
|
|
||||||
|
SELECT * FROM gin_leafpage_items(get_raw_page('test1_y_idx', 1)); |
||||||
|
ERROR: input page is not a compressed GIN data leaf page |
||||||
|
DETAIL: Flags 0002, expected 0083 |
||||||
|
DROP TABLE test1; |
@ -0,0 +1,73 @@ |
|||||||
|
CREATE EXTENSION pageinspect; |
||||||
|
CREATE TABLE test1 (a int, b text); |
||||||
|
INSERT INTO test1 VALUES (1, 'one'); |
||||||
|
VACUUM test1; -- set up FSM |
||||||
|
-- The page contents can vary, so just test that it can be read |
||||||
|
-- successfully, but don't keep the output. |
||||||
|
SELECT octet_length(get_raw_page('test1', 'main', 0)) AS main_0; |
||||||
|
main_0 |
||||||
|
-------- |
||||||
|
8192 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'main', 1)) AS main_1; |
||||||
|
ERROR: block number 1 is out of range for relation "test1" |
||||||
|
SELECT octet_length(get_raw_page('test1', 'fsm', 0)) AS fsm_0; |
||||||
|
fsm_0 |
||||||
|
------- |
||||||
|
8192 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'fsm', 1)) AS fsm_1; |
||||||
|
fsm_1 |
||||||
|
------- |
||||||
|
8192 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'vm', 0)) AS vm_0; |
||||||
|
vm_0 |
||||||
|
------ |
||||||
|
8192 |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'vm', 1)) AS vm_1; |
||||||
|
ERROR: block number 1 is out of range for relation "test1" |
||||||
|
SELECT octet_length(get_raw_page('xxx', 'main', 0)); |
||||||
|
ERROR: relation "xxx" does not exist |
||||||
|
SELECT octet_length(get_raw_page('test1', 'xxx', 0)); |
||||||
|
ERROR: invalid fork name |
||||||
|
HINT: Valid fork names are "main", "fsm", "vm", and "init". |
||||||
|
SELECT get_raw_page('test1', 0) = get_raw_page('test1', 'main', 0); |
||||||
|
?column? |
||||||
|
---------- |
||||||
|
t |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT tuple_data_split('test1'::regclass, t_data, t_infomask, t_infomask2, t_bits) |
||||||
|
FROM heap_page_items(get_raw_page('test1', 0)); |
||||||
|
tuple_data_split |
||||||
|
------------------------------- |
||||||
|
{"\\x01000000","\\x096f6e65"} |
||||||
|
(1 row) |
||||||
|
|
||||||
|
SELECT * FROM fsm_page_contents(get_raw_page('test1', 'fsm', 0)); |
||||||
|
fsm_page_contents |
||||||
|
------------------- |
||||||
|
0: 254 + |
||||||
|
1: 254 + |
||||||
|
3: 254 + |
||||||
|
7: 254 + |
||||||
|
15: 254 + |
||||||
|
31: 254 + |
||||||
|
63: 254 + |
||||||
|
127: 254 + |
||||||
|
255: 254 + |
||||||
|
511: 254 + |
||||||
|
1023: 254 + |
||||||
|
2047: 254 + |
||||||
|
4095: 254 + |
||||||
|
fp_next_slot: 0 + |
||||||
|
|
||||||
|
(1 row) |
||||||
|
|
||||||
|
DROP TABLE test1; |
@ -0,0 +1,18 @@ |
|||||||
|
CREATE TABLE test1 (a int, b text); |
||||||
|
INSERT INTO test1 VALUES (1, 'one'); |
||||||
|
CREATE INDEX test1_a_idx ON test1 USING brin (a); |
||||||
|
|
||||||
|
SELECT brin_page_type(get_raw_page('test1_a_idx', 0)); |
||||||
|
SELECT brin_page_type(get_raw_page('test1_a_idx', 1)); |
||||||
|
SELECT brin_page_type(get_raw_page('test1_a_idx', 2)); |
||||||
|
|
||||||
|
SELECT * FROM brin_metapage_info(get_raw_page('test1_a_idx', 0)); |
||||||
|
SELECT * FROM brin_metapage_info(get_raw_page('test1_a_idx', 1)); |
||||||
|
|
||||||
|
SELECT * FROM brin_revmap_data(get_raw_page('test1_a_idx', 0)) LIMIT 5; |
||||||
|
SELECT * FROM brin_revmap_data(get_raw_page('test1_a_idx', 1)) LIMIT 5; |
||||||
|
|
||||||
|
SELECT * FROM brin_page_items(get_raw_page('test1_a_idx', 2), 'test1_a_idx') |
||||||
|
ORDER BY blknum, attnum LIMIT 5; |
||||||
|
|
||||||
|
DROP TABLE test1; |
@ -0,0 +1,17 @@ |
|||||||
|
CREATE TABLE test1 (a int, b text); |
||||||
|
INSERT INTO test1 VALUES (1, 'one'); |
||||||
|
CREATE INDEX test1_a_idx ON test1 USING btree (a); |
||||||
|
|
||||||
|
\x |
||||||
|
|
||||||
|
SELECT * FROM bt_metap('test1_a_idx'); |
||||||
|
|
||||||
|
SELECT * FROM bt_page_stats('test1_a_idx', 0); |
||||||
|
SELECT * FROM bt_page_stats('test1_a_idx', 1); |
||||||
|
SELECT * FROM bt_page_stats('test1_a_idx', 2); |
||||||
|
|
||||||
|
SELECT * FROM bt_page_items('test1_a_idx', 0); |
||||||
|
SELECT * FROM bt_page_items('test1_a_idx', 1); |
||||||
|
SELECT * FROM bt_page_items('test1_a_idx', 2); |
||||||
|
|
||||||
|
DROP TABLE test1; |
@ -0,0 +1,14 @@ |
|||||||
|
CREATE TABLE test1 (x int, y int[]); |
||||||
|
INSERT INTO test1 VALUES (1, ARRAY[11, 111]); |
||||||
|
CREATE INDEX test1_y_idx ON test1 USING gin (y); |
||||||
|
|
||||||
|
\x |
||||||
|
|
||||||
|
SELECT * FROM gin_metapage_info(get_raw_page('test1_y_idx', 0)); |
||||||
|
SELECT * FROM gin_metapage_info(get_raw_page('test1_y_idx', 1)); |
||||||
|
|
||||||
|
SELECT * FROM gin_page_opaque_info(get_raw_page('test1_y_idx', 1)); |
||||||
|
|
||||||
|
SELECT * FROM gin_leafpage_items(get_raw_page('test1_y_idx', 1)); |
||||||
|
|
||||||
|
DROP TABLE test1; |
@ -0,0 +1,30 @@ |
|||||||
|
CREATE EXTENSION pageinspect; |
||||||
|
|
||||||
|
CREATE TABLE test1 (a int, b text); |
||||||
|
INSERT INTO test1 VALUES (1, 'one'); |
||||||
|
|
||||||
|
VACUUM test1; -- set up FSM |
||||||
|
|
||||||
|
-- The page contents can vary, so just test that it can be read |
||||||
|
-- successfully, but don't keep the output. |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'main', 0)) AS main_0; |
||||||
|
SELECT octet_length(get_raw_page('test1', 'main', 1)) AS main_1; |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'fsm', 0)) AS fsm_0; |
||||||
|
SELECT octet_length(get_raw_page('test1', 'fsm', 1)) AS fsm_1; |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('test1', 'vm', 0)) AS vm_0; |
||||||
|
SELECT octet_length(get_raw_page('test1', 'vm', 1)) AS vm_1; |
||||||
|
|
||||||
|
SELECT octet_length(get_raw_page('xxx', 'main', 0)); |
||||||
|
SELECT octet_length(get_raw_page('test1', 'xxx', 0)); |
||||||
|
|
||||||
|
SELECT get_raw_page('test1', 0) = get_raw_page('test1', 'main', 0); |
||||||
|
|
||||||
|
SELECT tuple_data_split('test1'::regclass, t_data, t_infomask, t_infomask2, t_bits) |
||||||
|
FROM heap_page_items(get_raw_page('test1', 0)); |
||||||
|
|
||||||
|
SELECT * FROM fsm_page_contents(get_raw_page('test1', 'fsm', 0)); |
||||||
|
|
||||||
|
DROP TABLE test1; |
Loading…
Reference in new issue