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
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