Re: BUG #15489: Segfault on DELETE

From: Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>
To: Frederico Costa Galvão <frederico(dot)costa(dot)galvao(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>
Cc: kanwei(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org, PG Bug reporting form <noreply(at)postgresql(dot)org>
Subject: Re: BUG #15489: Segfault on DELETE
Date: 2018-11-08 01:33:39
Message-ID: 0ff5c33e-43b9-d3e2-9f74-572b694b0ac1@lab.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Thanks Frederico for your reply.

On 2018/11/08 10:10, Frederico Costa Galvão wrote:
> I stumbled upon this issue yesterday, and trying to reduce and pinpoint
> it, I managed to get to this:
>
> //start
> CREATE TABLE a (
>     id bigint
> );
>
> INSERT INTO a (id) VALUES (1); -- this id's value doesn't matter
>
> ALTER TABLE ONLY a
>     ADD CONSTRAINT a_pkey PRIMARY KEY (id);
>
> CREATE TABLE b (
>     a_id bigint
> );
>
> ALTER TABLE ONLY b
>     ADD CONSTRAINT b_a_id_fkey FOREIGN KEY (a_id) REFERENCES a(id);
>
> ALTER TABLE a ADD x BOOLEAN NOT NULL DEFAULT FALSE; -- or TRUE, doesn't
> matter

There it is. These are similar steps as I'd used to track down a bug
that's now fixed in 11.1.

https://www.postgresql.org/message-id/9cb4aa1c-12ba-59c3-fd75-545fa90fb92f%40lab.ntt.co.jp

The bug had to do with foreign key trigger not getting a proper
representation of the tuple being deleted, considering the newly added column.

> -- VACUUM FULL ANALYZE a; -- uncomment this to fix the bug

Ah, VACUUM FULL will rewrite the tuples such that they're not hit by the
aforementioned bug.

So, if OP can tell that this is what happened in their case too, then 11.1
will have fixed the issue.

Thanks,
Amit

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Thomas Munro 2018-11-08 01:50:35 Re: BUG #15449: file_fdw using program cause exit code error when using LIMIT
Previous Message Tom Lane 2018-11-08 01:28:43 Re: BUG #15489: Segfault on DELETE