diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 139db3b5e36dcccb03d2c70650f1feab15fbd5a2..45899d15d83c4bde02bb5f7a923206410f5c7833 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.32 1998/08/19 02:01:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.33 1998/08/20 22:07:30 momjian Exp $ * * * INTERFACE ROUTINES @@ -1274,10 +1274,10 @@ heap_delete(Relation relation, ItemPointer tid) * ---------------- */ int -heap_replace(Relation relation, ItemPointer otid, HeapTuple tup) +heap_replace(Relation relation, ItemPointer otid, HeapTuple replace_tuple) { ItemId lp; - HeapTuple tp; + HeapTuple old_tuple; Page dp; Buffer buffer; HeapTuple tuple; @@ -1319,8 +1319,8 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup) * ---------------- */ - tp = (HeapTuple) PageGetItem(dp, lp); - Assert(HeapTupleIsValid(tp)); + old_tuple = (HeapTuple) PageGetItem(dp, lp); + Assert(HeapTupleIsValid(old_tuple)); /* ----------------- * the following test should be able to catch all non-functional @@ -1333,7 +1333,7 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup) * ----------------- */ - if (TupleUpdatedByCurXactAndCmd(tp)) + if (TupleUpdatedByCurXactAndCmd(old_tuple)) { elog(NOTICE, "Non-functional update, only first update is performed"); if (IsSystemRelationName(RelationGetRelationName(relation)->data)) @@ -1367,19 +1367,19 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup) } /* XXX order problems if not atomic assignment ??? */ - tup->t_oid = tp->t_oid; - TransactionIdStore(GetCurrentTransactionId(), &(tup->t_xmin)); - tup->t_cmin = GetCurrentCommandId(); - StoreInvalidTransactionId(&(tup->t_xmax)); - tup->t_infomask &= ~(HEAP_XACT_MASK); - tup->t_infomask |= HEAP_XMAX_INVALID; + replace_tuple->t_oid = old_tuple->t_oid; + TransactionIdStore(GetCurrentTransactionId(), &(replace_tuple->t_xmin)); + replace_tuple->t_cmin = GetCurrentCommandId(); + StoreInvalidTransactionId(&(replace_tuple->t_xmax)); + replace_tuple->t_infomask &= ~(HEAP_XACT_MASK); + replace_tuple->t_infomask |= HEAP_XMAX_INVALID; /* ---------------- * insert new item * ---------------- */ - if ((unsigned) DOUBLEALIGN(tup->t_len) <= PageGetFreeSpace((Page) dp)) - RelationPutHeapTuple(relation, BufferGetBlockNumber(buffer), tup); + if ((unsigned) DOUBLEALIGN(replace_tuple->t_len) <= PageGetFreeSpace((Page) dp)) + RelationPutHeapTuple(relation, BufferGetBlockNumber(buffer), replace_tuple); else { /* ---------------- @@ -1387,23 +1387,23 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup) * for a new place to put it. * ---------------- */ - doinsert(relation, tup); + doinsert(relation, replace_tuple); } /* ---------------- * new item in place, now record transaction information * ---------------- */ - TransactionIdStore(GetCurrentTransactionId(), &(tp->t_xmax)); - tp->t_cmax = GetCurrentCommandId(); - tp->t_infomask &= ~(HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID); + TransactionIdStore(GetCurrentTransactionId(), &(old_tuple->t_xmax)); + old_tuple->t_cmax = GetCurrentCommandId(); + old_tuple->t_infomask &= ~(HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID); /* ---------------- * invalidate caches * ---------------- */ SetRefreshWhenInvalidate(ImmediateInvalidation); - RelationInvalidateHeapTuple(relation, tp); + RelationInvalidateHeapTuple(relation, old_tuple); SetRefreshWhenInvalidate((bool) !ImmediateInvalidation); WriteBuffer(buffer); diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 7d70b7a453d17809b5a44c3b6a500a03a2c7a7f4..84f6849357f9df88f776b8975f04581c95ce087e 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.58 1998/08/19 02:01:30 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.59 1998/08/20 22:07:32 momjian Exp $ * * INTERFACE ROUTINES * heap_create() - Create an uncataloged heap relation @@ -1051,18 +1051,20 @@ DeletePgAttributeTuples(Relation rel) */ RelationSetLockForWrite(pg_attribute_desc); - attnum = FirstLowInvalidHeapAttributeNumber + 1; /* cmax */ - - while (HeapTupleIsValid(tup = SearchSysCacheTupleCopy(ATTNUM, - ObjectIdGetDatum(rel->rd_att->attrs[0]->attrelid), - Int16GetDatum(attnum), - 0, 0))) + for (attnum = FirstLowInvalidHeapAttributeNumber + 1; + attnum <= rel->rd_att->natts; + attnum++) { - heap_delete(pg_attribute_desc, &tup->t_ctid); - pfree(tup); - attnum++; + if (HeapTupleIsValid(tup = SearchSysCacheTupleCopy(ATTNUM, + ObjectIdGetDatum(RelationGetRelid(rel)), + Int16GetDatum(attnum), + 0, 0))) + { + heap_delete(pg_attribute_desc, &tup->t_ctid); + pfree(tup); + } } - + /* ---------------- * Release the write lock * ---------------- @@ -1104,8 +1106,10 @@ DeletePgTypeTuple(Relation rel) * to this relation. * ---------------- */ - ScanKeyEntryInitialize(&key, 0, Anum_pg_type_typrelid, F_INT4EQ, - rel->rd_att->attrs[0]->attrelid); + ScanKeyEntryInitialize(&key, 0, + Anum_pg_type_typrelid, + F_OIDEQ, + ObjectIdGetDatum(RelationGetRelid(rel))); pg_type_scan = heap_beginscan(pg_type_desc, 0, @@ -1140,7 +1144,9 @@ DeletePgTypeTuple(Relation rel) pg_attribute_desc = heap_openr(AttributeRelationName); ScanKeyEntryInitialize(&attkey, - 0, Anum_pg_attribute_atttypid, F_INT4EQ, + 0, + Anum_pg_attribute_atttypid, + F_OIDEQ, typoid); pg_attribute_scan = heap_beginscan(pg_attribute_desc, @@ -1151,13 +1157,13 @@ DeletePgTypeTuple(Relation rel) /* ---------------- * try and get a pg_attribute tuple. if we succeed it means - * we cant delete the relation because something depends on + * we can't delete the relation because something depends on * the schema. * ---------------- */ atttup = heap_getnext(pg_attribute_scan, 0); - if (PointerIsValid(atttup)) + if (HeapTupleIsValid(atttup)) { Oid relid = ((AttributeTupleForm) GETSTRUCT(atttup))->attrelid; diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 48a2cada29a306755e0148adc72fc6f42f805817..95442918f69eb14316f2225da32ac07691b18459 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.49 1998/08/20 15:16:54 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.50 1998/08/20 22:07:34 momjian Exp $ * * * INTERFACE ROUTINES @@ -1173,6 +1173,7 @@ index_destroy(Oid indexId) { Relation indexRelation; Relation catalogRelation; + Relation attributeRelation; HeapTuple tuple; int16 attnum; @@ -1200,7 +1201,7 @@ index_destroy(Oid indexId) * fix ATTRIBUTE relation * ---------------- */ - catalogRelation = heap_openr(AttributeRelationName); + attributeRelation = heap_openr(AttributeRelationName); attnum = 1; /* indexes start at 1 */ @@ -1209,29 +1210,28 @@ index_destroy(Oid indexId) Int16GetDatum(attnum), 0, 0))) { - heap_delete(catalogRelation, &tuple->t_ctid); + heap_delete(attributeRelation, &tuple->t_ctid); pfree(tuple); attnum++; } - - heap_close(catalogRelation); + heap_close(attributeRelation); /* ---------------- * fix INDEX relation * ---------------- */ tuple = SearchSysCacheTupleCopy(INDEXRELID, - ObjectIdGetDatum(indexId), - 0, 0, 0); + ObjectIdGetDatum(indexId), + 0, 0, 0); if (!HeapTupleIsValid(tuple)) - { elog(NOTICE, "IndexRelationDestroy: %s's INDEX tuple missing", RelationGetRelationName(indexRelation)); - } - heap_delete(catalogRelation, &tuple->t_ctid); + + Assert(ItemPointerIsValid(&tuple->t_ctid)); + + heap_delete(indexRelation, &tuple->t_ctid); pfree(tuple); - heap_close(catalogRelation); /* * flush cache and physically remove the file diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index 8b50cee327c1e384933ea71a8275ea238cdc5b60..e13200c96b2c180c186c58a1d39846f7d9813564 100644 --- a/src/backend/catalog/indexing.c +++ b/src/backend/catalog/indexing.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.21 1998/08/20 15:16:55 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.22 1998/08/20 22:07:36 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -125,7 +125,7 @@ CatalogIndexInsert(Relation *idescs, InsertIndexResult indexRes; indexDescriptor = RelationGetTupleDescriptor(idescs[i]); - pgIndexTup = SearchSysCacheTuple(INDEXRELID, + pgIndexTup = SearchSysCacheTupleCopy(INDEXRELID, ObjectIdGetDatum(idescs[i]->rd_id), 0, 0, 0); Assert(pgIndexTup); @@ -163,6 +163,7 @@ CatalogIndexInsert(Relation *idescs, &heapTuple->t_ctid, heapRelation); if (indexRes) pfree(indexRes); + pfree(pgIndexTup); } } diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index a23e73893f825dc1aab9ae3fd0a2a17c85250a28..999a398db6c21d9f9ef898eaa54bd228a8301a5a 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.27 1998/08/19 02:01:38 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.28 1998/08/20 22:07:37 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -384,12 +384,12 @@ TypeCreate(char *typeName, values[i++] = (Datum) GetUserId(); /* 2 */ values[i++] = (Datum) internalSize; /* 3 */ values[i++] = (Datum) externalSize; /* 4 */ - values[i++] = (Datum) passedByValue; /* 5 */ + values[i++] = (Datum) passedByValue;/* 5 */ values[i++] = (Datum) typeType; /* 6 */ values[i++] = (Datum) (bool) 1; /* 7 */ values[i++] = (Datum) typDelim; /* 8 */ values[i++] = (Datum) (typeType == 'c' ? relationOid : InvalidOid); /* 9 */ - values[i++] = (Datum) elementObjectId; /* 10 */ + values[i++] = (Datum) elementObjectId;/* 10 */ /* * arguments to type input and output functions must be 0 @@ -431,7 +431,7 @@ TypeCreate(char *typeName, func_error("TypeCreate", procname, 1, argList, NULL); } - values[i++] = (Datum) tup->t_oid; /* 11 - 14 */ + values[i++] = (Datum) tup->t_oid; /* 11 - 14 */ } /* ---------------- diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 6448d2e830c21237e58076668f1653530d838bb6..bd92c1368eff50b28f9226b13cdf761b1e846a27 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.75 1998/08/20 15:16:57 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.76 1998/08/20 22:07:39 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -2217,7 +2217,7 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc) cachetuple = SearchSysCacheTupleCopy(INDEXRELID, ObjectIdGetDatum(RelationGetRelid(Irel[i])), 0, 0, 0); - Assert(tuple); + Assert(cachetuple); /* get the buffer cache tuple */ tuple = heap_fetch(onerel, SnapshotNow, &cachetuple->t_ctid, &buffer); diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 489fc9096a8bb822473b156f6d9dbad7a03b25d1..bbc8e2d94085f8ddf63d3b1a8aad7cfab4997da6 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.35 1998/08/19 02:02:01 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.36 1998/08/20 22:07:41 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -690,7 +690,7 @@ ExecGetIndexKeyInfo(IndexTupleForm indexTuple, * the IndexCatalogInformation function in plancat.c * because IndexCatalogInformation is poorly written. * - * It would be much better the functionality provided + * It would be much better if the functionality provided * by this function and IndexCatalogInformation was * in the form of a small set of orthogonal routines.. * If you are trying to understand this, I suggest you diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index 9fc911a99bcc5b935ca21babc9082379087057dd..cd327632a870ee791dd40d04aae7cd015e77a334 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.13 1998/08/19 14:51:29 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.14 1998/08/20 22:07:43 momjian Exp $ * * Note - this code is real crufty... * @@ -643,6 +643,7 @@ RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple) RelationIdRegisterLocalInvalid); if (RefreshWhenInvalidate) + /* what does this do? bjm 1998/08/20 */ RelationInvalidateCatalogCacheTuple(relation, tuple, (void (*) ()) NULL); diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh index 02077511aa87b1c2271fa77f4e3292c430b43861..8a5c665b939da0b82597ac11f542ec8cddad6459 100644 --- a/src/bin/initdb/initdb.sh +++ b/src/bin/initdb/initdb.sh @@ -26,7 +26,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.49 1998/08/20 15:16:59 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.50 1998/08/20 22:07:46 momjian Exp $ # #------------------------------------------------------------------------- @@ -404,13 +404,13 @@ echo PGSQL_OPT="-o /dev/null -F -Q -D$PGDATA" # If the COPY is first, the VACUUM generates an error, so we vacuum first -echo "vacuuming template1" +echo "Vacuuming template1" echo "vacuum" | postgres $PGSQL_OPT template1 > /dev/null echo "COPY pg_shadow TO '$PGDATA/pg_pwd' USING DELIMITERS '\\t'" | \ postgres $PGSQL_OPT template1 > /dev/null -echo "creating public pg_user view" +echo "Creating public pg_user view" echo "CREATE TABLE xpg_user ( \ usename name, \ usesysid int4, \ @@ -436,7 +436,7 @@ echo "CREATE RULE _RETpg_user AS ON SELECT TO pg_user DO INSTEAD \ echo "REVOKE ALL on pg_shadow FROM public" | \ postgres $PGSQL_OPT template1 > /dev/null -echo "loading pg_description" +echo "Loading pg_description" echo "copy pg_description from '$TEMPLATE_DESCR'" | \ postgres $PGSQL_OPT template1 > /dev/null echo "copy pg_description from '$GLOBAL_DESCR'" | \