regression.diffs

text/plain

Filename: regression.diffs
Type: text/plain
Part: 0
Message: regress failed tests.. SERIOUS?
*** 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

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