Fix use-after-free in parallel_vacuum_reset_dead_items
[pgsql.git] / src / test / regress / expected / text.out
blob4c65b238e764cbc4a94d634656c07aadf12cb28e
1 --
2 -- TEXT
3 --
4 SELECT text 'this is a text string' = text 'this is a text string' AS true;
5  true 
6 ------
7  t
8 (1 row)
10 SELECT text 'this is a text string' = text 'this is a text strin' AS false;
11  false 
12 -------
13  f
14 (1 row)
16 -- text_tbl was already created and filled in test_setup.sql.
17 SELECT * FROM TEXT_TBL;
18         f1         
19 -------------------
20  doh!
21  hi de ho neighbor
22 (2 rows)
24 -- As of 8.3 we have removed most implicit casts to text, so that for example
25 -- this no longer works:
26 select length(42);
27 ERROR:  function length(integer) does not exist
28 LINE 1: select length(42);
29                ^
30 HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
31 -- But as a special exception for usability's sake, we still allow implicit
32 -- casting to text in concatenations, so long as the other input is text or
33 -- an unknown literal.  So these work:
34 select 'four: '::text || 2+2;
35  ?column? 
36 ----------
37  four: 4
38 (1 row)
40 select 'four: ' || 2+2;
41  ?column? 
42 ----------
43  four: 4
44 (1 row)
46 -- but not this:
47 select 3 || 4.0;
48 ERROR:  operator does not exist: integer || numeric
49 LINE 1: select 3 || 4.0;
50                  ^
51 HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.
53  * various string functions
54  */
55 select concat('one');
56  concat 
57 --------
58  one
59 (1 row)
61 select concat(1,2,3,'hello',true, false, to_date('20100309','YYYYMMDD'));
62         concat        
63 ----------------------
64  123hellotf03-09-2010
65 (1 row)
67 select concat_ws('#','one');
68  concat_ws 
69 -----------
70  one
71 (1 row)
73 select concat_ws('#',1,2,3,'hello',true, false, to_date('20100309','YYYYMMDD'));
74          concat_ws          
75 ----------------------------
76  1#2#3#hello#t#f#03-09-2010
77 (1 row)
79 select concat_ws(',',10,20,null,30);
80  concat_ws 
81 -----------
82  10,20,30
83 (1 row)
85 select concat_ws('',10,20,null,30);
86  concat_ws 
87 -----------
88  102030
89 (1 row)
91 select concat_ws(NULL,10,20,null,30) is null;
92  ?column? 
93 ----------
94  t
95 (1 row)
97 select reverse('abcde');
98  reverse 
99 ---------
100  edcba
101 (1 row)
103 select i, left('ahoj', i), right('ahoj', i) from generate_series(-5, 5) t(i) order by i;
104  i  | left | right 
105 ----+------+-------
106  -5 |      | 
107  -4 |      | 
108  -3 | a    | j
109  -2 | ah   | oj
110  -1 | aho  | hoj
111   0 |      | 
112   1 | a    | j
113   2 | ah   | oj
114   3 | aho  | hoj
115   4 | ahoj | ahoj
116   5 | ahoj | ahoj
117 (11 rows)
119 select quote_literal('');
120  quote_literal 
121 ---------------
122  ''
123 (1 row)
125 select quote_literal('abc''');
126  quote_literal 
127 ---------------
128  'abc'''
129 (1 row)
131 select quote_literal(e'\\');
132  quote_literal 
133 ---------------
134  E'\\'
135 (1 row)
137 -- check variadic labeled argument
138 select concat(variadic array[1,2,3]);
139  concat 
140 --------
141  123
142 (1 row)
144 select concat_ws(',', variadic array[1,2,3]);
145  concat_ws 
146 -----------
147  1,2,3
148 (1 row)
150 select concat_ws(',', variadic NULL::int[]);
151  concat_ws 
152 -----------
154 (1 row)
156 select concat(variadic NULL::int[]) is NULL;
157  ?column? 
158 ----------
160 (1 row)
162 select concat(variadic '{}'::int[]) = '';
163  ?column? 
164 ----------
166 (1 row)
168 --should fail
169 select concat_ws(',', variadic 10);
170 ERROR:  VARIADIC argument must be an array
171 LINE 1: select concat_ws(',', variadic 10);
172                                        ^
174  * format
175  */
176 select format(NULL);
177  format 
178 --------
180 (1 row)
182 select format('Hello');
183  format 
184 --------
185  Hello
186 (1 row)
188 select format('Hello %s', 'World');
189    format    
190 -------------
191  Hello World
192 (1 row)
194 select format('Hello %%');
195  format  
196 ---------
197  Hello %
198 (1 row)
200 select format('Hello %%%%');
201   format  
202 ----------
203  Hello %%
204 (1 row)
206 -- should fail
207 select format('Hello %s %s', 'World');
208 ERROR:  too few arguments for format()
209 select format('Hello %s');
210 ERROR:  too few arguments for format()
211 select format('Hello %x', 20);
212 ERROR:  unrecognized format() type specifier "x"
213 HINT:  For a single "%" use "%%".
214 -- check literal and sql identifiers
215 select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, 'Hello');
216                  format                 
217 ----------------------------------------
218  INSERT INTO mytab VALUES('10','Hello')
219 (1 row)
221 select format('%s%s%s','Hello', NULL,'World');
222    format   
223 ------------
224  HelloWorld
225 (1 row)
227 select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, NULL);
228                format                
229 -------------------------------------
230  INSERT INTO mytab VALUES('10',NULL)
231 (1 row)
233 select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', NULL, 'Hello');
234                  format                 
235 ----------------------------------------
236  INSERT INTO mytab VALUES(NULL,'Hello')
237 (1 row)
239 -- should fail, sql identifier cannot be NULL
240 select format('INSERT INTO %I VALUES(%L,%L)', NULL, 10, 'Hello');
241 ERROR:  null values cannot be formatted as an SQL identifier
242 -- check positional placeholders
243 select format('%1$s %3$s', 1, 2, 3);
244  format 
245 --------
246  1 3
247 (1 row)
249 select format('%1$s %12$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
250  format 
251 --------
252  1 12
253 (1 row)
255 -- should fail
256 select format('%1$s %4$s', 1, 2, 3);
257 ERROR:  too few arguments for format()
258 select format('%1$s %13$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
259 ERROR:  too few arguments for format()
260 select format('%0$s', 'Hello');
261 ERROR:  format specifies argument 0, but arguments are numbered from 1
262 select format('%*0$s', 'Hello');
263 ERROR:  format specifies argument 0, but arguments are numbered from 1
264 select format('%1$', 1);
265 ERROR:  unterminated format() type specifier
266 HINT:  For a single "%" use "%%".
267 select format('%1$1', 1);
268 ERROR:  unterminated format() type specifier
269 HINT:  For a single "%" use "%%".
270 -- check mix of positional and ordered placeholders
271 select format('Hello %s %1$s %s', 'World', 'Hello again');
272             format             
273 -------------------------------
274  Hello World World Hello again
275 (1 row)
277 select format('Hello %s %s, %2$s %2$s', 'World', 'Hello again');
278                       format                      
279 --------------------------------------------------
280  Hello World Hello again, Hello again Hello again
281 (1 row)
283 -- check variadic labeled arguments
284 select format('%s, %s', variadic array['Hello','World']);
285     format    
286 --------------
287  Hello, World
288 (1 row)
290 select format('%s, %s', variadic array[1, 2]);
291  format 
292 --------
293  1, 2
294 (1 row)
296 select format('%s, %s', variadic array[true, false]);
297  format 
298 --------
299  t, f
300 (1 row)
302 select format('%s, %s', variadic array[true, false]::text[]);
303    format    
304 -------------
305  true, false
306 (1 row)
308 -- check variadic with positional placeholders
309 select format('%2$s, %1$s', variadic array['first', 'second']);
310     format     
311 ---------------
312  second, first
313 (1 row)
315 select format('%2$s, %1$s', variadic array[1, 2]);
316  format 
317 --------
318  2, 1
319 (1 row)
321 -- variadic argument can be array type NULL, but should not be referenced
322 select format('Hello', variadic NULL::int[]);
323  format 
324 --------
325  Hello
326 (1 row)
328 -- variadic argument allows simulating more than FUNC_MAX_ARGS parameters
329 select format(string_agg('%s',','), variadic array_agg(i))
330 from generate_series(1,200) g(i);
331                                                                                                                                                                                                                                                                                                                                                        format                                                                                                                                                                                                                                                                                                                                                        
332 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
333  1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200
334 (1 row)
336 -- check field widths and left, right alignment
337 select format('>>%10s<<', 'Hello');
338      format     
339 ----------------
340  >>     Hello<<
341 (1 row)
343 select format('>>%10s<<', NULL);
344      format     
345 ----------------
346  >>          <<
347 (1 row)
349 select format('>>%10s<<', '');
350      format     
351 ----------------
352  >>          <<
353 (1 row)
355 select format('>>%-10s<<', '');
356      format     
357 ----------------
358  >>          <<
359 (1 row)
361 select format('>>%-10s<<', 'Hello');
362      format     
363 ----------------
364  >>Hello     <<
365 (1 row)
367 select format('>>%-10s<<', NULL);
368      format     
369 ----------------
370  >>          <<
371 (1 row)
373 select format('>>%1$10s<<', 'Hello');
374      format     
375 ----------------
376  >>     Hello<<
377 (1 row)
379 select format('>>%1$-10I<<', 'Hello');
380      format     
381 ----------------
382  >>"Hello"   <<
383 (1 row)
385 select format('>>%2$*1$L<<', 10, 'Hello');
386      format     
387 ----------------
388  >>   'Hello'<<
389 (1 row)
391 select format('>>%2$*1$L<<', 10, NULL);
392      format     
393 ----------------
394  >>      NULL<<
395 (1 row)
397 select format('>>%2$*1$L<<', -10, NULL);
398      format     
399 ----------------
400  >>NULL      <<
401 (1 row)
403 select format('>>%*s<<', 10, 'Hello');
404      format     
405 ----------------
406  >>     Hello<<
407 (1 row)
409 select format('>>%*1$s<<', 10, 'Hello');
410      format     
411 ----------------
412  >>     Hello<<
413 (1 row)
415 select format('>>%-s<<', 'Hello');
416   format   
417 -----------
418  >>Hello<<
419 (1 row)
421 select format('>>%10L<<', NULL);
422      format     
423 ----------------
424  >>      NULL<<
425 (1 row)
427 select format('>>%2$*1$L<<', NULL, 'Hello');
428    format    
429 -------------
430  >>'Hello'<<
431 (1 row)
433 select format('>>%2$*1$L<<', 0, 'Hello');
434    format    
435 -------------
436  >>'Hello'<<
437 (1 row)