From d0066b9fa4e76a3d83a86701649bf5acfc7c6f69 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Tue, 2 Nov 2004 16:10:05 +0000
Subject: [PATCH] Tab completion for CREATE TABLESPACE arguments.  Patch by
 Joachim Wieland.

---
 src/bin/psql/tab-complete.c | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 6a58692b7be..cd448b9d0f1 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2004, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.116 2004/09/22 04:25:16 neilc Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.117 2004/11/02 16:10:05 petere Exp $
  */
 
 /*----------------------------------------------------------------------
@@ -488,7 +488,8 @@ psql_completion(char *text, int start, int end)
 	char	   *prev_wd,
 			   *prev2_wd,
 			   *prev3_wd,
-			   *prev4_wd;
+			   *prev4_wd,
+			   *prev5_wd;
 
 	static const char *const sql_commands[] = {
 		"ABORT", "ALTER", "ANALYZE", "BEGIN", "CHECKPOINT", "CLOSE", "CLUSTER", "COMMENT",
@@ -637,6 +638,7 @@ psql_completion(char *text, int start, int end)
 	prev2_wd = previous_word(start, 1);
 	prev3_wd = previous_word(start, 2);
 	prev4_wd = previous_word(start, 3);
+	prev5_wd = previous_word(start, 4);
 
 	/* If a backslash command was started, continue */
 	if (text[0] == '\\')
@@ -766,14 +768,14 @@ psql_completion(char *text, int start, int end)
 	{
 			static const char *const list_ALTERSCHEMA2[] =
 			{"MINVALUE", "MAXVALUE", "CYCLE", NULL};
-			
+
 			COMPLETE_WITH_LIST(list_ALTERSCHEMA2);
 	}
 	/* ALTER TRIGGER <name>, add ON */
 	else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
 			 pg_strcasecmp(prev2_wd, "TRIGGER") == 0)
 		COMPLETE_WITH_CONST("ON");
-	
+
 	else if (pg_strcasecmp(prev4_wd, "ALTER") == 0 &&
 			 pg_strcasecmp(prev3_wd, "TRIGGER") == 0)
 	{
@@ -1004,7 +1006,7 @@ psql_completion(char *text, int start, int end)
 		{
 			static const char *const list_FROMTO[] =
 			{"FROM", "TO", NULL};
-			
+
 			COMPLETE_WITH_LIST(list_FROMTO);
 		}
 	/* If we have COPY|BINARY <sth> FROM|TO, complete with filename */
@@ -1112,6 +1114,23 @@ psql_completion(char *text, int start, int end)
 			 pg_strcasecmp(prev_wd, "TEMP") == 0)
 		COMPLETE_WITH_CONST("TABLE");
 
+/* CREATE TABLESPACE */
+	else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 &&
+			 pg_strcasecmp(prev2_wd, "TABLESPACE") == 0)
+	{
+		static const char *const list_CREATETABLESPACE[] =
+		{"OWNER", "LOCATION", NULL};
+
+		COMPLETE_WITH_LIST(list_CREATETABLESPACE);
+	}
+	/* Complete CREATE TABLESPACE name OWNER name with "LOCATION" */
+	else if (pg_strcasecmp(prev5_wd, "CREATE") == 0 &&
+			 pg_strcasecmp(prev4_wd, "TABLESPACE") == 0 &&
+			 pg_strcasecmp(prev2_wd, "OWNER") == 0)
+	{
+		COMPLETE_WITH_CONST("LOCATION");
+	}
+
 /* CREATE TRIGGER */
 	/* is on the agenda . . . */
 
-- 
GitLab