Re: 15beta1 tab completion of extension versions - Mailing list pgsql-hackers

From Tom Lane
Subject Re: 15beta1 tab completion of extension versions
Date
Msg-id 1930937.1655614573@sss.pgh.pa.us
Whole thread Raw
In response to Re: 15beta1 tab completion of extension versions  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: 15beta1 tab completion of extension versions
List pgsql-hackers
I wrote:
> Jeff Janes <jeff.janes@gmail.com> writes:
>> Putting pg_catalog.quote_ident back
>> into Query_for_list_of_available_extension_versions* fixes it, but might
>> not be the best way to fix it.

> Yeah, that seems like the appropriate fix.  Done, thanks for the report!

Actually ... after further thought it seems like maybe we should
make this more like other cases rather than less so.  ISTM that much
of the issue here is somebody's decision that "TO version" should be
offered as a completion of "UPDATE", which is unlike the way we do this
anywhere else --- the usual thing is to offer "UPDATE TO" as a single
completion.  So I'm thinking about the attached.

This behaves a little differently from the old code.  In v14,
    alter extension pg_trgm upd<TAB>
gives you
    alter extension pg_trgm update<space>
and another <TAB> produces
    alter extension pg_trgm update TO "1.

With this,
    alter extension pg_trgm upd<TAB>
gives you
    alter extension pg_trgm update to<space>
and another <TAB> produces
    alter extension pg_trgm update to "1.

That seems more consistent with other cases, and it's the same
number of <TAB> presses.

            regards, tom lane

diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 7f0ab5acb9..941daaeb7c 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -1081,19 +1081,10 @@ static const SchemaQuery Query_for_trigger_of_table = {
 "   FROM pg_catalog.pg_available_extensions "\
 "  WHERE name LIKE '%s' AND installed_version IS NULL"

-/* the result of this query is not a raw identifier, so use VERBATIM */
 #define Query_for_list_of_available_extension_versions \
-" SELECT pg_catalog.quote_ident(version) "\
+" SELECT version "\
 "   FROM pg_catalog.pg_available_extension_versions "\
-"  WHERE pg_catalog.quote_ident(version) LIKE '%s'"\
-"    AND name='%s'"
-
-/* the result of this query is not a raw identifier, so use VERBATIM */
-#define Query_for_list_of_available_extension_versions_with_TO \
-" SELECT 'TO ' || pg_catalog.quote_ident(version) "\
-"   FROM pg_catalog.pg_available_extension_versions "\
-"  WHERE ('TO ' || pg_catalog.quote_ident(version)) LIKE '%s'"\
-"    AND name='%s'"
+"  WHERE version LIKE '%s' AND name='%s'"

 #define Query_for_list_of_prepared_statements \
 " SELECT name "\
@@ -1934,20 +1925,17 @@ psql_completion(const char *text, int start, int end)

     /* ALTER EXTENSION <name> */
     else if (Matches("ALTER", "EXTENSION", MatchAny))
-        COMPLETE_WITH("ADD", "DROP", "UPDATE", "SET SCHEMA");
+        COMPLETE_WITH("ADD", "DROP", "UPDATE TO", "SET SCHEMA");

     /* ALTER EXTENSION <name> UPDATE */
     else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE"))
-    {
-        set_completion_reference(prev2_wd);
-        COMPLETE_WITH_QUERY_VERBATIM(Query_for_list_of_available_extension_versions_with_TO);
-    }
+        COMPLETE_WITH("TO");

     /* ALTER EXTENSION <name> UPDATE TO */
     else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE", "TO"))
     {
         set_completion_reference(prev3_wd);
-        COMPLETE_WITH_QUERY_VERBATIM(Query_for_list_of_available_extension_versions);
+        COMPLETE_WITH_QUERY(Query_for_list_of_available_extension_versions);
     }

     /* ALTER FOREIGN */
@@ -2824,7 +2812,7 @@ psql_completion(const char *text, int start, int end)
     else if (Matches("CREATE", "EXTENSION", MatchAny, "VERSION"))
     {
         set_completion_reference(prev2_wd);
-        COMPLETE_WITH_QUERY_VERBATIM(Query_for_list_of_available_extension_versions);
+        COMPLETE_WITH_QUERY(Query_for_list_of_available_extension_versions);
     }

     /* CREATE FOREIGN */

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: 15beta1 tab completion of extension versions
Next
From: Alvaro Herrera
Date:
Subject: Re: libpq: Remove redundant null pointer checks before free()