Fix use-after-free in parallel_vacuum_reset_dead_items
[pgsql.git] / src / test / regress / expected / pg_lsn.out
blobb27eec7c01503edc477078efcbf28b9b082c1531
1 --
2 -- PG_LSN
3 --
4 CREATE TABLE PG_LSN_TBL (f1 pg_lsn);
5 -- Largest and smallest input
6 INSERT INTO PG_LSN_TBL VALUES ('0/0');
7 INSERT INTO PG_LSN_TBL VALUES ('FFFFFFFF/FFFFFFFF');
8 -- Incorrect input
9 INSERT INTO PG_LSN_TBL VALUES ('G/0');
10 ERROR:  invalid input syntax for type pg_lsn: "G/0"
11 LINE 1: INSERT INTO PG_LSN_TBL VALUES ('G/0');
12                                        ^
13 INSERT INTO PG_LSN_TBL VALUES ('-1/0');
14 ERROR:  invalid input syntax for type pg_lsn: "-1/0"
15 LINE 1: INSERT INTO PG_LSN_TBL VALUES ('-1/0');
16                                        ^
17 INSERT INTO PG_LSN_TBL VALUES (' 0/12345678');
18 ERROR:  invalid input syntax for type pg_lsn: " 0/12345678"
19 LINE 1: INSERT INTO PG_LSN_TBL VALUES (' 0/12345678');
20                                        ^
21 INSERT INTO PG_LSN_TBL VALUES ('ABCD/');
22 ERROR:  invalid input syntax for type pg_lsn: "ABCD/"
23 LINE 1: INSERT INTO PG_LSN_TBL VALUES ('ABCD/');
24                                        ^
25 INSERT INTO PG_LSN_TBL VALUES ('/ABCD');
26 ERROR:  invalid input syntax for type pg_lsn: "/ABCD"
27 LINE 1: INSERT INTO PG_LSN_TBL VALUES ('/ABCD');
28                                        ^
29 -- Also try it with non-error-throwing API
30 SELECT pg_input_is_valid('16AE7F7', 'pg_lsn');
31  pg_input_is_valid 
32 -------------------
33  f
34 (1 row)
36 SELECT * FROM pg_input_error_info('16AE7F7', 'pg_lsn');
37                      message                     | detail | hint | sql_error_code 
38 -------------------------------------------------+--------+------+----------------
39  invalid input syntax for type pg_lsn: "16AE7F7" |        |      | 22P02
40 (1 row)
42 -- Min/Max aggregation
43 SELECT MIN(f1), MAX(f1) FROM PG_LSN_TBL;
44  min |        max        
45 -----+-------------------
46  0/0 | FFFFFFFF/FFFFFFFF
47 (1 row)
49 DROP TABLE PG_LSN_TBL;
50 -- Operators
51 SELECT '0/16AE7F8' = '0/16AE7F8'::pg_lsn;
52  ?column? 
53 ----------
54  t
55 (1 row)
57 SELECT '0/16AE7F8'::pg_lsn != '0/16AE7F7';
58  ?column? 
59 ----------
60  t
61 (1 row)
63 SELECT '0/16AE7F7' < '0/16AE7F8'::pg_lsn;
64  ?column? 
65 ----------
66  t
67 (1 row)
69 SELECT '0/16AE7F8' > pg_lsn '0/16AE7F7';
70  ?column? 
71 ----------
72  t
73 (1 row)
75 SELECT '0/16AE7F7'::pg_lsn - '0/16AE7F8'::pg_lsn;
76  ?column? 
77 ----------
78        -1
79 (1 row)
81 SELECT '0/16AE7F8'::pg_lsn - '0/16AE7F7'::pg_lsn;
82  ?column? 
83 ----------
84         1
85 (1 row)
87 SELECT '0/16AE7F7'::pg_lsn + 16::numeric;
88  ?column?  
89 -----------
90  0/16AE807
91 (1 row)
93 SELECT 16::numeric + '0/16AE7F7'::pg_lsn;
94  ?column?  
95 -----------
96  0/16AE807
97 (1 row)
99 SELECT '0/16AE7F7'::pg_lsn - 16::numeric;
100  ?column?  
101 -----------
102  0/16AE7E7
103 (1 row)
105 SELECT 'FFFFFFFF/FFFFFFFE'::pg_lsn + 1::numeric;
106      ?column?      
107 -------------------
108  FFFFFFFF/FFFFFFFF
109 (1 row)
111 SELECT 'FFFFFFFF/FFFFFFFE'::pg_lsn + 2::numeric; -- out of range error
112 ERROR:  pg_lsn out of range
113 SELECT '0/1'::pg_lsn - 1::numeric;
114  ?column? 
115 ----------
116  0/0
117 (1 row)
119 SELECT '0/1'::pg_lsn - 2::numeric; -- out of range error
120 ERROR:  pg_lsn out of range
121 SELECT '0/0'::pg_lsn + ('FFFFFFFF/FFFFFFFF'::pg_lsn - '0/0'::pg_lsn);
122      ?column?      
123 -------------------
124  FFFFFFFF/FFFFFFFF
125 (1 row)
127 SELECT 'FFFFFFFF/FFFFFFFF'::pg_lsn - ('FFFFFFFF/FFFFFFFF'::pg_lsn - '0/0'::pg_lsn);
128  ?column? 
129 ----------
130  0/0
131 (1 row)
133 SELECT '0/16AE7F7'::pg_lsn + 'NaN'::numeric;
134 ERROR:  cannot add NaN to pg_lsn
135 SELECT '0/16AE7F7'::pg_lsn - 'NaN'::numeric;
136 ERROR:  cannot subtract NaN from pg_lsn
137 -- Check btree and hash opclasses
138 EXPLAIN (COSTS OFF)
139 SELECT DISTINCT (i || '/' || j)::pg_lsn f
140   FROM generate_series(1, 10) i,
141        generate_series(1, 10) j,
142        generate_series(1, 5) k
143   WHERE i <= 10 AND j > 0 AND j <= 10
144   ORDER BY f;
145                                 QUERY PLAN                                
146 --------------------------------------------------------------------------
147  Sort
148    Sort Key: (((((i.i)::text || '/'::text) || (j.j)::text))::pg_lsn)
149    ->  HashAggregate
150          Group Key: ((((i.i)::text || '/'::text) || (j.j)::text))::pg_lsn
151          ->  Nested Loop
152                ->  Function Scan on generate_series k
153                ->  Materialize
154                      ->  Nested Loop
155                            ->  Function Scan on generate_series j
156                                  Filter: ((j > 0) AND (j <= 10))
157                            ->  Function Scan on generate_series i
158                                  Filter: (i <= 10)
159 (12 rows)
161 SELECT DISTINCT (i || '/' || j)::pg_lsn f
162   FROM generate_series(1, 10) i,
163        generate_series(1, 10) j,
164        generate_series(1, 5) k
165   WHERE i <= 10 AND j > 0 AND j <= 10
166   ORDER BY f;
167    f   
168 -------
169  1/1
170  1/2
171  1/3
172  1/4
173  1/5
174  1/6
175  1/7
176  1/8
177  1/9
178  1/10
179  2/1
180  2/2
181  2/3
182  2/4
183  2/5
184  2/6
185  2/7
186  2/8
187  2/9
188  2/10
189  3/1
190  3/2
191  3/3
192  3/4
193  3/5
194  3/6
195  3/7
196  3/8
197  3/9
198  3/10
199  4/1
200  4/2
201  4/3
202  4/4
203  4/5
204  4/6
205  4/7
206  4/8
207  4/9
208  4/10
209  5/1
210  5/2
211  5/3
212  5/4
213  5/5
214  5/6
215  5/7
216  5/8
217  5/9
218  5/10
219  6/1
220  6/2
221  6/3
222  6/4
223  6/5
224  6/6
225  6/7
226  6/8
227  6/9
228  6/10
229  7/1
230  7/2
231  7/3
232  7/4
233  7/5
234  7/6
235  7/7
236  7/8
237  7/9
238  7/10
239  8/1
240  8/2
241  8/3
242  8/4
243  8/5
244  8/6
245  8/7
246  8/8
247  8/9
248  8/10
249  9/1
250  9/2
251  9/3
252  9/4
253  9/5
254  9/6
255  9/7
256  9/8
257  9/9
258  9/10
259  10/1
260  10/2
261  10/3
262  10/4
263  10/5
264  10/6
265  10/7
266  10/8
267  10/9
268  10/10
269 (100 rows)