• Tom Lane's avatar
    Fix null-pointer-deref crash while doing COPY IN with check constraints. · 08361cea
    Tom Lane authored
    In commit bf7ca158 I introduced an
    assumption that an RTE referenced by a whole-row Var must have a valid eref
    field.  This is false for RTEs constructed by DoCopy, and there are other
    places taking similar shortcuts.  Perhaps we should make all those places
    go through addRangeTableEntryForRelation or its siblings instead of having
    ad-hoc logic, but the most reliable fix seems to be to make the new code in
    ExecEvalWholeRowVar cope if there's no eref.  We can reasonably assume that
    there's no need to insert column aliases if no aliases were provided.
    
    Add a regression test case covering this, and also verifying that a sane
    column name is in fact available in this situation.
    
    Although the known case only crashes in 9.4 and HEAD, it seems prudent to
    back-patch the code change to 9.2, since all the ingredients for a similar
    failure exist in the variant patch applied to 9.3 and 9.2.
    
    Per report from Jean-Pierre Pelletier.
    08361cea
copy2.sql 6.52 KB