Re: Partitioning with temp tables is broken
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: amul sul <sulamul@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>, David Rowley <david.rowley@2ndquadrant.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Robert Haas <robertmhaas@gmail.com>
Date: 2018-06-14T02:09:30Z
Lists: pgsql-hackers
On Wed, Jun 13, 2018 at 10:25:23PM +0530, amul sul wrote: > On Wed, Jun 13, 2018, 8:34 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Even if you want to argue that there's a use case for these situations, >> it seems far too late in the release cycle to be trying to fix all these >> issues. I think we need to forbid the problematic cases for now, and >> leave relaxing the prohibition to be treated as a future new feature. > > +1, forbid the problematic case. +1 on that. And I can see that nobody on this thread has tested with REL_10_STABLE, right? In that case you don't get a crash, but other sessions can see the temporary partition of another's session, say with \d+. So it seems to me that we should forbid the use of temporary relations in a partition tree and back-patch it as well to v10 for consistency. And if trying to insert into the temporary relation you can a nice error: =# insert into listp values (2); ERROR: 0A000: cannot access temporary tables of other sessions LOCATION: ReadBufferExtended, bufmgr.c:657 This is also a bit uninstinctive as I would think of it as an authorized operation, still my guts tell me that the code complications are not really worth the use-cases: =# create temp table listp2 partition of listp for values in (2); ERROR: 42P17: partition "listp2" would overlap partition "listp2" LOCATION: check_new_partition_bound, partition.c:81 -- Michael
Commits
-
Clarify use of temporary tables within partition trees
- 5862174ec78a 10.5 landed
- 1c7c317cd9d1 11.0 landed