• Andres Freund's avatar
    Fix EXPLAIN ANALYZE of hash join when the leader doesn't participate. · 5bcf389e
    Andres Freund authored
    If a hash join appears in a parallel query, there may be no hash table
    available for explain.c to inspect even though a hash table may have
    been built in other processes.  This could happen either because
    parallel_leader_participation was set to off or because the leader
    happened to hit the end of the outer relation immediately (even though
    the complete relation is not empty) and decided not to build the hash
    table.
    
    Commit bf11e7ee introduced a way for workers to exchange
    instrumentation via the DSM segment for Sort nodes even though they
    are not parallel-aware.  This commit does the same for Hash nodes, so
    that explain.c has a way to find instrumentation data from an
    arbitrary participant that actually built the hash table.
    
    Author: Thomas Munro
    Reviewed-By: Andres Freund
    Discussion: https://postgr.es/m/CAEepm%3D3DUQC2-z252N55eOcZBer6DPdM%3DFzrxH9dZc5vYLsjaA%40mail.gmail.com
    5bcf389e
explain.c 99.8 KB