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


Reply via email to