On Tue, Oct 03, 2023 at 12:44:36PM -0400, Robert Haas wrote: > My first thought was to wonder whether this was even a bug. I > remembered that EXPLAIN treats shared, local, and temp buffers as > three separate categories of things. But it seems that someone decided > to conflate two of them for I/O timing purposes: > > if (has_timing) > { > appendStringInfoString(es->str, " > shared/local"); > > ^^^^ Notice this bit in particular.
I was reviewing the whole, and this is an oversight specific to efb0ef909f60, because we've never incremented the write/read counters for local buffers, even with this commit applied, for both the EXPLAIN reports and anything stored in pg_stat_statement. It seems to me that the origin of the confusion comes down to pg_stat_database where blk_{read|write}_time increments on both local and shared blocks, but on EXPLAIN this stuff only reflects data about shared buffers. So the "shared" part of the string is right, but the "local" part is not in v15 and v16. -- Michael
signature.asc
Description: PGP signature