Partial index causing wrong results to be returned on 8.1.3

Started by Greg Sabino Mullaneover 19 years ago3 messagesbugs
Jump to latest
#1Greg Sabino Mullane
greg@turnstep.com

I could not duplicate this on any identical database, but thought I
would report it here, just for completeness. I've tried reindexing,
vacuuming, etc. Explain plans all look normal.

Version is 8.1.3
\d bigtable
...
"bigtable_status_partial" btree (status) WHERE status::text <>
'shipped'::text

greg=> select (select count(*) from bigtable where status  = 'shipped')
            + (select count(*) from bigtable where status <> 'shipped')
       UNION select count(*) from bigtable;
 ?column?
----------
  1185213
  1600569

greg=> drop index bigtable_status_partial;

greg=> select (select count(*) from bigtable where status  = 'shipped')
            + (select count(*) from bigtable where status <> 'shipped')
       UNION select count(*) from bigtable;
 ?column?
----------
  1185213
(1 row)

--
Greg Sabino Mullane greg@turnstep.com
End Point Corporation
PGP Key: 0x14964AC8 200608290003
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Greg Sabino Mullane (#1)
Re: Partial index causing wrong results to be returned on 8.1.3

Greg Sabino Mullane <greg@turnstep.com> writes:

I could not duplicate this on any identical database, but thought I
would report it here, just for completeness. I've tried reindexing,
vacuuming, etc. Explain plans all look normal.

Possibly explained by this 8.1.4 fix?

2006-05-18 14:57 tgl

* src/backend/optimizer/plan/: createplan.c (REL8_1_STABLE),
createplan.c: When a bitmap indexscan is using a partial index, it
is necessary to include the partial index predicate in the scan's
"recheck condition". Otherwise, if the scan becomes lossy for lack
of bitmap memory, we would fail to enforce that returned rows
satisfy the predicate. Noted while studying bug #2441 from Arjen
van der Meijden.

If it gives right answers after you increase work_mem sufficiently,
I'd bet on this one ...

regards, tom lane

#3Greg Sabino Mullane
greg@turnstep.com
In reply to: Tom Lane (#2)
Re: Partial index causing wrong results to be returned on 8.1.3

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

If it gives right answers after you increase work_mem sufficiently,
I'd bet on this one ...

That's a good bet. Changing it from 1024 to 3500 did the trick ... only
one row returned, even when using the index. Thanks very much!

- --
Greg Sabino Mullane greg@turnstep.com
End Point Corporation
PGP Key: 0x14964AC8 200608290100
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8

-----BEGIN PGP SIGNATURE-----

iD8DBQFE88nuvJuQZxSWSsgRAkA8AJ9xKgOcEmK4swC0Dji4WtEs4p+juwCeIHJN
xyNAvlAT5c2O6pWI0C2G03I=
=EvGR
-----END PGP SIGNATURE-----