*
- * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.64 2007/07/08 17:12:38 joe Exp $
+ * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.65 2007/08/27 01:24:50 tgl Exp $
  * Copyright (c) 2001-2007, PostgreSQL Global Development Group
  * ALL RIGHTS RESERVED;
  *
 #include "nodes/pg_list.h"
 #include "parser/parse_type.h"
 #include "tcop/tcopprot.h"
+#include "utils/acl.h"
 #include "utils/array.h"
 #include "utils/builtins.h"
 #include "utils/dynahash.h"
    char      **result = NULL;
    Relation    rel;
    TupleDesc   tupdesc;
+   AclResult   aclresult;
 
-   /* open relation using relid, get tupdesc */
+   /* open relation using relid, check permissions, get tupdesc */
    rel = relation_open(relid, AccessShareLock);
+
+   aclresult = pg_class_aclcheck(RelationGetRelid(rel), GetUserId(),
+                                 ACL_SELECT);
+   if (aclresult != ACLCHECK_OK)
+       aclcheck_error(aclresult, ACL_KIND_CLASS,
+                      RelationGetRelationName(rel));
+
    tupdesc = rel->rd_att;
 
    /* initialize numatts to 0 in case no primary key exists */