Re: BUG #15577: Query returns different results when executed multiple times

David Rowley <david.rowley@2ndquadrant.com>

From: David Rowley <david.rowley@2ndquadrant.com>
To: Thomas Munro <thomas.munro@enterprisedb.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Andrew Gierth <andrew@tao11.riddles.org.uk>, Bartosz Polnik <bartoszpolnik@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2019-01-10T00:32:30Z
Lists: pgsql-bugs
On Thu, 10 Jan 2019 at 12:28, Thomas Munro
<thomas.munro@enterprisedb.com> wrote:
> Hmm.  Why are those ExecQual() -> false cases not showing up as
> variation in the "Rows Removed by Filter" counter visible in EXPLAIN
> ANALYZE?  Then we might have arrived here a lot faster.
> InstrCountFiltered1(node, 1) is executed, but somehow the count
> doesn't make it into the total shown by EXPLAIN.

Good question.  They are tracked by the instrumentation, it's just
that show_instrumentation_count() divides by nloops so the additional
filtered rows are lost to the rounding.  Removing the / nloops shows
you what you want to see.

-- 
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


Commits

  1. Avoid sharing PARAM_EXEC slots between different levels of NestLoop.