diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2022-09-30 12:53:31 +0200 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2022-09-30 12:53:31 +0200 |
commit | 69298db8e1a5a7afcfeea32daf71e713a109ef93 (patch) | |
tree | 9677e0a04a0ee49ca64a9e72436b98b6cf34df73 | |
parent | 51fd7cdfd07d49223c82f8bbdf37866c81c62908 (diff) | |
download | postgresql-69298db8e1a5a7afcfeea32daf71e713a109ef93.tar.gz |
Fix tab-completion after commit 790bf615ddba
I (Álvaro) broke tab-completion for GRANT .. ALL TABLES IN SCHEMA while
removing ALL from the publication syntax for schemas in the
aforementioned commit. I also missed to update a bunch of
tab-completion rules for ALTER/CREATE PUBLICATION that match each
individual piece of ALL TABLES IN SCHEMA. Repair those bugs.
While fixing up that commit, update a couple of outdated comments
related to the same change.
Backpatch to 15.
Author: Shi yu <shiy.fnst@fujitsu.com>
Reviewed-by: Peter Smith <smithpb2250@gmail.com>
Discussion: https://postgr.es/m/OSZPR01MB6310FCE8609185A56344EED2FD559@OSZPR01MB6310.jpnprd01.prod.outlook.com
-rw-r--r-- | src/backend/replication/logical/tablesync.c | 4 | ||||
-rw-r--r-- | src/bin/psql/tab-complete.c | 14 | ||||
-rw-r--r-- | src/test/subscription/t/031_column_list.pl | 4 |
3 files changed, 12 insertions, 10 deletions
diff --git a/src/backend/replication/logical/tablesync.c b/src/backend/replication/logical/tablesync.c index 9e52fc401c..b4a7b4b7f6 100644 --- a/src/backend/replication/logical/tablesync.c +++ b/src/backend/replication/logical/tablesync.c @@ -978,8 +978,8 @@ fetch_remote_table_info(char *nspname, char *relname, * * 2) one of the subscribed publications has puballtables set to true * - * 3) one of the subscribed publications is declared as ALL TABLES IN - * SCHEMA that includes this relation + * 3) one of the subscribed publications is declared as TABLES IN SCHEMA + * that includes this relation */ if (walrcv_server_version(LogRepWorkerWalRcvConn) >= 150000) { diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index dbe89d7eb2..71cfe8aec1 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -1848,7 +1848,7 @@ psql_completion(const char *text, int start, int end) /* ALTER PUBLICATION <name> SET */ else if (Matches("ALTER", "PUBLICATION", MatchAny, "SET")) COMPLETE_WITH("(", "TABLES IN SCHEMA", "TABLE"); - else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD|DROP|SET", "ALL", "TABLES", "IN", "SCHEMA")) + else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD|DROP|SET", "TABLES", "IN", "SCHEMA")) COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas " AND nspname NOT LIKE E'pg\\\\_%%'", "CURRENT_SCHEMA"); @@ -2994,9 +2994,11 @@ psql_completion(const char *text, int start, int end) else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR")) COMPLETE_WITH("TABLE", "ALL TABLES", "TABLES IN SCHEMA"); else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL")) - COMPLETE_WITH("TABLES", "TABLES IN SCHEMA"); + COMPLETE_WITH("TABLES"); else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL", "TABLES")) - COMPLETE_WITH("IN SCHEMA", "WITH ("); + COMPLETE_WITH("WITH ("); + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLES")) + COMPLETE_WITH("IN SCHEMA"); else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLE", MatchAny) && !ends_with(prev_wd, ',')) COMPLETE_WITH("WHERE (", "WITH ("); /* Complete "CREATE PUBLICATION <name> FOR TABLE" with "<table>, ..." */ @@ -3017,11 +3019,11 @@ psql_completion(const char *text, int start, int end) /* * Complete "CREATE PUBLICATION <name> FOR TABLES IN SCHEMA <schema>, ..." */ - else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL", "TABLES", "IN", "SCHEMA")) + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLES", "IN", "SCHEMA")) COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas " AND nspname NOT LIKE E'pg\\\\_%%'", "CURRENT_SCHEMA"); - else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL", "TABLES", "IN", "SCHEMA", MatchAny) && (!ends_with(prev_wd, ','))) + else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLES", "IN", "SCHEMA", MatchAny) && (!ends_with(prev_wd, ','))) COMPLETE_WITH("WITH ("); /* Complete "CREATE PUBLICATION <name> [...] WITH" */ else if (HeadMatches("CREATE", "PUBLICATION") && TailMatches("WITH", "(")) @@ -3835,7 +3837,7 @@ psql_completion(const char *text, int start, int end) "ALL PROCEDURES IN SCHEMA", "ALL ROUTINES IN SCHEMA", "ALL SEQUENCES IN SCHEMA", - "TABLES IN SCHEMA", + "ALL TABLES IN SCHEMA", "DATABASE", "DOMAIN", "FOREIGN DATA WRAPPER", diff --git a/src/test/subscription/t/031_column_list.pl b/src/test/subscription/t/031_column_list.pl index 3e4bfc2178..ae022faa78 100644 --- a/src/test/subscription/t/031_column_list.pl +++ b/src/test/subscription/t/031_column_list.pl @@ -899,8 +899,8 @@ is( $node_subscriber->safe_psql('postgres', "SELECT * FROM test_mix_2"), 'all columns should be replicated'); -# TEST: With a table included in the publication which is FOR ALL TABLES -# IN SCHEMA, it means replicate all columns. +# TEST: With a table included in the publication which is FOR TABLES IN +# SCHEMA, it means replicate all columns. $node_subscriber->safe_psql( 'postgres', qq( |