Re: BUG #15437: Segfault during insert into declarative partitioned table with a trigger creating partition

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, skaurus@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2018-10-29T06:57:14Z
Lists: pgsql-bugs
On Mon, Oct 29, 2018 at 02:28:53PM +0900, Amit Langote wrote:
> On 2018/10/29 12:31, Michael Paquier wrote:
>> In the case of a partition, the execution state relies on the data
>> inserted, so the restriction sounds fine to me.  If one tries to attach
>> a partition after creating a table you actually get an error:
>> ERROR:  55006: cannot ALTER TABLE "check_not_in_use" because it is being
>> used by active queries in this session
>> CONTEXT:  SQL statement "alter table check_not_in_use attach partition
>> check_not_in_use1 for values IN (1);"
> 
> Yeah, I forgot to include this example in my previous emails.

We may want to add a new test for this one in the same spirit as what
has been sent in the previous patch.

>> Other callers of CheckTableNotInUse() use command tags, which is
>> inconsistent here, still I cannot think of anything better than
>> CREATE TABLE "%s" PARTITION OF
>> or:
>> CREATE TABLE .. PARTITION OF
> 
> Maybe the latter is fine, because we want to highlight the parent table's
> name, not partition's.

Fine by me.
--
Michael

Commits

  1. Block creation of partitions with open references to its parent