Re: ERROR: negative bitmapset member not allowed in SELECT

From: Manuel Rigger <rigger(dot)manuel(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
Subject: Re: ERROR: negative bitmapset member not allowed in SELECT
Date: 2019-07-18 12:50:06
Message-ID: CA+u7OA6RsonbT1S06TaO99QDL2H8zS-N2jO=wSuqAOJLX5yQSg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi everyone,

I noticed that this bug was fixed in five recent commits by Tomas.
Thanks a lot, Tomas! This really helps me continue testing Postgres.

The five commits (e.g. [1]) reference a bug report by Andreas who
reported a crash in an email with a timestamp 2019-07-10 20:37:51 [2].
However, it seems that I first reported what seems to be the same
underlying bug, namely in the first email of this thread with a
timestamp 2019-07-10 15:39:22 [3], where the bug results in the error
"negative bitmapset member not allowed". Could it be that (some of)
the five commits should actually have been attributed to me? I hope
this does not appear too pedantic, but I'm developing a new DBMS
testing tool, and it would be important for me to know which bug
findings and associated commits can be attributed to it.

By the way, I also reported two crashing bugs, which seem to expose
the same underlying bug [4], but after Andreas.

Best,
Manuel

[1] https://github.com/postgres/postgres/commit/e8b6ae2130e3a95bb776708a9a7c9cb21fe8ac87
[2] https://www.postgresql.org/message-id/8736jdhbhc.fsf%40ansel.ydns.eu
[3] https://www.postgresql.org/message-id/CA+u7OA65+jEFb_TyV5g+Kq+onyJ2skMOPzgTgFH+qgLwszRqvw@mail.gmail.com
[4] https://www.postgresql.org/message-id/CA+u7OA40Fe9=A3wQ2PHWy8VZg8=GpD6dxQXeXVDx6HAhRSPeRA@mail.gmail.com

On Thu, Jul 11, 2019 at 1:56 PM Manuel Rigger <rigger(dot)manuel(at)gmail(dot)com> wrote:
>
> I found another, maybe simpler statement sequence to reproduce the
> error "ERROR: negative bitmapset member not allowed":
>
> CREATE TABLE t0(c0 BOOLEAN, c1 BOOLEAN, UNIQUE(c1));
> CREATE STATISTICS s1 ON c0, c1 FROM t0;
> INSERT INTO t0(c0) VALUES(TRUE);
> ANALYZE t0;
> SELECT * FROM t0 WHERE (t0.c0 AND t0.c1) >= TRUE; -- ERROR: negative
> bitmapset member not allowed
>
> I assume that the error is caused by the same underlying bug, right?
>
> Best,
> Manuel
>
> On Wed, Jul 10, 2019 at 10:18 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> >
> > Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> writes:
> > > On 2019-Jul-10, Manuel Rigger wrote:
> > >> CREATE TABLE t0(c0 serial, c1 boolean);
> > >> CREATE STATISTICS s1 ON c0, c1 FROM t0;
> > >> INSERT INTO t0(c1) VALUES(TRUE);
> > >> ANALYZE;
> > >> CREATE INDEX i0 ON t0(c0, (t0.c1 AND t0.c1));
> > >> SELECT * FROM (SELECT t0.c0 FROM t0 WHERE (((t0.c1) AND (t0.c1)) OR
> > >> FALSE) IS TRUE) as result WHERE result.c0 IS NULL; -- unexpected:
> > >> ERROR: negative bitmapset member not allowed
> >
> > > Backtrace:
> >
> > I'd say that mcv_get_match_bitmap has a completely misplaced level of
> > faith that any OpExpr it's handed will have a plain Var on one side
> > or the other.
> >
> > Not to mention an untenable assumption that the other side is a plain
> > Const.
> >
> > regards, tom lane

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2019-07-18 13:04:15 BUG #15917: Runtime Partition Pruning does not seem to work in PG 11
Previous Message Daniel Gustafsson 2019-07-18 12:49:10 Re: BUG #15893: pg_dump is not working like as postgres version 10