• Tom Lane's avatar
    Fix incorrect handling of lookahead constraints in pg_regprefix(). · 9f1e642d
    Tom Lane authored
    pg_regprefix was doing nothing with lookahead constraints, which would
    be fine if it were the right kind of nothing, but it isn't: we have to
    terminate our search for a fixed prefix, not just pretend the LACON arc
    isn't there.  Otherwise, if the current state has both a LACON outarc and a
    single plain-color outarc, we'd falsely conclude that the color represents
    an addition to the fixed prefix, and generate an extracted index condition
    that restricts the indexscan too much.  (See added regression test case.)
    
    Terminating the search is conservative: we could traverse the LACON arc
    (thus assuming that the constraint can be satisfied at runtime) and then
    examine the outarcs of the linked-to state.  But that would be a lot more
    work than it seems worth, because writing a LACON followed by a single
    plain character is a pretty silly thing to do.
    
    This makes a difference only in rather contrived cases, but it's a bug,
    so back-patch to all supported branches.
    9f1e642d
regex.out 6.81 KB