• Tom Lane's avatar
    In psql's tab completion, change most TailMatches patterns to Matches. · 9b181b03
    Tom Lane authored
    In the refactoring in commit d37b816d,
    we mostly kept to the original design whereby only the last few words
    on the line were matched to identify a completable pattern.  However,
    after commit d854118c, there's really
    no reason to do it like that: where it's sensible, we can use patterns
    that expect to match the entire input line.  And mostly, it's sensible.
    Matching the entire line greatly reduces the odds of a false match that
    leads to offering irrelevant completions.  Moreover (though I've not
    tried to measure this), it should make tab completion faster since
    many of the patterns will be discarded after a single integer comparison
    that finds that the wrong number of words appear on the line.
    
    There are certain identifiable places where we still need to use
    TailMatches because the statement in question is allowed to appear
    embedded in a larger statement.  These are just a small minority of
    the existing patterns, though, so the benefit of switching where
    possible is large.
    
    It's possible that this patch has removed some within-line matching
    behaviors that are in fact desirable, but we can put those back when
    we get complaints.  Most of the removed behaviors are certainly silly.
    
    Michael Paquier, with some further adjustments by me
    9b181b03
tab-complete.c 131 KB