Re: BUG #15437: Segfault during insert into declarative partitionedtable with a trigger creating partition - Mailing list pgsql-bugs

From Amit Langote
Subject Re: BUG #15437: Segfault during insert into declarative partitionedtable with a trigger creating partition
Date
Msg-id bf3d7c7d-8f9d-97de-0ba9-f860b342af7d@lab.ntt.co.jp
Whole thread Raw
In response to Re: BUG #15437: Segfault during insert into declarative partitionedtable with a trigger creating partition  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
List pgsql-bugs
On 2018/10/19 12:45, Amit Langote wrote:
> On 2018/10/19 11:52, Tom Lane wrote:
>> Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> writes:
>>> On 2018/10/18 20:57, PG Bug reporting form wrote:
>>>> I tried to use declarative partitioning and, to avoid creating partitions by
>>>> hand, to make them in ON BEFORE STATEMENT trigger. Trigger executes
>>>> successfully (proved that with RAISE NOTICE), but server crashes.
>>
>>> The problem here is with the server allowing to create a partition of the
>>> table being inserted into, inside the table's BEFORE INSERT trigger.
>>> Generally speaking, the command that's run inside the trigger shouldn't
>>> have been allowed to proceed if it might change the table's properties
>>> that the execution of the ongoing command is depending upon.
>>
>> Check.
>>
>>> I propose the attached to fix that.
>>
>> Hmm ... I wonder if we shouldn't do CheckTableNotInUse for *both* cases,
>> is_partition or no?
> 
> Yeah, that would be better robustness-wise, but I couldn't think of a case
> where not doing CheckTableNotInUse for the !is_partition case would be
> problematic.  Adding an inheritance child doesn't change the relcache
> content of the parent table, but for partitioning it does.  Maybe I'm
> missing something though.
> 
> Attached updated patch adds the check for both cases, although I'm not
> sure what the error message text added by the patch should look like.  Is
> the following OK?
> 
> CheckTableNotInUse(relation, "CREATE TABLE INHERITS / PARTITION OF");

Added this patch to the upcoming CF:

https://commitfest.postgresql.org/20/1836/

Thanks,
Amit



pgsql-bugs by date:

Previous
From: Amit Langote
Date:
Subject: Re: BUG #15448: server process (PID 22656) was terminated byexception 0xC0000005
Next
From: PG Bug reporting form
Date:
Subject: BUG #15453: Installer registers with major version only