Re: Allow relocatable extension to use @extschema@?

2020-01-18 Thread Noah Misch
On Thu, Dec 05, 2019 at 09:52:50AM -0500, Robert Haas wrote:
> On Tue, Dec 3, 2019 at 10:18 AM Tom Lane  wrote:
> > Alexander Korotkov  writes:
> > > But nevertheless should we allow relocatable extension to use
> > > @extschema@.  Any thoughts?
> >
> > No.  The reasoning in the comment still holds good: if you embed
> > @extschema@ in an object's definition, it becomes nonrelocatable.
> 
> That's demonstrably false, and the links included in the OP prove it.

Right.  Or, to add further precision, embedding @extschema@ persistently in
the system catalogs does make the extension nonrelocatable.  The OP examples
merely embed @extschema@ in extension scripts, and they don't impair
relocation.  I'm okay with the proposal, but I still wouldn't mind deprecating
relocatable=true.




Re: Allow relocatable extension to use @extschema@?

2019-12-05 Thread Robert Haas
On Tue, Dec 3, 2019 at 10:18 AM Tom Lane  wrote:
> Alexander Korotkov  writes:
> > But nevertheless should we allow relocatable extension to use
> > @extschema@.  Any thoughts?
>
> No.  The reasoning in the comment still holds good: if you embed
> @extschema@ in an object's definition, it becomes nonrelocatable.

That's demonstrably false, and the links included in the OP prove it.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company




Re: Allow relocatable extension to use @extschema@?

2019-12-03 Thread Alexander Korotkov
On Tue, Dec 3, 2019 at 6:18 PM Tom Lane  wrote:
> Alexander Korotkov  writes:
> > But nevertheless should we allow relocatable extension to use
> > @extschema@.  Any thoughts?
>
> No.  The reasoning in the comment still holds good: if you embed
> @extschema@ in an object's definition, it becomes nonrelocatable.

I see, allowing @extschema@ in non-relocatable extension provides easy
way to shoot yourself in the foot.

However, it might be still useful to be able to distinguish extension
and core object in upgrade script of relocatable extensions.  What
about (optional) way to set search_path to @extschema@, pg_catalog
instead of just @extschema@?

--
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company




Re: Allow relocatable extension to use @extschema@?

2019-12-03 Thread Tom Lane
Alexander Korotkov  writes:
> But nevertheless should we allow relocatable extension to use
> @extschema@.  Any thoughts?

No.  The reasoning in the comment still holds good: if you embed
@extschema@ in an object's definition, it becomes nonrelocatable.

regards, tom lane




Allow relocatable extension to use @extschema@?

2019-12-03 Thread Alexander Korotkov
Hi!

During work on knn-btree patchset we've faced the need to move
functions/operators from contrib to core [1].  In the extension
upgrade script we need to use @extschema@ in order to distinguish
contrib and core objects.  However, it appears to be possible to use
@extschema@ only in non-relocatable extensions.  Comment in
extension.c says: "For a relocatable extension, we needn't do this.
There cannot be any need for @extschema@, else it wouldn't be
relocatable.".  I've explored that we've marked extension as
non-relocatable solely to use @extschema@ in script before [2].

So, it appears that comment in extension.c isn't true.  There is at
least two precedents when relocatable extension needs to use
@extschema@.  We've marked possibly relocatable extension as
non-relocatable once.  And we could do it at the second time.
Extension relocatability doesn't seem to me much value to sacrifice.
But nevertheless should we allow relocatable extension to use
@extschema@.  Any thoughts?

Links.
1. 
https://www.postgresql.org/message-id/CAPpHfdsWsb9T1eHdX%2Br7wnXbGJKQxSffc8gTGp4ZA2ewP49Hog%40mail.gmail.com
2. 
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=de623f33353c96657651f9c3a6c8756616c610e4;hp=0024e348989254d48dc4afe9beab98a6994a791e

--
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company