tableoid.patch

text/plain

Filename: tableoid.patch
Type: text/plain
Part: 0
Message: TABLEOID patch
? config.log
? config.cache
? config.status
? nohup.out
? GNUmakefile
? src/GNUmakefile
? src/Makefile.global
? src/ID
? src/nohup.out
? src/backend/postgres
? src/backend/fmgr.h
? src/backend/parse.h
? 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/pg_dump
? src/bin/pg_id/pg_id
? src/bin/pg_passwd/pg_passwd
? src/bin/pg_version/pg_version
? src/bin/pgtclsh/mkMakefile.tkdefs.sh
? src/bin/pgtclsh/mkMakefile.tcldefs.sh
? 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/ecpg/lib/libecpg.so.3.1.1
? 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/libpgeasy.so.2.1
? src/interfaces/libpgtcl/mkMakefile.tcldefs.sh
? src/interfaces/libpgtcl/mkMakefile.tkdefs.sh
? src/interfaces/libpq/libpq.so.2.1
? src/interfaces/libpq++/libpq++.so.3.1
? src/interfaces/odbc/Makefile.global
? src/pl/plpgsql/src/libplpgsql.so.1.0
? src/pl/tcl/mkMakefile.tcldefs.sh
? src/test/regress/GNUmakefile
? src/test/regress/regress.out
? src/test/regress/x.x
? src/test/regress/nohup.out
? src/test/regress/regression.diffs
? src/test/regress/expected/copy.out
? src/test/regress/expected/misc.out
? src/test/regress/expected/create_function_1.out
? src/test/regress/expected/create_function_2.out
? src/test/regress/expected/constraints.out
? src/test/regress/results/boolean.out
? src/test/regress/results/char.out
? src/test/regress/results/name.out
? src/test/regress/results/varchar.out
? src/test/regress/results/text.out
? src/test/regress/results/int2.out
? src/test/regress/results/int4.out
? src/test/regress/results/int8.out
? src/test/regress/results/oid.out
? src/test/regress/results/float4.out
? src/test/regress/results/float8.out
? src/test/regress/results/numeric.out
? src/test/regress/results/strings.out
? src/test/regress/results/numerology.out
? src/test/regress/results/point.out
? src/test/regress/results/lseg.out
? src/test/regress/results/box.out
? src/test/regress/results/path.out
? src/test/regress/results/polygon.out
? src/test/regress/results/circle.out
? src/test/regress/results/interval.out
? src/test/regress/results/timestamp.out
? src/test/regress/results/reltime.out
? src/test/regress/results/tinterval.out
? src/test/regress/results/inet.out
? src/test/regress/results/comments.out
? src/test/regress/results/oidjoins.out
? src/test/regress/results/type_sanity.out
? src/test/regress/results/opr_sanity.out
? src/test/regress/results/abstime.out
? src/test/regress/results/geometry.out
? src/test/regress/results/horology.out
? src/test/regress/results/create_function_1.out
? src/test/regress/results/create_type.out
? src/test/regress/results/create_table.out
? src/test/regress/results/create_function_2.out
? src/test/regress/results/copy.out
? src/test/regress/results/onek.data
? src/test/regress/results/constraints.out
? src/test/regress/results/triggers.out
? src/test/regress/results/create_misc.out
? src/test/regress/results/create_aggregate.out
? src/test/regress/results/create_operator.out
? src/test/regress/results/create_index.out
? src/test/regress/results/inherit.out
? src/test/regress/results/create_view.out
? src/test/regress/results/sanity_check.out
? src/test/regress/results/errors.out
? src/test/regress/results/select.out
? src/test/regress/results/select_into.out
? src/test/regress/results/select_distinct.out
? src/test/regress/results/select_distinct_on.out
? src/test/regress/results/select_implicit.out
? src/test/regress/results/select_having.out
? src/test/regress/results/subselect.out
? src/test/regress/results/union.out
? src/test/regress/results/case.out
? src/test/regress/results/join.out
? src/test/regress/results/aggregates.out
? src/test/regress/results/transactions.out
? src/test/regress/results/random.out
? src/test/regress/results/portals.out
? src/test/regress/results/arrays.out
? src/test/regress/results/btree_index.out
? src/test/regress/results/hash_index.out
? src/test/regress/results/misc.out
? src/test/regress/results/select_views.out
? src/test/regress/results/alter_table.out
? src/test/regress/results/portals_p2.out
? src/test/regress/results/rules.out
? src/test/regress/results/foreign_key.out
? src/test/regress/results/limit.out
? src/test/regress/results/plpgsql.out
? src/test/regress/results/temp.out
? src/test/regress/sql/copy.sql
? src/test/regress/sql/misc.sql
? src/test/regress/sql/create_function_1.sql
? src/test/regress/sql/create_function_2.sql
? src/test/regress/sql/constraints.sql
Index: doc/src/sgml/inherit.sgml
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/src/sgml/inherit.sgml,v
retrieving revision 1.10
diff -c -r1.10 inherit.sgml
*** doc/src/sgml/inherit.sgml	2000/06/22 22:31:15	1.10
--- doc/src/sgml/inherit.sgml	2000/07/01 05:30:22
***************
*** 96,101 ****
--- 96,152 ----
     <command>UPDATE</command> and <command>DELETE</command> --
     support this <quote>ONLY</quote> notation.
    </para>
