• Tom Lane's avatar
    Improve similar_escape() in two different ways: · 05d24971
    Tom Lane authored
    * Stop escaping ? and {.  As of SQL:2008, SIMILAR TO is defined to have
    POSIX-compatible interpretation of ? as well as {m,n} and related constructs,
    so we should allow these things through to our regex engine.
    
    * Escape ^ and $.  It appears that our regex engine will treat ^^ at the
    beginning of the string the same as ^, and similarly for $$ at the end of
    the string, which meant that SIMILAR TO was effectively ignoring ^ at the
    start of the pattern and $ at the end.  Since these are not supposed to be
    metacharacters, this is a bug.
    
    The second part of this is arguably a back-patchable bug fix, but I'm
    hesitant to do that because it might break applications that are expecting
    something like "col SIMILAR TO '^foo$'" to work like a POSIX pattern.
    Seems safer to only change it at a major version boundary.
    
    Per discussion of an example from Doug Gorley.
    05d24971
func.sgml 476 KB