David Rowley <[email protected]> writes:
> Fix planner's use of Result Cache with unique joins

Coverity is not happy with this:

/srv/coverity/git/pgsql-git/postgresql/src/backend/optimizer/path/joinpath.c: 
532 in get_resultcache_path()
526          * determining if the join is unique.
527          *
528          * XXX this could be enabled if the remaining join quals were made 
part of
529          * the inner scan's filter instead of the join filter.  Maybe it's 
worth
530          * considering doing that?
531          */
>>>     CID 1484914:  Null pointer dereferences  (FORWARD_NULL)
>>>     Dereferencing null pointer "inner_path->param_info".
532         if (extra->inner_unique &&
533             list_length(inner_path->param_info->ppi_clauses) <
534             list_length(extra->restrictlist))
535             return NULL;
536     

This complaint is triggered because elsewhere in the same function,
you're careful to check for inner_path->param_info being null before
trying to dereference it:

    if ((inner_path->param_info == NULL ||
         inner_path->param_info->ppi_clauses == NIL) &&
        innerrel->lateral_vars == NIL)
        return NULL;

Coverity reasons that it's probably a bug that you didn't do the same
here; and I think it's right.

                        regards, tom lane


Reply via email to