Re: BUG #15577: Query returns different results when executed multiple times
Thomas Munro <thomas.munro@enterprisedb.com>
From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Bartosz Polnik <bartoszpolnik@gmail.com>
Cc: David Rowley <david.rowley@2ndquadrant.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2019-01-09T04:01:20Z
Lists: pgsql-bugs
On Wed, Jan 9, 2019 at 2:52 PM Thomas Munro <thomas.munro@enterprisedb.com> wrote: > Now the number of results from the query in the script is not stable, > varying between 235 or 246 results for me. Not sure what's going on > yet. When there are multiple matches found by the Index Scan, sometimes only the first one makes it through to the Nested Loop, in the leader. It's not because of single_match being inappropriately set as I speculated earlier (though that'd behave similarly I guess) but because the quals are somehow broken in between invocations so that ExecScan() filters the rest of the matches out, and then fixed again on the next rescan. This happens whenever the leader takes a break to read tuple from parallel workers in between executing the Nested Loop node, which it often does after reading the first of several tuples resulting from a single rescan. What exactly is being corrupted and how, I don't yet know, and I need to leave this here for today, but that's what I've got so far. -- Thomas Munro http://www.enterprisedb.com
Commits
-
Avoid sharing PARAM_EXEC slots between different levels of NestLoop.
- 2977a312df71 10.7 landed
- 05eb923eae46 11.2 landed
- 1db5667bac63 12.0 landed
- 4f80974990dc 9.6.12 landed