~ubuntu-branches/ubuntu/natty/postgresql-8.4/natty-updates

« back to all changes in this revision

Viewing changes to src/test/regress/expected/int4.out

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-03-20 12:00:13 UTC
  • Revision ID: james.westby@ubuntu.com-20090320120013-hogj7egc5mjncc5g
Tags: upstream-8.4~0cvs20090328
ImportĀ upstreamĀ versionĀ 8.4~0cvs20090328

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- INT4
 
3
-- WARNING: int4 operators never check for over/underflow!
 
4
-- Some of these answers are consequently numerically incorrect.
 
5
--
 
6
CREATE TABLE INT4_TBL(f1 int4);
 
7
INSERT INTO INT4_TBL(f1) VALUES ('   0  ');
 
8
INSERT INTO INT4_TBL(f1) VALUES ('123456     ');
 
9
INSERT INTO INT4_TBL(f1) VALUES ('    -123456');
 
10
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
 
11
ERROR:  invalid input syntax for integer: "34.5"
 
12
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('34.5');
 
13
                                         ^
 
14
-- largest and smallest values
 
15
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
 
16
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
 
17
-- bad input values -- should give errors
 
18
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
 
19
ERROR:  value "1000000000000" is out of range for type integer
 
20
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
 
21
                                         ^
 
22
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
 
23
ERROR:  invalid input syntax for integer: "asdf"
 
24
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('asdf');
 
25
                                         ^
 
26
INSERT INTO INT4_TBL(f1) VALUES ('     ');
 
27
ERROR:  invalid input syntax for integer: "     "
 
28
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('     ');
 
29
                                         ^
 
30
INSERT INTO INT4_TBL(f1) VALUES ('   asdf   ');
 
31
ERROR:  invalid input syntax for integer: "   asdf   "
 
32
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('   asdf   ');
 
33
                                         ^
 
34
INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
 
35
ERROR:  invalid input syntax for integer: "- 1234"
 
36
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
 
37
                                         ^
 
38
INSERT INTO INT4_TBL(f1) VALUES ('123       5');
 
39
ERROR:  invalid input syntax for integer: "123       5"
 
40
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('123       5');
 
41
                                         ^
 
42
INSERT INTO INT4_TBL(f1) VALUES ('');
 
43
ERROR:  invalid input syntax for integer: ""
 
44
LINE 1: INSERT INTO INT4_TBL(f1) VALUES ('');
 
45
                                         ^
 
46
SELECT '' AS five, * FROM INT4_TBL;
 
47
 five |     f1      
 
48
------+-------------
 
49
      |           0
 
50
      |      123456
 
51
      |     -123456
 
52
      |  2147483647
 
53
      | -2147483647
 
54
(5 rows)
 
55
 
 
56
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
 
57
 four |     f1      
 
58
------+-------------
 
59
      |      123456
 
60
      |     -123456
 
61
      |  2147483647
 
62
      | -2147483647
 
63
(4 rows)
 
64
 
 
65
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
 
66
 four |     f1      
 
67
------+-------------
 
68
      |      123456
 
69
      |     -123456
 
70
      |  2147483647
 
71
      | -2147483647
 
72
(4 rows)
 
73
 
 
74
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
 
75
 one | f1 
 
76
-----+----
 
77
     |  0
 
78
(1 row)
 
79
 
 
80
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
 
81
 one | f1 
 
82
-----+----
 
83
     |  0
 
84
(1 row)
 
85
 
 
86
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
 
87
 two |     f1      
 
88
-----+-------------
 
89
     |     -123456
 
90
     | -2147483647
 
91
(2 rows)
 
92
 
 
93
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
 
94
 two |     f1      
 
95
-----+-------------
 
96
     |     -123456
 
97
     | -2147483647
 
98
(2 rows)
 
99
 
 
100
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
 
101
 three |     f1      
 
102
-------+-------------
 
103
       |           0
 
104
       |     -123456
 
105
       | -2147483647
 
106
(3 rows)
 
107
 
 
108
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
 
109
 three |     f1      
 
110
-------+-------------
 
111
       |           0
 
112
       |     -123456
 
113
       | -2147483647
 
114
(3 rows)
 
115
 
 
116
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
 
117
 two |     f1     
 
118
-----+------------
 
119
     |     123456
 
120
     | 2147483647
 
121
(2 rows)
 
122
 
 
123
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
 
124
 two |     f1     
 
125
-----+------------
 
126
     |     123456
 
127
     | 2147483647
 
128
(2 rows)
 
129
 
 
130
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
 
131
 three |     f1     
 
132
-------+------------
 
133
       |          0
 
134
       |     123456
 
135
       | 2147483647
 
136
(3 rows)
 
137
 
 
138
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
 
139
 three |     f1     
 
140
-------+------------
 
141
       |          0
 
142
       |     123456
 
143
       | 2147483647
 
144
(3 rows)
 
145
 
 
146
-- positive odds
 
147
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
 
148
 one |     f1     
 
149
-----+------------
 
150
     | 2147483647
 
151
(1 row)
 
152
 
 
153
-- any evens
 
154
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
 
155
 three |   f1    
 
156
-------+---------
 
157
       |       0
 
