postgresql/contrib/btree_gin/sql
Tom Lane 042c9091f0 Produce more-optimal plans for bitmap scans on boolean columns.
The planner simplifies boolean comparisons such as "x = true" and
"x = false" down to "x" and "NOT x" respectively, to have a canonical
form to ease comparisons.  However, if we want to use an index on x,
the index AM APIs require us to reconstitute the comparison-operator
form of the indexqual.  While that works, in bitmap indexscans the
canonical form of the qual was emitted as a "filter" condition
although it really only needs to be a "recheck" condition, because
create_bitmap_scan_plan didn't recognize the equivalence of that
form with the generated indexqual.  booleq() is pretty cheap so that
likely doesn't make very much difference, but it's unsightly so
let's clean it up.

To fix, add a case to predicate_implied_by() to recognize the
equivalence of such clauses.  This is a relatively low-cost place to
add a check, and perhaps it will have additional use cases in future.

Richard Guo and Tom Lane, per discussion of bug #17618 from Sindy
Senorita.

Discussion: https://postgr.es/m/17618-7a2240bfaa7e84ae@postgresql.org
2022-11-08 10:36:04 -05:00
..
bit.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
bool.sql Produce more-optimal plans for bitmap scans on boolean columns. 2022-11-08 10:36:04 -05:00
bpchar.sql Add support of bool, bpchar, name and uuid to btree_gin 2018-04-05 18:19:10 +03:00
bytea.sql Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04:00
char.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
cidr.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
date.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
enum.sql Add btree_gin support for enum types 2017-03-21 11:04:17 -04:00
float4.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
float8.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
inet.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
install_btree_gin.sql Test all contrib-created operator classes with amvalidate. 2016-11-29 15:05:22 -05:00
int2.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
int4.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
int8.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
interval.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
macaddr.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
money.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
name.sql Add support of bool, bpchar, name and uuid to btree_gin 2018-04-05 18:19:10 +03:00
numeric.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
oid.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
text.sql Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04:00
time.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
timestamp.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
timestamptz.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
timetz.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
uuid.sql Add support of bool, bpchar, name and uuid to btree_gin 2018-04-05 18:19:10 +03:00
varbit.sql Add btree_gin contrib module. 2009-03-25 23:20:01 +00:00
varchar.sql Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04:00