+ 
+   <para>
+   In some cases you may wish to know which table a particular tuple
+   originated from. There is a system attribute called
+   <quote>TABLEOID</quote> in each table which can tell you the
+   originating table:
+ 
+    <programlisting>
+     SELECT c.tableoid, c.name, c.altitude
+     FROM cities c
+     WHERE c.altitude > 500;
+    </programlisting>
+ 
+    which returns:
+ 
+    <programlisting>
+ +---------+----------+----------+
+ |tableoid |name      | altitude |
+ +---------+----------+----------+
+ |37292    |Las Vegas | 2174     |
+ +---------+----------+----------+
+ |37280    |Mariposa  | 1953     |
+ +---------+----------+----------+
+ |37280    |Madison   | 845      |
+ +---------+----------+----------+
+    </programlisting>
+ 
+    If you do a join with pg_class you can see the actual table name:
+ 
+    <programlisting>
+     SELECT p.relname, c.name, c.altitude
+     FROM cities c, pg_class p
+     WHERE c.altitude > 500 and c.tableoid = p.oid;
+    </programlisting>
+ 
+    which returns:
+ 
+    <programlisting>
+ +---------+----------+----------+
+ |relname  |name      | altitude |
+ +---------+----------+----------+
+ |capitals |Las Vegas | 2174     |
+ +---------+----------+----------+
+ |cities   |Mariposa  | 1953     |
+ +---------+----------+----------+
+ |cities   |Madison   | 845      |
+ +---------+----------+----------+
+    </programlisting>
+    
+   </para>
+ 
    <note>
     <title>Deprecated</title> 
     <para>
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/07/01 05:30:27
***************
*** 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 TableOidAttributeNumber:
  			case SelfItemPointerAttributeNumber:
  			case ObjectIdAttributeNumber:
  			case MinTransactionIdAttributeNumber:
