• Dean Rasheed's avatar
    Fix incorrect varlevelsup in security_barrier_replace_vars(). · 41fedc24
    Dean Rasheed authored
    When converting an RTE with securityQuals into a security barrier
    subquery RTE, ensure that the Vars in the new subquery's targetlist
    all have varlevelsup = 0 so that they correctly refer to the
    underlying base relation being wrapped.
    
    The original code was creating new Vars by copying them from existing
    Vars referencing the base relation found elsewhere in the query, but
    failed to account for the fact that such Vars could come from sublink
    subqueries, and hence have varlevelsup > 0. In practice it looks like
    this could only happen with nested security barrier views, where the
    outer view has a WHERE clause containing a correlated subquery, due to
    the order in which the Vars are processed.
    
    Bug: #13988
    Reported-by: Adam Guthrie
    Backpatch-to: 9.4, where updatable SB views were introduced
    41fedc24
prepsecurity.c 14.5 KB