Tab-complete ALTER PUBLICATION ADD TABLE with list of tables
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 28 Jan 2022 20:08:40 +0000 (17:08 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Fri, 28 Jan 2022 20:08:40 +0000 (17:08 -0300)
This has been posted as part of the column-list feature for logical
replication since [1], but it's not really related to that.

[1] https://postgr.es/m/202112131747.cmlstdewm4kh@alvherre.pgsql

src/bin/psql/tab-complete.c

index 4c62e7b1b41ab9d64d1edbb7a0e3eb83e4760b99..e09221d63dbe3da0580bc9d26bd04f990e22ea54 100644 (file)
@@ -1692,6 +1692,12 @@ psql_completion(const char *text, int start, int end)
    /* ALTER PUBLICATION <name> ADD */
    else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD"))
        COMPLETE_WITH("ALL TABLES IN SCHEMA", "TABLE");
+   else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE") ||
+            (HeadMatches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE") &&
+             ends_with(prev_wd, ',')))
+       COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL);
+   else if (HeadMatches("ALTER", "PUBLICATION", MatchAny, "ADD|SET", "TABLE"))
+       COMPLETE_WITH(",");
    /* ALTER PUBLICATION <name> DROP */
    else if (Matches("ALTER", "PUBLICATION", MatchAny, "DROP"))
        COMPLETE_WITH("ALL TABLES IN SCHEMA", "TABLE");