From 254637604717fa926a0c655f3ec680f9dd1fbe2e Mon Sep 17 00:00:00 2001
From: reshke kirill <reshke@double.cloud>
Date: Thu, 7 Nov 2024 11:30:18 +0000
Subject: [PATCH v4 2/4] Add CASCADE/RESRTICT to ALTER TYPE patterns

DROP/ADD/RENAME ATTRIBUTE ... will be completed with CASCADE/RESRTICT
where appropriate
---
 src/bin/psql/tab-complete.in.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index a420666542..15f16c994c 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -2992,6 +2992,9 @@ match_previous_words(int pattern_id,
 	/* ALTER TYPE xxx RENAME (ATTRIBUTE|VALUE) yyy */
 	else if (Matches("ALTER", "TYPE", MatchAny, "RENAME", "ATTRIBUTE|VALUE", MatchAny))
 		COMPLETE_WITH("TO");
+	/* ALTER TYPE xxx RENAME (ATTRIBUTE|VALUE) yyy TO zzz */
+	else if (Matches("ALTER", "TYPE", MatchAny, "RENAME", "ATTRIBUTE|VALUE", MatchAny, "TO", MatchAny))
+		COMPLETE_WITH("CASCADE", "RESTRICT");
 
 	/*
 	 * If we have ALTER TYPE <sth> ALTER/DROP/RENAME ATTRIBUTE, provide list
@@ -3002,6 +3005,12 @@ match_previous_words(int pattern_id,
 	/* complete ALTER TYPE ADD ATTRIBUTE <foo> with list of types */
 	else if (Matches("ALTER", "TYPE", MatchAny, "ADD", "ATTRIBUTE", MatchAny))
 		COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes);
+	/* complete ALTER TYPE ADD ATTRIBUTE <foo> <footype> with CASCADE/RESTRICT */
+	else if (Matches("ALTER", "TYPE", MatchAny, "ADD", "ATTRIBUTE", MatchAny, MatchAny))
+		COMPLETE_WITH("CASCADE", "RESTRICT");
+	/* complete ALTER TYPE DROP ATTRIBUTE <foo> with CASCADE/RESTRICT */
+	else if (Matches("ALTER", "TYPE", MatchAny, "DROP", "ATTRIBUTE", MatchAny))
+		COMPLETE_WITH("CASCADE", "RESTRICT");
 	/* ALTER TYPE ALTER ATTRIBUTE <foo> */
 	else if (Matches("ALTER", "TYPE", MatchAny, "ALTER", "ATTRIBUTE", MatchAny))
 		COMPLETE_WITH("TYPE");
-- 
2.34.1

