On Oct 2, 2013, at 5:07 AM, Merlin Moncure <[email protected]> wrote:
> > Hrm. I get a seq scan for that query:
> >
> > create index on try(upper_inf(irange));
> > explain select * from try where upper_inf(irange);
> > QUERY PLAN
> > -----------------------------------------------------------
> > Seq Scan on try (cost=0.00..1887.00 rows=33333 width=68)
> > Filter: upper_inf(irange)
> >
> > True also if I just select the irange. Is the filter the issue, here?
>
> Turn off seq scan...
That rewards me with a bitmap heap scan:
EXPLAIN select * from try where upper_inf(irange);
QUERY PLAN
--------------------------------------------------------------------------------------
Bitmap Heap Scan on try (cost=935.63..2197.63 rows=33333 width=68)
Filter: upper_inf(irange)
-> Bitmap Index Scan on try_upper_inf_idx (cost=0.00..927.30 rows=50000
width=0)
Index Cond: (upper_inf(irange) = true)
But anyway, I still don’t understand why, if the function used to store the
value is immutable (as upper_inf() is), why Postgres doesn't do an index scan.
Is this something that could be improved in the planner?
Thanks,
David
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers