I wrote: > That ... is pretty quirky already. How did it prefer a scan with cost > 19.32 over one with cost 9.39? Seems like we've got a bug here somewhere. > The change in estimated rowcount is rather broken, too.
Ah, false alarm. I can reproduce your results if I stick an ANALYZE between the first and second EXPLAIN. So probably your change in estimated rowcount and hence cost can be explained by an auto-analyze coming along at just the right time. Also, if I fill the geom and location columns with non-null data, the planner stops preferring those indexes. So now I'm guessing that the OP's data *was* mostly null, and the planner preferred the gist indexes because they were smallest, and then tripped over the nonreturnable-column bug. regards, tom lane