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

Amit Langote <langote_amit_f8@lab.ntt.co.jp>

From: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
To: Michael Paquier <michael@paquier.xyz>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, skaurus@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2018-10-29T07:32:03Z
Lists: pgsql-bugs

Attachments

On 2018/10/29 15:57, Michael Paquier wrote:
> 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.

OK, added.

>>> 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.

Done that way.  I also switched the check back to just partitioned parent
case.

Thanks for looking at this.

Regards,
Amit

Commits

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