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

----------------------

Reply via email to