Tab completion for SKIP_LOCKED option

Started by Masahiko Sawadaalmost 7 years ago3 messages
#1Masahiko Sawada
sawada.mshk@gmail.com
1 attachment(s)

Hi,

I realized that the tab completions for SKIP_LOCKED option of both
VACUUM and ANALYZE are missing. Attached patch adds them.

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Attachments:

skip_locked.patchapplication/octet-stream; name=skip_locked.patchDownload
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 7b7a88f..10ae21c 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -2065,15 +2065,21 @@ psql_completion(const char *text, int start, int end)
 /*
  * ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
  * ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]
- *
- * Currently the only allowed option is VERBOSE, so we can be skimpier on
- * the option processing than VACUUM has to be.
  */
 	else if (Matches("ANALYZE"))
 		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_analyzables,
 								   " UNION SELECT 'VERBOSE'");
-	else if (Matches("ANALYZE", "("))
-		COMPLETE_WITH("VERBOSE)");
+	else if (HeadMatches("ANALYZE", "(*") &&
+			 !HeadMatches("ANALYZE", "(*)"))
+	{
+		/*
+		 * This fires if we're in an unfinished parenthesized option list.
+		 * get_previous_words treats a completed parenthesized option list as
+		 * one word, so the above test is correct.
+		 */
+		if (ends_with(prev_wd, '(') || ends_with(prev_wd, ','))
+			COMPLETE_WITH("VERBOSE", "SKIP_LOCKED");
+	}
 	else if (HeadMatches("ANALYZE") && TailMatches("("))
 		/* "ANALYZE (" should be caught above, so assume we want columns */
 		COMPLETE_WITH_ATTR(prev2_wd, "");
@@ -3423,7 +3429,7 @@ psql_completion(const char *text, int start, int end)
 		 */
 		if (ends_with(prev_wd, '(') || ends_with(prev_wd, ','))
 			COMPLETE_WITH("FULL", "FREEZE", "ANALYZE", "VERBOSE",
-						  "DISABLE_PAGE_SKIPPING");
+						  "DISABLE_PAGE_SKIPPING", "SKIP_LOCKED");
 	}
 	else if (HeadMatches("VACUUM") && TailMatches("("))
 		/* "VACUUM (" should be caught above, so assume we want columns */
#2Michael Paquier
michael@paquier.xyz
In reply to: Masahiko Sawada (#1)
Re: Tab completion for SKIP_LOCKED option

On Wed, Mar 06, 2019 at 11:45:01AM +0900, Masahiko Sawada wrote:

I realized that the tab completions for SKIP_LOCKED option of both
VACUUM and ANALYZE are missing. Attached patch adds them.

Thanks Sawada-san, committed.
--
Michael

#3Masahiko Sawada
sawada.mshk@gmail.com
In reply to: Michael Paquier (#2)
Re: Tab completion for SKIP_LOCKED option

On Wed, Mar 6, 2019 at 2:46 PM Michael Paquier <michael@paquier.xyz> wrote:

On Wed, Mar 06, 2019 at 11:45:01AM +0900, Masahiko Sawada wrote:

I realized that the tab completions for SKIP_LOCKED option of both
VACUUM and ANALYZE are missing. Attached patch adds them.

Thanks Sawada-san, committed.

Thank you!

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center