Re: pgsql: Add parallel-aware hash joins.
Thomas Munro <thomas.munro@enterprisedb.com>
On Fri, Dec 22, 2017 at 1:48 AM, Thomas Munro <thomas.munro@enterprisedb.com> wrote: > I don't think that's quite it, because it should never have set > 'writing' for any batch number >= nbatch. > > It's late here, but I'll take this up tomorrow and either find a fix > or figure out how to avoid antisocial noise levels on the build farm > in the meantime. Not there yet but I learned some things and am still working on it. I spent a lot of time trying to reproduce the assertion failure, and succeeded exactly once. Unfortunately the one time I managed do to that I'd built with clang -O2 and got a core file that I couldn't get much useful info out of, and I've been trying to do it again with -O0 ever since without luck. The time I succeeded, I reproduced it by creating the tables "simple" and "bigger_than_it_looks" from join.sql and then doing this in a loop: set min_parallel_table_scan_size = 0; set parallel_setup_cost = 0; set work_mem = '192kB'; explain analyze select count(*) from simple r join bigger_than_it_looks s using (id); The machine that it happened on is resource constrained, and exhibits another problem: though the above query normally runs in ~20ms, sometimes it takes several seconds and occasionally much longer. That never happens on fast development systems or test servers which run it quickly every time, and it doesn't happen on my 2 core slow system if I have only two workers (or one worker + leader). I dug into that and figured out what was going wrong and wrote that up separately[1], because I think it's an independent bug needing to be fixed, not the root cause here. However, I think it could easily be contributing to the timing required to trigger the bug we're looking for. Andres, your machine francolin crashed -- got a core file? [1] https://www.postgresql.org/message-id/CAEepm%3D0NWKehYw7NDoUSf8juuKOPRnCyY3vuaSvhrEWsOTAa3w%40mail.gmail.com -- Thomas Munro http://www.enterprisedb.com
Commits
-
Update obsolete sentence in README.parallel.
- 28e04155f17c 11.0 cited
-
Rewrite ConditionVariableBroadcast() to avoid live-lock.
- aced5a92bf46 11.0 cited
-
Tweak parallel hash join test case in hopes of improving stability.
- 934c7986f4a0 11.0 landed
-
Rename pg_rewind's copy_file_range() to avoid conflict with new linux syscall.
- 3e68686e2c55 11.0 cited
-
Fix some minor errors in new PHJ code.
- 6fcde2406304 11.0 landed
-
Fix EXPLAIN ANALYZE output for Parallel Hash.
- 93ea78b17c47 11.0 landed
-
Fix rare assertion failure in parallel hash join.
- f83040c62a78 11.0 landed
-
Cancel CV sleep during subtransaction abort.
- f3decdc94ea3 10.2 landed
- 59d1e2b95a82 11.0 landed
-
Add parallel-aware hash joins.
- 1804284042e6 11.0 cited
-
Fix EXPLAIN ANALYZE of hash join when the leader doesn't participate.
- 5bcf389ecfd4 11.0 cited
-
Add some regression tests that exercise hash join code.
- fa330f9adf4e 11.0 cited