Re: create partition table caused server crashed with self-referencing foreign key

From: Ahsan Hadi <ahsan(dot)hadi(at)gmail(dot)com>
To: amul sul <sulamul(at)gmail(dot)com>
Cc: David Rowley <dgrowleyml(at)gmail(dot)com>, Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: create partition table caused server crashed with self-referencing foreign key
Date: 2020-04-22 10:44:07
Message-ID: CA+9bhC+PBKYajxROYzWuR45uH3LB=UMe68=Vae5U5NrCriDnZQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Apr 22, 2020 at 2:45 PM amul sul <sulamul(at)gmail(dot)com> wrote:

>
>
> On Wed, Apr 22, 2020 at 2:59 PM amul sul <sulamul(at)gmail(dot)com> wrote:
>
>>
>>
>> On Wed, Apr 22, 2020 at 2:27 PM David Rowley <dgrowleyml(at)gmail(dot)com>
>> wrote:
>>
>>> On Wed, 22 Apr 2020 at 20:11, amul sul <sulamul(at)gmail(dot)com> wrote:
>>> >
>>> > On Wed, Apr 22, 2020 at 1:21 PM Rajkumar Raghuwanshi <
>>> rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com> wrote:
>>> >> #2 0x0000000000acd16a in ExceptionalCondition
>>> (conditionName=0xc32310 "numfks == attmap->maplen", errorType=0xc2ea23
>>> "FailedAssertion", fileName=0xc2f0bf "tablecmds.c", lineNumber=9046) at
>>> assert.c:67
>>> >
>>> >
>>> > Looks like this assertion is incorrect, I guess it should have check
>>> > numfks <= attmap->maplen instead.
>>>
>>> Even that seems like a very strange thing to Assert. Basically it's
>>> saying, make sure the number of columns in the foreign key constraint
>>> is less than or equal to the number of attributes in parentRel.
>>>
>>> It's true we do disallow duplicate column names in the foreign key
>>> constraint (at least since 9da867537), but why do we want an Assert to
>>> say that? I don't see anything about that code that would break if we
>>> did happen to allow duplicate columns in the foreign key. I'd say the
>>> Assert should just be removed completely.
>>>
>>
>> Understood and agree with you.
>>
>> Attached patch removes this assertion and does a slight tweak to
>> regression test
>> to generate case where numfks != attmap->maplen, IMO, we should have this
>> even if there is nothing that checks it. Thoughts?
>>
>
> Kindly ignore the previously attached patch, correct patch attached here.
>

I did a quick test of the fix, the assertion failure is fixed and
regression is not reporting any failures.

>
> Regards,
> Amul
>

--
Highgo Software (Canada/China/Pakistan)
URL : http://www.highgo.ca
ADDR: 10318 WHALLEY BLVD, Surrey, BC
EMAIL: mailto: ahsan(dot)hadi(at)highgo(dot)ca

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Святослав Ермилин 2020-04-22 11:02:00 Extension to monitor errors in log
Previous Message David Rowley 2020-04-22 10:21:21 Re: create partition table caused server crashed with self-referencing foreign key