--- /dev/null
+QUERY: CREATE TABLE INT2_TBL(f1 int2);
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('0');
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('1234');
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('-1234');
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('34.5');
+ERROR: pg_atoi: error in "34.5": can't parse ".5"
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('32767');
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('-32767');
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('100000');
+ERROR: pg_atoi: error reading "100000": Result too large
+QUERY: INSERT INTO INT2_TBL(f1) VALUES ('asdf');
+ERROR: pg_atoi: error in "asdf": can't parse "asdf"
+QUERY: SELECT '' AS five, INT2_TBL.*;
+five| f1
+----+------
+ | 0
+ | 1234
+ | -1234
+ | 32767
+ |-32767
+(5 rows)
+
+QUERY: SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> '0'::int2;
+four| f1
+----+------
+ | 1234
+ | -1234
+ | 32767
+ |-32767
+(4 rows)
+
+QUERY: SELECT '' AS four, i.* FROM INT2_TBL i WHERE i.f1 <> '0'::int4;
+four| f1
+----+------
+ | 1234
+ | -1234
+ | 32767
+ |-32767
+(4 rows)
+
+QUERY: SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = '0'::int2;
+one|f1
+---+--
+ | 0
+(1 row)
+
+QUERY: SELECT '' AS one, i.* FROM INT2_TBL i WHERE i.f1 = '0'::int4;
+one|f1
+---+--
+ | 0
+(1 row)
+
+QUERY: SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < '0'::int2;
+two| f1
+---+------
+ | -1234
+ |-32767
+(2 rows)
+
+QUERY: SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 < '0'::int4;
+two| f1
+---+------
+ | -1234
+ |-32767
+(2 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= '0'::int2;
+three| f1
+-----+------
+ | 0
+ | -1234
+ |-32767
+(3 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 <= '0'::int4;
+three| f1
+-----+------
+ | 0
+ | -1234
+ |-32767
+(3 rows)
+
+QUERY: SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > '0'::int2;
+two| f1
+---+-----
+ | 1234
+ |32767
+(2 rows)
+
+QUERY: SELECT '' AS two, i.* FROM INT2_TBL i WHERE i.f1 > '0'::int4;
+two| f1
+---+-----
+ | 1234
+ |32767
+(2 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= '0'::int2;
+three| f1
+-----+-----
+ | 0
+ | 1234
+ |32767
+(3 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT2_TBL i WHERE i.f1 >= '0'::int4;
+three| f1
+-----+-----
+ | 0
+ | 1234
+ |32767
+(3 rows)
+
+QUERY: SELECT '' AS one, i.* FROM INT2_TBL i WHERE (i.f1 % '2'::int2) = '1'::int2;
+one| f1
+---+-----
+ |32767
+(1 row)
+
+QUERY: SELECT '' AS three, i.* FROM INT2_TBL i WHERE (i.f1 % '2'::int4) = '0'::int2;
+three| f1
+-----+-----
+ | 0
+ | 1234
+ |-1234
+(3 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 * '2'::int2 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+-----
+ | 0| 0
+ | 1234| 2468
+ | -1234|-2468
+ | 32767| -2
+ |-32767| 2
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 * '2'::int4 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+------
+ | 0| 0
+ | 1234| 2468
+ | -1234| -2468
+ | 32767| 65534
+ |-32767|-65534
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 + '2'::int2 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+------
+ | 0| 2
+ | 1234| 1236
+ | -1234| -1232
+ | 32767|-32767
+ |-32767|-32765
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 + '2'::int4 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+------
+ | 0| 2
+ | 1234| 1236
+ | -1234| -1232
+ | 32767| 32769
+ |-32767|-32765
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 - '2'::int2 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+-----
+ | 0| -2
+ | 1234| 1232
+ | -1234|-1236
+ | 32767|32765
+ |-32767|32767
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 - '2'::int4 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+------
+ | 0| -2
+ | 1234| 1232
+ | -1234| -1236
+ | 32767| 32765
+ |-32767|-32769
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 / '2'::int2 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+------
+ | 0| 0
+ | 1234| 617
+ | -1234| -617
+ | 32767| 16383
+ |-32767|-16383
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 / '2'::int4 AS x FROM INT2_TBL i;
+five| f1| x
+----+------+------
+ | 0| 0
+ | 1234| 617
+ | -1234| -617
+ | 32767| 16383
+ |-32767|-16383
+(5 rows)
+
--- /dev/null
+QUERY: CREATE TABLE INT4_TBL(f1 int4);
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('0');
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('123456');
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('-123456');
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('34.5');
+ERROR: pg_atoi: error in "34.5": can't parse ".5"
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
+ERROR: pg_atoi: error reading "1000000000000": Result too large
+QUERY: INSERT INTO INT4_TBL(f1) VALUES ('asdf');
+ERROR: pg_atoi: error in "asdf": can't parse "asdf"
+QUERY: SELECT '' AS five, INT4_TBL.*;
+five| f1
+----+-----------
+ | 0
+ | 123456
+ | -123456
+ | 2147483647
+ |-2147483647
+(5 rows)
+
+QUERY: SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> '0'::int2;
+four| f1
+----+-----------
+ | 123456
+ | -123456
+ | 2147483647
+ |-2147483647
+(4 rows)
+
+QUERY: SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> '0'::int4;
+four| f1
+----+-----------
+ | 123456
+ | -123456
+ | 2147483647
+ |-2147483647
+(4 rows)
+
+QUERY: SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = '0'::int2;
+one|f1
+---+--
+ | 0
+(1 row)
+
+QUERY: SELECT '' AS one, i.* FROM INT4_TBL i WHERE i.f1 = '0'::int4;
+one|f1
+---+--
+ | 0
+(1 row)
+
+QUERY: SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < '0'::int2;
+two| f1
+---+-----------
+ | -123456
+ |-2147483647
+(2 rows)
+
+QUERY: SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 < '0'::int4;
+two| f1
+---+-----------
+ | -123456
+ |-2147483647
+(2 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= '0'::int2;
+three| f1
+-----+-----------
+ | 0
+ | -123456
+ |-2147483647
+(3 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 <= '0'::int4;
+three| f1
+-----+-----------
+ | 0
+ | -123456
+ |-2147483647
+(3 rows)
+
+QUERY: SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > '0'::int2;
+two| f1
+---+----------
+ | 123456
+ |2147483647
+(2 rows)
+
+QUERY: SELECT '' AS two, i.* FROM INT4_TBL i WHERE i.f1 > '0'::int4;
+two| f1
+---+----------
+ | 123456
+ |2147483647
+(2 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= '0'::int2;
+three| f1
+-----+----------
+ | 0
+ | 123456
+ |2147483647
+(3 rows)
+
+QUERY: SELECT '' AS three, i.* FROM INT4_TBL i WHERE i.f1 >= '0'::int4;
+three| f1
+-----+----------
+ | 0
+ | 123456
+ |2147483647
+(3 rows)
+
+QUERY: SELECT '' AS one, i.* FROM INT4_TBL i WHERE (i.f1 % '2'::int2) = '1'::int2;
+one| f1
+---+----------
+ |2147483647
+(1 row)
+
+QUERY: SELECT '' AS three, i.* FROM INT4_TBL i WHERE (i.f1 % '2'::int4) = '0'::int2;
+three| f1
+-----+-------
+ | 0
+ | 123456
+ |-123456
+(3 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 * '2'::int2 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+-------
+ | 0| 0
+ | 123456| 246912
+ | -123456|-246912
+ | 2147483647| -2
+ |-2147483647| 2
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 * '2'::int4 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+-------
+ | 0| 0
+ | 123456| 246912
+ | -123456|-246912
+ | 2147483647| -2
+ |-2147483647| 2
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 + '2'::int2 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+-----------
+ | 0| 2
+ | 123456| 123458
+ | -123456| -123454
+ | 2147483647|-2147483647
+ |-2147483647|-2147483645
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 + '2'::int4 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+-----------
+ | 0| 2
+ | 123456| 123458
+ | -123456| -123454
+ | 2147483647|-2147483647
+ |-2147483647|-2147483645
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 - '2'::int2 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+----------
+ | 0| -2
+ | 123456| 123454
+ | -123456| -123458
+ | 2147483647|2147483645
+ |-2147483647|2147483647
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 - '2'::int4 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+----------
+ | 0| -2
+ | 123456| 123454
+ | -123456| -123458
+ | 2147483647|2147483645
+ |-2147483647|2147483647
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 / '2'::int2 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+-----------
+ | 0| 0
+ | 123456| 61728
+ | -123456| -61728
+ | 2147483647| 1073741823
+ |-2147483647|-1073741823
+(5 rows)
+
+QUERY: SELECT '' AS five, i.f1, i.f1 / '2'::int4 AS x FROM INT4_TBL i;
+five| f1| x
+----+-----------+-----------
+ | 0| 0
+ | 123456| 61728
+ | -123456| -61728
+ | 2147483647| 1073741823
+ |-2147483647|-1073741823
+(5 rows)
+
+QUERY: SELECT -2+3 AS one;
+one
+---
+ 1
+(1 row)
+
+QUERY: SELECT 4-2 AS two;
+two
+---
+ 2
+(1 row)
+
+QUERY: SELECT 2- -1 AS three;
+three
+-----
+ 3
+(1 row)
+
+QUERY: SELECT 2 - -2 AS four;
+four
+----
+ 4
+(1 row)
+
+QUERY: SELECT '2'::int2 * '2'::int2 = '16'::int2 / '4'::int2 AS true;
+true
+----
+t
+(1 row)
+
+QUERY: SELECT '2'::int4 * '2'::int2 = '16'::int2 / '4'::int4 AS true;
+true
+----
+t
+(1 row)
+
+QUERY: SELECT '2'::int2 * '2'::int4 = '16'::int4 / '4'::int2 AS true;
+true
+----
+t
+(1 row)
+
+QUERY: SELECT '1000'::int4 < '999'::int4 AS false;
+false
+-----
+f
+(1 row)
+
+QUERY: SELECT 4! AS twenty_four;
+twenty_four
+-----------
+ 24
+(1 row)
+
+QUERY: SELECT !!3 AS six;
+six
+---
+ 6
+(1 row)
+
+QUERY: SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
+ten
+---
+ 10
+(1 row)
+
+QUERY: SELECT 2 + 2 / 2 AS three;
+three
+-----
+ 3
+(1 row)
+
+QUERY: SELECT (2 + 2) / 2 AS two;
+two
+---
+ 2
+(1 row)
+
+QUERY: SELECT dsqrt('64'::float8) AS eight;
+eight
+-----
+ 8
+(1 row)
+
+QUERY: SELECT |/'64'::float8 AS eight;
+eight
+-----
+ 8
+(1 row)
+
+QUERY: SELECT ||/'27'::float8 AS three;
+three
+-----
+ 3
+(1 row)
+
--- /dev/null
+QUERY: CREATE TABLE OIDINT2_TBL(f1 oidint2);
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('1234/9873');
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('1235/9873');
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('987/-1234');
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('123456');
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('123456/123456');
+ERROR: pg_atoi: error reading "123456": Result too large
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('');
+QUERY: INSERT INTO OIDINT2_TBL(f1) VALUES ('asdfasd');
+ERROR: pg_atoi: error in "asdfasd": can't parse "asdfasd"
+QUERY: SELECT '' AS five, OIDINT2_TBL.*;
+five|f1
+----+---------
+ |1234/9873
+ |1235/9873
+ |987/-1234
+ |123456/0
+ |0/0
+(5 rows)
+
+QUERY: SELECT '' AS one, o.* FROM OIDINT2_TBL o WHERE o.f1 = '1235/9873';
+one|f1
+---+---------
+ |1235/9873
+(1 row)
+
+QUERY: SELECT '' AS four, o.* FROM OIDINT2_TBL o WHERE o.f1 <> '1235/9873';
+four|f1
+----+---------
+ |1234/9873
+ |987/-1234
+ |123456/0
+ |0/0
+(4 rows)
+
+QUERY: SELECT '' AS four, o.* FROM OIDINT2_TBL o WHERE o.f1 <= '1235/9873';
+four|f1
+----+---------
+ |1234/9873
+ |1235/9873
+ |987/-1234
+ |0/0
+(4 rows)
+
+QUERY: SELECT '' AS three, o.* FROM OIDINT2_TBL o WHERE o.f1 < '1235/9873';
+three|f1
+-----+---------
+ |1234/9873
+ |987/-1234
+ |0/0
+(3 rows)
+
+QUERY: SELECT '' AS two, o.* FROM OIDINT2_TBL o WHERE o.f1 >= '1235/9873';
+two|f1
+---+---------
+ |1235/9873
+ |123456/0
+(2 rows)
+
+QUERY: SELECT '' AS one, o.* FROM OIDINT2_TBL o WHERE o.f1 > '1235/9873';
+one|f1
+---+--------
+ |123456/0
+(1 row)
+
+QUERY: DROP TABLE OIDINT2_TBL;
--- /dev/null
+QUERY: CREATE TABLE OIDINT4_TBL(f1 oidint4);
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('1234/9873');
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('1235/9873');
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('987/-1234');
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('123456');
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('123456/1234568901234567890');
+ERROR: pg_atoi: error reading "1234568901234567890": Result too large
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('');
+QUERY: INSERT INTO OIDINT4_TBL(f1) VALUES ('asdfasd');
+ERROR: pg_atoi: error in "asdfasd": can't parse "asdfasd"
+QUERY: SELECT '' AS five, OIDINT4_TBL.*;
+five|f1
+----+---------
+ |1234/9873
+ |1235/9873
+ |987/-1234
+ |123456/0
+ |0/0
+(5 rows)
+
+QUERY: SELECT '' AS one, o.* FROM OIDINT4_TBL o WHERE o.f1 = '1235/9873';
+one|f1
+---+---------
+ |1235/9873
+(1 row)
+
+QUERY: SELECT '' AS four, o.* FROM OIDINT4_TBL o WHERE o.f1 <> '1235/9873';
+four|f1
+----+---------
+ |1234/9873
+ |987/-1234
+ |123456/0
+ |0/0
+(4 rows)
+
+QUERY: SELECT '' AS four, o.* FROM OIDINT4_TBL o WHERE o.f1 <= '1235/9873';
+four|f1
+----+---------
+ |1234/9873
+ |1235/9873
+ |987/-1234
+ |0/0
+(4 rows)
+
+QUERY: SELECT '' AS three, o.* FROM OIDINT4_TBL o WHERE o.f1 < '1235/9873';
+three|f1
+-----+---------
+ |1234/9873
+ |987/-1234
+ |0/0
+(3 rows)
+
+QUERY: SELECT '' AS two, o.* FROM OIDINT4_TBL o WHERE o.f1 >= '1235/9873';
+two|f1
+---+---------
+ |1235/9873
+ |123456/0
+(2 rows)
+
+QUERY: SELECT '' AS one, o.* FROM OIDINT4_TBL o WHERE o.f1 > '1235/9873';
+one|f1
+---+--------
+ |123456/0
+(1 row)
+
+QUERY: DROP TABLE OIDINT4_TBL;