postgres-github.git / summary / log / commit / refs

commit    cfcd5711160a42249def8f781bae197829cf44c7
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Mon Apr 20 18:48:23 2026 +0000

    Clean up all relid fields of RestrictInfos during join removal.
    
    The original implementation of remove_rel_from_restrictinfo()
    thought it could skate by with removing no-longer-valid relid
    bits from only the clause_relids and required_relids fields.
    This is quite bogus, although somehow we had not run across a
    counterexample before now.  At minimum, the left_relids and
    right_relids fields need to be fixed because they will be
    examined later by clause_sides_match_join().  But it seems
    pretty foolish not to fix all the relid fields, so do that.
    
    This needs to be back-patched as far as v16, because the
    bug report shows a planner failure that does not occur
    before v16.  I'm a little nervous about back-patching,
    because this could cause unexpected plan changes due to
    opening up join possibilities that were rejected before.
    But it's hard to argue that this isn't a regression.  Also,
    the fact that this changes no existing regression test results
    suggests that the scope of changes may be fairly narrow.
    I'll refrain from back-patching further though, since no
    adverse effects have been demonstrated in older branches.
    
    Bug: #19460
    Reported-by: François Jehl <francois.jehl@pigment.com>
    Author: Tom Lane <tgl@sss.pgh.pa.us>
    Reviewed-by: Richard Guo <guofenglinux@gmail.com>
    Discussion: https://postgr.es/m/19460-5625143cef66012f@postgresql.org
    Backpatch-through: 16

[parent: 207cb2abcba0]