TAB completion for ALTER TABLE ... ALTER CONSTRAINT ... ENFORCED
Hi hackers!
While looking at [0]/messages/by-id/CACJufxFY=GkptsiH8X=VdyYAnNE_=u5j6WyDufTste6CuzRvnw@mail.gmail.com I noticed that current psql tab-complete lacks support for
ALTER TABLE ... ALTER CONSTRAINT ... [NOT] ENFORCED and
ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT
patterns.
I do understand that the psql tab complete feature is not designed for
full PostgreSQL's grammar support, yet this particular case is
relatively simple to support. So, should we add this feature?
Please let me know your thoughts.
[0]: /messages/by-id/CACJufxFY=GkptsiH8X=VdyYAnNE_=u5j6WyDufTste6CuzRvnw@mail.gmail.com
--
Best regards,
Kirill Reshke
Attachments:
v1-0001-Add-tab-completion-for-ALTER-TABLE-xxx-ALTER-CONT.patchapplication/octet-stream; name=v1-0001-Add-tab-completion-for-ALTER-TABLE-xxx-ALTER-CONT.patchDownload+10-1
On 11 Aug 2025, at 18:20, Kirill Reshke <reshkekirill@gmail.com> wrote:
Hi hackers!
While looking at [0] I noticed that current psql tab-complete lacks support for
ALTER TABLE ... ALTER CONSTRAINT ... [NOT] ENFORCED and
ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT
patterns.
Hi!
COMPLETE_WITH("ENFORCED", "NOT ENFORCED", "NO INHERIT", "INHERIT");
According to gram.y there might be DEFERRABLE and NOT DEFERRABLE, INITIALLY IMMEDIATE and INITIALLY DEFERRED (NOT VALID is acceptable by rules but not by the action)
Maybe we can add them too? If so, i attached v2 patch with this options added.
--
Best regards,
Roman Khapov
Attachments:
v2-0001-Add-tab-completion-for-ALTER-TABLE-xxx-ALTER-CONT.patchapplication/octet-stream; name=v2-0001-Add-tab-completion-for-ALTER-TABLE-xxx-ALTER-CONT.patch; x-unix-mode=0644Download+11-1
On Mon, 29 Dec 2025 at 20:13, Roman Khapov <rkhapov@yandex-team.ru> wrote:
On 11 Aug 2025, at 18:20, Kirill Reshke <reshkekirill@gmail.com> wrote:
Hi hackers!
While looking at [0] I noticed that current psql tab-complete lacks support for
ALTER TABLE ... ALTER CONSTRAINT ... [NOT] ENFORCED and
ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT
patterns.
Hi!
COMPLETE_WITH("ENFORCED", "NOT ENFORCED", "NO INHERIT", "INHERIT");
According to gram.y there might be DEFERRABLE and NOT DEFERRABLE, INITIALLY IMMEDIATE and INITIALLY DEFERRED (NOT VALID is acceptable by rules but not by the action)
Maybe we can add them too? If so, i attached v2 patch with this options added.
--
Best regards,
Roman Khapov
Thanks. PFA v3 with commit msg polishing, and added support for NOT -
statement patterns.
}
+ /* 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"))
{
--
Best regards,
Kirill Reshke