Re: pgsql: Restrict the use of temporary namespace in two-phase transaction

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-01-19T01:12:00Z
Lists: pgsql-hackers
On Sat, Jan 19, 2019 at 09:08:27AM +0900, Michael Paquier wrote:
> On Fri, Jan 18, 2019 at 03:34:30PM -0500, Tom Lane wrote:
>> Seems hard to avoid.  We could conceivably make it return "pg_temp"
>> for the temp schema instead of the schema's actual name, but it's
>> not very hard to think of ways whereby that would make use of the
>> result fail in contexts where it previously worked.
> 
> CREATE EXTENSION is one such case.  It would not work if referring to
> the synonym pg_temp, but it can work if using directly the temporary
> namespace of the session.  So I feel that changing such things is
> prone to break more things than to actually fix things.

As long as I don't forget about it..  current_schema() is classified
as stable, so it's not like we can make it return pg_temp and then the
real temporary schema name within the same transaction...
--
Michael

Commits

  1. Adjust error message

  2. Enforce non-parallel plan when calling current_schema() in newly-added test

  3. Restrict the use of temporary namespace in two-phase transactions