On Mon, Dec 2, 2024 at 3:55 PM Andres Freund <and...@anarazel.de> wrote: > I suspect one contributor to this avoiding attention till now was that the > optimization is fairly narrow: > > /* > * We can potentially skip fetching heap pages if we > do not need > * any columns of the table, either for checking > non-indexable > * quals or for returning data. This test is a bit > simplistic, as > * it checks the stronger condition that there's no > qual or return > * tlist at all. But in most cases it's probably not > worth working > * harder than that. > */ > need_tuples = (node->ss.ps.plan->qual != NIL || > > node->ss.ps.plan->targetlist != NIL); > > Even an entry in the targetlist that that does not depend on the current row > disables the optimization.
Good point. I agree that that factor is likely to have masked the problem over the past 6 years. -- Peter Geoghegan