diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-05-05 17:06:56 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-05-05 17:06:56 +0000 |
commit | 1899203f3deac740a50ce5be139f8ff375e4ff9e (patch) | |
tree | 0447a28e23316c20949ec6ddc73291898394b78f | |
parent | c7007d1848901265b9c6726e8d00543b20c9214e (diff) |
Fix get_rels_with_domain to not do the wrong thing with views and
composite types that use a domain.
-rw-r--r-- | src/backend/commands/typecmds.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index d081c38b704..d76e048a3e7 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.53 2004/02/12 23:41:02 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.54 2004/05/05 17:06:56 tgl Exp $ * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the @@ -1685,7 +1685,7 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode) Form_pg_attribute pg_att; int ptr; - /* Ignore dependees that aren't user columns of tables */ + /* Ignore dependees that aren't user columns of relations */ /* (we assume system columns are never of domain types) */ if (pg_depend->classid != RelOid_pg_class || pg_depend->objsubid <= 0) @@ -1709,7 +1709,14 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode) Relation rel; /* Acquire requested lock on relation */ - rel = heap_open(pg_depend->objid, lockmode); + rel = relation_open(pg_depend->objid, lockmode); + + /* It could be a view or composite type; if so ignore it */ + if (rel->rd_rel->relkind != RELKIND_RELATION) + { + relation_close(rel, lockmode); + continue; + } /* Build the RelToCheck entry with enough space for all atts */ rtc = (RelToCheck *) palloc(sizeof(RelToCheck)); |