Use wildcard to match parens after CREATE STATISTICS
authorTomas Vondra <[email protected]>
Tue, 27 Nov 2018 23:48:51 +0000 (00:48 +0100)
committerTomas Vondra <[email protected]>
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"))