Hi,

psql already supports tab-completion for ALTER TABLE ADD with constraints
like CHECK and UNIQUE. However, after commit 14e87ffa5c5 introduced
support for adding NOT NULL constraints using ALTER TABLE ADD,
tab-completion for that case was missing.

The attached patch adds tab-completion support for ALTER TABLE ADD NOT NULL.
Thought?

Regards,

--
Fujii Masao
NTT DATA Japan Corporation
From 792c5c094c04516ded89d4824f02d19e175227e9 Mon Sep 17 00:00:00 2001
From: Fujii Masao <fu...@postgresql.org>
Date: Wed, 4 Jun 2025 22:56:01 +0900
Subject: [PATCH v1] psql: Add tab-completion for ALTER TABLE ADD NOT NULL.

psql already supports tab-completion for ALTER TABLE ADD with
constraints like CHECK and UNIQUE. However, after commit 14e87ffa5c5
introduced support for adding NOT NULL constraints using
ALTER TABLE ADD, tab-completion for that case was missing.

This commit adds tab-completion support for ALTER TABLE ADD NOT NULL.
---
 src/bin/psql/tab-complete.in.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index ec65ab79fec..be4efbbf9ca 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -2726,16 +2726,17 @@ match_previous_words(int pattern_id,
        else if (Matches("ALTER", "TABLE", MatchAny, "ADD"))
        {
                /* make sure to keep this list and the !Matches() below in sync 
*/
-               COMPLETE_WITH("COLUMN", "CONSTRAINT", "CHECK", "UNIQUE", 
"PRIMARY KEY",
-                                         "EXCLUDE", "FOREIGN KEY");
+               COMPLETE_WITH("COLUMN", "CONSTRAINT", "CHECK", "NOT NULL", 
"UNIQUE",
+                                         "PRIMARY KEY", "EXCLUDE", "FOREIGN 
KEY");
        }
        /* ALTER TABLE xxx ADD [COLUMN] yyy */
        else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "COLUMN", MatchAny) 
||
-                        Matches("ALTER", "TABLE", MatchAny, "ADD", 
MatchAnyExcept("COLUMN|CONSTRAINT|CHECK|UNIQUE|PRIMARY|EXCLUDE|FOREIGN")))
+                        Matches("ALTER", "TABLE", MatchAny, "ADD", 
MatchAnyExcept("COLUMN|CONSTRAINT|CHECK|NOT|UNIQUE|PRIMARY|EXCLUDE|FOREIGN")))
                COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes);
        /* ALTER TABLE xxx ADD CONSTRAINT yyy */
        else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "CONSTRAINT", 
MatchAny))
-               COMPLETE_WITH("CHECK", "UNIQUE", "PRIMARY KEY", "EXCLUDE", 
"FOREIGN KEY");
+               COMPLETE_WITH("CHECK", "NOT NULL", "UNIQUE", "PRIMARY KEY", 
"EXCLUDE",
+                                         "FOREIGN KEY");
        /* ALTER TABLE xxx ADD [CONSTRAINT yyy] (PRIMARY KEY|UNIQUE) */
        else if (Matches("ALTER", "TABLE", MatchAny, "ADD", "PRIMARY", "KEY") ||
                         Matches("ALTER", "TABLE", MatchAny, "ADD", "UNIQUE") ||
-- 
2.49.0

Reply via email to