PLEASE NOTE: I'm brand new to PostgreSQL as of today. I've just moved from
MySQL because it's not stable on NetBSD/Alpha. I don't know enough about
pgsql to see if these failed test would make it unstable for production.
i start the server like this:
$ postmaster -D /usr/pkg/pgsql/data > /var/pgsql/logfile 2>&1 &
I've seen many messages on the console when doing the regression
tests. However, none of the warnings, or debug, or status messages went to
the logfile as it should have. logfile is currently still empty.
NetBSD/DEC-Alpha (ELF) 1.5.1_ALPHA
PostgreSQL 7.0.3
$ uname -a
NetBSD ns01 1.5.1_ALPHA NetBSD 1.5.1_ALPHA (ALPHA-$Revision: 1.127.2.2
$) #2: Fri Dec 15 16:45:58
CST 2000 tom@ns01:/usr/src/sys/arch/alpha/compile/ns01 alpha
$ grep failed regress.out
int8 .. failed
float8 .. failed
numerology .. failed
timestamp .. failed
oidjoins .. failed
type_sanity .. failed
opr_sanity .. failed
horology .. failed
rules .. failed
int8 and float8 seemed OK. int8 just had numbers with '-' or '+' signs
instead of the '<' or '>' around numbers. float8 reported same error in a
different format.
the rest of the test failed pretty bad. see the attachment.
*** expected/int8.out Fri Apr 7 12:17:39 2000
--- results/int8.out Thu Dec 28 18:04:36 2000
***************
*** 145,166 ****
FROM INT8_TBL;
to_char_3 | to_char | to_char
-----------+--------------------+------------------------
! | <123> | <456.000>
! | <123> | <4567890123456789.000>
! | <4567890123456789> | <123.000>
! | <4567890123456789> | <4567890123456789.000>
! | <4567890123456789> | 4567890123456789.000
(5 rows)
SELECT '' AS to_char_4, to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 *
-1), 'S9999999999999999')
FROM INT8_TBL;
to_char_4 | to_char | to_char
-----------+-------------------+-------------------
! | 123- | -456
! | 123- | -4567890123456789
! | 4567890123456789- | -123
! | 4567890123456789- | -4567890123456789
! | 4567890123456789- | +4567890123456789
(5 rows)
SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
--- 145,166 ----
FROM INT8_TBL;
to_char_3 | to_char | to_char
-----------+--------------------+------------------------
! | 528280977285 | 1958505086520.000
! | 528280977285 | <################.###>
! | <################> | 528280977285.000
! | <################> | <################.###>
! | <################> | ################.###
(5 rows)
SELECT '' AS to_char_4, to_char( (q1 * -1), '9999999999999999S'), to_char( (q2 *
-1), 'S9999999999999999')
FROM INT8_TBL;
to_char_4 | to_char | to_char
-----------+-------------------+-------------------
! | 528280977285+ | +1958505086520
! | 528280977285+ | -################
! | ################- | +528280977285
! | ################- | -################
! | ################- | +################
(5 rows)
SELECT '' AS to_char_5, to_char(q2, 'MI9999999999999999') FROM INT8_TBL;
----------------------
*** expected/float8.out Sun Mar 19 21:19:10 2000
--- results/float8.out Thu Dec 28 18:04:40 2000
***************
*** 214,220 ****
SET f1 = FLOAT8_TBL.f1 * '-1'
WHERE FLOAT8_TBL.f1 > '0.0';
SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
! ERROR: Bad float8 input format -- overflow
SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
ERROR: pow() result is out of range
SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
--- 214,220 ----
SET f1 = FLOAT8_TBL.f1 * '-1'
WHERE FLOAT8_TBL.f1 > '0.0';
SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
ERROR: pow() result is out of range
SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
----------------------
*** expected/numerology.out Wed Mar 15 15:31:06 2000
--- results/numerology.out Thu Dec 28 18:05:25 2000
***************
*** 41,54 ****
------+--------
| -32767
| -1234
- | -1004
- | -35
- | 0
- | 0
| 0
| 1234
| 32767
! (9 rows)
-- int2
CREATE TABLE TEMP_INT2 (f1 INT2);
--- 41,50 ----
------+--------
| -32767
| -1234
| 0
| 1234
| 32767
! (5 rows)
-- int2
CREATE TABLE TEMP_INT2 (f1 INT2);
***************
*** 61,73 ****
SELECT '' AS five, f1 FROM TEMP_INT2
ORDER BY f1;
five | f1
! ------+-------
! | -1004
! | -35
! | 0
! | 0
! | 0
! (5 rows)
--
-- Group-by combinations
--- 57,64 ----
SELECT '' AS five, f1 FROM TEMP_INT2
ORDER BY f1;
five | f1
! ------+----
! (0 rows)
--
-- Group-by combinations
----------------------
*** expected/timestamp.out Fri Apr 7 12:17:42 2000
--- results/timestamp.out Thu Dec 28 18:05:41 2000
***************
*** 190,265 ****
INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
ERROR: Timestamp out of range 'Feb 16 17:32:01 5097 BC'
SELECT '' AS "66", d1 FROM TIMESTAMP_TBL;
! 66 | d1
! ----+---------------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | Mon Feb 10 17:32:01 1997 PST
! | invalid
! | invalid
! | Mon Feb 10 17:32:01.00 1997 PST
! | Mon Feb 10 17:32:02.00 1997 PST
! | Mon Feb 10 17:32:01.40 1997 PST
! | Mon Feb 10 17:32:01.50 1997 PST
! | Mon Feb 10 17:32:01.60 1997 PST
! | Thu Jan 02 00:00:00 1997 PST
! | Thu Jan 02 03:04:05 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Tue Jun 10 17:32:01 1997 PDT
! | Wed Mar 15 08:14:01 2000 PST
! | Wed Mar 15 04:14:02 2000 PST
! | Wed Mar 15 02:14:03 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 01:14:05 2000 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:00 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Tue Jun 10 18:32:01 1997 PDT
! | Mon Feb 10 17:32:01 1997 PST
! | Tue Feb 11 17:32:01 1997 PST
! | Wed Feb 12 17:32:01 1997 PST
! | Thu Feb 13 17:32:01 1997 PST
! | Fri Feb 14 17:32:01 1997 PST
! | Sat Feb 15 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Tue Feb 16 17:32 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Sun Feb 16 17:32:01 1997 PST
! | Sat Feb 16 17:32:01 2097
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Wed Jan 01 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! (66 rows)
!
-- Demonstrate functions and operators
SELECT '' AS "47", d1 FROM TIMESTAMP_TBL
WHERE d1 > timestamp '1997-01-02' and d1 != timestamp 'current';
--- 190,196 ----
INSERT INTO TIMESTAMP_TBL VALUES ('Feb 16 17:32:01 5097 BC');
ERROR: Timestamp out of range 'Feb 16 17:32:01 5097 BC'
SELECT '' AS "66", d1 FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
-- Demonstrate functions and operators
SELECT '' AS "47", d1 FROM TIMESTAMP_TBL
WHERE d1 > timestamp '1997-01-02' and d1 != timestamp 'current';
***************
*** 487,633 ****
(48 rows)
SELECT '' AS "66", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL;
! 66 | one_year
! ----+---------------------------------
! | invalid
! | -infinity
! | infinity
! | Thu Dec 31 16:00:00 1970 PST
! | Tue Feb 10 17:32:01 1998 PST
! | invalid
! | invalid
! | Tue Feb 10 17:32:01.00 1998 PST
! | Tue Feb 10 17:32:02.00 1998 PST
! | Tue Feb 10 17:32:01.40 1998 PST
! | Tue Feb 10 17:32:01.50 1998 PST
! | Tue Feb 10 17:32:01.60 1998 PST
! | Fri Jan 02 00:00:00 1998 PST
! | Fri Jan 02 03:04:05 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Wed Jun 10 17:32:01 1998 PDT
! | Thu Mar 15 08:14:01 2001 PST
! | Thu Mar 15 04:14:02 2001 PST
! | Thu Mar 15 02:14:03 2001 PST
! | Thu Mar 15 03:14:04 2001 PST
! | Thu Mar 15 01:14:05 2001 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:00 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 17:32:01 1998 PST
! | Tue Feb 10 09:32:01 1998 PST
! | Tue Feb 10 09:32:01 1998 PST
! | Tue Feb 10 09:32:01 1998 PST
! | Wed Jun 10 18:32:01 1998 PDT
! | Tue Feb 10 17:32:01 1998 PST
! | Wed Feb 11 17:32:01 1998 PST
! | Thu Feb 12 17:32:01 1998 PST
! | Fri Feb 13 17:32:01 1998 PST
! | Sat Feb 14 17:32:01 1998 PST
! | Sun Feb 15 17:32:01 1998 PST
! | Mon Feb 16 17:32:01 1998 PST
! | Thu Feb 16 17:32 0096 BC
! | Sun Feb 16 17:32:01 0098
! | Fri Feb 16 17:32:01 0598
! | Wed Feb 16 17:32:01 1098
! | Sun Feb 16 17:32:01 1698
! | Fri Feb 16 17:32:01 1798
! | Wed Feb 16 17:32:01 1898
! | Mon Feb 16 17:32:01 1998 PST
! | Sun Feb 16 17:32:01 2098
! | Fri Feb 28 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Thu Jan 01 17:32:01 1998 PST
! | Sat Feb 28 17:32:01 1998 PST
! | Sun Mar 01 17:32:01 1998 PST
! | Wed Dec 30 17:32:01 1998 PST
! | Thu Dec 31 17:32:01 1998 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! | Mon Dec 31 17:32:01 2001 PST
! | Tue Jan 01 17:32:01 2002 PST
! (66 rows)
!
SELECT '' AS "66", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
! 66 | one_year
! ----+---------------------------------
! | invalid
! | -infinity
! | infinity
! | Tue Dec 31 16:00:00 1968 PST
! | Sat Feb 10 17:32:01 1996 PST
! | invalid
! | invalid
! | Sat Feb 10 17:32:01.00 1996 PST
! | Sat Feb 10 17:32:02.00 1996 PST
! | Sat Feb 10 17:32:01.40 1996 PST
! | Sat Feb 10 17:32:01.50 1996 PST
! | Sat Feb 10 17:32:01.60 1996 PST
! | Tue Jan 02 00:00:00 1996 PST
! | Tue Jan 02 03:04:05 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Mon Jun 10 17:32:01 1996 PDT
! | Mon Mar 15 08:14:01 1999 PST
! | Mon Mar 15 04:14:02 1999 PST
! | Mon Mar 15 02:14:03 1999 PST
! | Mon Mar 15 03:14:04 1999 PST
! | Mon Mar 15 01:14:05 1999 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:00 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 17:32:01 1996 PST
! | Sat Feb 10 09:32:01 1996 PST
! | Sat Feb 10 09:32:01 1996 PST
! | Sat Feb 10 09:32:01 1996 PST
! | Mon Jun 10 18:32:01 1996 PDT
! | Sat Feb 10 17:32:01 1996 PST
! | Sun Feb 11 17:32:01 1996 PST
! | Mon Feb 12 17:32:01 1996 PST
! | Tue Feb 13 17:32:01 1996 PST
! | Wed Feb 14 17:32:01 1996 PST
! | Thu Feb 15 17:32:01 1996 PST
! | Fri Feb 16 17:32:01 1996 PST
! | Mon Feb 16 17:32 0098 BC
! | Thu Feb 16 17:32:01 0096
! | Tue Feb 16 17:32:01 0596
! | Sun Feb 16 17:32:01 1096
! | Thu Feb 16 17:32:01 1696
! | Tue Feb 16 17:32:01 1796
! | Sun Feb 16 17:32:01 1896
! | Fri Feb 16 17:32:01 1996 PST
! | Thu Feb 16 17:32:01 2096
! | Tue Feb 28 17:32:01 1995 PST
! | Tue Feb 28 17:32:01 1995 PST
! | Wed Mar 01 17:32:01 1995 PST
! | Sat Dec 30 17:32:01 1995 PST
! | Sun Dec 31 17:32:01 1995 PST
! | Mon Jan 01 17:32:01 1996 PST
! | Wed Feb 28 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Thu Dec 31 17:32:01 1998 PST
! | Fri Jan 01 17:32:01 1999 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! (66 rows)
!
SELECT '' AS "53", d1 - timestamp '1997-01-02' AS diff
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
53 | diff
--- 418,426 ----
(48 rows)
SELECT '' AS "66", d1 + interval '1 year' AS one_year FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS "66", d1 - interval '1 year' AS one_year FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS "53", d1 - timestamp '1997-01-02' AS diff
FROM TIMESTAMP_TBL WHERE d1 BETWEEN '1902-01-01' AND '2038-01-01';
53 | diff
----------------------
*** expected/oidjoins.out Sat Jan 22 15:51:20 2000
--- results/oidjoins.out Thu Dec 28 18:05:46 2000
***************
*** 5,427 ****
FROM pg_aggregate
WHERE pg_aggregate.aggtransfn1 != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid =
pg_aggregate.aggtransfn1);
! oid | aggtransfn1
! -----+-------------
! (0 rows)
!
SELECT oid, pg_aggregate.aggtransfn2
FROM pg_aggregate
WHERE pg_aggregate.aggtransfn2 != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid =
pg_aggregate.aggtransfn2);
! oid | aggtransfn2
! -----+-------------
! (0 rows)
!
SELECT oid, pg_aggregate.aggfinalfn
FROM pg_aggregate
WHERE pg_aggregate.aggfinalfn != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid =
pg_aggregate.aggfinalfn);
! oid | aggfinalfn
! -----+------------
! (0 rows)
!
SELECT oid, pg_aggregate.aggbasetype
FROM pg_aggregate
WHERE pg_aggregate.aggbasetype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggbasetype);
! oid | aggbasetype
! -----+-------------
! (0 rows)
!
SELECT oid, pg_aggregate.aggtranstype1
FROM pg_aggregate
WHERE pg_aggregate.aggtranstype1 != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggtranstype1);
! oid | aggtranstype1
! -----+---------------
! (0 rows)
!
SELECT oid, pg_aggregate.aggtranstype2
FROM pg_aggregate
WHERE pg_aggregate.aggtranstype2 != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggtranstype2);
! oid | aggtranstype2
! -----+---------------
! (0 rows)
!
SELECT oid, pg_aggregate.aggfinaltype
FROM pg_aggregate
WHERE pg_aggregate.aggfinaltype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggfinaltype);
! oid | aggfinaltype
! -----+--------------
! (0 rows)
!
SELECT oid, pg_am.amgettuple
FROM pg_am
WHERE pg_am.amgettuple != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amgettuple);
! oid | amgettuple
! -----+------------
! (0 rows)
!
SELECT oid, pg_am.aminsert
FROM pg_am
WHERE pg_am.aminsert != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.aminsert);
! oid | aminsert
! -----+----------
! (0 rows)
!
SELECT oid, pg_am.amdelete
FROM pg_am
WHERE pg_am.amdelete != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amdelete);
! oid | amdelete
! -----+----------
! (0 rows)
!
SELECT oid, pg_am.ambeginscan
FROM pg_am
WHERE pg_am.ambeginscan != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambeginscan);
! oid | ambeginscan
! -----+-------------
! (0 rows)
!
SELECT oid, pg_am.amrescan
FROM pg_am
WHERE pg_am.amrescan != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrescan);
! oid | amrescan
! -----+----------
! (0 rows)
!
SELECT oid, pg_am.amendscan
FROM pg_am
WHERE pg_am.amendscan != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amendscan);
! oid | amendscan
! -----+-----------
! (0 rows)
!
SELECT oid, pg_am.ammarkpos
FROM pg_am
WHERE pg_am.ammarkpos != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ammarkpos);
! oid | ammarkpos
! -----+-----------
! (0 rows)
!
SELECT oid, pg_am.amrestrpos
FROM pg_am
WHERE pg_am.amrestrpos != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrestrpos);
! oid | amrestrpos
! -----+------------
! (0 rows)
!
SELECT oid, pg_am.ambuild
FROM pg_am
WHERE pg_am.ambuild != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambuild);
! oid | ambuild
! -----+---------
! (0 rows)
!
SELECT oid, pg_am.amcostestimate
FROM pg_am
WHERE pg_am.amcostestimate != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amcostestimate);
! oid | amcostestimate
! -----+----------------
! (0 rows)
!
SELECT oid, pg_amop.amopid
FROM pg_amop
WHERE pg_amop.amopid != 0 AND
NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amop.amopid);
! oid | amopid
! -----+--------
! (0 rows)
!
SELECT oid, pg_amop.amopclaid
FROM pg_amop
WHERE pg_amop.amopclaid != 0 AND
NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amop.amopclaid);
! oid | amopclaid
! -----+-----------
! (0 rows)
!
SELECT oid, pg_amop.amopopr
FROM pg_amop
WHERE pg_amop.amopopr != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_amop.amopopr);
! oid | amopopr
! -----+---------
! (0 rows)
!
SELECT oid, pg_amproc.amid
FROM pg_amproc
WHERE pg_amproc.amid != 0 AND
NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amproc.amid);
! oid | amid
! -----+------
! (0 rows)
!
SELECT oid, pg_amproc.amopclaid
FROM pg_amproc
WHERE pg_amproc.amopclaid != 0 AND
NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amproc.amopclaid);
! oid | amopclaid
! -----+-----------
! (0 rows)
!
SELECT oid, pg_amproc.amproc
FROM pg_amproc
WHERE pg_amproc.amproc != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amproc.amproc);
! oid | amproc
! -----+--------
! (0 rows)
!
SELECT oid, pg_attribute.attrelid
FROM pg_attribute
WHERE pg_attribute.attrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_attribute.attrelid);
! oid | attrelid
! -----+----------
! (0 rows)
!
SELECT oid, pg_attribute.atttypid
FROM pg_attribute
WHERE pg_attribute.atttypid != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_attribute.atttypid);
! oid | atttypid
! -----+----------
! (0 rows)
!
SELECT oid, pg_class.reltype
FROM pg_class
WHERE pg_class.reltype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_class.reltype);
! oid | reltype
! -----+---------
! (0 rows)
!
SELECT oid, pg_class.relam
FROM pg_class
WHERE pg_class.relam != 0 AND
NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_class.relam);
! oid | relam
! -----+-------
! (0 rows)
!
SELECT oid, pg_index.indexrelid
FROM pg_index
WHERE pg_index.indexrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indexrelid);
! oid | indexrelid
! -----+------------
! (0 rows)
!
SELECT oid, pg_index.indrelid
FROM pg_index
WHERE pg_index.indrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indrelid);
! oid | indrelid
! -----+----------
! (0 rows)
!
SELECT oid, pg_opclass.opcdeftype
FROM pg_opclass
WHERE pg_opclass.opcdeftype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_opclass.opcdeftype);
! oid | opcdeftype
! -----+------------
! (0 rows)
!
SELECT oid, pg_operator.oprleft
FROM pg_operator
WHERE pg_operator.oprleft != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprleft);
! oid | oprleft
! -----+---------
! (0 rows)
!
SELECT oid, pg_operator.oprright
FROM pg_operator
WHERE pg_operator.oprright != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprright);
! oid | oprright
! -----+----------
! (0 rows)
!
SELECT oid, pg_operator.oprresult
FROM pg_operator
WHERE pg_operator.oprresult != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprresult);
! oid | oprresult
! -----+-----------
! (0 rows)
!
SELECT oid, pg_operator.oprcom
FROM pg_operator
WHERE pg_operator.oprcom != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprcom);
! oid | oprcom
! -----+--------
! (0 rows)
!
SELECT oid, pg_operator.oprnegate
FROM pg_operator
WHERE pg_operator.oprnegate != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid =
pg_operator.oprnegate);
! oid | oprnegate
! -----+-----------
! (0 rows)
!
SELECT oid, pg_operator.oprlsortop
FROM pg_operator
WHERE pg_operator.oprlsortop != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid =
pg_operator.oprlsortop);
! oid | oprlsortop
! -----+------------
! (0 rows)
!
SELECT oid, pg_operator.oprrsortop
FROM pg_operator
WHERE pg_operator.oprrsortop != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid =
pg_operator.oprrsortop);
! oid | oprrsortop
! -----+------------
! (0 rows)
!
SELECT oid, pg_operator.oprcode
FROM pg_operator
WHERE pg_operator.oprcode != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprcode);
! oid | oprcode
! -----+---------
! (0 rows)
!
SELECT oid, pg_operator.oprrest
FROM pg_operator
WHERE pg_operator.oprrest != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprrest);
! oid | oprrest
! -----+---------
! (0 rows)
!
SELECT oid, pg_operator.oprjoin
FROM pg_operator
WHERE pg_operator.oprjoin != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprjoin);
! oid | oprjoin
! -----+---------
! (0 rows)
!
SELECT oid, pg_proc.prolang
FROM pg_proc
WHERE pg_proc.prolang != 0 AND
NOT EXISTS(SELECT * FROM pg_language AS t1 WHERE t1.oid = pg_proc.prolang);
! oid | prolang
! -----+---------
! (0 rows)
!
SELECT oid, pg_proc.prorettype
FROM pg_proc
WHERE pg_proc.prorettype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_proc.prorettype);
! oid | prorettype
! -----+------------
! (0 rows)
!
SELECT oid, pg_rewrite.ev_class
FROM pg_rewrite
WHERE pg_rewrite.ev_class != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_rewrite.ev_class);
! oid | ev_class
! -----+----------
! (0 rows)
!
SELECT oid, pg_statistic.starelid
FROM pg_statistic
WHERE pg_statistic.starelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_statistic.starelid);
! oid | starelid
! -----+----------
! (0 rows)
!
SELECT oid, pg_statistic.staop
FROM pg_statistic
WHERE pg_statistic.staop != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_statistic.staop);
! oid | staop
! -----+-------
! (0 rows)
!
SELECT oid, pg_trigger.tgrelid
FROM pg_trigger
WHERE pg_trigger.tgrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_trigger.tgrelid);
! oid | tgrelid
! -----+---------
! (0 rows)
!
SELECT oid, pg_trigger.tgfoid
FROM pg_trigger
WHERE pg_trigger.tgfoid != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_trigger.tgfoid);
! oid | tgfoid
! -----+--------
! (0 rows)
!
SELECT oid, pg_type.typrelid
FROM pg_type
WHERE pg_type.typrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_type.typrelid);
! oid | typrelid
! -----+----------
! (0 rows)
!
SELECT oid, pg_type.typelem
FROM pg_type
WHERE pg_type.typelem != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_type.typelem);
! oid | typelem
! -----+---------
! (0 rows)
!
SELECT oid, pg_type.typinput
FROM pg_type
WHERE pg_type.typinput != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typinput);
! oid | typinput
! -----+----------
! (0 rows)
!
SELECT oid, pg_type.typoutput
FROM pg_type
WHERE pg_type.typoutput != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typoutput);
! oid | typoutput
! -----+-----------
! (0 rows)
!
SELECT oid, pg_type.typreceive
FROM pg_type
WHERE pg_type.typreceive != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typreceive);
! oid | typreceive
! -----+------------
! (0 rows)
!
SELECT oid, pg_type.typsend
FROM pg_type
WHERE pg_type.typsend != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typsend);
! oid | typsend
! -----+---------
! (0 rows)
!
--- 5,268 ----
FROM pg_aggregate
WHERE pg_aggregate.aggtransfn1 != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid =
pg_aggregate.aggtransfn1);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_aggregate.aggtransfn2
FROM pg_aggregate
WHERE pg_aggregate.aggtransfn2 != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid =
pg_aggregate.aggtransfn2);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_aggregate.aggfinalfn
FROM pg_aggregate
WHERE pg_aggregate.aggfinalfn != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid =
pg_aggregate.aggfinalfn);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_aggregate.aggbasetype
FROM pg_aggregate
WHERE pg_aggregate.aggbasetype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggbasetype);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_aggregate.aggtranstype1
FROM pg_aggregate
WHERE pg_aggregate.aggtranstype1 != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggtranstype1);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_aggregate.aggtranstype2
FROM pg_aggregate
WHERE pg_aggregate.aggtranstype2 != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggtranstype2);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_aggregate.aggfinaltype
FROM pg_aggregate
WHERE pg_aggregate.aggfinaltype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid =
pg_aggregate.aggfinaltype);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_am.amgettuple
FROM pg_am
WHERE pg_am.amgettuple != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amgettuple);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.aminsert
FROM pg_am
WHERE pg_am.aminsert != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.aminsert);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.amdelete
FROM pg_am
WHERE pg_am.amdelete != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amdelete);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.ambeginscan
FROM pg_am
WHERE pg_am.ambeginscan != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambeginscan);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.amrescan
FROM pg_am
WHERE pg_am.amrescan != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrescan);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.amendscan
FROM pg_am
WHERE pg_am.amendscan != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amendscan);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.ammarkpos
FROM pg_am
WHERE pg_am.ammarkpos != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ammarkpos);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.amrestrpos
FROM pg_am
WHERE pg_am.amrestrpos != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amrestrpos);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.ambuild
FROM pg_am
WHERE pg_am.ambuild != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.ambuild);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_am.amcostestimate
FROM pg_am
WHERE pg_am.amcostestimate != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_am.amcostestimate);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_amop.amopid
FROM pg_amop
WHERE pg_amop.amopid != 0 AND
NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amop.amopid);
! ERROR: getattproperties: no attribute tuple 16631 -2
SELECT oid, pg_amop.amopclaid
FROM pg_amop
WHERE pg_amop.amopclaid != 0 AND
NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amop.amopclaid);
! ERROR: getattproperties: no attribute tuple 16621 -2
SELECT oid, pg_amop.amopopr
FROM pg_amop
WHERE pg_amop.amopopr != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_amop.amopopr);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT oid, pg_amproc.amid
FROM pg_amproc
WHERE pg_amproc.amid != 0 AND
NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amproc.amid);
! ERROR: getattproperties: no attribute tuple 16631 -2
SELECT oid, pg_amproc.amopclaid
FROM pg_amproc
WHERE pg_amproc.amopclaid != 0 AND
NOT EXISTS(SELECT * FROM pg_opclass AS t1 WHERE t1.oid = pg_amproc.amopclaid);
! ERROR: getattproperties: no attribute tuple 16621 -2
SELECT oid, pg_amproc.amproc
FROM pg_amproc
WHERE pg_amproc.amproc != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_amproc.amproc);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_attribute.attrelid
FROM pg_attribute
WHERE pg_attribute.attrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_attribute.attrelid);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_attribute.atttypid
FROM pg_attribute
WHERE pg_attribute.atttypid != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_attribute.atttypid);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_class.reltype
FROM pg_class
WHERE pg_class.reltype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_class.reltype);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_class.relam
FROM pg_class
WHERE pg_class.relam != 0 AND
NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_class.relam);
! ERROR: getattproperties: no attribute tuple 16631 -2
SELECT oid, pg_index.indexrelid
FROM pg_index
WHERE pg_index.indexrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indexrelid);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_index.indrelid
FROM pg_index
WHERE pg_index.indrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_index.indrelid);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_opclass.opcdeftype
FROM pg_opclass
WHERE pg_opclass.opcdeftype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_opclass.opcdeftype);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_operator.oprleft
FROM pg_operator
WHERE pg_operator.oprleft != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprleft);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_operator.oprright
FROM pg_operator
WHERE pg_operator.oprright != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprright);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_operator.oprresult
FROM pg_operator
WHERE pg_operator.oprresult != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_operator.oprresult);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_operator.oprcom
FROM pg_operator
WHERE pg_operator.oprcom != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_operator.oprcom);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT oid, pg_operator.oprnegate
FROM pg_operator
WHERE pg_operator.oprnegate != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid =
pg_operator.oprnegate);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT oid, pg_operator.oprlsortop
FROM pg_operator
WHERE pg_operator.oprlsortop != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid =
pg_operator.oprlsortop);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT oid, pg_operator.oprrsortop
FROM pg_operator
WHERE pg_operator.oprrsortop != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid =
pg_operator.oprrsortop);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT oid, pg_operator.oprcode
FROM pg_operator
WHERE pg_operator.oprcode != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprcode);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_operator.oprrest
FROM pg_operator
WHERE pg_operator.oprrest != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprrest);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_operator.oprjoin
FROM pg_operator
WHERE pg_operator.oprjoin != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_operator.oprjoin);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_proc.prolang
FROM pg_proc
WHERE pg_proc.prolang != 0 AND
NOT EXISTS(SELECT * FROM pg_language AS t1 WHERE t1.oid = pg_proc.prolang);
! ERROR: getattproperties: no attribute tuple 16919 -2
SELECT oid, pg_proc.prorettype
FROM pg_proc
WHERE pg_proc.prorettype != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_proc.prorettype);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_rewrite.ev_class
FROM pg_rewrite
WHERE pg_rewrite.ev_class != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_rewrite.ev_class);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_statistic.starelid
FROM pg_statistic
WHERE pg_statistic.starelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_statistic.starelid);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_statistic.staop
FROM pg_statistic
WHERE pg_statistic.staop != 0 AND
NOT EXISTS(SELECT * FROM pg_operator AS t1 WHERE t1.oid = pg_statistic.staop);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT oid, pg_trigger.tgrelid
FROM pg_trigger
WHERE pg_trigger.tgrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_trigger.tgrelid);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_trigger.tgfoid
FROM pg_trigger
WHERE pg_trigger.tgfoid != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_trigger.tgfoid);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_type.typrelid
FROM pg_type
WHERE pg_type.typrelid != 0 AND
NOT EXISTS(SELECT * FROM pg_class AS t1 WHERE t1.oid = pg_type.typrelid);
! ERROR: getattproperties: no attribute tuple 1259 -2
SELECT oid, pg_type.typelem
FROM pg_type
WHERE pg_type.typelem != 0 AND
NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_type.typelem);
! ERROR: getattproperties: no attribute tuple 1247 -2
SELECT oid, pg_type.typinput
FROM pg_type
WHERE pg_type.typinput != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typinput);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_type.typoutput
FROM pg_type
WHERE pg_type.typoutput != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typoutput);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_type.typreceive
FROM pg_type
WHERE pg_type.typreceive != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typreceive);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT oid, pg_type.typsend
FROM pg_type
WHERE pg_type.typsend != 0 AND
NOT EXISTS(SELECT * FROM pg_proc AS t1 WHERE t1.oid = pg_type.typsend);
! ERROR: getattproperties: no attribute tuple 1255 -2
----------------------
*** expected/type_sanity.out Tue Jan 4 22:06:23 2000
--- results/type_sanity.out Thu Dec 28 18:05:46 2000
***************
*** 21,28 ****
(p1.typalign != 'c' AND p1.typalign != 's' AND
p1.typalign != 'i' AND p1.typalign != 'd');
oid | typname
! -----+---------
! (0 rows)
-- Look for "pass by value" types that can't be passed by value.
SELECT p1.oid, p1.typname
--- 21,85 ----
(p1.typalign != 'c' AND p1.typalign != 's' AND
p1.typalign != 'i' AND p1.typalign != 'd');
oid | typname
! ------+-------------
! 17 | bytea
! 25 | text
! 32 | SET
! 602 | path
! 604 | polygon
! 629 | _line
! 705 | unknown
! 719 | _circle
! 791 | _money
! 869 | inet
! 650 | cidr
! 1000 | _bool
! 1001 | _bytea
! 1002 | _char
! 1003 | _name
! 1005 | _int2
! 1006 | _int2vector
! 1007 | _int4
! 1008 | _regproc
! 1009 | _text
! 1028 | _oid
! 1010 | _tid
! 1011 | _xid
! 1012 | _cid
! 1013 | _oidvector
! 1014 | _bpchar
! 1015 | _varchar
! 1016 | _int8
! 1017 | _point
! 1018 | _lseg
! 1019 | _path
! 1020 | _box
! 1021 | _float4
! 1022 | _float8
! 1023 | _abstime
! 1024 | _reltime
! 1025 | _tinterval
! 1026 | _filename
! 1027 | _polygon
! 1034 | _aclitem
! 1040 | _macaddr
! 1041 | _inet
! 651 | _cidr
! 1042 | bpchar
! 1043 | varchar
! 1182 | _date
! 1183 | _time
! 1185 | _timestamp
! 1187 | _interval
! 1231 | _numeric
! 1270 | _timetz
! 1560 | bit
! 1561 | _bit
! 1562 | varbit
! 1563 | _varbit
! 1625 | lztext
! 1700 | numeric
! (57 rows)
-- Look for "pass by value" types that can't be passed by value.
SELECT p1.oid, p1.typname
***************
*** 64,73 ****
WHERE p1.typinput = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 3 OR p2.proretset OR p2.proargtypes[2] != 23);
! oid | typname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Check for bogus typoutput routines
-- The first OR subclause detects bogus non-array cases,
-- the second one detects bogus array cases.
--- 121,127 ----
WHERE p1.typinput = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 3 OR p2.proretset OR p2.proargtypes[2] != 23);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- Check for bogus typoutput routines
-- The first OR subclause detects bogus non-array cases,
-- the second one detects bogus array cases.
***************
*** 77,86 ****
WHERE p1.typoutput = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 2 OR p2.proretset OR p1.typelem = 0);
! oid | typname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Check for bogus typreceive routines
-- FIXME: ought to check prorettype, but there are special cases that make it
-- hard: prorettype might be binary-compatible with the type but not the same,
--- 131,137 ----
WHERE p1.typoutput = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 2 OR p2.proretset OR p1.typelem = 0);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- Check for bogus typreceive routines
-- FIXME: ought to check prorettype, but there are special cases that make it
-- hard: prorettype might be binary-compatible with the type but not the same,
***************
*** 90,99 ****
WHERE p1.typreceive = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 3 OR p2.proretset OR p2.proargtypes[2] != 23);
! oid | typname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Check for bogus typsend routines
-- The first OR subclause detects bogus non-array cases,
-- the second one detects bogus array cases.
--- 141,147 ----
WHERE p1.typreceive = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 3 OR p2.proretset OR p2.proargtypes[2] != 23);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- Check for bogus typsend routines
-- The first OR subclause detects bogus non-array cases,
-- the second one detects bogus array cases.
***************
*** 103,112 ****
WHERE p1.typsend = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 2 OR p2.proretset OR p1.typelem = 0);
! oid | typname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- **************** pg_class ****************
-- Look for illegal values in pg_class fields
SELECT p1.oid, p1.relname
--- 151,157 ----
WHERE p1.typsend = p2.oid AND p1.typtype = 'b' AND
(p2.pronargs != 1 OR p2.proretset) AND
(p2.pronargs != 2 OR p2.proretset OR p1.typelem = 0);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- **************** pg_class ****************
-- Look for illegal values in pg_class fields
SELECT p1.oid, p1.relname
***************
*** 133,140 ****
WHERE p1.attrelid = 0 OR p1.atttypid = 0 OR p1.attnum = 0 OR
p1.attcacheoff != -1;
oid | attrelid | attname
! -----+----------+---------
! (0 rows)
-- Look for duplicate pg_attribute entries
-- (This would not be necessary if the indexes on pg_attribute were UNIQUE?)
--- 178,944 ----
WHERE p1.attrelid = 0 OR p1.atttypid = 0 OR p1.attnum = 0 OR
p1.attcacheoff != -1;
oid | attrelid | attname
! --------+----------+-----------------
! 16385 | 1247 | typname
! 16386 | 1247 | typowner
! 16387 | 1247 | typlen
! 16388 | 1247 | typprtlen
! 16389 | 1247 | typbyval
! 16390 | 1247 | typtype
! 16391 | 1247 | typisdefined
! 16392 | 1247 | typdelim
! 16393 | 1247 | typrelid
! 16394 | 1247 | typelem
! 16395 | 1247 | typinput
! 16396 | 1247 | typoutput
! 16397 | 1247 | typreceive
! 16398 | 1247 | typsend
! 16399 | 1247 | typalign
! 16400 | 1247 | typdefault
! 16401 | 1247 | ctid
! 16402 | 1247 | oid
! 16403 | 1247 | xmin
! 16404 | 1247 | cmin
! 16405 | 1247 | xmax
! 16406 | 1247 | cmax
! 16407 | 1262 | datname
! 16408 | 1262 | datdba
! 16409 | 1262 | encoding
! 16410 | 1262 | datpath
! 16411 | 1262 | ctid
! 16412 | 1262 | oid
! 16413 | 1262 | xmin
! 16414 | 1262 | cmin
! 16415 | 1262 | xmax
! 16416 | 1262 | cmax
! 16417 | 1255 | proname
! 16418 | 1255 | proowner
! 16419 | 1255 | prolang
! 16420 | 1255 | proisinh
! 16421 | 1255 | proistrusted
! 16422 | 1255 | proiscachable
! 16423 | 1255 | pronargs
! 16424 | 1255 | proretset
! 16425 | 1255 | prorettype
! 16426 | 1255 | proargtypes
! 16427 | 1255 | probyte_pct
! 16428 | 1255 | properbyte_cpu
! 16429 | 1255 | propercall_cpu
! 16430 | 1255 | prooutin_ratio
! 16431 | 1255 | prosrc
! 16432 | 1255 | probin
! 16433 | 1255 | ctid
! 16434 | 1255 | oid
! 16435 | 1255 | xmin
! 16436 | 1255 | cmin
! 16437 | 1255 | xmax
! 16438 | 1255 | cmax
! 16439 | 1260 | usename
! 16440 | 1260 | usesysid
! 16441 | 1260 | usecreatedb
! 16442 | 1260 | usetrace
! 16443 | 1260 | usesuper
! 16444 | 1260 | usecatupd
! 16445 | 1260 | passwd
! 16446 | 1260 | valuntil
! 16447 | 1260 | ctid
! 16448 | 1260 | oid
! 16449 | 1260 | xmin
! 16450 | 1260 | cmin
! 16451 | 1260 | xmax
! 16452 | 1260 | cmax
! 16453 | 1261 | groname
! 16454 | 1261 | grosysid
! 16455 | 1261 | grolist
! 16456 | 1261 | ctid
! 16457 | 1261 | oid
! 16458 | 1261 | xmin
! 16459 | 1261 | cmin
! 16460 | 1261 | xmax
! 16461 | 1261 | cmax
! 16462 | 1249 | attrelid
! 16463 | 1249 | attname
! 16464 | 1249 | atttypid
! 16465 | 1249 | attdisbursion
! 16466 | 1249 | attlen
! 16467 | 1249 | attnum
! 16468 | 1249 | attnelems
! 16469 | 1249 | attcacheoff
! 16470 | 1249 | atttypmod
! 16471 | 1249 | attbyval
! 16472 | 1249 | attstorage
! 16473 | 1249 | attisset
! 16474 | 1249 | attalign
! 16475 | 1249 | attnotnull
! 16476 | 1249 | atthasdef
! 16477 | 1249 | ctid
! 16478 | 1249 | oid
! 16479 | 1249 | xmin
! 16480 | 1249 | cmin
! 16481 | 1249 | xmax
! 16482 | 1249 | cmax
! 16483 | 1259 | relname
! 16484 | 1259 | reltype
! 16485 | 1259 | relowner
! 16486 | 1259 | relam
! 16487 | 1259 | relpages
! 16488 | 1259 | reltuples
! 16489 | 1259 | rellongrelid
! 16490 | 1259 | relhasindex
! 16491 | 1259 | relisshared
! 16492 | 1259 | relkind
! 16493 | 1259 | relnatts
! 16494 | 1259 | relchecks
! 16495 | 1259 | reltriggers
! 16496 | 1259 | relukeys
! 16497 | 1259 | relfkeys
! 16498 | 1259 | relrefs
! 16499 | 1259 | relhaspkey
! 16500 | 1259 | relhasrules
! 16501 | 1259 | relacl
! 16502 | 1259 | ctid
! 16503 | 1259 | oid
! 16504 | 1259 | xmin
! 16505 | 1259 | cmin
! 16506 | 1259 | xmax
! 16507 | 1259 | cmax
! 16508 | 1215 | adrelid
! 16509 | 1215 | adnum
! 16510 | 1215 | adbin
! 16511 | 1215 | adsrc
! 16512 | 1215 | ctid
! 16513 | 1215 | oid
! 16514 | 1215 | xmin
! 16515 | 1215 | cmin
! 16516 | 1215 | xmax
! 16517 | 1215 | cmax
! 16518 | 1216 | rcrelid
! 16519 | 1216 | rcname
! 16520 | 1216 | rcbin
! 16521 | 1216 | rcsrc
! 16522 | 1216 | ctid
! 16523 | 1216 | oid
! 16524 | 1216 | xmin
! 16525 | 1216 | cmin
! 16526 | 1216 | xmax
! 16527 | 1216 | cmax
! 16528 | 1219 | tgrelid
! 16529 | 1219 | tgname
! 16530 | 1219 | tgfoid
! 16531 | 1219 | tgtype
! 16532 | 1219 | tgenabled
! 16533 | 1219 | tgisconstraint
! 16534 | 1219 | tgconstrname
! 16535 | 1219 | tgconstrrelid
! 16536 | 1219 | tgdeferrable
! 16537 | 1219 | tginitdeferred
! 16538 | 1219 | tgnargs
! 16539 | 1219 | tgattr
! 16540 | 1219 | tgargs
! 16541 | 1219 | ctid
! 16542 | 1219 | oid
! 16543 | 1219 | xmin
! 16544 | 1219 | cmin
! 16545 | 1219 | xmax
! 16546 | 1219 | cmax
! 16547 | 1264 | varfoo
! 16548 | 1269 | logfoo
! 16549 | 376 | xactlockfoo
! 16552 | 16550 | inhrelid
! 16553 | 16550 | inhparent
! 16554 | 16550 | inhseqno
! 16555 | 16550 | ctid
! 16556 | 16550 | oid
! 16557 | 16550 | xmin
! 16558 | 16550 | cmin
! 16559 | 16550 | xmax
! 16560 | 16550 | cmax
! 16563 | 16561 | indexrelid
! 16564 | 16561 | indrelid
! 16565 | 16561 | indproc
! 16566 | 16561 | indkey
! 16567 | 16561 | indclass
! 16568 | 16561 | indisclustered
! 16569 | 16561 | indislossy
! 16570 | 16561 | indhaskeytype
! 16571 | 16561 | indisunique
! 16572 | 16561 | indisprimary
! 16573 | 16561 | indreference
! 16574 | 16561 | indpred
! 16575 | 16561 | ctid
! 16576 | 16561 | oid
! 16577 | 16561 | xmin
! 16578 | 16561 | cmin
! 16579 | 16561 | xmax
! 16580 | 16561 | cmax
! 16583 | 16581 | starelid
! 16584 | 16581 | staattnum
! 16585 | 16581 | staop
! 16586 | 16581 | stanullfrac
! 16587 | 16581 | stacommonfrac
! 16588 | 16581 | stacommonval
! 16589 | 16581 | staloval
! 16590 | 16581 | stahival
! 16591 | 16581 | ctid
! 16592 | 16581 | oid
! 16593 | 16581 | xmin
! 16594 | 16581 | cmin
! 16595 | 16581 | xmax
! 16596 | 16581 | cmax
! 16599 | 16597 | oprname
! 16600 | 16597 | oprowner
! 16601 | 16597 | oprprec
! 16602 | 16597 | oprkind
! 16603 | 16597 | oprisleft
! 16604 | 16597 | oprcanhash
! 16605 | 16597 | oprleft
! 16606 | 16597 | oprright
! 16607 | 16597 | oprresult
! 16608 | 16597 | oprcom
! 16609 | 16597 | oprnegate
! 16610 | 16597 | oprlsortop
! 16611 | 16597 | oprrsortop
! 16612 | 16597 | oprcode
! 16613 | 16597 | oprrest
! 16614 | 16597 | oprjoin
! 16615 | 16597 | ctid
! 16616 | 16597 | oid
! 16617 | 16597 | xmin
! 16618 | 16597 | cmin
! 16619 | 16597 | xmax
! 16620 | 16597 | cmax
! 16623 | 16621 | opcname
! 16624 | 16621 | opcdeftype
! 16625 | 16621 | ctid
! 16626 | 16621 | oid
! 16627 | 16621 | xmin
! 16628 | 16621 | cmin
! 16629 | 16621 | xmax
! 16630 | 16621 | cmax
! 16633 | 16631 | amname
! 16634 | 16631 | amowner
! 16635 | 16631 | amstrategies
! 16636 | 16631 | amsupport
! 16637 | 16631 | amorderstrategy
! 16638 | 16631 | amgettuple
! 16639 | 16631 | aminsert
! 16640 | 16631 | amdelete
! 16641 | 16631 | amgetattr
! 16642 | 16631 | amsetlock
! 16643 | 16631 | amsettid
! 16644 | 16631 | amfreetuple
! 16645 | 16631 | ambeginscan
! 16646 | 16631 | amrescan
! 16647 | 16631 | amendscan
! 16648 | 16631 | ammarkpos
! 16649 | 16631 | amrestrpos
! 16650 | 16631 | amopen
! 16651 | 16631 | amclose
! 16652 | 16631 | ambuild
! 16653 | 16631 | amcreate
! 16654 | 16631 | amdestroy
! 16655 | 16631 | amcostestimate
! 16656 | 16631 | ctid
! 16657 | 16631 | oid
! 16658 | 16631 | xmin
! 16659 | 16631 | cmin
! 16660 | 16631 | xmax
! 16661 | 16631 | cmax
! 16664 | 16662 | amopid
! 16665 | 16662 | amopclaid
! 16666 | 16662 | amopopr
! 16667 | 16662 | amopstrategy
! 16668 | 16662 | ctid
! 16669 | 16662 | oid
! 16670 | 16662 | xmin
! 16671 | 16662 | cmin
! 16672 | 16662 | xmax
! 16673 | 16662 | cmax
! 16858 | 16856 | amid
! 16859 | 16856 | amopclaid
! 16860 | 16856 | amproc
! 16861 | 16856 | amprocnum
! 16862 | 16856 | ctid
! 16863 | 16856 | oid
! 16864 | 16856 | xmin
! 16865 | 16856 | cmin
! 16866 | 16856 | xmax
! 16867 | 16856 | cmax
! 16921 | 16919 | lanname
! 16922 | 16919 | lanispl
! 16923 | 16919 | lanpltrusted
! 16924 | 16919 | lanplcallfoid
! 16925 | 16919 | lancompiler
! 16926 | 16919 | ctid
! 16927 | 16919 | oid
! 16928 | 16919 | xmin
! 16929 | 16919 | cmin
! 16930 | 16919 | xmax
! 16931 | 16919 | cmax
! 16934 | 16932 | aggname
! 16935 | 16932 | aggowner
! 16936 | 16932 | aggtransfn1
! 16937 | 16932 | aggtransfn2
! 16938 | 16932 | aggfinalfn
! 16939 | 16932 | aggbasetype
! 16940 | 16932 | aggtranstype1
! 16941 | 16932 | aggtranstype2
! 16942 | 16932 | aggfinaltype
! 16943 | 16932 | agginitval1
! 16944 | 16932 | agginitval2
! 16945 | 16932 | ctid
! 16946 | 16932 | oid
! 16947 | 16932 | xmin
! 16948 | 16932 | cmin
! 16949 | 16932 | xmax
! 16950 | 16932 | cmax
! 16998 | 16996 | iplrelid
! 16999 | 16996 | iplipl
! 17000 | 16996 | iplseqno
! 17001 | 16996 | ctid
! 17002 | 16996 | oid
! 17003 | 16996 | xmin
! 17004 | 16996 | cmin
! 17005 | 16996 | xmax
! 17006 | 16996 | cmax
! 17009 | 17007 | inhproname
! 17010 | 17007 | inhargrelid
! 17011 | 17007 | inhdefrelid
! 17012 | 17007 | inhproc
! 17013 | 17007 | ctid
! 17014 | 17007 | oid
! 17015 | 17007 | xmin
! 17016 | 17007 | cmin
! 17017 | 17007 | xmax
! 17018 | 17007 | cmax
! 17021 | 17019 | rulename
! 17022 | 17019 | ev_type
! 17023 | 17019 | ev_class
! 17024 | 17019 | ev_attr
! 17025 | 17019 | is_instead
! 17026 | 17019 | ev_qual
! 17027 | 17019 | ev_action
! 17028 | 17019 | ctid
! 17029 | 17019 | oid
! 17030 | 17019 | xmin
! 17031 | 17019 | cmin
! 17032 | 17019 | xmax
! 17033 | 17019 | cmax
! 17036 | 17034 | relname
! 17037 | 17034 | listenerpid
! 17038 | 17034 | notification
! 17039 | 17034 | ctid
! 17040 | 17034 | oid
! 17041 | 17034 | xmin
! 17042 | 17034 | cmin
! 17043 | 17034 | xmax
! 17044 | 17034 | cmax
! 17047 | 17045 | objoid
! 17048 | 17045 | description
! 17049 | 17045 | ctid
! 17050 | 17045 | oid
! 17051 | 17045 | xmin
! 17052 | 17045 | cmin
! 17053 | 17045 | xmax
! 17054 | 17045 | cmax
! 17057 | 17055 | aggname
! 17057 | 17055 | aggbasetype
! 17060 | 17059 | amname
! 17063 | 17062 | amopclaid
! 17063 | 17062 | amopopr
! 17063 | 17062 | amopid
! 17066 | 17065 | amopid
! 17066 | 17065 | amopclaid
! 17066 | 17065 | amopstrategy
! 17069 | 17068 | adrelid
! 17072 | 17071 | attrelid
! 17072 | 17071 | attname
! 17075 | 17074 | attrelid
! 17075 | 17074 | attnum
! 17078 | 17077 | oid
! 17081 | 17080 | relname
! 17084 | 17083 | objoid
! 17087 | 17086 | groname
! 17090 | 17089 | grosysid
! 17093 | 17092 | indexrelid
! 17096 | 17095 | inhrelid
! 17096 | 17095 | inhseqno
! 17099 | 17098 | lanname
! 17102 | 17101 | oid
! 17105 | 17104 | relname
! 17105 | 17104 | listenerpid
! 17108 | 17107 | opcdeftype
! 17111 | 17110 | opcname
! 17114 | 17113 | oid
! 17117 | 17116 | oprname
! 17117 | 17116 | oprleft
! 17117 | 17116 | oprright
! 17117 | 17116 | oprkind
! 17121 | 17119 | oid
! 17124 | 17123 | proname
! 17124 | 17123 | pronargs
! 17124 | 17123 | proargtypes
! 17127 | 17126 | rcrelid
! 17130 | 17129 | oid
! 17133 | 17132 | rulename
! 17136 | 17135 | starelid
! 17136 | 17135 | staattnum
! 17139 | 17138 | tgconstrname
! 17142 | 17141 | tgconstrrelid
! 17145 | 17144 | tgrelid
! 17148 | 17147 | oid
! 17151 | 17150 | typname
! 17282 | 17280 | usename
! 17283 | 17280 | usesysid
! 17284 | 17280 | usecreatedb
! 17285 | 17280 | usetrace
! 17286 | 17280 | usesuper
! 17287 | 17280 | usecatupd
! 17288 | 17280 | passwd
! 17289 | 17280 | valuntil
! 17290 | 17280 | ctid
! 17291 | 17280 | oid
! 17292 | 17280 | xmin
! 17293 | 17280 | cmin
! 17294 | 17280 | xmax
! 17295 | 17280 | cmax
! 17314 | 17312 | tablename
! 17315 | 17312 | rulename
! 17316 | 17312 | definition
! 17317 | 17312 | ctid
! 17318 | 17312 | oid
! 17319 | 17312 | xmin
! 17320 | 17312 | cmin
! 17321 | 17312 | xmax
! 17322 | 17312 | cmax
! 17346 | 17344 | viewname
! 17347 | 17344 | viewowner
! 17348 | 17344 | definition
! 17349 | 17344 | ctid
! 17350 | 17344 | oid
! 17351 | 17344 | xmin
! 17352 | 17344 | cmin
! 17353 | 17344 | xmax
! 17354 | 17344 | cmax
! 17378 | 17376 | tablename
! 17379 | 17376 | tableowner
! 17380 | 17376 | hasindexes
! 17381 | 17376 | hasrules
! 17382 | 17376 | hastriggers
! 17383 | 17376 | ctid
! 17384 | 17376 | oid
! 17385 | 17376 | xmin
! 17386 | 17376 | cmin
! 17387 | 17376 | xmax
! 17388 | 17376 | cmax
! 17410 | 17408 | tablename
! 17411 | 17408 | indexname
! 17412 | 17408 | indexdef
! 17413 | 17408 | ctid
! 17414 | 17408 | oid
! 17415 | 17408 | xmin
! 17416 | 17408 | cmin
! 17417 | 17408 | xmax
! 17418 | 17408 | cmax
! 406563 | 406560 | ctid
! 406564 | 406560 | oid
! 406565 | 406560 | xmin
! 406566 | 406560 | cmin
! 406567 | 406560 | xmax
! 406568 | 406560 | cmax
! 406576 | 406573 | ctid
! 406577 | 406573 | oid
! 406578 | 406573 | xmin
! 406579 | 406573 | cmin
! 406580 | 406573 | xmax
! 406581 | 406573 | cmax
! 406595 | 406592 | ctid
! 406596 | 406592 | oid
! 406597 | 406592 | xmin
! 406598 | 406592 | cmin
! 406599 | 406592 | xmax
! 406600 | 406592 | cmax
! 406610 | 406608 | f1
! 406611 | 406608 | ctid
! 406612 | 406608 | oid
! 406613 | 406608 | xmin
! 406614 | 406608 | cmin
! 406615 | 406608 | xmax
! 406616 | 406608 | cmax
! 406627 | 406624 | ctid
! 406628 | 406624 | oid
! 406629 | 406624 | xmin
! 406630 | 406624 | cmin
! 406631 | 406624 | xmax
! 406632 | 406624 | cmax
! 406659 | 406656 | ctid
! 406660 | 406656 | oid
! 406661 | 406656 | xmin
! 406662 | 406656 | cmin
! 406663 | 406656 | xmax
! 406664 | 406656 | cmax
! 406674 | 406672 | f1
! 406675 | 406672 | ctid
! 406676 | 406672 | oid
! 406677 | 406672 | xmin
! 406678 | 406672 | cmin
! 406679 | 406672 | xmax
! 406680 | 406672 | cmax
! 406690 | 406688 | f1
! 406691 | 406688 | ctid
! 406692 | 406688 | oid
! 406693 | 406688 | xmin
! 406694 | 406688 | cmin
! 406695 | 406688 | xmax
! 406696 | 406688 | cmax
! 406722 | 406720 | f1
! 406723 | 406720 | ctid
! 406724 | 406720 | oid
! 406725 | 406720 | xmin
! 406726 | 406720 | cmin
! 406727 | 406720 | xmax
! 406728 | 406720 | cmax
! 406754 | 406752 | f1
! 406755 | 406752 | ctid
! 406756 | 406752 | oid
! 406757 | 406752 | xmin
! 406758 | 406752 | cmin
! 406759 | 406752 | xmax
! 406760 | 406752 | cmax
! 406786 | 406784 | q1
! 406787 | 406784 | q2
! 406788 | 406784 | ctid
! 406789 | 406784 | oid
! 406790 | 406784 | xmin
! 406791 | 406784 | cmin
! 406792 | 406784 | xmax
! 406793 | 406784 | cmax
! 406819 | 406816 | ctid
! 406820 | 406816 | oid
! 406821 | 406816 | xmin
! 406822 | 406816 | cmin
! 406823 | 406816 | xmax
! 406824 | 406816 | cmax
! 406850 | 406848 | f1
! 406851 | 406848 | ctid
! 406852 | 406848 | oid
! 406853 | 406848 | xmin
! 406854 | 406848 | cmin
! 406855 | 406848 | xmax
! 406856 | 406848 | cmax
! 406882 | 406880 | f1
! 406883 | 406880 | ctid
! 406884 | 406880 | oid
! 406885 | 406880 | xmin
! 406886 | 406880 | cmin
! 406887 | 406880 | xmax
! 406888 | 406880 | cmax
! 406914 | 406912 | id
! 406915 | 406912 | val
! 406916 | 406912 | ctid
! 406917 | 406912 | oid
! 406918 | 406912 | xmin
! 406919 | 406912 | cmin
! 406920 | 406912 | xmax
! 406921 | 406912 | cmax
! 406924 | 406922 | id1
! 406925 | 406922 | id2
! 406926 | 406922 | expected
! 406927 | 406922 | ctid
! 406928 | 406922 | oid
! 406929 | 406922 | xmin
! 406930 | 406922 | cmin
! 406931 | 406922 | xmax
! 406932 | 406922 | cmax
! 406935 | 406933 | id1
! 406936 | 406933 | id2
! 406937 | 406933 | expected
! 406938 | 406933 | ctid
! 406939 | 406933 | oid
! 406940 | 406933 | xmin
! 406941 | 406933 | cmin
! 406942 | 406933 | xmax
! 406943 | 406933 | cmax
! 406947 | 406945 | id1
! 406948 | 406945 | id2
! 406949 | 406945 | expected
! 406950 | 406945 | ctid
! 406951 | 406945 | oid
! 406952 | 406945 | xmin
! 406953 | 406945 | cmin
! 406954 | 406945 | xmax
! 406955 | 406945 | cmax
! 406958 | 406956 | id1
! 406959 | 406956 | id2
! 406960 | 406956 | expected
! 406961 | 406956 | ctid
! 406962 | 406956 | oid
! 406963 | 406956 | xmin
! 406964 | 406956 | cmin
! 406965 | 406956 | xmax
! 406966 | 406956 | cmax
! 406969 | 406967 | id
! 406970 | 406967 | expected
! 406971 | 406967 | ctid
! 406972 | 406967 | oid
! 406973 | 406967 | xmin
! 406974 | 406967 | cmin
! 406975 | 406967 | xmax
! 406976 | 406967 | cmax
! 406979 | 406977 | id
! 406980 | 406977 | expected
! 406981 | 406977 | ctid
! 406982 | 406977 | oid
! 406983 | 406977 | xmin
! 406984 | 406977 | cmin
! 406985 | 406977 | xmax
! 406986 | 406977 | cmax
! 406989 | 406987 | id
! 406990 | 406987 | expected
! 406991 | 406987 | ctid
! 406992 | 406987 | oid
! 406993 | 406987 | xmin
! 406994 | 406987 | cmin
! 406995 | 406987 | xmax
! 406996 | 406987 | cmax
! 406999 | 406997 | id
! 407000 | 406997 | expected
! 407001 | 406997 | ctid
! 407002 | 406997 | oid
! 407003 | 406997 | xmin
! 407004 | 406997 | cmin
! 407005 | 406997 | xmax
! 407006 | 406997 | cmax
! 407009 | 407007 | id1
! 407010 | 407007 | id2
! 407011 | 407007 | result
! 407012 | 407007 | ctid
! 407013 | 407007 | oid
! 407014 | 407007 | xmin
! 407015 | 407007 | cmin
! 407016 | 407007 | xmax
! 407017 | 407007 | cmax
! 407469 | 407468 | id1
! 407469 | 407468 | id2
! 407472 | 407471 | id1
! 407472 | 407471 | id2
! 407475 | 407474 | id1
! 407475 | 407474 | id2
! 407478 | 407477 | id1
! 407478 | 407477 | id2
! 407481 | 407480 | id
! 407484 | 407483 | id
! 407487 | 407486 | id
! 407490 | 407489 | id
! 408310 | 408306 | ctid
! 408311 | 408306 | oid
! 408312 | 408306 | xmin
! 408313 | 408306 | cmin
! 408314 | 408306 | xmax
! 408315 | 408306 | cmax
! 408355 | 408352 | ctid
! 408356 | 408352 | oid
! 408357 | 408352 | xmin
! 408358 | 408352 | cmin
! 408359 | 408352 | xmax
! 408360 | 408352 | cmax
! 408374 | 408371 | ctid
! 408375 | 408371 | oid
! 408376 | 408371 | xmin
! 408377 | 408371 | cmin
! 408378 | 408371 | xmax
! 408379 | 408371 | cmax
! 408388 | 408385 | ctid
! 408389 | 408385 | oid
! 408390 | 408385 | xmin
! 408391 | 408385 | cmin
! 408392 | 408385 | xmax
! 408393 | 408385 | cmax
! 408399 | 408394 | ctid
! 408400 | 408394 | oid
! 408401 | 408394 | xmin
! 408402 | 408394 | cmin
! 408403 | 408394 | xmax
! 408404 | 408394 | cmax
! 408482 | 408480 | f1
! 408483 | 408480 | ctid
! 408484 | 408480 | oid
! 408485 | 408480 | xmin
! 408486 | 408480 | cmin
! 408487 | 408480 | xmax
! 408488 | 408480 | cmax
! 408514 | 408512 | s
! 408515 | 408512 | ctid
! 408516 | 408512 | oid
! 408517 | 408512 | xmin
! 408518 | 408512 | cmin
! 408519 | 408512 | xmax
! 408520 | 408512 | cmax
! 408546 | 408544 | f1
! 408547 | 408544 | ctid
! 408548 | 408544 | oid
! 408549 | 408544 | xmin
! 408550 | 408544 | cmin
! 408551 | 408544 | xmax
! 408552 | 408544 | cmax
! 408578 | 408576 | f1
! 408579 | 408576 | ctid
! 408580 | 408576 | oid
! 408581 | 408576 | xmin
! 408582 | 408576 | cmin
! 408583 | 408576 | xmax
! 408584 | 408576 | cmax
! 408610 | 408608 | f1
! 408611 | 408608 | ctid
! 408612 | 408608 | oid
! 408613 | 408608 | xmin
! 408614 | 408608 | cmin
! 408615 | 408608 | xmax
! 408616 | 408608 | cmax
! 408642 | 408640 | f1
! 408643 | 408640 | ctid
! 408644 | 408640 | oid
! 408645 | 408640 | xmin
! 408646 | 408640 | cmin
! 408647 | 408640 | xmax
! 408648 | 408640 | cmax
! 408674 | 408672 | f1
! 408675 | 408672 | ctid
! 408676 | 408672 | oid
! 408677 | 408672 | xmin
! 408678 | 408672 | cmin
! 408679 | 408672 | xmax
! 408680 | 408672 | cmax
! 408706 | 408704 | d1
! 408707 | 408704 | ctid
! 408708 | 408704 | oid
! 408709 | 408704 | xmin
! 408710 | 408704 | cmin
! 408711 | 408704 | xmax
! 408712 | 408704 | cmax
! 408802 | 408800 | f1
! 408803 | 408800 | ctid
! 408804 | 408800 | oid
! 408805 | 408800 | xmin
! 408806 | 408800 | cmin
! 408807 | 408800 | xmax
! 408808 | 408800 | cmax
! 408834 | 408832 | f1
! 408835 | 408832 | ctid
! 408836 | 408832 | oid
! 408837 | 408832 | xmin
! 408838 | 408832 | cmin
! 408839 | 408832 | xmax
! 408840 | 408832 | cmax
! 408866 | 408864 | c
! 408867 | 408864 | i
! 408868 | 408864 | ctid
! 408869 | 408864 | oid
! 408870 | 408864 | xmin
! 408871 | 408864 | cmin
! 408872 | 408864 | xmax
! 408873 | 408864 | cmax
! (759 rows)
-- Look for duplicate pg_attribute entries
-- (This would not be necessary if the indexes on pg_attribute were UNIQUE?)
***************
*** 143,160 ****
WHERE p1.oid != p2.oid AND
p1.attrelid = p2.attrelid AND
(p1.attname = p2.attname OR p1.attnum = p2.attnum);
! oid | attname | oid | attname
! -----+---------+-----+---------
! (0 rows)
!
-- Cross-check attnum against parent relation
SELECT p1.oid, p1.attname, p2.oid, p2.relname
FROM pg_attribute AS p1, pg_class AS p2
WHERE p1.attrelid = p2.oid AND p1.attnum > p2.relnatts;
! oid | attname | oid | relname
! -----+---------+-----+---------
! (0 rows)
!
-- Detect missing pg_attribute entries: should have as many non-system
-- attributes as parent relation expects
SELECT p1.oid, p1.relname
--- 947,958 ----
WHERE p1.oid != p2.oid AND
p1.attrelid = p2.attrelid AND
(p1.attname = p2.attname OR p1.attnum = p2.attnum);
! ERROR: get_attdisbursion: no attribute tuple 1249 -2
-- Cross-check attnum against parent relation
SELECT p1.oid, p1.attname, p2.oid, p2.relname
FROM pg_attribute AS p1, pg_class AS p2
WHERE p1.attrelid = p2.oid AND p1.attnum > p2.relnatts;
! ERROR: getattproperties: no attribute tuple 1259 -2
-- Detect missing pg_attribute entries: should have as many non-system
-- attributes as parent relation expects
SELECT p1.oid, p1.relname
***************
*** 172,178 ****
(p1.attlen != p2.typlen OR
p1.attalign != p2.typalign OR
p1.attbyval != p2.typbyval);
! oid | attname | oid | typname
! -----+---------+-----+---------
! (0 rows)
!
--- 970,973 ----
(p1.attlen != p2.typlen OR
p1.attalign != p2.typalign OR
p1.attbyval != p2.typbyval);
! ERROR: getattproperties: no attribute tuple 1247 -2
----------------------
*** expected/opr_sanity.out Sat Jan 22 15:51:20 2000
--- results/opr_sanity.out Thu Dec 28 18:05:47 2000
***************
*** 42,51 ****
p1.proname = p2.proname AND
p1.pronargs = p2.pronargs AND
p1.proargtypes = p2.proargtypes;
! oid | proname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Considering only built-in procs (prolang = 11), look for multiple uses
-- of the same internal function (ie, matching prosrc fields). It's OK to
-- have several entries with different pronames for the same internal function,
--- 42,48 ----
p1.proname = p2.proname AND
p1.pronargs = p2.pronargs AND
p1.proargtypes = p2.proargtypes;
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
-- Considering only built-in procs (prolang = 11), look for multiple uses
-- of the same internal function (ie, matching prosrc fields). It's OK to
-- have several entries with different pronames for the same internal function,
***************
*** 60,69 ****
p1.proiscachable != p2.proiscachable OR
p1.pronargs != p2.pronargs OR
p1.proretset != p2.proretset);
! oid | proname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Look for uses of different type OIDs in the argument/result type fields
-- for different aliases of the same built-in function.
-- This indicates that the types are being presumed to be binary-equivalent.
--- 57,63 ----
p1.proiscachable != p2.proiscachable OR
p1.pronargs != p2.pronargs OR
p1.proretset != p2.proretset);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
-- Look for uses of different type OIDs in the argument/result type fields
-- for different aliases of the same built-in function.
-- This indicates that the types are being presumed to be binary-equivalent.
***************
*** 75,160 ****
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.prorettype < p2.prorettype);
! prorettype | prorettype
! ------------+------------
! 18 | 25
! 25 | 1043
! (2 rows)
!
SELECT DISTINCT p1.proargtypes[0], p2.proargtypes[0]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[0] < p2.proargtypes[0]);
! proargtypes | proargtypes
! -------------+-------------
! 25 | 1043
! 1042 | 1043
! (2 rows)
!
SELECT DISTINCT p1.proargtypes[1], p2.proargtypes[1]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[1] < p2.proargtypes[1]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
SELECT DISTINCT p1.proargtypes[2], p2.proargtypes[2]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[2] < p2.proargtypes[2]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
SELECT DISTINCT p1.proargtypes[3], p2.proargtypes[3]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[3] < p2.proargtypes[3]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
SELECT DISTINCT p1.proargtypes[4], p2.proargtypes[4]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[4] < p2.proargtypes[4]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
SELECT DISTINCT p1.proargtypes[5], p2.proargtypes[5]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[5] < p2.proargtypes[5]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
SELECT DISTINCT p1.proargtypes[6], p2.proargtypes[6]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[6] < p2.proargtypes[6]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
SELECT DISTINCT p1.proargtypes[7], p2.proargtypes[7]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[7] < p2.proargtypes[7]);
! proargtypes | proargtypes
! -------------+-------------
! (0 rows)
!
-- **************** pg_operator ****************
-- Look for illegal values in pg_operator fields.
SELECT p1.oid, p1.oprname
--- 69,123 ----
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.prorettype < p2.prorettype);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[0], p2.proargtypes[0]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[0] < p2.proargtypes[0]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[1], p2.proargtypes[1]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[1] < p2.proargtypes[1]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[2], p2.proargtypes[2]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[2] < p2.proargtypes[2]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[3], p2.proargtypes[3]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[3] < p2.proargtypes[3]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[4], p2.proargtypes[4]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[4] < p2.proargtypes[4]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[5], p2.proargtypes[5]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[5] < p2.proargtypes[5]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[6], p2.proargtypes[6]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[6] < p2.proargtypes[6]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
SELECT DISTINCT p1.proargtypes[7], p2.proargtypes[7]
FROM pg_proc AS p1, pg_proc AS p2
WHERE p1.oid != p2.oid AND
p1.prosrc = p2.prosrc AND p1.prolang = 11 AND p2.prolang = 11 AND
(p1.proargtypes[7] < p2.proargtypes[7]);
! ERROR: get_attdisbursion: no attribute tuple 1255 -2
-- **************** pg_operator ****************
-- Look for illegal values in pg_operator fields.
SELECT p1.oid, p1.oprname
***************
*** 184,193 ****
p1.oprkind = p2.oprkind AND
p1.oprleft = p2.oprleft AND
p1.oprright = p2.oprright;
! oid | oprcode | oid | oprcode
! -----+---------+-----+---------
! (0 rows)
!
-- Look for commutative operators that don't commute.
-- DEFINITIONAL NOTE: If A.oprcom = B, then x A y has the same result as y B x.
-- We expect that B will always say that B.oprcom = A as well; that's not
--- 147,153 ----
p1.oprkind = p2.oprkind AND
p1.oprleft = p2.oprleft AND
p1.oprright = p2.oprright;
! ERROR: get_attdisbursion: no attribute tuple 16597 -2
-- Look for commutative operators that don't commute.
-- DEFINITIONAL NOTE: If A.oprcom = B, then x A y has the same result as y B x.
-- We expect that B will always say that B.oprcom = A as well; that's not
***************
*** 200,209 ****
p1.oprright != p2.oprleft OR
p1.oprresult != p2.oprresult OR
p1.oid != p2.oprcom);
! oid | oprcode | oid | oprcode
! -----+---------+-----+---------
! (0 rows)
!
-- Look for negatory operators that don't agree.
-- DEFINITIONAL NOTE: If A.oprnegate = B, then both A and B must yield
-- boolean results, and (x A y) == ! (x B y), or the equivalent for
--- 160,166 ----
p1.oprright != p2.oprleft OR
p1.oprresult != p2.oprresult OR
p1.oid != p2.oprcom);
! ERROR: getattproperties: no attribute tuple 16597 -2
-- Look for negatory operators that don't agree.
-- DEFINITIONAL NOTE: If A.oprnegate = B, then both A and B must yield
-- boolean results, and (x A y) == ! (x B y), or the equivalent for
***************
*** 219,228 ****
p1.oprresult != 16 OR
p2.oprresult != 16 OR
p1.oid != p2.oprnegate);
! oid | oprcode | oid | oprcode
! -----+---------+-----+---------
! (0 rows)
!
-- Look for mergejoin operators that don't match their links.
-- A mergejoin link leads from an '=' operator to the
-- sort operator ('<' operator) that's appropriate for
--- 176,182 ----
p1.oprresult != 16 OR
p2.oprresult != 16 OR
p1.oid != p2.oprnegate);
! ERROR: getattproperties: no attribute tuple 16597 -2
-- Look for mergejoin operators that don't match their links.
-- A mergejoin link leads from an '=' operator to the
-- sort operator ('<' operator) that's appropriate for
***************
*** 237,246 ****
p1.oprresult != 16 OR
p2.oprresult != 16 OR
p1.oprrsortop = 0);
! oid | oprcode | oid | oprcode
! -----+---------+-----+---------
! (0 rows)
!
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
FROM pg_operator AS p1, pg_operator AS p2
WHERE p1.oprrsortop = p2.oid AND
--- 191,197 ----
p1.oprresult != 16 OR
p2.oprresult != 16 OR
p1.oprrsortop = 0);
! ERROR: getattproperties: no attribute tuple 16597 -2
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
FROM pg_operator AS p1, pg_operator AS p2
WHERE p1.oprrsortop = p2.oid AND
***************
*** 251,260 ****
p1.oprresult != 16 OR
p2.oprresult != 16 OR
p1.oprlsortop = 0);
! oid | oprcode | oid | oprcode
! -----+---------+-----+---------
! (0 rows)
!
-- A mergejoinable = operator must have a commutator (usually itself)
-- as well as corresponding < and > operators. Note that the "corresponding"
-- operators have the same L and R input datatypes as the = operator,
--- 202,208 ----
p1.oprresult != 16 OR
p2.oprresult != 16 OR
p1.oprlsortop = 0);
! ERROR: getattproperties: no attribute tuple 16597 -2
-- A mergejoinable = operator must have a commutator (usually itself)
-- as well as corresponding < and > operators. Note that the "corresponding"
-- operators have the same L and R input datatypes as the = operator,
***************
*** 326,335 ****
SELECT p1.oid, p1.oprname
FROM pg_operator AS p1, pg_proc AS p2
WHERE p1.oprcanhash AND p1.oprcode = p2.oid AND p2.proname = 'array_eq';
! oid | oprname
! -----+---------
! (0 rows)
!
-- Check that each operator defined in pg_operator matches its oprcode entry
-- in pg_proc. Easiest to do this separately for each oprkind.
-- FIXME: want to check that argument/result types match, but how to do that
--- 274,280 ----
SELECT p1.oid, p1.oprname
FROM pg_operator AS p1, pg_proc AS p2
WHERE p1.oprcanhash AND p1.oprcode = p2.oid AND p2.proname = 'array_eq';
! ERROR: getattproperties: no attribute tuple 1255 -2
-- Check that each operator defined in pg_operator matches its oprcode entry
-- in pg_proc. Easiest to do this separately for each oprkind.
-- FIXME: want to check that argument/result types match, but how to do that
***************
*** 345,354 ****
-- (p1.oprleft != p2.proargtypes[0] AND p2.proargtypes[0] != 0) OR
-- (p1.oprright != p2.proargtypes[1] AND p2.proargtypes[1] != 0)
);
! oid | oprname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- These two selects can be left as-is because there are no binary-compatible
-- cases that they trip over, at least in 6.5:
SELECT p1.oid, p1.oprname, p2.oid, p2.proname
--- 290,296 ----
-- (p1.oprleft != p2.proargtypes[0] AND p2.proargtypes[0] != 0) OR
-- (p1.oprright != p2.proargtypes[1] AND p2.proargtypes[1] != 0)
);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- These two selects can be left as-is because there are no binary-compatible
-- cases that they trip over, at least in 6.5:
SELECT p1.oid, p1.oprname, p2.oid, p2.proname
***************
*** 359,368 ****
p1.oprresult != p2.prorettype OR
(p1.oprright != p2.proargtypes[0] AND p2.proargtypes[0] != 0) OR
p1.oprleft != 0);
! oid | oprname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
SELECT p1.oid, p1.oprname, p2.oid, p2.proname
FROM pg_operator AS p1, pg_proc AS p2
WHERE p1.oprcode = p2.oid AND
--- 301,307 ----
p1.oprresult != p2.prorettype OR
(p1.oprright != p2.proargtypes[0] AND p2.proargtypes[0] != 0) OR
p1.oprleft != 0);
! ERROR: getattproperties: no attribute tuple 1255 -2
SELECT p1.oid, p1.oprname, p2.oid, p2.proname
FROM pg_operator AS p1, pg_proc AS p2
WHERE p1.oprcode = p2.oid AND
***************
*** 371,380 ****
p1.oprresult != p2.prorettype OR
(p1.oprleft != p2.proargtypes[0] AND p2.proargtypes[0] != 0) OR
p1.oprright != 0);
! oid | oprname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- If oprrest is set, the operator must return boolean,
-- and it must link to a proc with the right signature
-- to be a restriction selectivity estimator.
--- 310,316 ----
p1.oprresult != p2.prorettype OR
(p1.oprleft != p2.proargtypes[0] AND p2.proargtypes[0] != 0) OR
p1.oprright != 0);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- If oprrest is set, the operator must return boolean,
-- and it must link to a proc with the right signature
-- to be a restriction selectivity estimator.
***************
*** 388,397 ****
p2.proargtypes[0] != 26 OR p2.proargtypes[1] != 26 OR
p2.proargtypes[2] != 21 OR p2.proargtypes[3] != 0 OR
p2.proargtypes[4] != 23);
! oid | oprname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- If oprjoin is set, the operator must be a binary boolean op,
-- and it must link to a proc with the right signature
-- to be a join selectivity estimator.
--- 324,330 ----
p2.proargtypes[0] != 26 OR p2.proargtypes[1] != 26 OR
p2.proargtypes[2] != 21 OR p2.proargtypes[3] != 0 OR
p2.proargtypes[4] != 23);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- If oprjoin is set, the operator must be a binary boolean op,
-- and it must link to a proc with the right signature
-- to be a join selectivity estimator.
***************
*** 405,414 ****
p2.proargtypes[0] != 26 OR p2.proargtypes[1] != 26 OR
p2.proargtypes[2] != 21 OR p2.proargtypes[3] != 26 OR
p2.proargtypes[4] != 21);
! oid | oprname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- **************** pg_aggregate ****************
-- Look for illegal values in pg_aggregate fields.
-- aggbasetype can only be 0 if transfn1 is not present (eg, count(*))
--- 338,344 ----
p2.proargtypes[0] != 26 OR p2.proargtypes[1] != 26 OR
p2.proargtypes[2] != 21 OR p2.proargtypes[3] != 26 OR
p2.proargtypes[4] != 21);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- **************** pg_aggregate ****************
-- Look for illegal values in pg_aggregate fields.
-- aggbasetype can only be 0 if transfn1 is not present (eg, count(*))
***************
*** 473,482 ****
-- p1.aggtranstype1 != p2.proargtypes[0] OR
-- p1.aggbasetype != p2.proargtypes[1]
);
! oid | aggname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Cross-check transfn2 (if present) against its entry in pg_proc.
-- FIXME: what about binary-compatible types?
SELECT p1.oid, p1.aggname, p2.oid, p2.proname
--- 403,409 ----
-- p1.aggtranstype1 != p2.proargtypes[0] OR
-- p1.aggbasetype != p2.proargtypes[1]
);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- Cross-check transfn2 (if present) against its entry in pg_proc.
-- FIXME: what about binary-compatible types?
SELECT p1.oid, p1.aggname, p2.oid, p2.proname
***************
*** 485,494 ****
(p2.proretset OR p1.aggtranstype2 != p2.prorettype OR
p2.pronargs != 1 OR
p1.aggtranstype2 != p2.proargtypes[0]);
! oid | aggname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- Cross-check finalfn (if present) against its entry in pg_proc.
-- FIXME: what about binary-compatible types?
SELECT p1.oid, p1.aggname, p2.oid, p2.proname
--- 412,418 ----
(p2.proretset OR p1.aggtranstype2 != p2.prorettype OR
p2.pronargs != 1 OR
p1.aggtranstype2 != p2.proargtypes[0]);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- Cross-check finalfn (if present) against its entry in pg_proc.
-- FIXME: what about binary-compatible types?
SELECT p1.oid, p1.aggname, p2.oid, p2.proname
***************
*** 498,507 ****
p2.pronargs != 2 OR
p1.aggtranstype1 != p2.proargtypes[0] OR
p1.aggtranstype2 != p2.proargtypes[1]);
! oid | aggname | oid | proname
! -----+---------+-----+---------
! (0 rows)
!
-- **************** pg_amop ****************
-- Look for illegal values in pg_amop fields
SELECT p1.oid
--- 422,428 ----
p2.pronargs != 2 OR
p1.aggtranstype1 != p2.proargtypes[0] OR
p1.aggtranstype2 != p2.proargtypes[1]);
! ERROR: getattproperties: no attribute tuple 1255 -2
-- **************** pg_amop ****************
-- Look for illegal values in pg_amop fields
SELECT p1.oid
***************
*** 519,536 ****
p1.amopid = p2.amopid AND
p1.amopclaid = p2.amopclaid AND
p1.amopstrategy = p2.amopstrategy;
! oid | oid
! -----+-----
! (0 rows)
!
-- Cross-check amopstrategy index against parent AM
SELECT p1.oid, p2.oid, p2.amname
FROM pg_amop AS p1, pg_am AS p2
WHERE p1.amopid = p2.oid AND p1.amopstrategy > p2.amstrategies;
! oid | oid | amname
! -----+-----+--------
! (0 rows)
!
-- Detect missing pg_amop entries: should have as many strategy functions
-- as AM expects for each opclass, unless there are none at all
-- (some opclasses only offer support for a limited set of AMs...)
--- 440,451 ----
p1.amopid = p2.amopid AND
p1.amopclaid = p2.amopclaid AND
p1.amopstrategy = p2.amopstrategy;
! ERROR: get_attdisbursion: no attribute tuple 16662 -2
-- Cross-check amopstrategy index against parent AM
SELECT p1.oid, p2.oid, p2.amname
FROM pg_amop AS p1, pg_am AS p2
WHERE p1.amopid = p2.oid AND p1.amopstrategy > p2.amstrategies;
! ERROR: get_attdisbursion: no attribute tuple 16631 -2
-- Detect missing pg_amop entries: should have as many strategy functions
-- as AM expects for each opclass, unless there are none at all
-- (some opclasses only offer support for a limited set of AMs...)
***************
*** 549,568 ****
FROM pg_amop AS p1, pg_operator AS p2
WHERE p1.amopopr = p2.oid AND
(p2.oprkind != 'b' OR p2.oprresult != 16);
! oid | oid | oprname
! -----+-----+---------
! (0 rows)
!
-- If opclass is for a specific type, operator inputs should be of that type
SELECT p1.oid, p2.oid, p2.oprname, p3.oid, p3.opcname
FROM pg_amop AS p1, pg_operator AS p2, pg_opclass AS p3
WHERE p1.amopopr = p2.oid AND p1.amopclaid = p3.oid AND
p3.opcdeftype != 0 AND
(p3.opcdeftype != p2.oprleft OR p3.opcdeftype != p2.oprright);
! oid | oid | oprname | oid | opcname
! -----+-----+---------+-----+---------
! (0 rows)
!
-- **************** pg_amproc ****************
-- Look for illegal values in pg_amproc fields
SELECT p1.oid
--- 464,477 ----
FROM pg_amop AS p1, pg_operator AS p2
WHERE p1.amopopr = p2.oid AND
(p2.oprkind != 'b' OR p2.oprresult != 16);
! ERROR: getattproperties: no attribute tuple 16597 -2
-- If opclass is for a specific type, operator inputs should be of that type
SELECT p1.oid, p2.oid, p2.oprname, p3.oid, p3.opcname
FROM pg_amop AS p1, pg_operator AS p2, pg_opclass AS p3
WHERE p1.amopopr = p2.oid AND p1.amopclaid = p3.oid AND
p3.opcdeftype != 0 AND
(p3.opcdeftype != p2.oprleft OR p3.opcdeftype != p2.oprright);
! ERROR: getattproperties: no attribute tuple 16597 -2
-- **************** pg_amproc ****************
-- Look for illegal values in pg_amproc fields
SELECT p1.oid
***************
*** 580,597 ****
p1.amid = p2.amid AND
p1.amopclaid = p2.amopclaid AND
p1.amprocnum = p2.amprocnum;
! oid | oid
! -----+-----
! (0 rows)
!
-- Cross-check amprocnum index against parent AM
SELECT p1.oid, p2.oid, p2.amname
FROM pg_amproc AS p1, pg_am AS p2
WHERE p1.amid = p2.oid AND p1.amprocnum > p2.amsupport;
! oid | oid | amname
! -----+-----+--------
! (0 rows)
!
-- Detect missing pg_amproc entries: should have as many support functions
-- as AM expects for each opclass, unless there are none at all
-- (some opclasses only offer support for a limited set of AMs...)
--- 489,500 ----
p1.amid = p2.amid AND
p1.amopclaid = p2.amopclaid AND
p1.amprocnum = p2.amprocnum;
! ERROR: get_attdisbursion: no attribute tuple 16856 -2
-- Cross-check amprocnum index against parent AM
SELECT p1.oid, p2.oid, p2.amname
FROM pg_amproc AS p1, pg_am AS p2
WHERE p1.amid = p2.oid AND p1.amprocnum > p2.amsupport;
! ERROR: get_attdisbursion: no attribute tuple 16631 -2
-- Detect missing pg_amproc entries: should have as many support functions
-- as AM expects for each opclass, unless there are none at all
-- (some opclasses only offer support for a limited set of AMs...)
***************
*** 616,622 ****
p1.amid = p3.amid AND p1.amprocnum = p3.amprocnum AND
p1.amproc = p2.oid AND p3.amproc = p4.oid AND
(p2.proretset OR p4.proretset OR p2.pronargs != p4.pronargs);
! oid | oid | proname | oid | oid | proname
! -----+-----+---------+-----+-----+---------
! (0 rows)
!
--- 519,522 ----
p1.amid = p3.amid AND p1.amprocnum = p3.amprocnum AND
p1.amproc = p2.oid AND p3.amproc = p4.oid AND
(p2.proretset OR p4.proretset OR p2.pronargs != p4.pronargs);
! ERROR: getattproperties: no attribute tuple 1255 -2
----------------------
*** expected/horology.out Mon Mar 20 21:59:14 2000
--- results/horology.out Thu Dec 28 18:05:51 2000
***************
*** 771,794 ****
SELECT '' AS five, d1 AS timestamp, abstime(d1) AS abstime
FROM TIMESTAMP_TBL WHERE NOT isfinite(d1);
! five | timestamp | abstime
! ------+-----------+-----------
! | invalid | invalid
! | -infinity | -infinity
! | infinity | infinity
! | invalid | invalid
! | invalid | invalid
! (5 rows)
!
SELECT '' AS three, f1 as abstime, timestamp(f1) AS timestamp
FROM ABSTIME_TBL WHERE NOT isfinite(f1);
! three | abstime | timestamp
! -------+-----------+-----------
! | infinity | infinity
! | -infinity | -infinity
! | invalid | invalid
! (3 rows)
!
SELECT '' AS ten, f1 AS interval, reltime( f1) AS reltime
FROM INTERVAL_TBL;
ten | interval | reltime
--- 771,780 ----
SELECT '' AS five, d1 AS timestamp, abstime(d1) AS abstime
FROM TIMESTAMP_TBL WHERE NOT isfinite(d1);
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS three, f1 as abstime, timestamp(f1) AS timestamp
FROM ABSTIME_TBL WHERE NOT isfinite(f1);
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS ten, f1 AS interval, reltime( f1) AS reltime
FROM INTERVAL_TBL;
ten | interval | reltime
***************
*** 825,900 ****
SHOW DateStyle;
NOTICE: DateStyle is Postgres with US (NonEuropean) conventions
SELECT '' AS "66", d1 AS us_postgres FROM TIMESTAMP_TBL;
! 66 | us_postgres
! ----+---------------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | Mon Feb 10 17:32:01 1997 PST
! | invalid
! | invalid
! | Mon Feb 10 17:32:01.00 1997 PST
! | Mon Feb 10 17:32:02.00 1997 PST
! | Mon Feb 10 17:32:01.40 1997 PST
! | Mon Feb 10 17:32:01.50 1997 PST
! | Mon Feb 10 17:32:01.60 1997 PST
! | Thu Jan 02 00:00:00 1997 PST
! | Thu Jan 02 03:04:05 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Tue Jun 10 17:32:01 1997 PDT
! | Wed Mar 15 08:14:01 2000 PST
! | Wed Mar 15 04:14:02 2000 PST
! | Wed Mar 15 02:14:03 2000 PST
! | Wed Mar 15 03:14:04 2000 PST
! | Wed Mar 15 01:14:05 2000 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:00 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 17:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Mon Feb 10 09:32:01 1997 PST
! | Tue Jun 10 18:32:01 1997 PDT
! | Mon Feb 10 17:32:01 1997 PST
! | Tue Feb 11 17:32:01 1997 PST
! | Wed Feb 12 17:32:01 1997 PST
! | Thu Feb 13 17:32:01 1997 PST
! | Fri Feb 14 17:32:01 1997 PST
! | Sat Feb 15 17:32:01 1997 PST
! | Sun Feb 16 17:32:01 1997 PST
! | Tue Feb 16 17:32 0097 BC
! | Sat Feb 16 17:32:01 0097
! | Thu Feb 16 17:32:01 0597
! | Tue Feb 16 17:32:01 1097
! | Sat Feb 16 17:32:01 1697
! | Thu Feb 16 17:32:01 1797
! | Tue Feb 16 17:32:01 1897
! | Sun Feb 16 17:32:01 1997 PST
! | Sat Feb 16 17:32:01 2097
! | Wed Feb 28 17:32:01 1996 PST
! | Thu Feb 29 17:32:01 1996 PST
! | Fri Mar 01 17:32:01 1996 PST
! | Mon Dec 30 17:32:01 1996 PST
! | Tue Dec 31 17:32:01 1996 PST
! | Wed Jan 01 17:32:01 1997 PST
! | Fri Feb 28 17:32:01 1997 PST
! | Sat Mar 01 17:32:01 1997 PST
! | Tue Dec 30 17:32:01 1997 PST
! | Wed Dec 31 17:32:01 1997 PST
! | Fri Dec 31 17:32:01 1999 PST
! | Sat Jan 01 17:32:01 2000 PST
! | Sun Dec 31 17:32:01 2000 PST
! | Mon Jan 01 17:32:01 2001 PST
! (66 rows)
!
SELECT '' AS eight, f1 AS us_postgres FROM ABSTIME_TBL;
eight | us_postgres
-------+------------------------------
--- 811,817 ----
SHOW DateStyle;
NOTICE: DateStyle is Postgres with US (NonEuropean) conventions
SELECT '' AS "66", d1 AS us_postgres FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS eight, f1 AS us_postgres FROM ABSTIME_TBL;
eight | us_postgres
-------+------------------------------
***************
*** 910,985 ****
SET DateStyle TO 'US,ISO';
SELECT '' AS "66", d1 AS us_iso FROM TIMESTAMP_TBL;
! 66 | us_iso
! ----+---------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | 1997-02-10 17:32:01-08
! | invalid
! | invalid
! | 1997-02-10 17:32:01.00-08
! | 1997-02-10 17:32:02.00-08
! | 1997-02-10 17:32:01.40-08
! | 1997-02-10 17:32:01.50-08
! | 1997-02-10 17:32:01.60-08
! | 1997-01-02 00:00:00-08
! | 1997-01-02 03:04:05-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-06-10 17:32:01-07
! | 2000-03-15 08:14:01-08
! | 2000-03-15 04:14:02-08
! | 2000-03-15 02:14:03-08
! | 2000-03-15 03:14:04-08
! | 2000-03-15 01:14:05-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:00-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 09:32:01-08
! | 1997-02-10 09:32:01-08
! | 1997-02-10 09:32:01-08
! | 1997-06-10 18:32:01-07
! | 1997-02-10 17:32:01-08
! | 1997-02-11 17:32:01-08
! | 1997-02-12 17:32:01-08
! | 1997-02-13 17:32:01-08
! | 1997-02-14 17:32:01-08
! | 1997-02-15 17:32:01-08
! | 1997-02-16 17:32:01-08
! | 0097-02-16 17:32 BC
! | 0097-02-16 17:32:01
! | 0597-02-16 17:32:01
! | 1097-02-16 17:32:01
! | 1697-02-16 17:32:01
! | 1797-02-16 17:32:01
! | 1897-02-16 17:32:01
! | 1997-02-16 17:32:01-08
! | 2097-02-16 17:32:01
! | 1996-02-28 17:32:01-08
! | 1996-02-29 17:32:01-08
! | 1996-03-01 17:32:01-08
! | 1996-12-30 17:32:01-08
! | 1996-12-31 17:32:01-08
! | 1997-01-01 17:32:01-08
! | 1997-02-28 17:32:01-08
! | 1997-03-01 17:32:01-08
! | 1997-12-30 17:32:01-08
! | 1997-12-31 17:32:01-08
! | 1999-12-31 17:32:01-08
! | 2000-01-01 17:32:01-08
! | 2000-12-31 17:32:01-08
! | 2001-01-01 17:32:01-08
! (66 rows)
!
SELECT '' AS eight, f1 AS us_iso FROM ABSTIME_TBL;
eight | us_iso
-------+------------------------
--- 827,833 ----
SET DateStyle TO 'US,ISO';
SELECT '' AS "66", d1 AS us_iso FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS eight, f1 AS us_iso FROM ABSTIME_TBL;
eight | us_iso
-------+------------------------
***************
*** 997,1072 ****
SHOW DateStyle;
NOTICE: DateStyle is SQL with US (NonEuropean) conventions
SELECT '' AS "66", d1 AS us_sql FROM TIMESTAMP_TBL;
! 66 | us_sql
! ----+----------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | 02/10/1997 17:32:01.00 PST
! | invalid
! | invalid
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:02.00 PST
! | 02/10/1997 17:32:01.40 PST
! | 02/10/1997 17:32:01.50 PST
! | 02/10/1997 17:32:01.60 PST
! | 01/02/1997 00:00:00.00 PST
! | 01/02/1997 03:04:05.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 06/10/1997 17:32:01.00 PDT
! | 03/15/2000 08:14:01.00 PST
! | 03/15/2000 04:14:02.00 PST
! | 03/15/2000 02:14:03.00 PST
! | 03/15/2000 03:14:04.00 PST
! | 03/15/2000 01:14:05.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:00.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 17:32:01.00 PST
! | 02/10/1997 09:32:01.00 PST
! | 02/10/1997 09:32:01.00 PST
! | 02/10/1997 09:32:01.00 PST
! | 06/10/1997 18:32:01.00 PDT
! | 02/10/1997 17:32:01.00 PST
! | 02/11/1997 17:32:01.00 PST
! | 02/12/1997 17:32:01.00 PST
! | 02/13/1997 17:32:01.00 PST
! | 02/14/1997 17:32:01.00 PST
! | 02/15/1997 17:32:01.00 PST
! | 02/16/1997 17:32:01.00 PST
! | 02/16/0097 17:32 BC
! | 02/16/0097 17:32:01.00
! | 02/16/0597 17:32:01.00
! | 02/16/1097 17:32:01.00
! | 02/16/1697 17:32:01.00
! | 02/16/1797 17:32:01.00
! | 02/16/1897 17:32:01.00
! | 02/16/1997 17:32:01.00 PST
! | 02/16/2097 17:32:01.00
! | 02/28/1996 17:32:01.00 PST
! | 02/29/1996 17:32:01.00 PST
! | 03/01/1996 17:32:01.00 PST
! | 12/30/1996 17:32:01.00 PST
! | 12/31/1996 17:32:01.00 PST
! | 01/01/1997 17:32:01.00 PST
! | 02/28/1997 17:32:01.00 PST
! | 03/01/1997 17:32:01.00 PST
! | 12/30/1997 17:32:01.00 PST
! | 12/31/1997 17:32:01.00 PST
! | 12/31/1999 17:32:01.00 PST
! | 01/01/2000 17:32:01.00 PST
! | 12/31/2000 17:32:01.00 PST
! | 01/01/2001 17:32:01.00 PST
! (66 rows)
!
SELECT '' AS eight, f1 AS us_sql FROM ABSTIME_TBL;
eight | us_sql
-------+----------------------------
--- 845,851 ----
SHOW DateStyle;
NOTICE: DateStyle is SQL with US (NonEuropean) conventions
SELECT '' AS "66", d1 AS us_sql FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS eight, f1 AS us_sql FROM ABSTIME_TBL;
eight | us_sql
-------+----------------------------
***************
*** 1091,1167 ****
(1 row)
SELECT '' AS "67", d1 AS european_postgres FROM TIMESTAMP_TBL;
! 67 | european_postgres
! ----+---------------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | Mon 10 Feb 17:32:01 1997 PST
! | invalid
! | invalid
! | Mon 10 Feb 17:32:01.00 1997 PST
! | Mon 10 Feb 17:32:02.00 1997 PST
! | Mon 10 Feb 17:32:01.40 1997 PST
! | Mon 10 Feb 17:32:01.50 1997 PST
! | Mon 10 Feb 17:32:01.60 1997 PST
! | Thu 02 Jan 00:00:00 1997 PST
! | Thu 02 Jan 03:04:05 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Tue 10 Jun 17:32:01 1997 PDT
! | Wed 15 Mar 08:14:01 2000 PST
! | Wed 15 Mar 04:14:02 2000 PST
! | Wed 15 Mar 02:14:03 2000 PST
! | Wed 15 Mar 03:14:04 2000 PST
! | Wed 15 Mar 01:14:05 2000 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:00 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 17:32:01 1997 PST
! | Mon 10 Feb 09:32:01 1997 PST
! | Mon 10 Feb 09:32:01 1997 PST
! | Mon 10 Feb 09:32:01 1997 PST
! | Tue 10 Jun 18:32:01 1997 PDT
! | Mon 10 Feb 17:32:01 1997 PST
! | Tue 11 Feb 17:32:01 1997 PST
! | Wed 12 Feb 17:32:01 1997 PST
! | Thu 13 Feb 17:32:01 1997 PST
! | Fri 14 Feb 17:32:01 1997 PST
! | Sat 15 Feb 17:32:01 1997 PST
! | Sun 16 Feb 17:32:01 1997 PST
! | Tue 16 Feb 17:32 0097 BC
! | Sat 16 Feb 17:32:01 0097
! | Thu 16 Feb 17:32:01 0597
! | Tue 16 Feb 17:32:01 1097
! | Sat 16 Feb 17:32:01 1697
! | Thu 16 Feb 17:32:01 1797
! | Tue 16 Feb 17:32:01 1897
! | Sun 16 Feb 17:32:01 1997 PST
! | Sat 16 Feb 17:32:01 2097
! | Wed 28 Feb 17:32:01 1996 PST
! | Thu 29 Feb 17:32:01 1996 PST
! | Fri 01 Mar 17:32:01 1996 PST
! | Mon 30 Dec 17:32:01 1996 PST
! | Tue 31 Dec 17:32:01 1996 PST
! | Wed 01 Jan 17:32:01 1997 PST
! | Fri 28 Feb 17:32:01 1997 PST
! | Sat 01 Mar 17:32:01 1997 PST
! | Tue 30 Dec 17:32:01 1997 PST
! | Wed 31 Dec 17:32:01 1997 PST
! | Fri 31 Dec 17:32:01 1999 PST
! | Sat 01 Jan 17:32:01 2000 PST
! | Sun 31 Dec 17:32:01 2000 PST
! | Mon 01 Jan 17:32:01 2001 PST
! | Thu 13 Jun 00:00:00 1957 PDT
! (67 rows)
!
SELECT '' AS eight, f1 AS european_postgres FROM ABSTIME_TBL;
eight | european_postgres
-------+------------------------------
--- 870,876 ----
(1 row)
SELECT '' AS "67", d1 AS european_postgres FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS eight, f1 AS european_postgres FROM ABSTIME_TBL;
eight | european_postgres
-------+------------------------------
***************
*** 1179,1255 ****
SHOW DateStyle;
NOTICE: DateStyle is ISO with European conventions
SELECT '' AS "67", d1 AS european_iso FROM TIMESTAMP_TBL;
! 67 | european_iso
! ----+---------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | 1997-02-10 17:32:01-08
! | invalid
! | invalid
! | 1997-02-10 17:32:01.00-08
! | 1997-02-10 17:32:02.00-08
! | 1997-02-10 17:32:01.40-08
! | 1997-02-10 17:32:01.50-08
! | 1997-02-10 17:32:01.60-08
! | 1997-01-02 00:00:00-08
! | 1997-01-02 03:04:05-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-06-10 17:32:01-07
! | 2000-03-15 08:14:01-08
! | 2000-03-15 04:14:02-08
! | 2000-03-15 02:14:03-08
! | 2000-03-15 03:14:04-08
! | 2000-03-15 01:14:05-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:00-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 17:32:01-08
! | 1997-02-10 09:32:01-08
! | 1997-02-10 09:32:01-08
! | 1997-02-10 09:32:01-08
! | 1997-06-10 18:32:01-07
! | 1997-02-10 17:32:01-08
! | 1997-02-11 17:32:01-08
! | 1997-02-12 17:32:01-08
! | 1997-02-13 17:32:01-08
! | 1997-02-14 17:32:01-08
! | 1997-02-15 17:32:01-08
! | 1997-02-16 17:32:01-08
! | 0097-02-16 17:32 BC
! | 0097-02-16 17:32:01
! | 0597-02-16 17:32:01
! | 1097-02-16 17:32:01
! | 1697-02-16 17:32:01
! | 1797-02-16 17:32:01
! | 1897-02-16 17:32:01
! | 1997-02-16 17:32:01-08
! | 2097-02-16 17:32:01
! | 1996-02-28 17:32:01-08
! | 1996-02-29 17:32:01-08
! | 1996-03-01 17:32:01-08
! | 1996-12-30 17:32:01-08
! | 1996-12-31 17:32:01-08
! | 1997-01-01 17:32:01-08
! | 1997-02-28 17:32:01-08
! | 1997-03-01 17:32:01-08
! | 1997-12-30 17:32:01-08
! | 1997-12-31 17:32:01-08
! | 1999-12-31 17:32:01-08
! | 2000-01-01 17:32:01-08
! | 2000-12-31 17:32:01-08
! | 2001-01-01 17:32:01-08
! | 1957-06-13 00:00:00-07
! (67 rows)
!
SELECT '' AS eight, f1 AS european_iso FROM ABSTIME_TBL;
eight | european_iso
-------+------------------------
--- 888,894 ----
SHOW DateStyle;
NOTICE: DateStyle is ISO with European conventions
SELECT '' AS "67", d1 AS european_iso FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS eight, f1 AS european_iso FROM ABSTIME_TBL;
eight | european_iso
-------+------------------------
***************
*** 1267,1343 ****
SHOW DateStyle;
NOTICE: DateStyle is SQL with European conventions
SELECT '' AS "67", d1 AS european_sql FROM TIMESTAMP_TBL;
! 67 | european_sql
! ----+----------------------------
! | invalid
! | -infinity
! | infinity
! | epoch
! | 10/02/1997 17:32:01.00 PST
! | invalid
! | invalid
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:02.00 PST
! | 10/02/1997 17:32:01.40 PST
! | 10/02/1997 17:32:01.50 PST
! | 10/02/1997 17:32:01.60 PST
! | 02/01/1997 00:00:00.00 PST
! | 02/01/1997 03:04:05.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/06/1997 17:32:01.00 PDT
! | 15/03/2000 08:14:01.00 PST
! | 15/03/2000 04:14:02.00 PST
! | 15/03/2000 02:14:03.00 PST
! | 15/03/2000 03:14:04.00 PST
! | 15/03/2000 01:14:05.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:00.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 17:32:01.00 PST
! | 10/02/1997 09:32:01.00 PST
! | 10/02/1997 09:32:01.00 PST
! | 10/02/1997 09:32:01.00 PST
! | 10/06/1997 18:32:01.00 PDT
! | 10/02/1997 17:32:01.00 PST
! | 11/02/1997 17:32:01.00 PST
! | 12/02/1997 17:32:01.00 PST
! | 13/02/1997 17:32:01.00 PST
! | 14/02/1997 17:32:01.00 PST
! | 15/02/1997 17:32:01.00 PST
! | 16/02/1997 17:32:01.00 PST
! | 16/02/0097 17:32 BC
! | 16/02/0097 17:32:01.00
! | 16/02/0597 17:32:01.00
! | 16/02/1097 17:32:01.00
! | 16/02/1697 17:32:01.00
! | 16/02/1797 17:32:01.00
! | 16/02/1897 17:32:01.00
! | 16/02/1997 17:32:01.00 PST
! | 16/02/2097 17:32:01.00
! | 28/02/1996 17:32:01.00 PST
! | 29/02/1996 17:32:01.00 PST
! | 01/03/1996 17:32:01.00 PST
! | 30/12/1996 17:32:01.00 PST
! | 31/12/1996 17:32:01.00 PST
! | 01/01/1997 17:32:01.00 PST
! | 28/02/1997 17:32:01.00 PST
! | 01/03/1997 17:32:01.00 PST
! | 30/12/1997 17:32:01.00 PST
! | 31/12/1997 17:32:01.00 PST
! | 31/12/1999 17:32:01.00 PST
! | 01/01/2000 17:32:01.00 PST
! | 31/12/2000 17:32:01.00 PST
! | 01/01/2001 17:32:01.00 PST
! | 13/06/1957 00:00:00.00 PDT
! (67 rows)
!
SELECT '' AS eight, f1 AS european_sql FROM ABSTIME_TBL;
eight | european_sql
-------+----------------------------
--- 906,912 ----
SHOW DateStyle;
NOTICE: DateStyle is SQL with European conventions
SELECT '' AS "67", d1 AS european_sql FROM TIMESTAMP_TBL;
! ERROR: floating point exception! The last floating point operation either exceeded
legal ranges or was a divide by zero
SELECT '' AS eight, f1 AS european_sql FROM ABSTIME_TBL;
eight | european_sql
-------+----------------------------
----------------------
*** expected/rules.out Wed Apr 19 17:32:57 2000
--- results/rules.out Thu Dec 28 18:10:01 2000
***************
*** 1162,1221 ****
-- Check that ruleutils are working
--
SELECT viewname, definition FROM pg_views ORDER BY viewname;
! viewname |
definition
!
--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! iexit | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath)
AS exit FROM ihighway ih, ramp r WHERE (ih.thepath ## r.thepath);
! pg_indexes | SELECT c.relname AS tablename, i.relname AS indexname,
pg_get_indexdef(x.indexrelid) AS indexdef FROM pg_index x, pg_class c, pg_class i
WHERE ((c.oid = x.indrelid) AND (i.oid = x.indexrelid));
! pg_rules | SELECT c.relname AS tablename, r.rulename,
pg_get_ruledef(r.rulename) AS definition FROM pg_rewrite r, pg_class c WHERE
((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class));
! pg_tables | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS
tableowner, c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers >
0) AS hastriggers FROM pg_class c WHERE (((c.relkind = 'r'::"char") OR (c.relkind =
's'::"char")) AND (NOT (EXISTS (SELECT pg_rewrite.rulename FROM pg_rewrite WHERE
((pg_rewrite.ev_class = c.oid) AND (pg_rewrite.ev_type = '1'::"char"))))));
! pg_user | SELECT pg_shadow.usename, pg_shadow.usesysid,
pg_shadow.usecreatedb, pg_shadow.usetrace, pg_shadow.usesuper, pg_shadow.usecatupd,
'********'::text AS passwd, pg_shadow.valuntil FROM pg_shadow;
! pg_views | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS
viewowner, pg_get_viewdef(c.relname) AS definition FROM pg_class c WHERE
(c.relhasrules AND (EXISTS (SELECT r.rulename FROM pg_rewrite r WHERE ((r.ev_class =
c.oid) AND (r.ev_type = '1'::"char")))));
! rtest_v1 | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1;
! rtest_vcomp | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM
rtest_comp x, rtest_unitfact y WHERE (x.unit = y.unit);
! rtest_vview1 | SELECT x.a, x.b FROM rtest_view1 x WHERE (0 < (SELECT count(*)
AS count FROM rtest_view2 y WHERE (y.a = x.a)));
! rtest_vview2 | SELECT rtest_view1.a, rtest_view1.b FROM rtest_view1 WHERE
rtest_view1.v;
! rtest_vview3 | SELECT x.a, x.b FROM rtest_vview2 x WHERE (0 < (SELECT
count(*) AS count FROM rtest_view2 y WHERE (y.a = x.a)));
! rtest_vview4 | SELECT x.a, x.b, count(y.a) AS refcount FROM rtest_view1 x,
rtest_view2 y WHERE (x.a = y.a) GROUP BY x.a, x.b;
! rtest_vview5 | SELECT rtest_view1.a, rtest_view1.b,
rtest_viewfunc1(rtest_view1.a) AS refcount FROM rtest_view1;
! shoe | SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen,
(sh.slminlen * un.un_fact) AS slminlen_cm, sh.slmaxlen, (sh.slmaxlen * un.un_fact) AS
slmaxlen_cm, sh.slunit FROM shoe_data sh, unit un WHERE (sh.slunit = un.un_name);
! shoe_ready | SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail,
int4smaller(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM shoe rsh, shoelace rsl
WHERE (((rsl.sl_color = rsh.slcolor) AND (rsl.sl_len_cm >= rsh.slminlen_cm)) AND
(rsl.sl_len_cm <= rsh.slmaxlen_cm));
! shoelace | SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit,
(s.sl_len * u.un_fact) AS sl_len_cm FROM shoelace_data s, unit u WHERE (s.sl_unit =
u.un_name);
! shoelace_candelete | SELECT shoelace_obsolete.sl_name, shoelace_obsolete.sl_avail,
shoelace_obsolete.sl_color, shoelace_obsolete.sl_len, shoelace_obsolete.sl_unit,
shoelace_obsolete.sl_len_cm FROM shoelace_obsolete WHERE (shoelace_obsolete.sl_avail =
0);
! shoelace_obsolete | SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color,
shoelace.sl_len, shoelace.sl_unit, shoelace.sl_len_cm FROM shoelace WHERE (NOT (EXISTS
(SELECT shoe.shoename FROM shoe WHERE (shoe.slcolor = shoelace.sl_color))));
! street | SELECT r.name, r.thepath, c.cname FROM road r, real_city c
WHERE (c.outline ## r.thepath);
! toyemp | SELECT emp.name, emp.age, emp."location", (12 * emp.salary) AS
annualsal FROM emp;
! (20 rows)
!
SELECT tablename, rulename, definition FROM pg_rules
ORDER BY tablename, rulename;
! tablename | rulename |
definition
!
---------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
! rtest_emp | rtest_emp_del | CREATE RULE rtest_emp_del AS ON DELETE TO
rtest_emp DO INSERT INTO rtest_emplog (ename, who, "action", newsal, oldsal) VALUES
(old.ename, getpgusername(), 'fired '::bpchar, '$0.00'::money, old.salary);
! rtest_emp | rtest_emp_ins | CREATE RULE rtest_emp_ins AS ON INSERT TO
rtest_emp DO INSERT INTO rtest_emplog (ename, who, "action", newsal, oldsal) VALUES
(new.ename, getpgusername(), 'hired '::bpchar, new.salary, '$0.00'::money);
! rtest_emp | rtest_emp_upd | CREATE RULE rtest_emp_upd AS ON UPDATE TO
rtest_emp WHERE (new.salary <> old.salary) DO INSERT INTO rtest_emplog (ename, who,
"action", newsal, oldsal) VALUES (new.ename, getpgusername(), 'honored '::bpchar,
new.salary, old.salary);
! rtest_nothn1 | rtest_nothn_r1 | CREATE RULE rtest_nothn_r1 AS ON INSERT TO
rtest_nothn1 WHERE ((new.a >= 10) AND (new.a < 20)) DO INSTEAD SELECT 1;
! rtest_nothn1 | rtest_nothn_r2 | CREATE RULE rtest_nothn_r2 AS ON INSERT TO
rtest_nothn1 WHERE ((new.a >= 30) AND (new.a < 40)) DO INSTEAD NOTHING;
! rtest_nothn2 | rtest_nothn_r3 | CREATE RULE rtest_nothn_r3 AS ON INSERT TO
rtest_nothn2 WHERE (new.a >= 100) DO INSTEAD INSERT INTO rtest_nothn3 (a, b) VALUES
(new.a, new.b);
! rtest_nothn2 | rtest_nothn_r4 | CREATE RULE rtest_nothn_r4 AS ON INSERT TO
rtest_nothn2 DO INSTEAD NOTHING;
! rtest_order1 | rtest_order_r1 | CREATE RULE rtest_order_r1 AS ON INSERT TO
rtest_order1 DO INSTEAD INSERT INTO rtest_order2 (a, b, c) VALUES (new.a,
nextval('rtest_seq'::text), 'rule 1 - this should run 3rd or 4th'::text);
! rtest_order1 | rtest_order_r2 | CREATE RULE rtest_order_r2 AS ON INSERT TO
rtest_order1 DO INSERT INTO rtest_order2 (a, b, c) VALUES (new.a,
nextval('rtest_seq'::text), 'rule 2 - this should run 1st'::text);
! rtest_order1 | rtest_order_r3 | CREATE RULE rtest_order_r3 AS ON INSERT TO
rtest_order1 DO INSTEAD INSERT INTO rtest_order2 (a, b, c) VALUES (new.a,
nextval('rtest_seq'::text), 'rule 3 - this should run 3rd or 4th'::text);
! rtest_order1 | rtest_order_r4 | CREATE RULE rtest_order_r4 AS ON INSERT TO
rtest_order1 WHERE (rtest_order2.a < 100) DO INSTEAD INSERT INTO rtest_order2 (a, b,
c) VALUES (new.a, nextval('rtest_seq'::text), 'rule 4 - this should run 2nd'::text);
! rtest_person | rtest_pers_del | CREATE RULE rtest_pers_del AS ON DELETE TO
rtest_person DO DELETE FROM rtest_admin WHERE (rtest_admin.pname = old.pname);
! rtest_person | rtest_pers_upd | CREATE RULE rtest_pers_upd AS ON UPDATE TO
rtest_person DO UPDATE rtest_admin SET pname = new.pname WHERE (rtest_admin.pname =
old.pname);
! rtest_system | rtest_sys_del | CREATE RULE rtest_sys_del AS ON DELETE TO
rtest_system DO (DELETE FROM rtest_interface WHERE (rtest_interface.sysname =
old.sysname); DELETE FROM rtest_admin WHERE (rtest_admin.sysname = old.sysname); );
! rtest_system | rtest_sys_upd | CREATE RULE rtest_sys_upd AS ON UPDATE TO
rtest_system DO (UPDATE rtest_interface SET sysname = new.sysname WHERE
(rtest_interface.sysname = old.sysname); UPDATE rtest_admin SET sysname = new.sysname
WHERE (rtest_admin.sysname = old.sysname); );
! rtest_t4 | rtest_t4_ins1 | CREATE RULE rtest_t4_ins1 AS ON INSERT TO
rtest_t4 WHERE ((new.a >= 10) AND (new.a < 20)) DO INSTEAD INSERT INTO rtest_t5 (a, b)
VALUES (new.a, new.b);
! rtest_t4 | rtest_t4_ins2 | CREATE RULE rtest_t4_ins2 AS ON INSERT TO
rtest_t4 WHERE ((new.a >= 20) AND (new.a < 30)) DO INSERT INTO rtest_t6 (a, b) VALUES
(new.a, new.b);
! rtest_t5 | rtest_t5_ins | CREATE RULE rtest_t5_ins AS ON INSERT TO rtest_t5
WHERE (new.a > 15) DO INSERT INTO rtest_t7 (a, b) VALUES (new.a, new.b);
! rtest_t6 | rtest_t6_ins | CREATE RULE rtest_t6_ins AS ON INSERT TO rtest_t6
WHERE (new.a > 25) DO INSTEAD INSERT INTO rtest_t8 (a, b) VALUES (new.a, new.b);
! rtest_v1 | rtest_v1_del | CREATE RULE rtest_v1_del AS ON DELETE TO rtest_v1
DO INSTEAD DELETE FROM rtest_t1 WHERE (rtest_t1.a = old.a);
! rtest_v1 | rtest_v1_ins | CREATE RULE rtest_v1_ins AS ON INSERT TO rtest_v1
DO INSTEAD INSERT INTO rtest_t1 (a, b) VALUES (new.a, new.b);
! rtest_v1 | rtest_v1_upd | CREATE RULE rtest_v1_upd AS ON UPDATE TO rtest_v1
DO INSTEAD UPDATE rtest_t1 SET a = new.a, b = new.b WHERE (rtest_t1.a = old.a);
! shoelace | shoelace_del | CREATE RULE shoelace_del AS ON DELETE TO shoelace
DO INSTEAD DELETE FROM shoelace_data WHERE (shoelace_data.sl_name = old.sl_name);
! shoelace | shoelace_ins | CREATE RULE shoelace_ins AS ON INSERT TO shoelace
DO INSTEAD INSERT INTO shoelace_data (sl_name, sl_avail, sl_color, sl_len, sl_unit)
VALUES (new.sl_name, new.sl_avail, new.sl_color, new.sl_len, new.sl_unit);
! shoelace | shoelace_upd | CREATE RULE shoelace_upd AS ON UPDATE TO shoelace
DO INSTEAD UPDATE shoelace_data SET sl_name = new.sl_name, sl_avail = new.sl_avail,
sl_color = new.sl_color, sl_len = new.sl_len, sl_unit = new.sl_unit WHERE
(shoelace_data.sl_name = old.sl_name);
! shoelace_data | log_shoelace | CREATE RULE log_shoelace AS ON UPDATE TO
shoelace_data WHERE (new.sl_avail <> old.sl_avail) DO INSERT INTO shoelace_log
(sl_name, sl_avail, log_who, log_when) VALUES (new.sl_name, new.sl_avail, 'Al
Bundy'::name, "timestamp"('epoch'::text));
! shoelace_ok | shoelace_ok_ins | CREATE RULE shoelace_ok_ins AS ON INSERT TO
shoelace_ok DO INSTEAD UPDATE shoelace SET sl_avail = (shoelace.sl_avail +
new.ok_quant) WHERE (shoelace.sl_name = new.ok_name);
! (27 rows)
!
--- 1162,1168 ----
-- Check that ruleutils are working
--
SELECT viewname, definition FROM pg_views ORDER BY viewname;
! ERROR: cache lookup of attribute -2 in relation 1259 failed
SELECT tablename, rulename, definition FROM pg_rules
ORDER BY tablename, rulename;
! ERROR: getattproperties: no attribute tuple 1259 -2
----------------------