Defer remove_useless_groupby_columns() work until query_planner()
[pgsql.git] / contrib / pageinspect / expected / btree.out
blob0aa5d73322f82833427e8bd670fdc89226ef78cd
1 CREATE TABLE test1 (a int8, b int4range);
2 INSERT INTO test1 VALUES (72057594037927937, '[0,1)');
3 CREATE INDEX test1_a_idx ON test1 USING btree (a);
4 \x
5 SELECT * FROM bt_metap('test1_a_idx');
6 -[ RECORD 1 ]-------------+-------
7 magic                     | 340322
8 version                   | 4
9 root                      | 1
10 level                     | 0
11 fastroot                  | 1
12 fastlevel                 | 0
13 last_cleanup_num_delpages | 0
14 last_cleanup_num_tuples   | -1
15 allequalimage             | t
17 SELECT * FROM bt_page_stats('test1_a_idx', -1);
18 ERROR:  invalid block number -1
19 SELECT * FROM bt_page_stats('test1_a_idx', 0);
20 ERROR:  block 0 is a meta page
21 SELECT * FROM bt_page_stats('test1_a_idx', 1);
22 -[ RECORD 1 ]-+-----
23 blkno         | 1
24 type          | l
25 live_items    | 1
26 dead_items    | 0
27 avg_item_size | 16
28 page_size     | 8192
29 free_size     | 8128
30 btpo_prev     | 0
31 btpo_next     | 0
32 btpo_level    | 0
33 btpo_flags    | 3
35 SELECT * FROM bt_page_stats('test1_a_idx', 2);
36 ERROR:  block number 2 is out of range
37 -- bt_multi_page_stats() function returns a set of records of page statistics.
38 CREATE TABLE test2 AS (SELECT generate_series(1, 1000)::int8 AS col1);
39 CREATE INDEX test2_col1_idx ON test2(col1);
40 SELECT * FROM bt_multi_page_stats('test2_col1_idx', 0, 1);
41 ERROR:  block 0 is a meta page
42 SELECT * FROM bt_multi_page_stats('test2_col1_idx', 1, -1);
43 -[ RECORD 1 ]-+-----
44 blkno         | 1
45 type          | l
46 live_items    | 367
47 dead_items    | 0
48 avg_item_size | 16
49 page_size     | 8192
50 free_size     | 808
51 btpo_prev     | 0
52 btpo_next     | 2
53 btpo_level    | 0
54 btpo_flags    | 1
55 -[ RECORD 2 ]-+-----
56 blkno         | 2
57 type          | l
58 live_items    | 367
59 dead_items    | 0
60 avg_item_size | 16
61 page_size     | 8192
62 free_size     | 808
63 btpo_prev     | 1
64 btpo_next     | 4
65 btpo_level    | 0
66 btpo_flags    | 1
67 -[ RECORD 3 ]-+-----
68 blkno         | 3
69 type          | r
70 live_items    | 3
71 dead_items    | 0
72 avg_item_size | 13
73 page_size     | 8192
74 free_size     | 8096
75 btpo_prev     | 0
76 btpo_next     | 0
77 btpo_level    | 1
78 btpo_flags    | 2
79 -[ RECORD 4 ]-+-----
80 blkno         | 4
81 type          | l
82 live_items    | 268
83 dead_items    | 0
84 avg_item_size | 16
85 page_size     | 8192
86 free_size     | 2788
87 btpo_prev     | 2
88 btpo_next     | 0
89 btpo_level    | 0
90 btpo_flags    | 1
92 SELECT * FROM bt_multi_page_stats('test2_col1_idx', 1, 0);
93 (0 rows)
95 SELECT * FROM bt_multi_page_stats('test2_col1_idx', 1, 2);
96 -[ RECORD 1 ]-+-----
97 blkno         | 1
98 type          | l
99 live_items    | 367
100 dead_items    | 0
101 avg_item_size | 16
102 page_size     | 8192
103 free_size     | 808
104 btpo_prev     | 0
105 btpo_next     | 2
106 btpo_level    | 0
107 btpo_flags    | 1
108 -[ RECORD 2 ]-+-----
109 blkno         | 2
110 type          | l
111 live_items    | 367
112 dead_items    | 0
113 avg_item_size | 16
114 page_size     | 8192
115 free_size     | 808
116 btpo_prev     | 1
117 btpo_next     | 4
118 btpo_level    | 0
119 btpo_flags    | 1
121 SELECT * FROM bt_multi_page_stats('test2_col1_idx', 3, 2);
122 -[ RECORD 1 ]-+-----
123 blkno         | 3
124 type          | r
125 live_items    | 3
126 dead_items    | 0
127 avg_item_size | 13
128 page_size     | 8192
129 free_size     | 8096
130 btpo_prev     | 0
131 btpo_next     | 0
132 btpo_level    | 1
133 btpo_flags    | 2
134 -[ RECORD 2 ]-+-----
135 blkno         | 4
136 type          | l
137 live_items    | 268
138 dead_items    | 0
139 avg_item_size | 16
140 page_size     | 8192
141 free_size     | 2788
142 btpo_prev     | 2
143 btpo_next     | 0
144 btpo_level    | 0
145 btpo_flags    | 1
147 SELECT * FROM bt_multi_page_stats('test2_col1_idx', 7, 2);
148 ERROR:  block number 7 is out of range
149 DROP TABLE test2;
150 SELECT * FROM bt_page_items('test1_a_idx', -1);
151 ERROR:  invalid block number -1
152 SELECT * FROM bt_page_items('test1_a_idx', 0);
153 ERROR:  block 0 is a meta page
154 SELECT * FROM bt_page_items('test1_a_idx', 1);
155 -[ RECORD 1 ]-----------------------
156 itemoffset | 1
157 ctid       | (0,1)
158 itemlen    | 16
159 nulls      | f
160 vars       | f
161 data       | 01 00 00 00 00 00 00 01
162 dead       | f
163 htid       | (0,1)
164 tids       | 
166 SELECT * FROM bt_page_items('test1_a_idx', 2);
167 ERROR:  block number 2 is out of range
168 SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', -1));
169 ERROR:  invalid block number
170 SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 0));
171 ERROR:  block is a meta page
172 SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 1));
173 -[ RECORD 1 ]-----------------------
174 itemoffset | 1
175 ctid       | (0,1)
176 itemlen    | 16
177 nulls      | f
178 vars       | f
179 data       | 01 00 00 00 00 00 00 01
180 dead       | f
181 htid       | (0,1)
182 tids       | 
184 SELECT * FROM bt_page_items(get_raw_page('test1_a_idx', 2));
185 ERROR:  block number 2 is out of range for relation "test1_a_idx"
186 -- Failure when using a non-btree index.
187 CREATE INDEX test1_a_hash ON test1 USING hash(a);
188 SELECT bt_metap('test1_a_hash');
189 ERROR:  "test1_a_hash" is not a btree index
190 SELECT bt_page_stats('test1_a_hash', 0);
191 ERROR:  "test1_a_hash" is not a btree index
192 SELECT bt_page_items('test1_a_hash', 0);
193 ERROR:  "test1_a_hash" is not a btree index
194 SELECT bt_page_items(get_raw_page('test1_a_hash', 0));
195 ERROR:  block is a meta page
196 CREATE INDEX test1_b_gist ON test1 USING gist(b);
197 -- Special area of GiST is the same as btree, this complains about inconsistent
198 -- leaf data on the page.
199 SELECT bt_page_items(get_raw_page('test1_b_gist', 0));
200 ERROR:  block is not a valid btree leaf page
201 -- Several failure modes.
202 -- Suppress the DETAIL message, to allow the tests to work across various
203 -- page sizes and architectures.
204 \set VERBOSITY terse
205 -- invalid page size
206 SELECT bt_page_items('aaa'::bytea);
207 ERROR:  invalid page size
208 -- invalid special area size
209 CREATE INDEX test1_a_brin ON test1 USING brin(a);
210 SELECT bt_page_items(get_raw_page('test1', 0));
211 ERROR:  input page is not a valid btree page
212 SELECT bt_page_items(get_raw_page('test1_a_brin', 0));
213 ERROR:  input page is not a valid btree page
214 \set VERBOSITY default
215 -- Tests with all-zero pages.
216 SHOW block_size \gset
217 SELECT bt_page_items(decode(repeat('00', :block_size), 'hex'));
218 -[ RECORD 1 ]-+-
219 bt_page_items | 
221 DROP TABLE test1;