Movatterモバイル変換


[0]ホーム

URL:


gitprojects /postgresql.git / commitdiff
? search:
summary |shortlog |log |commit | commitdiff |tree
raw |patch | inline |side by side (parent:a236765)
Add tab completion for ALTER INDEX ALTER COLUMN in psql
authorMichael Paquier<michael@paquier.xyz>
Mon, 28 Jan 2019 06:30:14 +0000 (15:30 +0900)
committerMichael Paquier<michael@paquier.xyz>
Mon, 28 Jan 2019 06:30:14 +0000 (15:30 +0900)
The completion here consists of attribute numbers, which is specific to
this grammar.

Author: Tatsuro Yamada
Reviewed-by: Peter Eisentraut
Discussion: https://portgr.es/m/b58a78fa-81ce-186f-f0bc-c1aa93c46cbf@lab.ntt.co.jp

src/bin/psql/tab-complete.cpatch |blob |blame |history

diff --gita/src/bin/psql/tab-complete.cb/src/bin/psql/tab-complete.c
index 292b1f483a9689fff75c0bb1996e3fa120aa03da..3361c8394d8ed68d61b32b0133ced0b32f880965 100644 (file)
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@-583,6+583,17 @@ static const SchemaQuery Query_for_list_of_statistics = {
 "        OR '\"' || relname || '\"'='%s') "\
 "   AND pg_catalog.pg_table_is_visible(c.oid)"
 
+#define Query_for_list_of_attribute_numbers \
+"SELECT attnum "\
+"  FROM pg_catalog.pg_attribute a, pg_catalog.pg_class c "\
+" WHERE c.oid = a.attrelid "\
+"   AND a.attnum > 0 "\
+"   AND NOT a.attisdropped "\
+"   AND substring(attnum::pg_catalog.text,1,%d)='%s' "\
+"   AND (pg_catalog.quote_ident(relname)='%s' "\
+"        OR '\"' || relname || '\"'='%s') "\
+"   AND pg_catalog.pg_table_is_visible(c.oid)"
+
 #define Query_for_list_of_attributes_with_schema \
 "SELECT pg_catalog.quote_ident(attname) "\
 "  FROM pg_catalog.pg_attribute a, pg_catalog.pg_class c, pg_catalog.pg_namespace n "\
@@-1604,6+1615,12 @@ psql_completion(const char *text, int start, int end)
    /* ALTER INDEX <name> ALTER */
    else if (Matches("ALTER", "INDEX", MatchAny, "ALTER"))
        COMPLETE_WITH("COLUMN");
+   /* ALTER INDEX <name> ALTER COLUMN */
+   else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN"))
+   {
+       completion_info_charp = prev3_wd;
+       COMPLETE_WITH_QUERY(Query_for_list_of_attribute_numbers);
+   }
    /* ALTER INDEX <name> ALTER COLUMN <colnum> */
    else if (Matches("ALTER", "INDEX", MatchAny, "ALTER", "COLUMN", MatchAny))
        COMPLETE_WITH("SET STATISTICS");
This is the main PostgreSQL git repository.
RSSAtom

[8]ページ先頭

©2009-2025 Movatter.jp