Fix psql tab-completion for identifiers containing dollars.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 19 Sep 2023 16:26:29 +0000 (19:26 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Tue, 19 Sep 2023 16:26:29 +0000 (19:26 +0300)
Dollar ($) is a legit character for identifiers, except as the first
character, since commit 1bd22f55cf in version 7.4. Update the
tab-completion code accordingly.

Author: Mikhail Gribkov
Reviewed-by: Vik Fearing
Discussion: https://www.postgresql.org/message-id/CAMEv5_sTAvPvhye%2Bu4jkWDe5UGDiQ1ZkQomnKCboM08zDzOe%3Dg%40mail.gmail.com

src/bin/psql/tab-complete.c

index 779fdc90cbc23bc5e69cb60e2393c9e824c7a082..d30d719a1f8498781dcef6bcd06aa4ff0292d9ce 100644 (file)
@@ -76,7 +76,7 @@
 #endif
 
 /* word break characters */
-#define WORD_BREAKS            "\t\n@$><=;|&{() "
+#define WORD_BREAKS            "\t\n@><=;|&{() "
 
 /*
  * Since readline doesn't let us pass any state through to the tab completion
@@ -6061,7 +6061,7 @@ identifier_needs_quotes(const char *ident)
        /* Check syntax. */
        if (!((ident[0] >= 'a' && ident[0] <= 'z') || ident[0] == '_'))
                return true;
-       if (strspn(ident, "abcdefghijklmnopqrstuvwxyz0123456789_") != strlen(ident))
+       if (strspn(ident, "abcdefghijklmnopqrstuvwxyz0123456789_$") != strlen(ident))
                return true;
 
        /*