> "Merlin Moncure" <[EMAIL PROTECTED]> writes:
> > Is this correct?
> 
> Sure, what do you think is wrong with it?  plan_rows is initially a
copy
> of the child node's output-rows estimate, and then it gets modified.
 
OK, just a stab in the dark...not familiar at all with this code (seemed
odd to use value in comparison right before it was assigned).  I am
still getting prepared statements that are flipping to seqscan or bitmap
scan.

The statements are invariably in form of
select a,b,c,d from t
        where a >= $1 and 
                (a >  $1 or  b >= $2) and 
                (a >  $1 or  b >  $2 or  c >= $3) and 
                (a >  $1 or  b >  $2 or  c >  $3 or  d >  $4) 
        order by a, b, c, d limit $5;
                                ^^
If I hardcode $5 to any sub-ridiculous value, I get a proper index plan.
Does your patch assume a limit of 1 or 10% of table rows?

FYI: the planner gets it right about 95% of the time and produces the
best possible plan...an index filtering on a and scanning for b,c,d.

Merlin
 
    

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to