Hi, On Sat, Nov 14, 2026 at 10:49 AM Hristos Nenkov <[email protected]> wrote: > I reproduced #19877 and attached a candidate fix for review. > > auto_explain currently checks its backend-global sampling flag again at > ExecutorEnd. A statement executed while a cursor remains open can replace > that flag, so a sampled cursor loses its plan. With pg_stat_statements > requesting instrumentation, the reverse also happens: an unsampled cursor > can be logged after another statement enables sampling. > > The patch records selection and nesting depth in auto_explain's own > QueryDesc extension state, following the existing pg_stat_statements > pattern. ExecutorEnd uses that state rather than the latest global flag. > It also adds cursor tests for explicit CLOSE and implicit COMMIT, with > pg_stat_statements preloaded.
I think the patch approach could be workable - but is this really a problem in practice? We've gotten a lot of bug reports recently that fit the category of "LLM found an edge case and reported it", and when I saw this one first I did not think this was a real world problem. Adding more code carries maintenance cost, and I think it should be justified by an actual end user report running into this problem. Have you seen this problem yourself in practice? Thanks, Lukas -- Lukas Fittl
