diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2002-07-22 20:23:19 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2002-07-22 20:23:19 +0000 |
commit | e9c013f4bddd953df03be74177a37016d1e22b96 (patch) | |
tree | 8aa2299d3c1666eb5647c60e805aad0b6924cd9a /src/backend/commands/functioncmds.c | |
parent | a7ffd69d4cc38ea9ede168719caba354b3af0a99 (diff) | |
download | postgresql-e9c013f4bddd953df03be74177a37016d1e22b96.tar.gz postgresql-e9c013f4bddd953df03be74177a37016d1e22b96.zip |
Add unique index on pg_cast.oid, and document pg_cast table.
Diffstat (limited to 'src/backend/commands/functioncmds.c')
-rw-r--r-- | src/backend/commands/functioncmds.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 8717749b563..a445b7d0e7b 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.11 2002/07/20 05:37:45 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.12 2002/07/22 20:23:19 petere Exp $ * * DESCRIPTION * These routines take the parse tree and pick out the @@ -31,6 +31,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "catalog/catname.h" #include "catalog/dependency.h" @@ -693,7 +694,7 @@ CreateCast(CreateCastStmt *stmt) if (procstruct->proisagg) elog(ERROR, "cast function must not be an aggregate function"); if (procstruct->proretset) - elog(ERROR, "cast function must be not return a set"); + elog(ERROR, "cast function must not return a set"); ReleaseSysCache(tuple); } @@ -727,7 +728,7 @@ CreateCast(CreateCastStmt *stmt) CatalogCloseIndices(Num_pg_cast_indices, idescs); } - myself.classId = get_system_catalog_relid(CastRelationName); + myself.classId = RelationGetRelid(relation); myself.objectId = HeapTupleGetOid(tuple); myself.objectSubId = 0; @@ -819,21 +820,25 @@ DropCast(DropCastStmt *stmt) void DropCastById(Oid castOid) { - Relation relation; + Relation relation, + index; ScanKeyData scankey; - HeapScanDesc scan; + IndexScanDesc scan; HeapTuple tuple; relation = heap_openr(CastRelationName, RowExclusiveLock); + index = index_openr(CastOidIndex); + ScanKeyEntryInitialize(&scankey, 0x0, - ObjectIdAttributeNumber, F_OIDEQ, - ObjectIdGetDatum(castOid)); - scan = heap_beginscan(relation, SnapshotNow, 1, &scankey); - tuple = heap_getnext(scan, ForwardScanDirection); + 1, F_OIDEQ, ObjectIdGetDatum(castOid)); + scan = index_beginscan(relation, index, SnapshotNow, 1, &scankey); + tuple = index_getnext(scan, ForwardScanDirection); if (HeapTupleIsValid(tuple)) simple_heap_delete(relation, &tuple->t_self); else elog(ERROR, "could not find tuple for cast %u", castOid); - heap_endscan(scan); + index_endscan(scan); + + index_close(index); heap_close(relation, RowExclusiveLock); } |