From: Bruce Momjian Date: Sun, 2 Jul 2000 22:01:27 +0000 (+0000) Subject: Attached is a new patch which addresses this problem. (oids in X-Git-Tag: REL9_0_0~22971 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=80c646958a14ed343a686566cb77bd92961cf589;p=pg-rex%2Fsyncrep.git Attached is a new patch which addresses this problem. (oids in regression tests). Chris Bitmead --- diff --git a/doc/src/sgml/inherit.sgml b/doc/src/sgml/inherit.sgml index 774795f94d..bb0a4d9c7a 100644 --- a/doc/src/sgml/inherit.sgml +++ b/doc/src/sgml/inherit.sgml @@ -1,5 +1,5 @@ @@ -96,6 +96,57 @@ CREATE TABLE capitals UNDER cities ( UPDATE and DELETE -- support this ONLY notation. + + + In some cases you may wish to know which table a particular tuple + originated from. There is a system attribute called + TABLEOID in each table which can tell you the + originating table: + + + SELECT c.tableoid, c.name, c.altitude + FROM cities c + WHERE c.altitude > 500; + + + which returns: + + ++---------+----------+----------+ +|tableoid |name | altitude | ++---------+----------+----------+ +|37292 |Las Vegas | 2174 | ++---------+----------+----------+ +|37280 |Mariposa | 1953 | ++---------+----------+----------+ +|37280 |Madison | 845 | ++---------+----------+----------+ + + + If you do a join with pg_class you can see the actual table name: + + + SELECT p.relname, c.name, c.altitude + FROM cities c, pg_class p + WHERE c.altitude > 500 and c.tableoid = p.oid; + + + which returns: + + ++---------+----------+----------+ +|relname |name | altitude | ++---------+----------+----------+ +|capitals |Las Vegas | 2174 | ++---------+----------+----------+ +|cities |Mariposa | 1953 | ++---------+----------+----------+ +|cities |Madison | 845 | ++---------+----------+----------+ + + + + Deprecated diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c index d30e4c7fe6..f93bf34db9 100644 --- a/src/backend/access/common/heaptuple.c +++ b/src/backend/access/common/heaptuple.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.62 2000/04/12 17:14:36 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.63 2000/07/02 22:00:24 momjian Exp $ * * NOTES * The old interface functions have been converted to macros @@ -169,6 +169,7 @@ heap_attisnull(HeapTuple tup, int attnum) else switch (attnum) { + case TableOidAttributeNumber: case SelfItemPointerAttributeNumber: case ObjectIdAttributeNumber: case MinTransactionIdAttributeNumber: @@ -205,6 +206,8 @@ heap_sysattrlen(AttrNumber attno) switch (attno) { + case TableOidAttributeNumber: + return sizeof f->t_oid; case SelfItemPointerAttributeNumber: return sizeof f->t_ctid; case ObjectIdAttributeNumber: @@ -237,6 +240,9 @@ heap_sysattrbyval(AttrNumber attno) switch (attno) { + case TableOidAttributeNumber: + byval = true; + break; case SelfItemPointerAttributeNumber: byval = false; break; @@ -275,7 +281,9 @@ heap_getsysattr(HeapTuple tup, Buffer b, int attnum) { switch (attnum) { - case SelfItemPointerAttributeNumber: + case TableOidAttributeNumber: + return (Datum) &tup->t_tableoid; + case SelfItemPointerAttributeNumber: return (Datum) &tup->t_ctid; case ObjectIdAttributeNumber: return (Datum) (long) tup->t_oid; diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 150005f8fb..d671036f04 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.73 2000/06/30 16:10:40 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.74 2000/07/02 22:00:27 momjian Exp $ * * * INTERFACE ROUTINES @@ -235,6 +235,8 @@ heapgettup(Relation relation, int linesleft; ItemPointer tid = (tuple->t_data == NULL) ? (ItemPointer) NULL : &(tuple->t_self); + + tuple->tableOid = relation->rd_id; /* ---------------- * increment access statistics @@ -621,6 +623,7 @@ heap_openr(const char *relationName, LOCKMODE lockmode) Assert(lockmode >= NoLock && lockmode < MAX_LOCKMODES); + /* ---------------- * increment access statistics * ---------------- @@ -1084,6 +1087,7 @@ heap_fetch(Relation relation, ItemPointer tid = &(tuple->t_self); OffsetNumber offnum; + tuple->tableOid = relation->rd_id; /* ---------------- * increment access statistics * ---------------- @@ -1178,6 +1182,7 @@ heap_get_latest_tid(Relation relation, bool invalidBlock, linkend; + tp.tableOid = relation->rd_id; /* ---------------- * get the buffer from the relation descriptor * Note that this does a buffer pin. @@ -1270,6 +1275,7 @@ heap_insert(Relation relation, HeapTuple tup) * increment access statistics * ---------------- */ + tup->tableOid = relation->rd_id; IncrHeapAccessStat(local_insert); IncrHeapAccessStat(global_insert); @@ -1335,6 +1341,7 @@ heap_delete(Relation relation, ItemPointer tid, ItemPointer ctid) Buffer buffer; int result; + tp.tableOid = relation->rd_id; /* increment access statistics */ IncrHeapAccessStat(local_delete); IncrHeapAccessStat(global_delete); @@ -1447,6 +1454,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup, Buffer buffer; int result; + newtup->tableOid = relation->rd_id; /* increment access statistics */ IncrHeapAccessStat(local_replace); IncrHeapAccessStat(global_replace); @@ -1575,6 +1583,7 @@ heap_mark4update(Relation relation, HeapTuple tuple, Buffer *buffer) PageHeader dp; int result; + tuple->tableOid = relation->rd_id; /* increment access statistics */ IncrHeapAccessStat(local_mark4update); IncrHeapAccessStat(global_mark4update); diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index dceab60c8e..721297680e 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.135 2000/07/02 04:46:09 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.136 2000/07/02 22:00:34 momjian Exp $ * * * INTERFACE ROUTINES @@ -131,12 +131,22 @@ static FormData_pg_attribute a6 = { MaxCommandIdAttributeNumber, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }; -static Form_pg_attribute HeapAtt[] = {&a1, &a2, &a3, &a4, &a5, &a6}; +/* + 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, '\001', '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 - * ---------------------------------------------------------------- - */ + * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index cbb5f07fef..7a3e3c2d6a 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.44 2000/06/20 01:41:21 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.45 2000/07/02 22:00:41 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -57,6 +57,9 @@ static struct { "cmax", MaxCommandIdAttributeNumber, CIDOID }, + { + "tableoid", TableOidAttributeNumber, OIDOID + } }; #define SPECIALS ((int) (sizeof(special_attr)/sizeof(special_attr[0]))) diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index 19556fce66..5804862222 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.42 2000/06/08 22:37:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.43 2000/07/02 22:00:48 momjian Exp $ * * NOTES * Eventually, the index information should go through here, too. @@ -249,6 +249,8 @@ get_attdisbursion(Oid relid, AttrNumber attnum, double min_estimate) 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 diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index ab30f09b30..c716ab2392 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: heapam.h,v 1.54 2000/06/30 16:10:49 petere Exp $ + * $Id: heapam.h,v 1.55 2000/07/02 22:01:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -165,36 +165,41 @@ fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, * * ---------------- */ -#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]) \ - ) \ - ) \ - ) \ +#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 */ diff --git a/src/include/access/htup.h b/src/include/access/htup.h index ff51409216..3370960e2f 100644 --- a/src/include/access/htup.h +++ b/src/include/access/htup.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: htup.h,v 1.30 2000/06/02 10:20:26 vadim Exp $ + * $Id: htup.h,v 1.31 2000/07/02 22:01:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -133,7 +133,8 @@ typedef struct xl_heap_move #define MinCommandIdAttributeNumber (-4) #define MaxTransactionIdAttributeNumber (-5) #define MaxCommandIdAttributeNumber (-6) -#define FirstLowInvalidHeapAttributeNumber (-7) +#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,6 +157,7 @@ typedef struct HeapTupleData { uint32 t_len; /* length of *t_data */ ItemPointerData t_self; /* SelfItemPointer */ + Oid tableOid; /* */ MemoryContext t_datamcxt; /* */ HeapTupleHeader t_data; /* */ } HeapTupleData; diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h index a653c42a07..899b249642 100644 --- a/src/include/catalog/pg_attribute.h +++ b/src/include/catalog/pg_attribute.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pg_attribute.h,v 1.59 2000/06/12 03:40:52 momjian Exp $ + * $Id: pg_attribute.h,v 1.60 2000/07/02 22:01:08 momjian Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -267,6 +267,7 @@ DATA(insert OID = 0 ( 1247 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +283,7 @@ DATA(insert OID = 0 ( 1262 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +331,7 @@ DATA(insert OID = 0 ( 1255 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +351,7 @@ DATA(insert OID = 0 ( 1260 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +366,7 @@ DATA(insert OID = 0 ( 1261 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +410,7 @@ DATA(insert OID = 0 ( 1249 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +464,7 @@ DATA(insert OID = 0 ( 1259 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +480,7 @@ DATA(insert OID = 0 ( 1215 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +496,7 @@ DATA(insert OID = 0 ( 1216 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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,6 +522,7 @@ DATA(insert OID = 0 ( 1219 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); 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 diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 3c01ec33f0..b0eed9a09e 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -29,122 +29,122 @@ INSERT INTO d(aa) VALUES('ddddd'); 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 +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+---------- + a | aaa + a | aaaa + a | aaaaa + a | aaaaaa + a | aaaaaaa + a | aaaaaaaa + b | bbb + b | bbbb + b | bbbbb + b | bbbbbb + b | bbbbbbb + b | bbbbbbbb + c | ccc + c | cccc + c | ccccc + c | cccccc + c | ccccccc + c | cccccccc + d | ddd + d | dddd + d | ddddd + d | dddddd + d | ddddddd + d | dddddddd (24 rows) -SELECT * FROM b; - aa | bb -----------+---- - bbb | - bbbb | - bbbbb | - bbbbbb | - bbbbbbb | - bbbbbbbb | - ddd | - dddd | - ddddd | - dddddd | - ddddddd | - dddddddd | +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+----------+---- + b | bbb | + b | bbbb | + b | bbbbb | + b | bbbbbb | + b | bbbbbbb | + b | bbbbbbbb | + d | ddd | + d | dddd | + d | ddddd | + d | dddddd | + d | ddddddd | + d | dddddddd | (12 rows) -SELECT * FROM c; - aa | cc -----------+---- - ccc | - cccc | - ccccc | - cccccc | - ccccccc | - cccccccc | - ddd | - dddd | - ddddd | - dddddd | - ddddddd | - dddddddd | +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----------+---- + c | ccc | + c | cccc | + c | ccccc | + c | cccccc | + c | ccccccc | + c | cccccccc | + d | ddd | + d | dddd | + d | ddddd | + d | dddddd | + d | ddddddd | + d | dddddddd | (12 rows) -SELECT * FROM d; - aa | bb | cc | dd -----------+----+----+---- - ddd | | | - dddd | | | - ddddd | | | - dddddd | | | - ddddddd | | | - dddddddd | | | +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+----------+----+----+---- + d | ddd | | | + d | dddd | | | + d | ddddd | | | + d | dddddd | | | + d | ddddddd | | | + d | dddddddd | | | (6 rows) -SELECT * FROM ONLY a; - aa ----------- - aaa - aaaa - aaaaa - aaaaaa - aaaaaaa - aaaaaaaa +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+---------- + a | aaa + a | aaaa + a | aaaaa + a | aaaaaa + a | aaaaaaa + a | aaaaaaaa (6 rows) -SELECT * FROM ONLY b; - aa | bb -----------+---- - bbb | - bbbb | - bbbbb | - bbbbbb | - bbbbbbb | - bbbbbbbb | +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+----------+---- + b | bbb | + b | bbbb | + b | bbbbb | + b | bbbbbb | + b | bbbbbbb | + b | bbbbbbbb | (6 rows) -SELECT * FROM ONLY c; - aa | cc -----------+---- - ccc | - cccc | - ccccc | - cccccc | - ccccccc | - cccccccc | +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----------+---- + c | ccc | + c | cccc | + c | ccccc | + c | cccccc | + c | ccccccc | + c | cccccccc | (6 rows) -SELECT * FROM ONLY d; - aa | bb | cc | dd -----------+----+----+---- - ddd | | | - dddd | | | - ddddd | | | - dddddd | | | - ddddddd | | | - dddddddd | | | +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+----------+----+----+---- + d | ddd | | | + d | dddd | | | + d | ddddd | | | + d | dddddd | | | + d | ddddddd | | | + d | dddddddd | | | (6 rows) UPDATE a SET aa='zzzz' WHERE aa='aaaa'; @@ -152,383 +152,383 @@ 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 +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+---------- + a | zzzz + a | zzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz + b | bbb + b | bbbb + b | bbbbb + b | bbbbbb + b | bbbbbbb + b | bbbbbbbb + c | ccc + c | cccc + c | ccccc + c | cccccc + c | ccccccc + c | cccccccc + d | ddd + d | dddd + d | ddddd + d | dddddd + d | ddddddd + d | dddddddd (24 rows) -SELECT * FROM b; - aa | bb -----------+---- - bbb | - bbbb | - bbbbb | - bbbbbb | - bbbbbbb | - bbbbbbbb | - ddd | - dddd | - ddddd | - dddddd | - ddddddd | - dddddddd | +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+----------+---- + b | bbb | + b | bbbb | + b | bbbbb | + b | bbbbbb | + b | bbbbbbb | + b | bbbbbbbb | + d | ddd | + d | dddd | + d | ddddd | + d | dddddd | + d | ddddddd | + d | dddddddd | (12 rows) -SELECT * FROM c; - aa | cc -----------+---- - ccc | - cccc | - ccccc | - cccccc | - ccccccc | - cccccccc | - ddd | - dddd | - ddddd | - dddddd | - ddddddd | - dddddddd | +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----------+---- + c | ccc | + c | cccc | + c | ccccc | + c | cccccc | + c | ccccccc | + c | cccccccc | + d | ddd | + d | dddd | + d | ddddd | + d | dddddd | + d | ddddddd | + d | dddddddd | (12 rows) -SELECT * FROM d; - aa | bb | cc | dd -----------+----+----+---- - ddd | | | - dddd | | | - ddddd | | | - dddddd | | | - ddddddd | | | - dddddddd | | | +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+----------+----+----+---- + d | ddd | | | + d | dddd | | | + d | ddddd | | | + d | dddddd | | | + d | ddddddd | | | + d | dddddddd | | | (6 rows) -SELECT * FROM ONLY a; - aa --------- - zzzz - zzzzz - zzzzzz - zzzzzz - zzzzzz - zzzzzz +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+-------- + a | zzzz + a | zzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz (6 rows) -SELECT * FROM ONLY b; - aa | bb -----------+---- - bbb | - bbbb | - bbbbb | - bbbbbb | - bbbbbbb | - bbbbbbbb | +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+----------+---- + b | bbb | + b | bbbb | + b | bbbbb | + b | bbbbbb | + b | bbbbbbb | + b | bbbbbbbb | (6 rows) -SELECT * FROM ONLY c; - aa | cc -----------+---- - ccc | - cccc | - ccccc | - cccccc | - ccccccc | - cccccccc | +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----------+---- + c | ccc | + c | cccc | + c | ccccc | + c | cccccc | + c | ccccccc | + c | cccccccc | (6 rows) -SELECT * FROM ONLY d; - aa | bb | cc | dd -----------+----+----+---- - ddd | | | - dddd | | | - ddddd | | | - dddddd | | | - ddddddd | | | - dddddddd | | | +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+----------+----+----+---- + d | ddd | | | + d | dddd | | | + d | ddddd | | | + d | dddddd | | | + d | ddddddd | | | + d | 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 +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+---------- + a | zzzz + a | zzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz + b | new + b | new + b | new + b | new + b | new + b | new + c | ccc + c | cccc + c | ccccc + c | cccccc + c | ccccccc + c | cccccccc + d | new + d | new + d | new + d | new + d | new + d | new (24 rows) -SELECT * FROM b; - aa | bb ------+---- - new | - new | - new | - new | - new | - new | - new | - new | - new | - new | - new | - new | +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+-----+---- + b | new | + b | new | + b | new | + b | new | + b | new | + b | new | + d | new | + d | new | + d | new | + d | new | + d | new | + d | new | (12 rows) -SELECT * FROM c; - aa | cc -----------+---- - ccc | - cccc | - ccccc | - cccccc | - ccccccc | - cccccccc | - new | - new | - new | - new | - new | - new | +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----------+---- + c | ccc | + c | cccc | + c | ccccc | + c | cccccc | + c | ccccccc | + c | cccccccc | + d | new | + d | new | + d | new | + d | new | + d | new | + d | new | (12 rows) -SELECT * FROM d; - aa | bb | cc | dd ------+----+----+---- - new | | | - new | | | - new | | | - new | | | - new | | | - new | | | +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+-----+----+----+---- + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | (6 rows) -SELECT * FROM ONLY a; - aa --------- - zzzz - zzzzz - zzzzzz - zzzzzz - zzzzzz - zzzzzz +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+-------- + a | zzzz + a | zzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz + a | zzzzzz (6 rows) -SELECT * FROM ONLY b; - aa | bb ------+---- - new | - new | - new | - new | - new | - new | +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+-----+---- + b | new | + b | new | + b | new | + b | new | + b | new | + b | new | (6 rows) -SELECT * FROM ONLY c; - aa | cc -----------+---- - ccc | - cccc | - ccccc | - cccccc | - ccccccc | - cccccccc | +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----------+---- + c | ccc | + c | cccc | + c | ccccc | + c | cccccc | + c | ccccccc | + c | cccccccc | (6 rows) -SELECT * FROM ONLY d; - aa | bb | cc | dd ------+----+----+---- - new | | | - new | | | - new | | | - new | | | - new | | | - new | | | +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+-----+----+----+---- + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | 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 +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+----- + a | new + a | new + a | new + a | new + a | new + a | new + b | new + b | new + b | new + b | new + b | new + b | new + d | new + d | new + d | new + d | new + d | new + d | new (18 rows) -SELECT * FROM b; - aa | bb ------+---- - new | - new | - new | - new | - new | - new | - new | - new | - new | - new | - new | - new | +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+-----+---- + b | new | + b | new | + b | new | + b | new | + b | new | + b | new | + d | new | + d | new | + d | new | + d | new | + d | new | + d | new | (12 rows) -SELECT * FROM c; - aa | cc ------+---- - new | - new | - new | - new | - new | - new | +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+-----+---- + d | new | + d | new | + d | new | + d | new | + d | new | + d | new | (6 rows) -SELECT * FROM d; - aa | bb | cc | dd ------+----+----+---- - new | | | - new | | | - new | | | - new | | | - new | | | - new | | | +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+-----+----+----+---- + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | (6 rows) -SELECT * FROM ONLY a; - aa ------ - new - new - new - new - new - new +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+----- + a | new + a | new + a | new + a | new + a | new + a | new (6 rows) -SELECT * FROM ONLY b; - aa | bb ------+---- - new | - new | - new | - new | - new | - new | +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+-----+---- + b | new | + b | new | + b | new | + b | new | + b | new | + b | new | (6 rows) -SELECT * FROM ONLY c; - aa | cc -----+---- +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----+---- (0 rows) -SELECT * FROM ONLY d; - aa | bb | cc | dd ------+----+----+---- - new | | | - new | | | - new | | | - new | | | - new | | | - new | | | +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+-----+----+----+---- + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | + d | new | | | (6 rows) DELETE FROM a; -SELECT * FROM a; - aa ----- +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+---- (0 rows) -SELECT * FROM b; - aa | bb -----+---- +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+----+---- (0 rows) -SELECT * FROM c; - aa | cc -----+---- +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----+---- (0 rows) -SELECT * FROM d; - aa | bb | cc | dd -----+----+----+---- +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+----+----+----+---- (0 rows) -SELECT * FROM ONLY a; - aa ----- +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; + relname | aa +---------+---- (0 rows) -SELECT * FROM ONLY b; - aa | bb -----+---- +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; + relname | aa | bb +---------+----+---- (0 rows) -SELECT * FROM ONLY c; - aa | cc -----+---- +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; + relname | aa | cc +---------+----+---- (0 rows) -SELECT * FROM ONLY d; - aa | bb | cc | dd -----+----+----+---- +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; + relname | aa | bb | cc | dd +---------+----+----+----+---- (0 rows) diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql index 57b4fde4df..e1fde48222 100644 --- a/src/test/regress/sql/inherit.sql +++ b/src/test/regress/sql/inherit.sql @@ -34,14 +34,14 @@ INSERT INTO d(aa) VALUES('dddddd'); 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; +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; UPDATE a SET aa='zzzz' WHERE aa='aaaa'; UPDATE ONLY a SET aa='zzzzz' WHERE aa='aaaaa'; @@ -49,46 +49,46 @@ 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; -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; +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; 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; +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; 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; +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; 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; +SELECT relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; +SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; +SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; +SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; +SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; diff --git a/src/tools/make_mkid b/src/tools/make_mkid index 42e2498928..6827e5710c 100755 --- a/src/tools/make_mkid +++ b/src/tools/make_mkid @@ -1,6 +1,6 @@ #!/bin/sh find `pwd`/ \( -name _deadcode -a -prune \) -o \ - -type f -name '*.[chyl]' -print|sed 's;//;/;g' | mkid + -type f -name '*.[chyl]' -print|sed 's;//;/;g' | mkid - find . -name 'CVS' -prune -o -type d -print |while read DIR do