Re: [PATCHES] TABLEOID patch - Mailing list pgsql-hackers
From | Chris Bitmead |
---|---|
Subject | Re: [PATCHES] TABLEOID patch |
Date | |
Msg-id | 395F0C4B.11CCF177@bitmead.com Whole thread Raw |
In response to | TABLEOID patch (Chris Bitmead <chris@bitmead.com>) |
Responses |
Re: [PATCHES] TABLEOID patch
|
List | pgsql-hackers |
Attached is a new patch which addresses this problem. -- 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/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/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/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/results/stud_emp.data ? 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/02 09:29:43 *************** *** 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/02 09:29: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 momjianExp $ * * 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/02 09:29:49 *************** *** 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.135 diff -c -r1.135 heap.c *** src/backend/catalog/heap.c 2000/07/02 04:46:09 1.135 --- src/backend/catalog/heap.c 2000/07/02 09:29:55 *************** *** 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, '\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 ! * ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- 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/02 09:29:56 *************** *** 57,62 **** --- 57,65 ---- { "cmax", MaxCommandIdAttributeNumber, CIDOID }, + { + "tableoid", TableOidAttributeNumber, OIDOID + } }; #define SPECIALS ((int) (sizeof(special_attr)/sizeof(special_attr[0]))) 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/02 09:29:58 *************** *** 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/02 09:30:00 *************** *** 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/02 09:30:01 *************** *** 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/02 09:30:03 *************** *** 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/02 09:30:08 *************** *** 29,150 **** 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'; --- 29,150 ---- INSERT INTO d(aa) VALUES('dddddd'); INSERT INTO d(aa) VALUES('ddddddd'); INSERT INTO d(aa) VALUES('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 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 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 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 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 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 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 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,534 **** 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) --- 152,534 ---- 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; ! relname | aa | cc ! ---------+----+---- (0 rows) ! 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 relname, a.* FROM a, pg_class where a.tableoid = pg_class.oid; ! relname | aa ! ---------+---- (0 rows) ! SELECT relname, b.* FROM b, pg_class where b.tableoid = pg_class.oid; ! relname | aa | bb ! ---------+----+---- (0 rows) ! SELECT relname, c.* FROM c, pg_class where c.tableoid = pg_class.oid; ! relname | aa | cc ! ---------+----+---- (0 rows) ! SELECT relname, d.* FROM d, pg_class where d.tableoid = pg_class.oid; ! relname | aa | bb | cc | dd ! ---------+----+----+----+---- (0 rows) ! SELECT relname, a.* FROM ONLY a, pg_class where a.tableoid = pg_class.oid; ! relname | aa ! ---------+---- (0 rows) ! SELECT relname, b.* FROM ONLY b, pg_class where b.tableoid = pg_class.oid; ! relname | aa | bb ! ---------+----+---- (0 rows) ! SELECT relname, c.* FROM ONLY c, pg_class where c.tableoid = pg_class.oid; ! relname | aa | cc ! ---------+----+---- (0 rows) ! SELECT relname, d.* FROM ONLY d, pg_class where d.tableoid = pg_class.oid; ! relname | aa | bb | cc | dd ! ---------+----+----+----+---- (0 rows) 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/02 09:30:08 *************** *** 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 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,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 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 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 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 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; 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/02 09:30:08 *************** *** 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
pgsql-hackers by date: