• Tom Lane's avatar
    Fix miserable coding in pg_stat_get_activity(). · ddc88931
    Tom Lane authored
    Commit dd1a3bcc replaced a test on whether a subroutine returned a
    null pointer with a test on whether &pointer->backendStatus was null.
    This accidentally failed to fail, at least on common compilers, because
    backendStatus is the first field in the struct; but it was surely trouble
    waiting to happen.  Commit f91feba8 then messed things up further,
    changing the logic to
    
    	local_beentry = pgstat_fetch_stat_local_beentry(curr_backend);
    	if (!local_beentry)
    		continue;
    	beentry = &local_beentry->backendStatus;
    	if (!beentry)
    	{
    
    where the second "if" is now dead code, so that the intended behavior of
    printing a row with "<backend information not available>" cannot occur.
    
    I suspect this is all moot because pgstat_fetch_stat_local_beentry
    will never actually return null in this function's usage, but it's still
    very poor coding.  Repair back to 9.4 where the original problem was
    introduced.
    ddc88931
pgstatfuncs.c 46.7 KB