Re: [PATCHES] CLASSOID patch

Bruce Momjian <pgman@candle.pha.pa.us>

From: Bruce Momjian <pgman@candle.pha.pa.us>
To: Chris Bitmead <chris@bitmead.com>
Cc: Postgres Hackers List <hackers@postgreSQL.org>, "pgsql-patches@postgresql.org" <pgsql-patches@postgreSQL.org>
Date: 2000-10-10T21:53:06Z
Lists: pgsql-hackers
I don't see this in the tree.  Status, please.

> 
> Attached is a first attempt at implementing the classoid feature. It
> works! Can the postgres gurus comment if I've done it right and point
> out any problems. A lot of it was guess work so I'm sure it can be
> cleaned up some.
> 
> -- 
> Chris Bitmead
> mailto:chris@bitmead.com

> ? config.log
> ? config.cache
> ? config.status
> ? nohup.out
> ? GNUmakefile
> ? src/GNUmakefile
> ? src/Makefile.global
> ? src/ID
> ? src/nohup.out
> ? src/backend/fmgr.h
> ? src/backend/parse.h
> ? src/backend/postgres
> ? src/backend/global1.bki.source
> ? src/backend/local1_template1.bki.source
> ? src/backend/global1.description
> ? src/backend/local1_template1.description
> ? src/backend/1
> ? src/backend/catalog/genbki.sh
> ? src/backend/catalog/global1.bki.source
> ? src/backend/catalog/global1.description
> ? src/backend/catalog/local1_template1.bki.source
> ? src/backend/catalog/local1_template1.description
> ? src/backend/parser/y.output
> ? src/backend/parser/y.output.gz
> ? src/backend/parser/gram.y.works
> ? src/backend/parser/gram.y.works.try
> ? src/backend/parser/y.output.noerror
> ? src/backend/parser/gram.y.gz
> ? src/backend/port/Makefile
> ? src/backend/utils/Gen_fmgrtab.sh
> ? src/backend/utils/fmgr.h
> ? src/backend/utils/fmgrstamp-h
> ? src/bin/initdb/initdb
> ? src/bin/initlocation/initlocation
> ? src/bin/ipcclean/ipcclean
> ? src/bin/pg_ctl/pg_ctl
> ? src/bin/pg_dump/Makefile
> ? src/bin/pg_dump/pg_dump
> ? src/bin/pg_id/pg_id
> ? src/bin/pg_passwd/pg_passwd
> ? src/bin/pg_version/Makefile
> ? src/bin/pg_version/pg_version
> ? src/bin/pgtclsh/mkMakefile.tcldefs.sh
> ? src/bin/pgtclsh/mkMakefile.tkdefs.sh
> ? src/bin/psql/Makefile
> ? src/bin/psql/psql
> ? src/bin/scripts/createlang
> ? src/include/version.h
> ? src/include/config.h
> ? src/include/parser/parse.h
> ? src/include/utils/fmgroids.h
> ? src/interfaces/Makefile
> ? src/interfaces/ecpg/lib/Makefile
> ? src/interfaces/ecpg/lib/libecpg.so.3.1.1
> ? src/interfaces/ecpg/preproc/Makefile
> ? src/interfaces/ecpg/preproc/ecpg
> ? src/interfaces/jdbc/postgresql.jar
> ? src/interfaces/jdbc/example/psql.class
> ? src/interfaces/jdbc/postgresql/DriverClass.java
> ? src/interfaces/jdbc/postgresql/DriverClass.class
> ? src/interfaces/jdbc/postgresql/Connection.class
> ? src/interfaces/jdbc/postgresql/Field.class
> ? src/interfaces/jdbc/postgresql/PG_Stream.class
> ? src/interfaces/jdbc/postgresql/Driver.class
> ? src/interfaces/jdbc/postgresql/ResultSet.class
> ? src/interfaces/jdbc/postgresql/fastpath/Fastpath.class
> ? src/interfaces/jdbc/postgresql/fastpath/FastpathArg.class
> ? src/interfaces/jdbc/postgresql/geometric/PGbox.class
> ? src/interfaces/jdbc/postgresql/geometric/PGpoint.class
> ? src/interfaces/jdbc/postgresql/geometric/PGcircle.class
> ? src/interfaces/jdbc/postgresql/geometric/PGline.class
> ? src/interfaces/jdbc/postgresql/geometric/PGlseg.class
> ? src/interfaces/jdbc/postgresql/geometric/PGpath.class
> ? src/interfaces/jdbc/postgresql/geometric/PGpolygon.class
> ? src/interfaces/jdbc/postgresql/jdbc2/ResultSet.class
> ? src/interfaces/jdbc/postgresql/jdbc2/Connection.class
> ? src/interfaces/jdbc/postgresql/jdbc2/ResultSetMetaData.class
> ? src/interfaces/jdbc/postgresql/jdbc2/DatabaseMetaData.class
> ? src/interfaces/jdbc/postgresql/jdbc2/Statement.class
> ? src/interfaces/jdbc/postgresql/jdbc2/PreparedStatement.class
> ? src/interfaces/jdbc/postgresql/jdbc2/CallableStatement.class
> ? src/interfaces/jdbc/postgresql/largeobject/LargeObjectManager.class
> ? src/interfaces/jdbc/postgresql/largeobject/LargeObject.class
> ? src/interfaces/jdbc/postgresql/util/PSQLException.class
> ? src/interfaces/jdbc/postgresql/util/UnixCrypt.class
> ? src/interfaces/jdbc/postgresql/util/Serialize.class
> ? src/interfaces/jdbc/postgresql/util/PGobject.class
> ? src/interfaces/jdbc/postgresql/util/PGtokenizer.class
> ? src/interfaces/jdbc/postgresql/util/PGmoney.class
> ? src/interfaces/libpgeasy/Makefile
> ? src/interfaces/libpgeasy/libpgeasy.so.2.1
> ? src/interfaces/libpgtcl/Makefile
> ? src/interfaces/libpgtcl/mkMakefile.tcldefs.sh
> ? src/interfaces/libpgtcl/mkMakefile.tkdefs.sh
> ? src/interfaces/libpq/Makefile
> ? src/interfaces/libpq/libpq.so.2.1
> ? src/interfaces/libpq++/Makefile
> ? src/interfaces/libpq++/libpq++.so.3.1
> ? src/interfaces/odbc/GNUmakefile
> ? src/interfaces/odbc/Makefile.global
> ? src/interfaces/perl5/GNUmakefile
> ? src/interfaces/python/GNUmakefile
> ? src/pl/Makefile
> ? src/pl/plperl/GNUmakefile
> ? src/pl/plpgsql/Makefile
> ? src/pl/plpgsql/src/Makefile
> ? src/pl/plpgsql/src/libplpgsql.so.1.0
> ? src/pl/tcl/mkMakefile.tcldefs.sh
> ? src/test/regress/GNUmakefile
> ? src/test/regress/x.x
> ? src/test/regress/nohup.out
> Index: src/backend/access/common/heaptuple.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/access/common/heaptuple.c,v
> retrieving revision 1.62
> diff -c -r1.62 heaptuple.c
> *** src/backend/access/common/heaptuple.c	2000/04/12 17:14:36	1.62
> --- src/backend/access/common/heaptuple.c	2000/06/24 15:24:46
> ***************
> *** 9,15 ****
>    *
>    *
>    * IDENTIFICATION
> !  *	  $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.62 2000/04/12 17:14:36 momjian Exp $
>    *
>    * NOTES
>    *	  The old interface functions have been converted to macros
> --- 9,15 ----
>    *
>    *
>    * IDENTIFICATION
> !  *	  $Header: /usr/local/cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.62 2000/04/12 17:14:36 momjian Exp $
>    *
>    * NOTES
>    *	  The old interface functions have been converted to macros
> ***************
> *** 169,174 ****
> --- 169,175 ----
>   	else
>   		switch (attnum)
>   		{
> + 			case ClassOidAttributeNumber:
>   			case SelfItemPointerAttributeNumber:
>   			case ObjectIdAttributeNumber:
>   			case MinTransactionIdAttributeNumber:
> ***************
> *** 205,210 ****
> --- 206,213 ----
>   
>   	switch (attno)
>   	{
> + 		case ClassOidAttributeNumber:
> + 			return sizeof f->t_oid;
>   		case SelfItemPointerAttributeNumber:
>   			return sizeof f->t_ctid;
>   		case ObjectIdAttributeNumber:
> ***************
> *** 237,242 ****
> --- 240,248 ----
>   
>   	switch (attno)
>   	{
> + 		case ClassOidAttributeNumber:
> + 			byval = true;
> + 			break;
>   		case SelfItemPointerAttributeNumber:
>   			byval = false;
>   			break;
> ***************
> *** 275,281 ****
>   {
>   	switch (attnum)
>   	{
> ! 			case SelfItemPointerAttributeNumber:
>   			return (Datum) &tup->t_ctid;
>   		case ObjectIdAttributeNumber:
>   			return (Datum) (long) tup->t_oid;
> --- 281,289 ----
>   {
>   	switch (attnum)
>   	{
> !         case ClassOidAttributeNumber:
> ! 			return (Datum) &tup->t_classoid;
> !         case SelfItemPointerAttributeNumber:
>   			return (Datum) &tup->t_ctid;
>   		case ObjectIdAttributeNumber:
>   			return (Datum) (long) tup->t_oid;
> Index: src/backend/access/heap/heapam.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/access/heap/heapam.c,v
> retrieving revision 1.71
> diff -c -r1.71 heapam.c
> *** src/backend/access/heap/heapam.c	2000/06/15 04:09:34	1.71
> --- src/backend/access/heap/heapam.c	2000/06/24 15:24:49
> ***************
> *** 235,240 ****
> --- 235,242 ----
>   	int			linesleft;
>   	ItemPointer tid = (tuple->t_data == NULL) ?
>   	(ItemPointer) NULL : &(tuple->t_self);
> +     
> +     tuple->relation = relation;
>   
>   	/* ----------------
>   	 *	increment access statistics
> ***************
> *** 567,572 ****
> --- 569,575 ----
>   
>   	Assert(lockmode >= NoLock && lockmode < MAX_LOCKMODES);
>   
> + 
>   	/* ----------------
>   	 *	increment access statistics
>   	 * ----------------
> ***************
> *** 1030,1035 ****
> --- 1033,1039 ----
>   	ItemPointer tid = &(tuple->t_self);
>   	OffsetNumber offnum;
>   
> +     tuple->relation = relation;
>   	/* ----------------
>   	 *	increment access statistics
>   	 * ----------------
> ***************
> *** 1124,1129 ****
> --- 1128,1134 ----
>   	bool		invalidBlock,
>   				linkend;
>   
> +     tp.relation = relation;
>   	/* ----------------
>   	 *	get the buffer from the relation descriptor
>   	 *	Note that this does a buffer pin.
> ***************
> *** 1216,1221 ****
> --- 1221,1227 ----
>   	 *	increment access statistics
>   	 * ----------------
>   	 */
> + 	tup->relation = relation;
>   	IncrHeapAccessStat(local_insert);
>   	IncrHeapAccessStat(global_insert);
>   
> ***************
> *** 1284,1289 ****
> --- 1290,1296 ----
>   	Buffer		buffer;
>   	int			result;
>   
> + 	tp.relation = relation;
>   	/* increment access statistics */
>   	IncrHeapAccessStat(local_delete);
>   	IncrHeapAccessStat(global_delete);
> ***************
> *** 1396,1401 ****
> --- 1403,1409 ----
>   	Buffer		buffer;
>   	int			result;
>   
> + 	newtup->relation = relation;
>   	/* increment access statistics */
>   	IncrHeapAccessStat(local_replace);
>   	IncrHeapAccessStat(global_replace);
> ***************
> *** 1524,1529 ****
> --- 1532,1538 ----
>   	PageHeader	dp;
>   	int			result;
>   
> + 	tuple->relation = relation;
>   	/* increment access statistics */
>   	IncrHeapAccessStat(local_mark4update);
>   	IncrHeapAccessStat(global_mark4update);
> Index: src/backend/catalog/heap.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/catalog/heap.c,v
> retrieving revision 1.133
> diff -c -r1.133 heap.c
> *** src/backend/catalog/heap.c	2000/06/18 22:43:55	1.133
> --- src/backend/catalog/heap.c	2000/06/24 15:24:54
> ***************
> *** 101,106 ****
> --- 101,107 ----
>    *				be more difficult if not impossible.
>    */
>   
> + 
>   static FormData_pg_attribute a1 = {
>   	0xffffffff, {"ctid"}, TIDOID, 0, sizeof(ItemPointerData),
>   	SelfItemPointerAttributeNumber, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0'
> ***************
> *** 130,137 ****
>   	0xffffffff, {"cmax"}, CIDOID, 0, sizeof(CommandId),
>   	MaxCommandIdAttributeNumber, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0'
>   };
>   
> ! static Form_pg_attribute HeapAtt[] = {&a1, &a2, &a3, &a4, &a5, &a6};
>   
>   /* ----------------------------------------------------------------
>    *				XXX END OF UGLY HARD CODED BADNESS XXX
> --- 131,143 ----
>   	0xffffffff, {"cmax"}, CIDOID, 0, sizeof(CommandId),
>   	MaxCommandIdAttributeNumber, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0'
>   };
> + 
> + static FormData_pg_attribute a7 = {
> + 	0xffffffff, {"classoid"}, OIDOID, 0, sizeof(Oid),
> + 	ClassOidAttributeNumber, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0'
> + };
>   
> ! static Form_pg_attribute HeapAtt[] = {&a1, &a2, &a3, &a4, &a5, &a6, &a7};
>   
>   /* ----------------------------------------------------------------
>    *				XXX END OF UGLY HARD CODED BADNESS XXX
> Index: src/backend/optimizer/path/tidpath.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/optimizer/path/tidpath.c,v
> retrieving revision 1.7
> diff -c -r1.7 tidpath.c
> *** src/backend/optimizer/path/tidpath.c	2000/05/30 00:49:47	1.7
> --- src/backend/optimizer/path/tidpath.c	2000/06/24 15:24:55
> ***************
> *** 105,110 ****
> --- 105,118 ----
>   				 var->varoattno == SelfItemPointerAttributeNumber &&
>   				 var->vartype == TIDOID)
>   			arg = arg2;
> + /*		else if (var->varno == varno &&
> + 			var->varattno == ClassOidAttributeNumber &&
> + 			var->vartype == OIDCLASSOID)
> + 			arg = arg2;
> + 		else if (var->varnoold == varno &&
> + 				 var->varoattno == ClassOidAttributeNumber &&
> + 				 var->vartype == OIDCLASSOID)
> + 			arg = arg2; */
>   	}
>   	if ((!arg) && IsA(arg2, Var))
>   	{
> ***************
> *** 113,118 ****
> --- 121,130 ----
>   			var->varattno == SelfItemPointerAttributeNumber &&
>   			var->vartype == TIDOID)
>   			arg = arg1;
> + /*		else if (var->varno == varno &&
> + 			var->varattno == ClassOidAttributeNumber &&
> + 			var->vartype == OIDCLASSOID)
> + 			arg = arg1; */
>   	}
>   	if (!arg)
>   		return rnode;
> Index: src/backend/optimizer/prep/preptlist.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v
> retrieving revision 1.36
> diff -c -r1.36 preptlist.c
> *** src/backend/optimizer/prep/preptlist.c	2000/04/12 17:15:23	1.36
> --- src/backend/optimizer/prep/preptlist.c	2000/06/24 15:24:57
> ***************
> *** 15,21 ****
>    * Portions Copyright (c) 1994, Regents of the University of California
>    *
>    * IDENTIFICATION
> !  *	  $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.36 2000/04/12 17:15:23 momjian Exp $
>    *
>    *-------------------------------------------------------------------------
>    */
> --- 15,21 ----
>    * Portions Copyright (c) 1994, Regents of the University of California
>    *
>    * IDENTIFICATION
> !  *	  $Header: /usr/local/cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.36 2000/04/12 17:15:23 momjian Exp $
>    *
>    *-------------------------------------------------------------------------
>    */
> ***************
> *** 66,72 ****
>   	if (command_type == CMD_UPDATE || command_type == CMD_DELETE)
>   	{
>   		Resdom	   *resdom;
> ! 		Var		   *var;
>   
>   		resdom = makeResdom(length(tlist) + 1,
>   							TIDOID,
> --- 66,72 ----
>   	if (command_type == CMD_UPDATE || command_type == CMD_DELETE)
>   	{
>   		Resdom	   *resdom;
> ! 		Var		   *var1, *var2;
>   
>   		resdom = makeResdom(length(tlist) + 1,
>   							TIDOID,
> ***************
> *** 76,83 ****
>   							0,
>   							true);
>   
> ! 		var = makeVar(result_relation, SelfItemPointerAttributeNumber,
>   					  TIDOID, -1, 0);
>   
>   		/*
>   		 * For an UPDATE, expand_targetlist already created a fresh tlist.
> --- 76,85 ----
>   							0,
>   							true);
>   
> ! 		var1 = makeVar(result_relation, SelfItemPointerAttributeNumber,
>   					  TIDOID, -1, 0);
> + 		var2 = makeVar(result_relation, ClassOidAttributeNumber,
> + 					  OIDOID, -1, 0);
>   
>   		/*
>   		 * For an UPDATE, expand_targetlist already created a fresh tlist.
> ***************
> *** 87,93 ****
>   		if (command_type == CMD_DELETE)
>   			tlist = listCopy(tlist);
>   
> ! 		tlist = lappend(tlist, makeTargetEntry(resdom, (Node *) var));
>   	}
>   
>   	return tlist;
> --- 89,96 ----
>   		if (command_type == CMD_DELETE)
>   			tlist = listCopy(tlist);
>   
> ! 		tlist = lappend(tlist, makeTargetEntry(resdom, (Node *) var1));
> ! 		tlist = lappend(tlist, makeTargetEntry(resdom, (Node *) var2));
>   	}
>   
>   	return tlist;
> Index: src/backend/parser/parse_relation.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/parser/parse_relation.c,v
> retrieving revision 1.44
> diff -c -r1.44 parse_relation.c
> *** src/backend/parser/parse_relation.c	2000/06/20 01:41:21	1.44
> --- src/backend/parser/parse_relation.c	2000/06/24 15:24:58
> ***************
> *** 40,45 ****
> --- 40,48 ----
>   
>   {
>   	{
> + 		"classoid", ClassOidAttributeNumber, OIDOID
> + 	},
> + 	{
>   		"ctid", SelfItemPointerAttributeNumber, TIDOID
>   	},
>   	{
> Index: src/backend/utils/cache/lsyscache.c
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v
> retrieving revision 1.42
> diff -c -r1.42 lsyscache.c
> *** src/backend/utils/cache/lsyscache.c	2000/06/08 22:37:30	1.42
> --- src/backend/utils/cache/lsyscache.c	2000/06/24 15:25:00
> ***************
> *** 249,254 ****
> --- 249,256 ----
>   	if (attnum == ObjectIdAttributeNumber ||
>   		attnum == SelfItemPointerAttributeNumber)
>   		return 1.0 / (double) ntuples;
> +     if (attnum == ClassOidAttributeNumber)
> + 		return 1.0;
>   
>   	/*
>   	 * VACUUM ANALYZE has not been run for this table. Produce an estimate
> Index: src/include/access/heapam.h
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/include/access/heapam.h,v
> retrieving revision 1.53
> diff -c -r1.53 heapam.h
> *** src/include/access/heapam.h	2000/06/18 22:44:23	1.53
> --- src/include/access/heapam.h	2000/06/24 15:25:02
> ***************
> *** 230,239 ****
>   				(Datum)((char *)&((tup)->t_self)) \
>   			) \
>   			: \
>   			( \
>   				(Datum)*(unsigned int *) \
>   					((char *)(tup)->t_data + heap_sysoffset[-(attnum)-1]) \
> ! 			) \
>   		) \
>   	) \
>   )
> --- 230,244 ----
>   				(Datum)((char *)&((tup)->t_self)) \
>   			) \
>   			: \
> + 			(((attnum) == ClassOidAttributeNumber) ? \
>   			( \
> + 				(Datum)((tup)->relation->rd_id) \
> + 			) \
> +             : \
> + 			( \
>   				(Datum)*(unsigned int *) \
>   					((char *)(tup)->t_data + heap_sysoffset[-(attnum)-1]) \
> ! 			)) \
>   		) \
>   	) \
>   )
> Index: src/include/access/htup.h
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/include/access/htup.h,v
> retrieving revision 1.30
> diff -c -r1.30 htup.h
> *** src/include/access/htup.h	2000/06/02 10:20:26	1.30
> --- src/include/access/htup.h	2000/06/24 15:25:02
> ***************
> *** 133,139 ****
>   #define MinCommandIdAttributeNumber				(-4)
>   #define MaxTransactionIdAttributeNumber			(-5)
>   #define MaxCommandIdAttributeNumber				(-6)
> ! #define FirstLowInvalidHeapAttributeNumber		(-7)
>   
>   /* If you make any changes above, the order off offsets in this must change */
>   extern long heap_sysoffset[];
> --- 133,140 ----
>   #define MinCommandIdAttributeNumber				(-4)
>   #define MaxTransactionIdAttributeNumber			(-5)
>   #define MaxCommandIdAttributeNumber				(-6)
> ! #define ClassOidAttributeNumber			        (-7)
> ! #define FirstLowInvalidHeapAttributeNumber		(-8)
>   
>   /* If you make any changes above, the order off offsets in this must change */
>   extern long heap_sysoffset[];
> ***************
> *** 156,161 ****
> --- 157,163 ----
>   {
>   	uint32		t_len;			/* length of *t_data */
>   	ItemPointerData t_self;		/* SelfItemPointer */
> + 	Relation relation;          /* */
>   	MemoryContext t_datamcxt;	/* */
>   	HeapTupleHeader t_data;		/* */
>   } HeapTupleData;
> Index: src/include/catalog/pg_attribute.h
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/include/catalog/pg_attribute.h,v
> retrieving revision 1.59
> diff -c -r1.59 pg_attribute.h
> *** src/include/catalog/pg_attribute.h	2000/06/12 03:40:52	1.59
> --- src/include/catalog/pg_attribute.h	2000/06/24 15:25:04
> ***************
> *** 267,272 ****
> --- 267,273 ----
>   DATA(insert OID = 0 ( 1247 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1247 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1247 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1247 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_database
> ***************
> *** 282,287 ****
> --- 283,289 ----
>   DATA(insert OID = 0 ( 1262 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1262 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1262 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1262 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_proc
> ***************
> *** 329,334 ****
> --- 331,337 ----
>   DATA(insert OID = 0 ( 1255 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1255 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1255 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1255 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_shadow
> ***************
> *** 348,353 ****
> --- 351,357 ----
>   DATA(insert OID = 0 ( 1260 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1260 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1260 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1260 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_group
> ***************
> *** 362,367 ****
> --- 366,372 ----
>   DATA(insert OID = 0 ( 1261 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1261 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1261 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1261 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_attribute
> ***************
> *** 405,410 ****
> --- 410,416 ----
>   DATA(insert OID = 0 ( 1249 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1249 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1249 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1249 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_class
> ***************
> *** 458,463 ****
> --- 464,470 ----
>   DATA(insert OID = 0 ( 1259 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1259 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1259 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1259 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_attrdef
> ***************
> *** 473,478 ****
> --- 480,486 ----
>   DATA(insert OID = 0 ( 1215 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1215 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1215 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1215 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_relcheck
> ***************
> *** 488,493 ****
> --- 496,502 ----
>   DATA(insert OID = 0 ( 1216 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1216 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1216 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1216 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_trigger
> ***************
> *** 513,518 ****
> --- 522,528 ----
>   DATA(insert OID = 0 ( 1219 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1219 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
>   DATA(insert OID = 0 ( 1219 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
> + DATA(insert OID = 0 ( 1219 classoid			26 0  4  -7 0 -1 -1 t p f i f f));
>   
>   /* ----------------
>    *		pg_variable - this relation is modified by special purpose access
> Index: src/include/catalog/pg_type.h
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/include/catalog/pg_type.h,v
> retrieving revision 1.89
> diff -c -r1.89 pg_type.h
> *** src/include/catalog/pg_type.h	2000/06/05 07:29:01	1.89
> --- src/include/catalog/pg_type.h	2000/06/24 15:25:06
> ***************
> *** 337,342 ****
> --- 337,343 ----
>   DATA(insert OID = 1025 (  _tinterval PGUID -1  -1 f b t \054 0 704 array_in array_out array_in array_out i _null_ ));
>   DATA(insert OID = 1026 (  _filename  PGUID -1  -1 f b t \054 0 605 array_in array_out array_in array_out i _null_ ));
>   DATA(insert OID = 1027 (  _polygon	 PGUID -1  -1 f b t \054 0 604 array_in array_out array_in array_out d _null_ ));
> + 
>   /*
>    *	Note: the size of aclitem needs to match sizeof(AclItem) in acl.h.
>    *	Thanks to some padding, this will be 8 on all platforms.
> Index: src/tools/make_mkid
> ===================================================================
> RCS file: /home/projects/pgsql/cvsroot/pgsql/src/tools/make_mkid,v
> retrieving revision 1.4
> diff -c -r1.4 make_mkid
> *** src/tools/make_mkid	2000/03/31 01:41:27	1.4
> --- src/tools/make_mkid	2000/06/24 15:25:09
> ***************
> *** 1,6 ****
>   #!/bin/sh
>   find `pwd`/ \( -name _deadcode -a -prune \) -o \
> ! 	-type f -name '*.[chyl]' -print|sed 's;//;/;g' | mkid
>   
>   find . -name  'CVS' -prune -o -type d -print  |while read DIR
>   do
> --- 1,6 ----
>   #!/bin/sh
>   find `pwd`/ \( -name _deadcode -a -prune \) -o \
> ! 	-type f -name '*.[chyl]' -print|sed 's;//;/;g' | mkid -
>   
>   find . -name  'CVS' -prune -o -type d -print  |while read DIR
>   do


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026