Re: Can't read oprcode from remote pg_operator

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Thom Brown <thom(at)linux(dot)com>
Cc: pgsql-bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: Can't read oprcode from remote pg_operator
Date: 2017-09-05 11:57:39
Message-ID: 19131.1504612659@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thom Brown <thom(at)linux(dot)com> writes:
> It seems that, if you have a foreign table pointing to pg_operator in
> another cluster, you cannot return the oprcode column for certain
> rows. I'm getting this on 10 beta 3.

I don't think that has anything to do with remoteness or not, nor which
PG version you try. The regproc representation is inherently ambiguous,
so even locally you will get:

regression=# select oprcode::text::regproc from pg_operator;
ERROR: more than one function named "pg_catalog.tsquery_phrase"

Likewise for, eg, pg_aggregate.aggfnoid.

> I have imported pg_operator using IMPORT FOREIGN SCHEMA,

If that seemed like a widely useful thing to do, I might be more
worried. But if you want to do this, I'd suggest making a view
over pg_operator that casts the regproc columns to regprocedure,
and then importing that. Even then, it will fail if the remote
catalog contains references to any functions that don't exist
locally.

We've talked in the past about deprecating regproc/regoper and
converting those columns to the fully qualified types; that
would help the ambiguity part of your issue, though not the
nonexistence part. But that's blocked on teaching genbki.pl
to do the equivalent of regprocedurein and fill those columns
with numeric OIDs in the BKI file.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message dmitriy.davydov 2017-09-05 12:01:06 BUG #14797: It's not safe to use MD5
Previous Message Masahiko Sawada 2017-09-05 11:44:30 Re: BUG #14788: `pg_restore -c` won't restore schema access privileges.