v3-0001-Add-tab-completion-for-ALTER-TABLE-xxx-ALTER-CONT.patch

application/octet-stream

Filename: v3-0001-Add-tab-completion-for-ALTER-TABLE-xxx-ALTER-CONT.patch
Type: application/octet-stream
Part: 0
Message: Re: TAB completion for ALTER TABLE ... ALTER CONSTRAINT ... ENFORCED
From 02cf5d1fd6bed3816249c9c4d967a7c96d6b5b9f Mon Sep 17 00:00:00 2001
From: reshke <reshke@double.cloud>
Date: Mon, 11 Aug 2025 13:14:14 +0000
Subject: [PATCH v3] Add tab completion for ALTER TABLE xxx ALTER CONTRAINT ...
 patterns.

Support for changing contraint deferrability, inheritance and
enforceability

Author:    reshke <reshke@double.cloud>
Co-authored-by: Roman Khapov <r.khapov@ya.ru>
---
 src/bin/psql/tab-complete.in.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index 75a101c6ab5..75cc42bc556 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -2907,6 +2907,22 @@ match_previous_words(int pattern_id,
 		set_completion_reference(prev3_wd);
 		COMPLETE_WITH_SCHEMA_QUERY(Query_for_constraint_of_table);
 	}
+	/* if we have ALTER TABLE <sth> ALTER|DROP|RENAME CONSTRAINT <constraint>, provide possible patterns  */
+	else if (Matches("ALTER", "TABLE", MatchAny, "ALTER|DROP|RENAME", "CONSTRAINT", MatchAny))
+	{
+		COMPLETE_WITH("ENFORCED", "NOT ENFORCED", "NO INHERIT", "INHERIT", "DEFERRABLE",
+					  "NOT DEFERRABLE", "INITIALLY IMMEDIATE", "INITIALLY DEFERRED");
+	}
+	/* if we have ALTER TABLE <sth> ALTER|DROP|RENAME CONSTRAINT <constraint> NO, provide INHERIT  */
+	else if (Matches("ALTER", "TABLE", MatchAny, "ALTER|DROP|RENAME", "CONSTRAINT", MatchAny, "NO"))
+	{
+		COMPLETE_WITH("INHERIT");
+	}
+	/* if we have ALTER TABLE <sth> ALTER|DROP|RENAME CONSTRAINT <constraint> NOT, provide DEFERRABLE or ENFORCED */
+	else if (Matches("ALTER", "TABLE", MatchAny, "ALTER|DROP|RENAME", "CONSTRAINT", MatchAny, "NOT"))
+	{
+		COMPLETE_WITH("DEFERRABLE", "ENFORCED");
+	}
 	/* ALTER TABLE <sth> VALIDATE CONSTRAINT <non-validated constraint> */
 	else if (Matches("ALTER", "TABLE", MatchAny, "VALIDATE", "CONSTRAINT"))
 	{
-- 
2.43.0