Re: BUG #16293: postgres segfaults and returns SQLSTATE 08006

Daniel WM <dwilches@gmail.com>

From: Daniel WM <dwilches@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2020-03-10T23:04:48Z
Lists: pgsql-bugs
I tried your steps and it didn't crash here either. I'll try to find a
reproducible set of steps.

I isolated the test that was failing and it didn't fail by itself, so there
is some interaction with my other tests. I tried running all tests in my
laptop and yeap, it segfaults here too. So we can add "Ubuntu 18.04.4" with
this Postgres:

```
# select version();
                                                              version

-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 11.7 (Ubuntu 11.7-2.pgdg18.04+1) on x86_64-pc-linux-gnu,
compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
```

--
Daniel Wilches



On Tue, Mar 10, 2020 at 3:19 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:

> PG Bug reporting form <noreply@postgresql.org> writes:
> > I finally found the issue was that one of the tests was trying to insert
> a
> > row on a partitioned table, but there was no partition where to put that
> > row, so it had to go to the default partition. But, the default partition
> > had a constraint that disallowed that row, so the row couldn't be
> inserted
> > and Postgres ended with a segfault.
>
> Hm, works for me:
>
> regression=# create table tt (f1 int, f2 text) partition by list(f1);
> CREATE TABLE
> regression=# create table t1 partition of tt for values in (1);
> CREATE TABLE
> regression=# create table tother partition of tt default;
> CREATE TABLE
> regression=# alter table tother add check (length(f2) > 1);
> ALTER TABLE
> regression=# insert into tt values (1, 'f');
> INSERT 0 1
> regression=# insert into tt values (3, 'f');
> ERROR:  new row for relation "tother" violates check constraint
> "tother_f2_check"
> DETAIL:  Failing row contains (3, f).
> regression=#
>
> Admittedly this is v11 branch tip not exactly 11.7, but I don't see
> anything related-looking in the commit log.  So I think there is some
> contributing factor you didn't mention.  Could you provide a
> self-contained reproduction script?
>
>                         regards, tom lane
>

Commits

  1. Add regression tests for constraint errors in partitioned tables.

  2. Fix potential crash after constraint violation errors in partitioned tables.