Re: pg_type.relacl

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Roberts, Jon" <Jon(dot)Roberts(at)asurion(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: pg_type.relacl
Date: 2008-03-10 21:08:28
Message-ID: 22945.1205183308@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

"Roberts, Jon" <Jon(dot)Roberts(at)asurion(dot)com> writes:
> If the remote database is on the same server, it works but fails on the
> different server. It looks like the datatype aclitem[] is linked to
> roles which seems weird to me.

Why would you find that weird? aclitem exists to store references to
roles.

> --doesn't work
> select t1.schema_name,
> t1.table_name,
> t1.table_owner,
> t1.relacl
> from dblink('dbname=test_dev_db user=scott password=tiger host=gp',
> 'select n.nspname as schema_name, c.relname as
> table_name, pg_get_userbyid(c.relowner) as table_owner, c.relacl from
> pg_class c join pg_namespace n on n.oid = c.relnamespace'::text)
> t1(schema_name name, table_name name, table_owner name,
> relacl aclitem[]);

> ERROR: role "gpadmin" does not exist
> User gpadmin doesn't exist on my local server.

Hmm, that's a bit annoying --- evidently, dblink is trying to cast the
text string coming from the remote server into a local aclitem[] value,
and aclitemin is (quite properly) barfing. So you need to get the
exposed type of the query result column to not be aclitem.

> It wouldn't let me convert aclitem to varchar.

8.3 would let you do that, but in older releases you're going to need
subterfuge. Try using aclitemout() ... or actually, since relacl is
aclitem[], you probably need array_out().

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Kynn Jones 2008-03-10 21:11:40 On defining Perl functions within PLPERL code
Previous Message Tom Lane 2008-03-10 20:57:25 Re: Reindexdb + relation error