On Thu, 27 Feb 2025 at 11:42, vignesh C <vignes...@gmail.com> wrote:
>
> On Thu, 6 Feb 2025 at 16:29, Umar Hayat <postgresql.wiz...@gmail.com> wrote:
>
> This will include "ONLY" also when we display the tables too:
> +       else if (HeadMatches("ANALYZE"))
> +
> COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_analyzables,
> "ONLY");
>
> like below:
> postgres=# analyze only t1
> information_schema.  ONLY                 public.              t1
>
> The same issue exists with vacuum too:
> postgres=# vacuum only t1
> information_schema.  ONLY                 public.              t1

The attached patch has the fixes for the above issue.

Regards,
Vignesh
From 305827648a77048b2f1317d5f9632313d77b8b85 Mon Sep 17 00:00:00 2001
From: Umar Hayat <postgresql.wiz...@gmail.com>
Date: Thu, 6 Feb 2025 19:44:16 +0900
Subject: [PATCH v1] psql: Tab completion for VACUUM and ANALYZE ... ONLY
 option

Improve psql tab completion for VACUUM and ANALYZE with ONLY option introduced in 62ddf7e
---
 src/bin/psql/tab-complete.in.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index 9a4d993e2bc..02d1ab3d9a0 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -3069,12 +3069,12 @@ match_previous_words(int pattern_id,
 		COMPLETE_WITH_QUERY(Query_for_list_of_roles);
 
 /*
- * ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
- * ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]
+ * ANALYZE [ ( option [, ...] ) ] [ [ONLY] table_and_columns [, ...] ]
+ * ANALYZE [ VERBOSE ] [ [ONLY] table_and_columns [, ...] ]
  */
 	else if (Matches("ANALYZE"))
 		COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_analyzables,
-										"VERBOSE");
+										"VERBOSE", "ONLY", "(");
 	else if (HeadMatches("ANALYZE", "(*") &&
 			 !HeadMatches("ANALYZE", "(*)"))
 	{
@@ -5128,30 +5128,35 @@ match_previous_words(int pattern_id,
 		COMPLETE_WITH("OPTIONS");
 
 /*
- * VACUUM [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
- * VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ table_and_columns [, ...] ]
+ * VACUUM [ ( option [, ...] ) ] [ [ONLY] table_and_columns [, ...] ]
+ * VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ [ONLY] table_and_columns [, ...] ]
  */
 	else if (Matches("VACUUM"))
 		COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
 										"FULL",
 										"FREEZE",
 										"ANALYZE",
-										"VERBOSE");
+										"VERBOSE",
+										"ONLY",
+										"(");
 	else if (Matches("VACUUM", "FULL"))
 		COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
 										"FREEZE",
 										"ANALYZE",
-										"VERBOSE");
+										"VERBOSE",
+										"ONLY");
 	else if (Matches("VACUUM", "FREEZE") ||
 			 Matches("VACUUM", "FULL", "FREEZE"))
 		COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
 										"VERBOSE",
-										"ANALYZE");
+										"ANALYZE",
+										"ONLY");
 	else if (Matches("VACUUM", "VERBOSE") ||
 			 Matches("VACUUM", "FULL|FREEZE", "VERBOSE") ||
 			 Matches("VACUUM", "FULL", "FREEZE", "VERBOSE"))
 		COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
-										"ANALYZE");
+										"ANALYZE",
+										"ONLY");
 	else if (HeadMatches("VACUUM", "(*") &&
 			 !HeadMatches("VACUUM", "(*)"))
 	{
-- 
2.43.0

Reply via email to