***************
*** 205,210 ****
--- 206,213 ----
  
  	switch (attno)
  	{
+ 		case TableOidAttributeNumber:
+ 			return sizeof f->t_oid;
  		case SelfItemPointerAttributeNumber:
  			return sizeof f->t_ctid;
  		case ObjectIdAttributeNumber:
***************
*** 237,242 ****
--- 240,248 ----
  
  	switch (attno)
  	{
+ 		case TableOidAttributeNumber:
+ 			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 TableOidAttributeNumber:
! 			return (Datum) &tup->t_tableoid;
! 		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.73
diff -c -r1.73 heapam.c
*** src/backend/access/heap/heapam.c	2000/06/30 16:10:40	1.73
--- src/backend/access/heap/heapam.c	2000/07/01 05:30:35
***************
*** 235,240 ****
--- 235,242 ----
  	int			linesleft;
  	ItemPointer tid = (tuple->t_data == NULL) ?
  	(ItemPointer) NULL : &(tuple->t_self);
+     
+ 	tuple->tableOid = relation->rd_id;
  
  	/* ----------------
  	 *	increment access statistics
***************
*** 621,626 ****
--- 623,629 ----
  
  	Assert(lockmode >= NoLock && lockmode < MAX_LOCKMODES);
  
+ 
  	/* ----------------
  	 *	increment access statistics
  	 * ----------------
***************
*** 1084,1089 ****
--- 1087,1093 ----
  	ItemPointer tid = &(tuple->t_self);
  	OffsetNumber offnum;
  
+ 	tuple->tableOid = relation->rd_id;
  	/* ----------------
  	 *	increment access statistics
  	 * ----------------
***************
*** 1178,1183 ****
--- 1182,1188 ----
  	bool		invalidBlock,
  				linkend;
  
+ 	tp.tableOid = relation->rd_id;
  	/* ----------------
  	 *	get the buffer from the relation descriptor
  	 *	Note that this does a buffer pin.
***************
*** 1270,1275 ****
--- 1275,1281 ----
  	 *	increment access statistics
  	 * ----------------
  	 */
+ 	tup->tableOid = relation->rd_id;
  	IncrHeapAccessStat(local_insert);
  	IncrHeapAccessStat(global_insert);
  
***************
*** 1335,1340 ****
--- 1341,1347 ----
  	Buffer		buffer;
  	int			result;
  
+ 	tp.tableOid = relation->rd_id;
  	/* increment access statistics */
  	IncrHeapAccessStat(local_delete);
  	IncrHeapAccessStat(global_delete);
***************
*** 1447,1452 ****
--- 1454,1460 ----
  	Buffer		buffer;
  	int			result;
  
+ 	newtup->tableOid = relation->rd_id;
  	/* increment access statistics */
  	IncrHeapAccessStat(local_replace);
  	IncrHeapAccessStat(global_replace);
***************
*** 1575,1580 ****
--- 1583,1589 ----
  	PageHeader	dp;
  	int			result;
  
+ 	tuple->tableOid = relation->rd_id;
  	/* 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.134
diff -c -r1.134 heap.c
*** src/backend/catalog/heap.c	2000/06/28 03:31:22	1.134
--- src/backend/catalog/heap.c	2000/07/01 05:30:45
***************
*** 131,142 ****
  	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,152 ----
  	MaxCommandIdAttributeNumber, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0'
  };
  
! /* 
!    We decide to call this attribute "tableoid" rather than say
! "classoid" on the basis that in the future there may be more than one
! table of a particular class/type. In any case table is still the word
! used in SQL. 
! */
! static FormData_pg_attribute a7 = {
! 	0xffffffff, {"tableoid"}, OIDOID, 0, sizeof(Oid),
! 	TableOidAttributeNumber, 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/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/07/01 05:30:48
***************
*** 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, TableOidAttributeNumber,
+ 					  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/07/01 05:30:49
***************
*** 40,45 ****
--- 40,48 ----
  
  {
  	{
+ 		"tableoid", TableOidAttributeNumber, 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/07/01 05:30:51
***************
*** 249,254 ****
--- 249,256 ----
  	if (attnum == ObjectIdAttributeNumber ||
  		attnum == SelfItemPointerAttributeNumber)
  		return 1.0 / (double) ntuples;
+ 	if (attnum == TableOidAttributeNumber)
+ 		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.54
diff -c -r1.54 heapam.h
*** src/include/access/heapam.h	2000/06/30 16:10:49	1.54
--- src/include/access/heapam.h	2000/07/01 05:30:53
***************
*** 165,200 ****
   *
   * ----------------
   */
! #define heap_getattr(tup, attnum, tupleDesc, isnull)						\
! (																			\
! 	AssertMacro((tup) != NULL &&											\
! 		(attnum) > FirstLowInvalidHeapAttributeNumber &&					\
! 		(attnum) != 0),														\
! 	((attnum) > (int) (tup)->t_data->t_natts) ?								\
! 	(																		\
! 		((isnull) ? (*(isnull) = true) : (dummyret)NULL),					\
! 		(Datum)NULL															\
! 	)																		\
! 	:																		\
! 	(																		\
! 		((attnum) > 0) ?													\
! 		(																	\
! 			fastgetattr((tup), (attnum), (tupleDesc), (isnull))				\
! 		)																	\
! 		:																	\
! 		(																	\
! 			((isnull) ? (*(isnull) = false) : (dummyret)NULL),				\
! 			((attnum) == SelfItemPointerAttributeNumber) ?					\
! 			(																\
! 				(Datum)((char *)&((tup)->t_self))							\
! 			)																\
! 			:																\
! 			(																\
! 				(Datum)*(unsigned int *)									\
! 					((char *)(tup)->t_data + heap_sysoffset[-(attnum)-1])	\
! 			)																\
! 		)																	\
! 	)																		\
  )
  
  extern HeapAccessStatistics heap_access_stats;	/* in stats.c */
--- 165,205 ----
   *
   * ----------------
   */
! #define heap_getattr(tup, attnum, tupleDesc, isnull) \
! ( \
! 	AssertMacro((tup) != NULL && \
! 		(attnum) > FirstLowInvalidHeapAttributeNumber && \
! 		(attnum) != 0), \
! 	((attnum) > (int) (tup)->t_data->t_natts) ? \
! 	( \
! 		((isnull) ? (*(isnull) = true) : (dummyret)NULL), \
! 		(Datum)NULL \
! 	) \
! 	: \
! 	( \
! 		((attnum) > 0) ? \
! 		( \
! 			fastgetattr((tup), (attnum), (tupleDesc), (isnull)) \
! 		) \
! 		: \
! 		( \
! 			((isnull) ? (*(isnull) = false) : (dummyret)NULL), \
! 			((attnum) == SelfItemPointerAttributeNumber) ? \
! 			( \
! 				(Datum)((char *)&((tup)->t_self)) \
! 			) \
! 			: \
! 			(((attnum) == TableOidAttributeNumber) ? \
! 			( \
! 				(Datum)((tup)->tableOid) \
! 			) \
!             : \
! 			( \
! 				(Datum)*(unsigned int *) \
! 					((char *)(tup)->t_data + heap_sysoffset[-(attnum)-1]) \
! 			)) \
! 		) \
! 	) \
  )
  
  extern HeapAccessStatistics heap_access_stats;	/* in stats.c */
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/07/01 05:30:54
***************
*** 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 TableOidAttributeNumber			        (-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 */
+ 	Oid tableOid;                    /* */
  	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/07/01 05:30:57
***************
*** 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 tableoid			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 tableoid			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 tableoid			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 tableoid			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 tableoid			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 tableoid			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 tableoid			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 tableoid			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 tableoid			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 tableoid			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/test/regress/expected/inherit.out
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/test/regress/expected/inherit.out,v
retrieving revision 1.1
diff -c -r1.1 inherit.out
*** src/test/regress/expected/inherit.out	2000/06/09 11:12:37	1.1
--- src/test/regress/expected/inherit.out	2000/07/01 05:31:02
***************
*** 29,534 ****
  INSERT INTO d(aa) VALUES('dddddd');
  INSERT INTO d(aa) VALUES('ddddddd');
  INSERT INTO d(aa) VALUES('dddddddd');
! SELECT * FROM a;
!     aa    
! ----------
!  aaa
!  aaaa
!  aaaaa
!  aaaaaa
!  aaaaaaa
!  aaaaaaaa
!  bbb
!  bbbb
!  bbbbb
!  bbbbbb
!  bbbbbbb
!  bbbbbbbb
!  ccc
!  cccc
!  ccccc
!  cccccc
!  ccccccc
!  cccccccc
!  ddd
!  dddd
!  ddddd
!  dddddd
!  ddddddd
!  dddddddd
  (24 rows)
  
! SELECT * FROM b;
!     aa    | bb 
! ----------+----
!  bbb      | 
!  bbbb     | 
!  bbbbb    | 
!  bbbbbb   | 
!  bbbbbbb  | 
!  bbbbbbbb | 
!  ddd      | 
!  dddd     | 
!  ddddd    | 
!  dddddd   | 
!  ddddddd  | 
!  dddddddd | 
! (12 rows)
! 
! SELECT * FROM c;
!     aa    | cc 
! ----------+----
!  ccc      | 
!  cccc     | 
!  ccccc    | 
!  cccccc   | 
!  ccccccc  | 
!  cccccccc | 
!  ddd      | 
!  dddd     | 
!  ddddd    | 
!  dddddd   | 
!  ddddddd  | 
!  dddddddd | 
! (12 rows)
! 
! SELECT * FROM d;
!     aa    | bb | cc | dd 
! ----------+----+----+----
!  ddd      |    |    | 
!  dddd     |    |    | 
!  ddddd    |    |    | 
!  dddddd   |    |    | 
!  ddddddd  |    |    | 
!  dddddddd |    |    | 
  (6 rows)
  
- SELECT * FROM ONLY a;
-     aa    
- ----------
-  aaa
-  aaaa
-  aaaaa
-  aaaaaa
-  aaaaaaa
-  aaaaaaaa
- (6 rows)
- 
- SELECT * FROM ONLY b;
-     aa    | bb 
- ----------+----
-  bbb      | 
-  bbbb     | 
-  bbbbb    | 
-  bbbbbb   | 
-  bbbbbbb  | 
-  bbbbbbbb | 
- (6 rows)
- 
- SELECT * FROM ONLY c;
-     aa    | cc 
- ----------+----
-  ccc      | 
-  cccc     | 
-  ccccc    | 
-  cccccc   | 
-  ccccccc  | 
-  cccccccc | 
- (6 rows)
- 
- SELECT * FROM ONLY d;
-     aa    | bb | cc | dd 
- ----------+----+----+----
-  ddd      |    |    | 
-  dddd     |    |    | 
-  ddddd    |    |    | 
-  dddddd   |    |    | 
-  ddddddd  |    |    | 
-  dddddddd |    |    | 
- (6 rows)
- 
  UPDATE a SET aa='zzzz' WHERE aa='aaaa';
! UPDATE ONLY a SET aa='zzzzz' WHERE aa='aaaaa';
! UPDATE b SET aa='zzz' WHERE aa='aaa';
! UPDATE ONLY b SET aa='zzz' WHERE aa='aaa';
! UPDATE a SET aa='zzzzzz' WHERE aa LIKE 'aaa%';
! SELECT * FROM a;
!     aa    
! ----------
!  zzzz
!  zzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
!  bbb
!  bbbb
!  bbbbb
!  bbbbbb
!  bbbbbbb
!  bbbbbbbb
!  ccc
!  cccc
!  ccccc
!  cccccc
!  ccccccc
!  cccccccc
!  ddd
!  dddd
!  ddddd
!  dddddd
!  ddddddd
!  dddddddd
! (24 rows)
! 
! SELECT * FROM b;
!     aa    | bb 
! ----------+----
!  bbb      | 
!  bbbb     | 
!  bbbbb    | 
!  bbbbbb   | 
!  bbbbbbb  | 
!  bbbbbbbb | 
!  ddd      | 
!  dddd     | 
!  ddddd    | 
!  dddddd   | 
!  ddddddd  | 
!  dddddddd | 
! (12 rows)
! 
! SELECT * FROM c;
!     aa    | cc 
! ----------+----
!  ccc      | 
!  cccc     | 
!  ccccc    | 
!  cccccc   | 
!  ccccccc  | 
!  cccccccc | 
!  ddd      | 
!  dddd     | 
!  ddddd    | 
!  dddddd   | 
!  ddddddd  | 
!  dddddddd | 
! (12 rows)
! 
! SELECT * FROM d;
!     aa    | bb | cc | dd 
! ----------+----+----+----
!  ddd      |    |    | 
!  dddd     |    |    | 
!  ddddd    |    |    | 
!  dddddd   |    |    | 
!  ddddddd  |    |    | 
!  dddddddd |    |    | 
! (6 rows)
! 
! SELECT * FROM ONLY a;
!    aa   
! --------
!  zzzz
!  zzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
! (6 rows)
! 
! SELECT * FROM ONLY b;
!     aa    | bb 
! ----------+----
!  bbb      | 
!  bbbb     | 
!  bbbbb    | 
!  bbbbbb   | 
!  bbbbbbb  | 
!  bbbbbbbb | 
! (6 rows)
! 
! SELECT * FROM ONLY c;
!     aa    | cc 
! ----------+----
!  ccc      | 
!  cccc     | 
!  ccccc    | 
!  cccccc   | 
!  ccccccc  | 
!  cccccccc | 
! (6 rows)
! 
! SELECT * FROM ONLY d;
!     aa    | bb | cc | dd 
! ----------+----+----+----
!  ddd      |    |    | 
!  dddd     |    |    | 
!  ddddd    |    |    | 
!  dddddd   |    |    | 
!  ddddddd  |    |    | 
!  dddddddd |    |    | 
! (6 rows)
! 
! UPDATE b SET aa='new';
! SELECT * FROM a;
!     aa    
! ----------
!  zzzz
!  zzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
!  new
!  new
!  new
!  new
!  new
!  new
!  ccc
!  cccc
!  ccccc
!  cccccc
!  ccccccc
!  cccccccc
!  new
!  new
!  new
!  new
!  new
!  new
! (24 rows)
! 
! SELECT * FROM b;
!  aa  | bb 
! -----+----
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
! (12 rows)
! 
! SELECT * FROM c;
!     aa    | cc 
! ----------+----
!  ccc      | 
!  cccc     | 
!  ccccc    | 
!  cccccc   | 
!  ccccccc  | 
!  cccccccc | 
!  new      | 
!  new      | 
!  new      | 
!  new      | 
!  new      | 
!  new      | 
! (12 rows)
! 
! SELECT * FROM d;
!  aa  | bb | cc | dd 
! -----+----+----+----
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
! (6 rows)
! 
! SELECT * FROM ONLY a;
!    aa   
! --------
!  zzzz
!  zzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
!  zzzzzz
! (6 rows)
! 
! SELECT * FROM ONLY b;
!  aa  | bb 
! -----+----
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
! (6 rows)
! 
! SELECT * FROM ONLY c;
!     aa    | cc 
! ----------+----
!  ccc      | 
!  cccc     | 
!  ccccc    | 
!  cccccc   | 
!  ccccccc  | 
!  cccccccc | 
! (6 rows)
! 
! SELECT * FROM ONLY d;
!  aa  | bb | cc | dd 
! -----+----+----+----
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
! (6 rows)
! 
! UPDATE a SET aa='new';
! DELETE FROM ONLY c WHERE aa='new';
! SELECT * FROM a;
!  aa  
! -----
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
!  new
! (18 rows)
! 
! SELECT * FROM b;
!  aa  | bb 
! -----+----
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
! (12 rows)
! 
! SELECT * FROM c;
!  aa  | cc 
! -----+----
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
! (6 rows)
! 
! SELECT * FROM d;
!  aa  | bb | cc | dd 
! -----+----+----+----
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
! (6 rows)
! 
! SELECT * FROM ONLY a;
!  aa  
! -----
!  new
!  new
!  new
!  new
!  new
!  new
! (6 rows)
! 
! SELECT * FROM ONLY b;
!  aa  | bb 
! -----+----
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
!  new | 
! (6 rows)
! 
! SELECT * FROM ONLY c;
!  aa | cc 
! ----+----
! (0 rows)
! 
! SELECT * FROM ONLY d;
!  aa  | bb | cc | dd 
! -----+----+----+----
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
!  new |    |    | 
! (6 rows)
! 
! DELETE FROM a;
! SELECT * FROM a;
!  aa 
! ----
! (0 rows)
! 
! SELECT * FROM b;
!  aa | bb 
! ----+----
! (0 rows)
! 
! SELECT * FROM c;
!  aa | cc 
! ----+----
! (0 rows)
! 
! SELECT * FROM d;
!  aa | bb | cc | dd 
! ----+----+----+----
! (0 rows)
! 
! SELECT * FROM ONLY a;
!  aa 
! ----
! (0 rows)
! 
! SELECT * FROM ONLY b;
!  aa | bb 
! ----+----
! (0 rows)
! 
! SELECT * FROM ONLY c;
!  aa | cc 
! ----+----
! (0 rows)
! 
! SELECT * FROM ONLY d;
!  aa | bb | cc | dd 
! ----+----+----+----
! (0 rows)
! 
--- 29,154 ----
  INSERT INTO d(aa) VALUES('dddddd');
  INSERT INTO d(aa) VALUES('ddddddd');
  INSERT INTO d(aa) VALUES('dddddddd');
! SELECT tableoid, * FROM a;
!  tableoid |    aa    
! ----------+----------
!     34880 | aaa
!     34880 | aaaa
!     34880 | aaaaa
!     34880 | aaaaaa
!     34880 | aaaaaaa
!     34880 | aaaaaaaa
!     34890 | bbb
!     34890 | bbbb
!     34890 | bbbbb
!     34890 | bbbbbb
!     34890 | bbbbbbb
!     34890 | bbbbbbbb
!     34903 | ccc
!     34903 | cccc
!     34903 | ccccc
!     34903 | cccccc
!     34903 | ccccccc
!     34903 | cccccccc
!     34916 | ddd
!     34916 | dddd
!     34916 | ddddd
!     34916 | dddddd
!     34916 | ddddddd
!     34916 | dddddddd
  (24 rows)
  
! SELECT tableoid, * FROM b;
!  tableoid |    aa    | bb 
! ----------+----------+----
!     34890 | bbb      | 
!     34890 | bbbb     | 
!     34890 | bbbbb    | 
!     34890 | bbbbbb   | 
!     34890 | bbbbbbb  | 
!     34890 | bbbbbbbb | 
!     34916 | ddd      | 
!     34916 | dddd     | 
!     34916 | ddddd    | 
!     34916 | dddddd   | 
!     34916 | ddddddd  | 
!     34916 | dddddddd | 
! (12 rows)
! 
! SELECT tableoid, * FROM c;
!  tableoid |    aa    | cc 
! ----------+----------+----
!     34903 | ccc      | 
!     34903 | cccc     | 
!     34903 | ccccc    | 
!     34903 | cccccc   | 
!     34903 | ccccccc  | 
!     34903 | cccccccc | 
!     34916 | ddd      | 
!     34916 | dddd     | 
!     34916 | ddddd    | 
!     34916 | dddddd   | 
!     34916 | ddddddd  | 
!     34916 | dddddddd | 
! (12 rows)
! 
! SELECT tableoid, * FROM d;
!  tableoid |    aa    | bb | cc | dd 
! ----------+----------+----+----+----
!     34916 | ddd      |    |    | 
!     34916 | dddd     |    |    | 
!     34916 | ddddd    |    |    | 
!     34916 | dddddd   |    |    | 
!     34916 | ddddddd  |    |    | 
!     34916 | dddddddd |    |    | 
! (6 rows)
! 
! SELECT tableoid, * FROM ONLY a;
!  tableoid |    aa    
! ----------+----------
!     34880 | aaa
!     34880 | aaaa
!     34880 | aaaaa
!     34880 | aaaaaa
!     34880 | aaaaaaa
!     34880 | aaaaaaaa
! (6 rows)
! 
! SELECT tableoid, * FROM ONLY b;
!  tableoid |    aa    | bb 
! ----------+----------+----
!     34890 | bbb      | 
!     34890 | bbbb     | 
!     34890 | bbbbb    | 
!     34890 | bbbbbb   | 
!     34890 | bbbbbbb  | 
!     34890 | bbbbbbbb | 
! (6 rows)
! 
! SELECT tableoid, * FROM ONLY c;
!  tableoid |    aa    | cc 
! ----------+----------+----
!     34903 | ccc      | 
!     34903 | cccc     | 
!     34903 | ccccc    | 
!     34903 | cccccc   | 
!     34903 | ccccccc  | 
!     34903 | cccccccc | 
! (6 rows)
! 
! SELECT tableoid, * FROM ONLY d;
!  tableoid |    aa    | bb | cc | dd 
! ----------+----------+----+----+----
!     34916 | ddd      |    |    | 
!     34916 | dddd     |    |    | 
!     34916 | ddddd    |    |    | 
!     34916 | dddddd   |    |    | 
!     34916 | ddddddd  |    |    | 
!     34916 | dddddddd |    |    | 
  (6 rows)
  
  UPDATE a SET aa='zzzz' WHERE aa='aaaa';
! pqReadData() -- backend closed the channel unexpectedly.
! 	This probably means the backend terminated abnormally
! 	before or while processing the request.
! connection to server was lost
Index: src/test/regress/sql/inherit.sql
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/test/regress/sql/inherit.sql,v
retrieving revision 1.1
diff -c -r1.1 inherit.sql
*** src/test/regress/sql/inherit.sql	2000/06/09 11:12:38	1.1
--- src/test/regress/sql/inherit.sql	2000/07/01 05:31:03
***************
*** 34,47 ****
  INSERT INTO d(aa) VALUES('ddddddd');
  INSERT INTO d(aa) VALUES('dddddddd');
  
! SELECT * FROM a;
! SELECT * FROM b;
! SELECT * FROM c;
! SELECT * FROM d;
! SELECT * FROM ONLY a;
! SELECT * FROM ONLY b;
! SELECT * FROM ONLY c;
! SELECT * FROM ONLY d;
  
  UPDATE a SET aa='zzzz' WHERE aa='aaaa';
  UPDATE ONLY a SET aa='zzzzz' WHERE aa='aaaaa';
--- 34,47 ----
  INSERT INTO d(aa) VALUES('ddddddd');
  INSERT INTO d(aa) VALUES('dddddddd');
  
! SELECT tableoid, * FROM a;
! SELECT tableoid, * FROM b;
! SELECT tableoid, * FROM c;
! SELECT tableoid, * FROM d;
! SELECT tableoid, * FROM ONLY a;
! SELECT tableoid, * FROM ONLY b;
! SELECT tableoid, * FROM ONLY c;
! SELECT tableoid, * FROM ONLY d;
  
  UPDATE a SET aa='zzzz' WHERE aa='aaaa';
  UPDATE ONLY a SET aa='zzzzz' WHERE aa='aaaaa';
***************
*** 49,94 ****
  UPDATE ONLY b SET aa='zzz' WHERE aa='aaa';
  UPDATE a SET aa='zzzzzz' WHERE aa LIKE 'aaa%';
  
! SELECT * FROM a;
! SELECT * FROM b;
! SELECT * FROM c;
! SELECT * FROM d;
! SELECT * FROM ONLY a;
! SELECT * FROM ONLY b;
! SELECT * FROM ONLY c;
! SELECT * FROM ONLY d;
  
  UPDATE b SET aa='new';
  
! SELECT * FROM a;
! SELECT * FROM b;
! SELECT * FROM c;
! SELECT * FROM d;
! SELECT * FROM ONLY a;
! SELECT * FROM ONLY b;
! SELECT * FROM ONLY c;
! SELECT * FROM ONLY d;
  
  UPDATE a SET aa='new';
  
  DELETE FROM ONLY c WHERE aa='new';
  
! SELECT * FROM a;
! SELECT * FROM b;
! SELECT * FROM c;
! SELECT * FROM d;
! SELECT * FROM ONLY a;
! SELECT * FROM ONLY b;
! SELECT * FROM ONLY c;
! SELECT * FROM ONLY d;
  
  DELETE FROM a;
  
! SELECT * FROM a;
! SELECT * FROM b;
! SELECT * FROM c;
! SELECT * FROM d;
! SELECT * FROM ONLY a;
! SELECT * FROM ONLY b;
! SELECT * FROM ONLY c;
! SELECT * FROM ONLY d;
--- 49,94 ----
  UPDATE ONLY b SET aa='zzz' WHERE aa='aaa';
  UPDATE a SET aa='zzzzzz' WHERE aa LIKE 'aaa%';
  
! SELECT tableoid, * FROM a;
! SELECT tableoid, * FROM b;
! SELECT tableoid, * FROM c;
! SELECT tableoid, * FROM d;
! SELECT tableoid, * FROM ONLY a;
! SELECT tableoid, * FROM ONLY b;
! SELECT tableoid, * FROM ONLY c;
! SELECT tableoid, * FROM ONLY d;
  
  UPDATE b SET aa='new';
  
! SELECT tableoid, * FROM a;
! SELECT tableoid, * FROM b;
! SELECT tableoid, * FROM c;
! SELECT tableoid, * FROM d;
! SELECT tableoid, * FROM ONLY a;
! SELECT tableoid, * FROM ONLY b;
! SELECT tableoid, * FROM ONLY c;
! SELECT tableoid, * FROM ONLY d;
  
  UPDATE a SET aa='new';
  
  DELETE FROM ONLY c WHERE aa='new';
  
! SELECT tableoid, * FROM a;
! SELECT tableoid, * FROM b;
! SELECT tableoid, * FROM c;
! SELECT tableoid, * FROM d;
! SELECT tableoid, * FROM ONLY a;
! SELECT tableoid, * FROM ONLY b;
! SELECT tableoid, * FROM ONLY c;
! SELECT tableoid, * FROM ONLY d;
  
  DELETE FROM a;
  
! SELECT tableoid, * FROM a;
! SELECT tableoid, * FROM b;
! SELECT tableoid, * FROM c;
! SELECT tableoid, * FROM d;
! SELECT tableoid, * FROM ONLY a;
! SELECT tableoid, * FROM ONLY b;
! SELECT tableoid, * FROM ONLY c;
! SELECT tableoid, * FROM ONLY d;
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/07/01 05:31:03
***************
*** 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