158
       |  123456
 
159
       | -123456
 
160
(3 rows)
 
161
 
 
162
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
 
163
ERROR:  integer out of range
 
164
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
 
165
WHERE abs(f1) < 1073741824;
 
166
 five |   f1    |    x    
 
167
------+---------+---------
 
168
      |       0 |       0
 
169
      |  123456 |  246912
 
170
      | -123456 | -246912
 
171
(3 rows)
 
172
 
 
173
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
 
174
ERROR:  integer out of range
 
175
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
 
176
WHERE abs(f1) < 1073741824;
 
177
 five |   f1    |    x    
 
178
------+---------+---------
 
179
      |       0 |       0
 
180
      |  123456 |  246912
 
181
      | -123456 | -246912
 
182
(3 rows)
 
183
 
 
184
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
 
185
ERROR:  integer out of range
 
186
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
 
187
WHERE f1 < 2147483646;
 
188
 five |     f1      |      x      
 
189
------+-------------+-------------
 
190
      |           0 |           2
 
191
      |      123456 |      123458
 
192
      |     -123456 |     -123454
 
193
      | -2147483647 | -2147483645
 
194
(4 rows)
 
195
 
 
196
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
 
197
ERROR:  integer out of range
 
198
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
 
199
WHERE f1 < 2147483646;
 
200
 five |     f1      |      x      
 
201
------+-------------+-------------
 
202
      |           0 |           2
 
203
      |      123456 |      123458
 
204
      |     -123456 |     -123454
 
205
      | -2147483647 | -2147483645
 
206
(4 rows)
 
207
 
 
208
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
 
209
ERROR:  integer out of range
 
210
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
 
211
WHERE f1 > -2147483647;
 
212
 five |     f1     |     x      
 
213
------+------------+------------
 
214
      |          0 |         -2
 
215
      |     123456 |     123454
 
216
      |    -123456 |    -123458
 
217
      | 2147483647 | 2147483645
 
218
(4 rows)
 
219
 
 
220
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
 
221
ERROR:  integer out of range
 
222
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
 
223
WHERE f1 > -2147483647;
 
224
 five |     f1     |     x      
 
225
------+------------+------------
 
226
      |          0 |         -2
 
227
      |     123456 |     123454
 
228
      |    -123456 |    -123458
 
229
      | 2147483647 | 2147483645
 
230
(4 rows)
 
231
 
 
232
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
 
233
 five |     f1      |      x      
 
234
------+-------------+-------------
 
235
      |           0 |           0
 
236
      |      123456 |       61728
 
237
      |     -123456 |      -61728
 
238
      |  2147483647 |  1073741823
 
239
      | -2147483647 | -1073741823
 
240
(5 rows)
 
241
 
 
242
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
 
243
 five |     f1      |      x      
 
244
------+-------------+-------------
 
245
      |           0 |           0
 
246
      |      123456 |       61728
 
247
      |     -123456 |      -61728
 
248
      |  2147483647 |  1073741823
 
249
      | -2147483647 | -1073741823
 
250
(5 rows)
 
251
 
 
252
--
 
253
-- more complex expressions
 
254
--
 
255
-- variations on unary minus parsing
 
256
SELECT -2+3 AS one;
 
257
 one 
 
258
-----
 
259
   1
 
260
(1 row)
 
261
 
 
262
SELECT 4-2 AS two;
 
263
 two 
 
264
-----
 
265
   2
 
266
(1 row)
 
267
 
 
268
SELECT 2- -1 AS three;
 
269
 three 
 
270
-------
 
271
     3
 
272
(1 row)
 
273
 
 
274
SELECT 2 - -2 AS four;
 
275
 four 
 
276
------
 
277
    4
 
278
(1 row)
 
279
 
 
280
SELECT int2 '2' * int2 '2' = int2 '16' / int2 '4' AS true;
 
281
 true 
 
282
------
 
283
 t
 
284
(1 row)
 
285
 
 
286
SELECT int4 '2' * int2 '2' = int2 '16' / int4 '4' AS true;
 
287
 true 
 
288
------
 
289
 t
 
290
(1 row)
 
291
 
 
292
SELECT int2 '2' * int4 '2' = int4 '16' / int2 '4' AS true;
 
293
 true 
 
294
------
 
295
 t
 
296
(1 row)
 
297
 
 
298
SELECT int4 '1000' < int4 '999' AS false;
 
299
 false 
 
300
-------
 
301
 f
 
302
(1 row)
 
303
 
 
304
SELECT 4! AS twenty_four;
 
305
 twenty_four 
 
306
-------------
 
307
          24
 
308
(1 row)
 
309
 
 
310
SELECT !!3 AS six;
 
311
 six 
 
312
-----
 
313
   6
 
314
(1 row)
 
315
 
 
316
SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
 
317
 ten 
 
318
-----
 
319
  10
 
320
(1 row)
 
321
 
 
322
SELECT 2 + 2 / 2 AS three;
 
323
 three 
 
324
-------
 
325
     3
 
326
(1 row)
 
327
 
 
328
SELECT (2 + 2) / 2 AS two;
 
329
 two 
 
330
-----
 
331
   2
 
332
(1 row)
 
333