]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix get_rels_with_domain to not do the wrong thing with views and
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 5 May 2004 17:06:56 +0000 (17:06 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 5 May 2004 17:06:56 +0000 (17:06 +0000)
composite types that use a domain.

src/backend/commands/typecmds.c

index d081c38b7042623d290007f02e053a099ae17cbe..d76e048a3e748b4d348e40bbd665a0121546e047 100644 (file)
@@ -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));