Joe Van Dyk <joe(at)tanga(dot)com> writes:
> On Fri, Feb 15, 2013 at 7:43 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> Try without the useless "is true" bits.
> Huh, that did do the trick. Why does "is true" affect the plan?
Because "(x = y) IS TRUE" isn't the same as "x = y". (The behavior for
nulls is different.) And the planner only knows about using the latter
type of condition for indexscans. Since you need it to convert the
end_at condition into an indexscan to get a fast plan, you lose.
It's conceivable that we could teach the planner about this case, but
I haven't seen enough people doing that to make me think it's worth the
code space and planner cycles.
regards, tom lane