--
-- INT4
--
CREATE TABLE INT4_TBL(f1 int4 primary key);
CREATE TABLE
INSERT INTO INT4_TBL(f1) VALUES ('   0  ');
INSERT
INSERT INTO INT4_TBL(f1) VALUES ('123456     ');
INSERT
INSERT INTO INT4_TBL(f1) VALUES ('    -123456');
INSERT
-- largest and smallest values
INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
INSERT
INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
INSERT
SELECT * FROM INT4_TBL;
     f1      
-------------
 -2147483647
     -123456
           0
      123456
  2147483647
(5 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0';
     f1      
-------------
 -2147483647
     -123456
      123456
  2147483647
(4 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 <> int4 '0';
     f1      
-------------
 -2147483647
     -123456
      123456
  2147483647
(4 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 = int2 '0';
 f1 
----
  0
(1 row)

SELECT i.* FROM INT4_TBL i WHERE i.f1 = int4 '0';
 f1 
----
  0
(1 row)

SELECT i.* FROM INT4_TBL i WHERE i.f1 < int2 '0';
     f1      
-------------
 -2147483647
     -123456
(2 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 < int4 '0';
     f1      
-------------
 -2147483647
     -123456
(2 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int2 '0';
     f1      
-------------
 -2147483647
     -123456
           0
(3 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 <= int4 '0';
     f1      
-------------
 -2147483647
     -123456
           0
(3 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 > int2 '0';
     f1     
------------
     123456
 2147483647
(2 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 > int4 '0';
     f1     
------------
     123456
 2147483647
(2 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int2 '0';
     f1     
------------
          0
     123456
 2147483647
(3 rows)

SELECT i.* FROM INT4_TBL i WHERE i.f1 >= int4 '0';
     f1     
------------
          0
     123456
 2147483647
(3 rows)

-- positive odds
SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int2 '2') = int2 '1';
     f1     
------------
 2147483647
(1 row)

-- any evens
SELECT i.* FROM INT4_TBL i WHERE (i.f1 % int4 '2') = int2 '0';
   f1    
---------
 -123456
       0
  123456
(3 rows)

SELECT i.f1, i.f1 * int2 '2' AS x FROM INT4_TBL i
WHERE abs(f1) < 1073741824;
   f1    |    x    
---------+---------
 -123456 | -246912
       0 |       0
  123456 |  246912
(3 rows)

SELECT i.f1, i.f1 * int4 '2' AS x FROM INT4_TBL i
WHERE abs(f1) < 1073741824;
   f1    |    x    
---------+---------
 -123456 | -246912
       0 |       0
  123456 |  246912
(3 rows)

SELECT i.f1, i.f1 + int2 '2' AS x FROM INT4_TBL i
WHERE f1 < 2147483646;
     f1      |      x      
-------------+-------------
 -2147483647 | -2147483645
     -123456 |     -123454
           0 |           2
      123456 |      123458
(4 rows)

SELECT i.f1, i.f1 + int4 '2' AS x FROM INT4_TBL i
WHERE f1 < 2147483646;
     f1      |      x      
-------------+-------------
 -2147483647 | -2147483645
     -123456 |     -123454
           0 |           2
      123456 |      123458
(4 rows)

SELECT i.f1, i.f1 - int2 '2' AS x FROM INT4_TBL i
WHERE f1 > -2147483647;
     f1     |     x      
------------+------------
    -123456 |    -123458
          0 |         -2
     123456 |     123454
 2147483647 | 2147483645
(4 rows)

SELECT i.f1, i.f1 - int4 '2' AS x FROM INT4_TBL i
WHERE f1 > -2147483647;
     f1     |     x      
------------+------------
    -123456 |    -123458
          0 |         -2
     123456 |     123454
 2147483647 | 2147483645
(4 rows)

SELECT i.f1, i.f1 / int2 '2' AS x FROM INT4_TBL i;
     f1      |      x      
-------------+-------------
 -2147483647 | -1073741823
     -123456 |      -61728
           0 |           0
      123456 |       61728
  2147483647 |  1073741823
(5 rows)

SELECT i.f1, i.f1 / int4 '2' AS x FROM INT4_TBL i;
     f1      |      x      
-------------+-------------
 -2147483647 | -1073741823
     -123456 |      -61728
           0 |           0
      123456 |       61728
  2147483647 |  1073741823
(5 rows)

