Use wildcard to match parens after CREATE STATISTICS
authorTomas Vondra <tomas.vondra@postgresql.org>
Tue, 27 Nov 2018 23:48:51 +0000 (00:48 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Tue, 27 Nov 2018 23:48:51 +0000 (00:48 +0100)
CREATE STATISTICS completion was checking manually for the start and end
of the parenthesised list of types. That works, but we now have a better
way to do that as commit 121213d9d taught word_matches() to allow '*' in
the middle of an alternative. But it only applied that to tab completion
for EXPLAIN, ANALYZE and VACUUM. Use it for CREATE STATISTICS too.

Author: Dagfinn Ilmari Mannsåker
Discussion: https://www.postgresql.org/message-id/flat/d8jwooziy1s.fsf%40dalvik.ping.uio.no

src/bin/psql/tab-complete.c

index 7993c05283dfd166adbd6685593bb0754b213fea..fa44b2820b52e76819bb6378ae125e4aa42f70e9 100644 (file)
@@ -2390,9 +2390,7 @@ psql_completion(const char *text, int start, int end)
        COMPLETE_WITH("(", "ON");
    else if (Matches("CREATE", "STATISTICS", MatchAny, "("))
        COMPLETE_WITH("ndistinct", "dependencies");
-   else if (HeadMatches("CREATE", "STATISTICS", MatchAny) &&
-            previous_words[0][0] == '(' &&
-            previous_words[0][strlen(previous_words[0]) - 1] == ')')
+   else if (Matches("CREATE", "STATISTICS", MatchAny, "(*)"))
        COMPLETE_WITH("ON");
    else if (HeadMatches("CREATE", "STATISTICS", MatchAny) &&
             TailMatches("FROM"))