regression tests).
Chris Bitmead
index 774795f94d93154f61bb3c13096f6ce5a3138c98..bb0a4d9c7a60b47c33b2f35fa6492a42e3881549 100644 (file)
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/Attic/inherit.sgml,v 1.10 2000年06月22日 22:31:15 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/Attic/inherit.sgml,v 1.11 2000年07月02日 22:00:23 momjian Exp $
-->
<chapter id="inherit">
@@ -96,6 +96,57 @@ CREATE TABLE capitals UNDER cities (
<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 d30e4c7fe64e350bbee4ffed062a74e7d679e1ab..f93bf34db90aa8a8ed85b3a32e63433feb8c97d9 100644 (file)
*
*
* 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:
switch (attno)
{
+ case TableOidAttributeNumber:
+ return sizeof f->t_oid;
case SelfItemPointerAttributeNumber:
return sizeof f->t_ctid;
case ObjectIdAttributeNumber:
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;
index 150005f8fbe5fc457d2dbc37e9d7fc1de0f1940a..d671036f0499158aedae528de4d0c58799fa29c8 100644 (file)
*
*
* 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
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
* ----------------
ItemPointer tid = &(tuple->t_self);
OffsetNumber offnum;
+ tuple->tableOid = relation->rd_id;
/* ----------------
* increment access statistics
* ----------------
bool invalidBlock,
linkend;
+ tp.tableOid = relation->rd_id;
/* ----------------
* get the buffer from the relation descriptor
* Note that this does a buffer pin.
* 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);
index dceab60c8e0ec5beb11a0defa9b226e999bae557..721297680edabd2289c8d84318736606a1d72e2c 100644 (file)
*
*
* 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
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
- * ----------------------------------------------------------------
- */
+ * ---------------------------------------------------------------- */
/* ----------------------------------------------------------------
index cbb5f07fefaa00ab34da3dc8730701c370c03765..7a3e3c2d6ad0435d196a73626290185044c4dd17 100644 (file)
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
{
"cmax", MaxCommandIdAttributeNumber, CIDOID
},
+ {
+ "tableoid", TableOidAttributeNumber, OIDOID
+ }
};
#define SPECIALS ((int) (sizeof(special_attr)/sizeof(special_attr[0])))
index 19556fce66fd91cbde28a40ffe1b4e696d5d6eea..580486222229093ecd24de741f2666848864337b 100644 (file)
* 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
index ab30f09b3080ea43e4fc4da88941a8539781f08f..c716ab239265b3c1e1d44e974b6550f39d65bfb4 100644 (file)
* 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 */
index ff51409216043bd3ca9405d5cea6ceb533130ac3..3370960e2fd64298c949b4e11cb4e9eca232ed3a 100644 (file)
* 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 $
*
*-------------------------------------------------------------------------
*/
#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[];
{
uint32 t_len; /* length of *t_data */
ItemPointerData t_self; /* SelfItemPointer */
+ Oid tableOid; /* */
MemoryContext t_datamcxt; /* */
HeapTupleHeader t_data; /* */
} HeapTupleData;
index a653c42a0709d2a4c07852d339b417f66ac0bde2..899b2496420617d2516523ab025e4606ca0aa0e7 100644 (file)
* 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
index 3c01ec33f03127e7080198f0cb7e84536dd0b15b..b0eed9a09e99ba6f5ae898add7c1f47574877bf3 100644 (file)
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';
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)
index 57b4fde4df6463cd9e7e8d227ca081d0161e5427..e1fde48222a581897f72bb28e564c2694a9b9d14 100644 (file)
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';
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;
index 42e249892838a630c9c5734778d3be9e811e50f6..6827e5710c56cb1921c3b0ca31ae442562d0501c 100755 (executable)
#!/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