From 1899203f3deac740a50ce5be139f8ff375e4ff9e Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Wed, 5 May 2004 17:06:56 +0000 Subject: [PATCH] Fix get_rels_with_domain to not do the wrong thing with views and composite types that use a domain. --- src/backend/commands/typecmds.c | 13 ++++++++++--- 1 file 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)); -- GitLab