5
CREATE TABLE INT4_TBL(f1 int4);
7
INSERT INTO INT4_TBL(f1) VALUES (' 0 ');
9
INSERT INTO INT4_TBL(f1) VALUES ('123456 ');
11
INSERT INTO INT4_TBL(f1) VALUES (' -123456');
13
INSERT INTO INT4_TBL(f1) VALUES ('34.5');
15
-- largest and smallest values
16
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
18
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
20
-- bad input values -- should give errors
21
INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
22
INSERT INTO INT4_TBL(f1) VALUES ('asdf');
23
INSERT INTO INT4_TBL(f1) VALUES (' ');
24
INSERT INTO INT4_TBL(f1) VALUES (' asdf ');
25
INSERT INTO INT4_TBL(f1) VALUES ('- 1234');
26
INSERT INTO INT4_TBL(f1) VALUES ('123 5');
27
INSERT INTO INT4_TBL(f1) VALUES ('');
30
SELECT '' AS five, * FROM INT4_TBL;
32
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
34
SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
36
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
38
SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
40
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
42
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
44
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
46
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
48
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
50
SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
52
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
54
SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
57
SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
60
SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
62
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i;
64
SELECT '' AS five, i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
65
WHERE abs(f1) < 1073741824;
67
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i;
69
SELECT '' AS five, i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
70
WHERE abs(f1) < 1073741824;
72
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i;
74
SELECT '' AS five, i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
75
WHERE f1 < 2147483646;
77
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i;
79
SELECT '' AS five, i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
80
WHERE f1 < 2147483646;
82
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i;
84
SELECT '' AS five, i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
85
WHERE f1 > -2147483647;
87
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i;
89
SELECT '' AS five, i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
90
WHERE f1 > -2147483647;
92
SELECT '' AS five, i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
94
SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
97
-- more complex expressions
100
-- variations on unary minus parsing
105
SELECT 2- -1 AS three;
107
SELECT 2 - -2 AS four;
109
SELECT int2 '2' * int2 '2' = int2 '16' / int2 '4' AS true;
111
SELECT int4 '2' * int2 '2' = int2 '16' / int4 '4' AS true;
113
SELECT int2 '2' * int4 '2' = int4 '16' / int2 '4' AS true;
115
SELECT int4 '1000' < int4 '999' AS false;
117
SELECT 4! AS twenty_four;
121
SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
123
SELECT 2 + 2 / 2 AS three;
125
SELECT (2 + 2) / 2 AS two;
128
SELECT (-1::int4<<31)::text;
129
SELECT ((-1::int4<<31)+1)::text;
131
-- check sane handling of INT_MIN overflow cases
132
SELECT (-2147483648)::int4 * (-1)::int4;
133
SELECT (-2147483648)::int4 / (-1)::int4;
134
SELECT (-2147483648)::int4 % (-1)::int4;
135
SELECT (-2147483648)::int4 * (-1)::int2;
136
SELECT (-2147483648)::int4 / (-1)::int2;
137
SELECT (-2147483648)::int4 % (-1)::int2;