Consistently use "superuser" instead of "super user"
[pgsql.git] / src / test / regress / expected / int8.out
blob36540ec456399fb729cede40bd4c5cba5ee7a4be
1 --
2 -- INT8
3 -- Test int8 64-bit integers.
4 --
5 CREATE TABLE INT8_TBL(q1 int8, q2 int8);
6 INSERT INTO INT8_TBL VALUES('  123   ','  456');
7 INSERT INTO INT8_TBL VALUES('123   ','4567890123456789');
8 INSERT INTO INT8_TBL VALUES('4567890123456789','123');
9 INSERT INTO INT8_TBL VALUES(+4567890123456789,'4567890123456789');
10 INSERT INTO INT8_TBL VALUES('+4567890123456789','-4567890123456789');
11 -- bad inputs
12 INSERT INTO INT8_TBL(q1) VALUES ('      ');
13 ERROR:  invalid input syntax for type bigint: "      "
14 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('      ');
15                                          ^
16 INSERT INTO INT8_TBL(q1) VALUES ('xxx');
17 ERROR:  invalid input syntax for type bigint: "xxx"
18 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('xxx');
19                                          ^
20 INSERT INTO INT8_TBL(q1) VALUES ('3908203590239580293850293850329485');
21 ERROR:  value "3908203590239580293850293850329485" is out of range for type bigint
22 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('39082035902395802938502938...
23                                          ^
24 INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340329840934');
25 ERROR:  value "-1204982019841029840928340329840934" is out of range for type bigint
26 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('-1204982019841029840928340...
27                                          ^
28 INSERT INTO INT8_TBL(q1) VALUES ('- 123');
29 ERROR:  invalid input syntax for type bigint: "- 123"
30 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('- 123');
31                                          ^
32 INSERT INTO INT8_TBL(q1) VALUES ('  345     5');
33 ERROR:  invalid input syntax for type bigint: "  345     5"
34 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('  345     5');
35                                          ^
36 INSERT INTO INT8_TBL(q1) VALUES ('');
37 ERROR:  invalid input syntax for type bigint: ""
38 LINE 1: INSERT INTO INT8_TBL(q1) VALUES ('');
39                                          ^
40 SELECT * FROM INT8_TBL;
41         q1        |        q2         
42 ------------------+-------------------
43               123 |               456
44               123 |  4567890123456789
45  4567890123456789 |               123
46  4567890123456789 |  4567890123456789
47  4567890123456789 | -4567890123456789
48 (5 rows)
50 -- int8/int8 cmp
51 SELECT * FROM INT8_TBL WHERE q2 = 4567890123456789;
52         q1        |        q2        
53 ------------------+------------------
54               123 | 4567890123456789
55  4567890123456789 | 4567890123456789
56 (2 rows)
58 SELECT * FROM INT8_TBL WHERE q2 <> 4567890123456789;
59         q1        |        q2         
60 ------------------+-------------------
61               123 |               456
62  4567890123456789 |               123
63  4567890123456789 | -4567890123456789
64 (3 rows)
66 SELECT * FROM INT8_TBL WHERE q2 < 4567890123456789;
67         q1        |        q2         
68 ------------------+-------------------
69               123 |               456
70  4567890123456789 |               123
71  4567890123456789 | -4567890123456789
72 (3 rows)
74 SELECT * FROM INT8_TBL WHERE q2 > 4567890123456789;
75  q1 | q2 
76 ----+----
77 (0 rows)
79 SELECT * FROM INT8_TBL WHERE q2 <= 4567890123456789;
80         q1        |        q2         
81 ------------------+-------------------
82               123 |               456
83               123 |  4567890123456789
84  4567890123456789 |               123
85  4567890123456789 |  4567890123456789
86  4567890123456789 | -4567890123456789
87 (5 rows)
89 SELECT * FROM INT8_TBL WHERE q2 >= 4567890123456789;
90         q1        |        q2        
91 ------------------+------------------
92               123 | 4567890123456789
93  4567890123456789 | 4567890123456789
94 (2 rows)
96 -- int8/int4 cmp
97 SELECT * FROM INT8_TBL WHERE q2 = 456;
98  q1  | q2  
99 -----+-----
100  123 | 456
101 (1 row)
103 SELECT * FROM INT8_TBL WHERE q2 <> 456;
104         q1        |        q2         
105 ------------------+-------------------
106               123 |  4567890123456789
107  4567890123456789 |               123
108  4567890123456789 |  4567890123456789
109  4567890123456789 | -4567890123456789
110 (4 rows)
112 SELECT * FROM INT8_TBL WHERE q2 < 456;
113         q1        |        q2         
114 ------------------+-------------------
115  4567890123456789 |               123
116  4567890123456789 | -4567890123456789
117 (2 rows)
119 SELECT * FROM INT8_TBL WHERE q2 > 456;
120         q1        |        q2        
121 ------------------+------------------
122               123 | 4567890123456789
123  4567890123456789 | 4567890123456789
124 (2 rows)
126 SELECT * FROM INT8_TBL WHERE q2 <= 456;
127         q1        |        q2         
128 ------------------+-------------------
129               123 |               456
130  4567890123456789 |               123
131  4567890123456789 | -4567890123456789
132 (3 rows)
134 SELECT * FROM INT8_TBL WHERE q2 >= 456;
135         q1        |        q2        
136 ------------------+------------------
137               123 |              456
138               123 | 4567890123456789
139  4567890123456789 | 4567890123456789
140 (3 rows)
142 -- int4/int8 cmp
143 SELECT * FROM INT8_TBL WHERE 123 = q1;
144  q1  |        q2        
145 -----+------------------
146  123 |              456
147  123 | 4567890123456789
148 (2 rows)
150 SELECT * FROM INT8_TBL WHERE 123 <> q1;
151         q1        |        q2         
152 ------------------+-------------------
153  4567890123456789 |               123
154  4567890123456789 |  4567890123456789
155  4567890123456789 | -4567890123456789
156 (3 rows)
158 SELECT * FROM INT8_TBL WHERE 123 < q1;
159         q1        |        q2         
160 ------------------+-------------------
161  4567890123456789 |               123
162  4567890123456789 |  4567890123456789
163  4567890123456789 | -4567890123456789
164 (3 rows)
166 SELECT * FROM INT8_TBL WHERE 123 > q1;
167  q1 | q2 
168 ----+----
169 (0 rows)
171 SELECT * FROM INT8_TBL WHERE 123 <= q1;
172         q1        |        q2         
173 ------------------+-------------------
174               123 |               456
175               123 |  4567890123456789
176  4567890123456789 |               123
177  4567890123456789 |  4567890123456789
178  4567890123456789 | -4567890123456789
179 (5 rows)
181 SELECT * FROM INT8_TBL WHERE 123 >= q1;
182  q1  |        q2        
183 -----+------------------
184  123 |              456
185  123 | 4567890123456789
186 (2 rows)
188 -- int8/int2 cmp
189 SELECT * FROM INT8_TBL WHERE q2 = '456'::int2;
190  q1  | q2  
191 -----+-----
192  123 | 456
193 (1 row)
195 SELECT * FROM INT8_TBL WHERE q2 <> '456'::int2;
196         q1        |        q2         
197 ------------------+-------------------
198               123 |  4567890123456789
199  4567890123456789 |               123
200  4567890123456789 |  4567890123456789
201  4567890123456789 | -4567890123456789
202 (4 rows)
204 SELECT * FROM INT8_TBL WHERE q2 < '456'::int2;
205         q1        |        q2         
206 ------------------+-------------------
207  4567890123456789 |               123
208  4567890123456789 | -4567890123456789
209 (2 rows)
211 SELECT * FROM INT8_TBL WHERE q2 > '456'::int2;
212         q1        |        q2        
213 ------------------+------------------
214               123 | 4567890123456789
215  4567890123456789 | 4567890123456789
216 (2 rows)
218 SELECT * FROM INT8_TBL WHERE q2 <= '456'::int2;
219         q1        |        q2         
220 ------------------+-------------------
221               123 |               456
222  4567890123456789 |               123
223  4567890123456789 | -4567890123456789
224 (3 rows)
226 SELECT * FROM INT8_TBL WHERE q2 >= '456'::int2;
227         q1        |        q2        
228 ------------------+------------------
229               123 |              456
230               123 | 4567890123456789
231  4567890123456789 | 4567890123456789
232 (3 rows)
234 -- int2/int8 cmp
235 SELECT * FROM INT8_TBL WHERE '123'::int2 = q1;
236  q1  |        q2        
237 -----+------------------
238  123 |              456
239  123 | 4567890123456789
240 (2 rows)
242 SELECT * FROM INT8_TBL WHERE '123'::int2 <> q1;
243         q1        |        q2         
244 ------------------+-------------------
245  4567890123456789 |               123
246  4567890123456789 |  4567890123456789
247  4567890123456789 | -4567890123456789
248 (3 rows)
250 SELECT * FROM INT8_TBL WHERE '123'::int2 < q1;
251         q1        |        q2         
252 ------------------+-------------------
253  4567890123456789 |               123
254  4567890123456789 |  4567890123456789
255  4567890123456789 | -4567890123456789
256 (3 rows)
258 SELECT * FROM INT8_TBL WHERE '123'::int2 > q1;
259  q1 | q2 
260 ----+----
261 (0 rows)
263 SELECT * FROM INT8_TBL WHERE '123'::int2 <= q1;
264         q1        |        q2         
265 ------------------+-------------------
266               123 |               456
267               123 |  4567890123456789
268  4567890123456789 |               123
269  4567890123456789 |  4567890123456789
270  4567890123456789 | -4567890123456789
271 (5 rows)
273 SELECT * FROM INT8_TBL WHERE '123'::int2 >= q1;
274  q1  |        q2        
275 -----+------------------
276  123 |              456
277  123 | 4567890123456789
278 (2 rows)
280 SELECT q1 AS plus, -q1 AS minus FROM INT8_TBL;
281        plus       |       minus       
282 ------------------+-------------------
283               123 |              -123
284               123 |              -123
285  4567890123456789 | -4567890123456789
286  4567890123456789 | -4567890123456789
287  4567890123456789 | -4567890123456789
288 (5 rows)
290 SELECT q1, q2, q1 + q2 AS plus FROM INT8_TBL;
291         q1        |        q2         |       plus       
292 ------------------+-------------------+------------------
293               123 |               456 |              579
294               123 |  4567890123456789 | 4567890123456912
295  4567890123456789 |               123 | 4567890123456912
296  4567890123456789 |  4567890123456789 | 9135780246913578
297  4567890123456789 | -4567890123456789 |                0
298 (5 rows)
300 SELECT q1, q2, q1 - q2 AS minus FROM INT8_TBL;
301         q1        |        q2         |       minus       
302 ------------------+-------------------+-------------------
303               123 |               456 |              -333
304               123 |  4567890123456789 | -4567890123456666
305  4567890123456789 |               123 |  4567890123456666
306  4567890123456789 |  4567890123456789 |                 0
307  4567890123456789 | -4567890123456789 |  9135780246913578
308 (5 rows)
310 SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL;
311 ERROR:  bigint out of range
312 SELECT q1, q2, q1 * q2 AS multiply FROM INT8_TBL
313  WHERE q1 < 1000 or (q2 > 0 and q2 < 1000);
314         q1        |        q2        |      multiply      
315 ------------------+------------------+--------------------
316               123 |              456 |              56088
317               123 | 4567890123456789 | 561850485185185047
318  4567890123456789 |              123 | 561850485185185047
319 (3 rows)
321 SELECT q1, q2, q1 / q2 AS divide, q1 % q2 AS mod FROM INT8_TBL;
322         q1        |        q2         |     divide     | mod 
323 ------------------+-------------------+----------------+-----
324               123 |               456 |              0 | 123
325               123 |  4567890123456789 |              0 | 123
326  4567890123456789 |               123 | 37137318076884 |  57
327  4567890123456789 |  4567890123456789 |              1 |   0
328  4567890123456789 | -4567890123456789 |             -1 |   0
329 (5 rows)
331 SELECT q1, float8(q1) FROM INT8_TBL;
332         q1        |        float8         
333 ------------------+-----------------------
334               123 |                   123
335               123 |                   123
336  4567890123456789 | 4.567890123456789e+15
337  4567890123456789 | 4.567890123456789e+15
338  4567890123456789 | 4.567890123456789e+15
339 (5 rows)
341 SELECT q2, float8(q2) FROM INT8_TBL;
342         q2         |         float8         
343 -------------------+------------------------
344                456 |                    456
345   4567890123456789 |  4.567890123456789e+15
346                123 |                    123
347   4567890123456789 |  4.567890123456789e+15
348  -4567890123456789 | -4.567890123456789e+15
349 (5 rows)
351 SELECT 37 + q1 AS plus4 FROM INT8_TBL;
352       plus4       
353 ------------------
354               160
355               160
356  4567890123456826
357  4567890123456826
358  4567890123456826
359 (5 rows)
361 SELECT 37 - q1 AS minus4 FROM INT8_TBL;
362       minus4       
363 -------------------
364                -86
365                -86
366  -4567890123456752
367  -4567890123456752
368  -4567890123456752
369 (5 rows)
371 SELECT 2 * q1 AS "twice int4" FROM INT8_TBL;
372     twice int4    
373 ------------------
374               246
375               246
376  9135780246913578
377  9135780246913578
378  9135780246913578
379 (5 rows)
381 SELECT q1 * 2 AS "twice int4" FROM INT8_TBL;
382     twice int4    
383 ------------------
384               246
385               246
386  9135780246913578
387  9135780246913578
388  9135780246913578
389 (5 rows)
391 -- int8 op int4
392 SELECT q1 + 42::int4 AS "8plus4", q1 - 42::int4 AS "8minus4", q1 * 42::int4 AS "8mul4", q1 / 42::int4 AS "8div4" FROM INT8_TBL;
393       8plus4      |     8minus4      |       8mul4        |      8div4      
394 ------------------+------------------+--------------------+-----------------
395               165 |               81 |               5166 |               2
396               165 |               81 |               5166 |               2
397  4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
398  4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
399  4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
400 (5 rows)
402 -- int4 op int8
403 SELECT 246::int4 + q1 AS "4plus8", 246::int4 - q1 AS "4minus8", 246::int4 * q1 AS "4mul8", 246::int4 / q1 AS "4div8" FROM INT8_TBL;
404       4plus8      |      4minus8      |        4mul8        | 4div8 
405 ------------------+-------------------+---------------------+-------
406               369 |               123 |               30258 |     2
407               369 |               123 |               30258 |     2
408  4567890123457035 | -4567890123456543 | 1123700970370370094 |     0
409  4567890123457035 | -4567890123456543 | 1123700970370370094 |     0
410  4567890123457035 | -4567890123456543 | 1123700970370370094 |     0
411 (5 rows)
413 -- int8 op int2
414 SELECT q1 + 42::int2 AS "8plus2", q1 - 42::int2 AS "8minus2", q1 * 42::int2 AS "8mul2", q1 / 42::int2 AS "8div2" FROM INT8_TBL;
415       8plus2      |     8minus2      |       8mul2        |      8div2      
416 ------------------+------------------+--------------------+-----------------
417               165 |               81 |               5166 |               2
418               165 |               81 |               5166 |               2
419  4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
420  4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
421  4567890123456831 | 4567890123456747 | 191851385185185138 | 108759288653733
422 (5 rows)
424 -- int2 op int8
425 SELECT 246::int2 + q1 AS "2plus8", 246::int2 - q1 AS "2minus8", 246::int2 * q1 AS "2mul8", 246::int2 / q1 AS "2div8" FROM INT8_TBL;
426       2plus8      |      2minus8      |        2mul8        | 2div8 
427 ------------------+-------------------+---------------------+-------
428               369 |               123 |               30258 |     2
429               369 |               123 |               30258 |     2
430  4567890123457035 | -4567890123456543 | 1123700970370370094 |     0
431  4567890123457035 | -4567890123456543 | 1123700970370370094 |     0
432  4567890123457035 | -4567890123456543 | 1123700970370370094 |     0
433 (5 rows)
435 SELECT q2, abs(q2) FROM INT8_TBL;
436         q2         |       abs        
437 -------------------+------------------
438                456 |              456
439   4567890123456789 | 4567890123456789
440                123 |              123
441   4567890123456789 | 4567890123456789
442  -4567890123456789 | 4567890123456789
443 (5 rows)
445 SELECT min(q1), min(q2) FROM INT8_TBL;
446  min |        min        
447 -----+-------------------
448  123 | -4567890123456789
449 (1 row)
451 SELECT max(q1), max(q2) FROM INT8_TBL;
452        max        |       max        
453 ------------------+------------------
454  4567890123456789 | 4567890123456789
455 (1 row)
457 -- TO_CHAR()
459 SELECT to_char(q1, '9G999G999G999G999G999'), to_char(q2, '9,999,999,999,999,999')
460         FROM INT8_TBL;
461         to_char         |        to_char         
462 ------------------------+------------------------
463                     123 |                    456
464                     123 |  4,567,890,123,456,789
465   4,567,890,123,456,789 |                    123
466   4,567,890,123,456,789 |  4,567,890,123,456,789
467   4,567,890,123,456,789 | -4,567,890,123,456,789
468 (5 rows)
470 SELECT to_char(q1, '9G999G999G999G999G999D999G999'), to_char(q2, '9,999,999,999,999,999.999,999')
471         FROM INT8_TBL;
472             to_char             |            to_char             
473 --------------------------------+--------------------------------
474                     123.000,000 |                    456.000,000
475                     123.000,000 |  4,567,890,123,456,789.000,000
476   4,567,890,123,456,789.000,000 |                    123.000,000
477   4,567,890,123,456,789.000,000 |  4,567,890,123,456,789.000,000
478   4,567,890,123,456,789.000,000 | -4,567,890,123,456,789.000,000
479 (5 rows)
481 SELECT to_char( (q1 * -1), '9999999999999999PR'), to_char( (q2 * -1), '9999999999999999.999PR')
482         FROM INT8_TBL;
483       to_char       |        to_char         
484 --------------------+------------------------
485               <123> |              <456.000>
486               <123> | <4567890123456789.000>
487  <4567890123456789> |              <123.000>
488  <4567890123456789> | <4567890123456789.000>
489  <4567890123456789> |  4567890123456789.000 
490 (5 rows)
492 SELECT to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 * -1), 'S9999999999999999')
493         FROM INT8_TBL;
494       to_char      |      to_char      
495 -------------------+-------------------
496               123- |              -456
497               123- | -4567890123456789
498  4567890123456789- |              -123
499  4567890123456789- | -4567890123456789
500  4567890123456789- | +4567890123456789
501 (5 rows)
503 SELECT to_char(q2, 'MI9999999999999999')     FROM INT8_TBL;
504       to_char      
505 -------------------
506                456
507   4567890123456789
508                123
509   4567890123456789
510  -4567890123456789
511 (5 rows)
513 SELECT to_char(q2, 'FMS9999999999999999')    FROM INT8_TBL;
514       to_char      
515 -------------------
516  +456
517  +4567890123456789
518  +123
519  +4567890123456789
520  -4567890123456789
521 (5 rows)
523 SELECT to_char(q2, 'FM9999999999999999THPR') FROM INT8_TBL;
524       to_char       
525 --------------------
526  456TH
527  4567890123456789TH
528  123RD
529  4567890123456789TH
530  <4567890123456789>
531 (5 rows)
533 SELECT to_char(q2, 'SG9999999999999999th')   FROM INT8_TBL;
534        to_char       
535 ---------------------
536  +             456th
537  +4567890123456789th
538  +             123rd
539  +4567890123456789th
540  -4567890123456789
541 (5 rows)
543 SELECT to_char(q2, '0999999999999999')       FROM INT8_TBL;
544       to_char      
545 -------------------
546   0000000000000456
547   4567890123456789
548   0000000000000123
549   4567890123456789
550  -4567890123456789
551 (5 rows)
553 SELECT to_char(q2, 'S0999999999999999')      FROM INT8_TBL;
554       to_char      
555 -------------------
556  +0000000000000456
557  +4567890123456789
558  +0000000000000123
559  +4567890123456789
560  -4567890123456789
561 (5 rows)
563 SELECT to_char(q2, 'FM0999999999999999')     FROM INT8_TBL;
564       to_char      
565 -------------------
566  0000000000000456
567  4567890123456789
568  0000000000000123
569  4567890123456789
570  -4567890123456789
571 (5 rows)
573 SELECT to_char(q2, 'FM9999999999999999.000') FROM INT8_TBL;
574         to_char        
575 -----------------------
576  456.000
577  4567890123456789.000
578  123.000
579  4567890123456789.000
580  -4567890123456789.000
581 (5 rows)
583 SELECT to_char(q2, 'L9999999999999999.000')  FROM INT8_TBL;
584         to_char         
585 ------------------------
586                 456.000
587    4567890123456789.000
588                 123.000
589    4567890123456789.000
590   -4567890123456789.000
591 (5 rows)
593 SELECT to_char(q2, 'FM9999999999999999.999') FROM INT8_TBL;
594       to_char       
595 --------------------
596  456.
597  4567890123456789.
598  123.
599  4567890123456789.
600  -4567890123456789.
601 (5 rows)
603 SELECT to_char(q2, 'S 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 . 9 9 9') FROM INT8_TBL;
604                   to_char                  
605 -------------------------------------------
606                             +4 5 6 . 0 0 0
607   +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
608                             +1 2 3 . 0 0 0
609   +4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
610   -4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 . 0 0 0
611 (5 rows)
613 SELECT to_char(q2, E'99999 "text" 9999 "9999" 999 "\\"text between quote marks\\"" 9999') FROM INT8_TBL;
614                           to_char                          
615 -----------------------------------------------------------
616        text      9999     "text between quote marks"   456
617   45678 text 9012 9999 345 "text between quote marks" 6789
618        text      9999     "text between quote marks"   123
619   45678 text 9012 9999 345 "text between quote marks" 6789
620  -45678 text 9012 9999 345 "text between quote marks" 6789
621 (5 rows)
623 SELECT to_char(q2, '999999SG9999999999')     FROM INT8_TBL;
624       to_char      
625 -------------------
626        +       456
627  456789+0123456789
628        +       123
629  456789+0123456789
630  456789-0123456789
631 (5 rows)
633 -- check min/max values and overflow behavior
634 select '-9223372036854775808'::int8;
635          int8         
636 ----------------------
637  -9223372036854775808
638 (1 row)
640 select '-9223372036854775809'::int8;
641 ERROR:  value "-9223372036854775809" is out of range for type bigint
642 LINE 1: select '-9223372036854775809'::int8;
643                ^
644 select '9223372036854775807'::int8;
645         int8         
646 ---------------------
647  9223372036854775807
648 (1 row)
650 select '9223372036854775808'::int8;
651 ERROR:  value "9223372036854775808" is out of range for type bigint
652 LINE 1: select '9223372036854775808'::int8;
653                ^
654 select -('-9223372036854775807'::int8);
655       ?column?       
656 ---------------------
657  9223372036854775807
658 (1 row)
660 select -('-9223372036854775808'::int8);
661 ERROR:  bigint out of range
662 select '9223372036854775800'::int8 + '9223372036854775800'::int8;
663 ERROR:  bigint out of range
664 select '-9223372036854775800'::int8 + '-9223372036854775800'::int8;
665 ERROR:  bigint out of range
666 select '9223372036854775800'::int8 - '-9223372036854775800'::int8;
667 ERROR:  bigint out of range
668 select '-9223372036854775800'::int8 - '9223372036854775800'::int8;
669 ERROR:  bigint out of range
670 select '9223372036854775800'::int8 * '9223372036854775800'::int8;
671 ERROR:  bigint out of range
672 select '9223372036854775800'::int8 / '0'::int8;
673 ERROR:  division by zero
674 select '9223372036854775800'::int8 % '0'::int8;
675 ERROR:  division by zero
676 select abs('-9223372036854775808'::int8);
677 ERROR:  bigint out of range
678 select '9223372036854775800'::int8 + '100'::int4;
679 ERROR:  bigint out of range
680 select '-9223372036854775800'::int8 - '100'::int4;
681 ERROR:  bigint out of range
682 select '9223372036854775800'::int8 * '100'::int4;
683 ERROR:  bigint out of range
684 select '100'::int4 + '9223372036854775800'::int8;
685 ERROR:  bigint out of range
686 select '-100'::int4 - '9223372036854775800'::int8;
687 ERROR:  bigint out of range
688 select '100'::int4 * '9223372036854775800'::int8;
689 ERROR:  bigint out of range
690 select '9223372036854775800'::int8 + '100'::int2;
691 ERROR:  bigint out of range
692 select '-9223372036854775800'::int8 - '100'::int2;
693 ERROR:  bigint out of range
694 select '9223372036854775800'::int8 * '100'::int2;
695 ERROR:  bigint out of range
696 select '-9223372036854775808'::int8 / '0'::int2;
697 ERROR:  division by zero
698 select '100'::int2 + '9223372036854775800'::int8;
699 ERROR:  bigint out of range
700 select '-100'::int2 - '9223372036854775800'::int8;
701 ERROR:  bigint out of range
702 select '100'::int2 * '9223372036854775800'::int8;
703 ERROR:  bigint out of range
704 select '100'::int2 / '0'::int8;
705 ERROR:  division by zero
706 SELECT CAST(q1 AS int4) FROM int8_tbl WHERE q2 = 456;
707  q1  
708 -----
709  123
710 (1 row)
712 SELECT CAST(q1 AS int4) FROM int8_tbl WHERE q2 <> 456;
713 ERROR:  integer out of range
714 SELECT CAST(q1 AS int2) FROM int8_tbl WHERE q2 = 456;
715  q1  
716 -----
717  123
718 (1 row)
720 SELECT CAST(q1 AS int2) FROM int8_tbl WHERE q2 <> 456;
721 ERROR:  smallint out of range
722 SELECT CAST('42'::int2 AS int8), CAST('-37'::int2 AS int8);
723  int8 | int8 
724 ------+------
725    42 |  -37
726 (1 row)
728 SELECT CAST(q1 AS float4), CAST(q2 AS float8) FROM INT8_TBL;
729      q1      |           q2           
730 -------------+------------------------
731          123 |                    456
732          123 |  4.567890123456789e+15
733  4.56789e+15 |                    123
734  4.56789e+15 |  4.567890123456789e+15
735  4.56789e+15 | -4.567890123456789e+15
736 (5 rows)
738 SELECT CAST('36854775807.0'::float4 AS int8);
739     int8     
740 -------------
741  36854775808
742 (1 row)
744 SELECT CAST('922337203685477580700.0'::float8 AS int8);
745 ERROR:  bigint out of range
746 SELECT CAST(q1 AS oid) FROM INT8_TBL;
747 ERROR:  OID out of range
748 SELECT oid::int8 FROM pg_class WHERE relname = 'pg_class';
749  oid  
750 ------
751  1259
752 (1 row)
754 -- bit operations
755 SELECT q1, q2, q1 & q2 AS "and", q1 | q2 AS "or", q1 # q2 AS "xor", ~q1 AS "not" FROM INT8_TBL;
756         q1        |        q2         |       and        |        or        |       xor        |        not        
757 ------------------+-------------------+------------------+------------------+------------------+-------------------
758               123 |               456 |               72 |              507 |              435 |              -124
759               123 |  4567890123456789 |               17 | 4567890123456895 | 4567890123456878 |              -124
760  4567890123456789 |               123 |               17 | 4567890123456895 | 4567890123456878 | -4567890123456790
761  4567890123456789 |  4567890123456789 | 4567890123456789 | 4567890123456789 |                0 | -4567890123456790
762  4567890123456789 | -4567890123456789 |                1 |               -1 |               -2 | -4567890123456790
763 (5 rows)
765 SELECT q1, q1 << 2 AS "shl", q1 >> 3 AS "shr" FROM INT8_TBL;
766         q1        |        shl        |       shr       
767 ------------------+-------------------+-----------------
768               123 |               492 |              15
769               123 |               492 |              15
770  4567890123456789 | 18271560493827156 | 570986265432098
771  4567890123456789 | 18271560493827156 | 570986265432098
772  4567890123456789 | 18271560493827156 | 570986265432098
773 (5 rows)
775 -- generate_series
776 SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8);
777  generate_series  
778 ------------------
779  4567890123456789
780  4567890123456790
781  4567890123456791
782  4567890123456792
783  4567890123456793
784  4567890123456794
785  4567890123456795
786  4567890123456796
787  4567890123456797
788  4567890123456798
789  4567890123456799
790 (11 rows)
792 SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 0);
793 ERROR:  step size cannot equal zero
794 SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::int8, 2);
795  generate_series  
796 ------------------
797  4567890123456789
798  4567890123456791
799  4567890123456793
800  4567890123456795
801  4567890123456797
802  4567890123456799
803 (6 rows)
805 -- corner case
806 SELECT (-1::int8<<63)::text;
807          text         
808 ----------------------
809  -9223372036854775808
810 (1 row)
812 SELECT ((-1::int8<<63)+1)::text;
813          text         
814 ----------------------
815  -9223372036854775807
816 (1 row)
818 -- check sane handling of INT64_MIN overflow cases
819 SELECT (-9223372036854775808)::int8 * (-1)::int8;
820 ERROR:  bigint out of range
821 SELECT (-9223372036854775808)::int8 / (-1)::int8;
822 ERROR:  bigint out of range
823 SELECT (-9223372036854775808)::int8 % (-1)::int8;
824  ?column? 
825 ----------
826         0
827 (1 row)
829 SELECT (-9223372036854775808)::int8 * (-1)::int4;
830 ERROR:  bigint out of range
831 SELECT (-9223372036854775808)::int8 / (-1)::int4;
832 ERROR:  bigint out of range
833 SELECT (-9223372036854775808)::int8 % (-1)::int4;
834  ?column? 
835 ----------
836         0
837 (1 row)
839 SELECT (-9223372036854775808)::int8 * (-1)::int2;
840 ERROR:  bigint out of range
841 SELECT (-9223372036854775808)::int8 / (-1)::int2;
842 ERROR:  bigint out of range
843 SELECT (-9223372036854775808)::int8 % (-1)::int2;
844  ?column? 
845 ----------
846         0
847 (1 row)
849 -- check rounding when casting from float
850 SELECT x, x::int8 AS int8_value
851 FROM (VALUES (-2.5::float8),
852              (-1.5::float8),
853              (-0.5::float8),
854              (0.0::float8),
855              (0.5::float8),
856              (1.5::float8),
857              (2.5::float8)) t(x);
858   x   | int8_value 
859 ------+------------
860  -2.5 |         -2
861  -1.5 |         -2
862  -0.5 |          0
863     0 |          0
864   0.5 |          0
865   1.5 |          2
866   2.5 |          2
867 (7 rows)
869 -- check rounding when casting from numeric
870 SELECT x, x::int8 AS int8_value
871 FROM (VALUES (-2.5::numeric),
872              (-1.5::numeric),
873              (-0.5::numeric),
874              (0.0::numeric),
875              (0.5::numeric),
876              (1.5::numeric),
877              (2.5::numeric)) t(x);
878   x   | int8_value 
879 ------+------------
880  -2.5 |         -3
881  -1.5 |         -2
882  -0.5 |         -1
883   0.0 |          0
884   0.5 |          1
885   1.5 |          2
886   2.5 |          3
887 (7 rows)
889 -- test gcd()
890 SELECT a, b, gcd(a, b), gcd(a, -b), gcd(b, a), gcd(-b, a)
891 FROM (VALUES (0::int8, 0::int8),
892              (0::int8, 29893644334::int8),
893              (288484263558::int8, 29893644334::int8),
894              (-288484263558::int8, 29893644334::int8),
895              ((-9223372036854775808)::int8, 1::int8),
896              ((-9223372036854775808)::int8, 9223372036854775807::int8),
897              ((-9223372036854775808)::int8, 4611686018427387904::int8)) AS v(a, b);
898           a           |          b          |         gcd         |         gcd         |         gcd         |         gcd         
899 ----------------------+---------------------+---------------------+---------------------+---------------------+---------------------
900                     0 |                   0 |                   0 |                   0 |                   0 |                   0
901                     0 |         29893644334 |         29893644334 |         29893644334 |         29893644334 |         29893644334
902          288484263558 |         29893644334 |             6835958 |             6835958 |             6835958 |             6835958
903         -288484263558 |         29893644334 |             6835958 |             6835958 |             6835958 |             6835958
904  -9223372036854775808 |                   1 |                   1 |                   1 |                   1 |                   1
905  -9223372036854775808 | 9223372036854775807 |                   1 |                   1 |                   1 |                   1
906  -9223372036854775808 | 4611686018427387904 | 4611686018427387904 | 4611686018427387904 | 4611686018427387904 | 4611686018427387904
907 (7 rows)
909 SELECT gcd((-9223372036854775808)::int8, 0::int8); -- overflow
910 ERROR:  bigint out of range
911 SELECT gcd((-9223372036854775808)::int8, (-9223372036854775808)::int8); -- overflow
912 ERROR:  bigint out of range
913 -- test lcm()
914 SELECT a, b, lcm(a, b), lcm(a, -b), lcm(b, a), lcm(-b, a)
915 FROM (VALUES (0::int8, 0::int8),
916              (0::int8, 29893644334::int8),
917              (29893644334::int8, 29893644334::int8),
918              (288484263558::int8, 29893644334::int8),
919              (-288484263558::int8, 29893644334::int8),
920              ((-9223372036854775808)::int8, 0::int8)) AS v(a, b);
921           a           |      b      |       lcm        |       lcm        |       lcm        |       lcm        
922 ----------------------+-------------+------------------+------------------+------------------+------------------
923                     0 |           0 |                0 |                0 |                0 |                0
924                     0 | 29893644334 |                0 |                0 |                0 |                0
925           29893644334 | 29893644334 |      29893644334 |      29893644334 |      29893644334 |      29893644334
926          288484263558 | 29893644334 | 1261541684539134 | 1261541684539134 | 1261541684539134 | 1261541684539134
927         -288484263558 | 29893644334 | 1261541684539134 | 1261541684539134 | 1261541684539134 | 1261541684539134
928  -9223372036854775808 |           0 |                0 |                0 |                0 |                0
929 (6 rows)
931 SELECT lcm((-9223372036854775808)::int8, 1::int8); -- overflow
932 ERROR:  bigint out of range
933 SELECT lcm(9223372036854775807::int8, 9223372036854775806::int8); -- overflow
934 ERROR:  bigint out of range