0001-Tab-completion-for-CREATE-TYPE-v2.patch
application/octet-stream
Filename: 0001-Tab-completion-for-CREATE-TYPE-v2.patch
Type: application/octet-stream
Part: 0
Message:
Re: Tab completion for CREATE TYPE
Patch
Format: format-patch
Series: patch v2-0001
Subject: Tab completion for CREATE TYPE.
| File | + | − |
|---|---|---|
| src/bin/psql/tab-complete.c | 39 | 0 |
From a3cdac64c3defe800f08b65dc20d9e6f29fd5e8a Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Tue, 14 May 2019 17:43:44 +1200
Subject: [PATCH 1/2] Tab completion for CREATE TYPE.
---
src/bin/psql/tab-complete.c | 39 +++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index e4c03de221f..c7e9cbd2a61 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -2663,6 +2663,45 @@ psql_completion(const char *text, int start, int end)
else if (Matches("CREATE", "ROLE|USER|GROUP", MatchAny, "IN"))
COMPLETE_WITH("GROUP", "ROLE");
+/* CREATE TYPE */
+ else if (Matches("CREATE", "TYPE", MatchAny))
+ COMPLETE_WITH("(", "AS");
+ else if (Matches("CREATE", "TYPE", MatchAny, "AS"))
+ COMPLETE_WITH("ENUM", "RANGE", "(");
+ else if (HeadMatches("CREATE", "TYPE", MatchAny, "AS", "("))
+ {
+ if (TailMatches("(|*,", MatchAny))
+ COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
+ else if (TailMatches("(|*,", MatchAny, "!*)"))
+ COMPLETE_WITH("COLLATE", ",", ")");
+ }
+ else if (Matches("CREATE", "TYPE", MatchAny, "AS", "ENUM|RANGE"))
+ COMPLETE_WITH("(");
+ else if (HeadMatches("CREATE", "TYPE", MatchAny, "("))
+ {
+ if (TailMatches("(|*,"))
+ COMPLETE_WITH("INPUT", "OUTPUT", "RECEIVE", "SEND",
+ "TYPMOD_IN", "TYPMOD_OUT", "ANALYZE",
+ "INTERNALLENGTH", "PASSBYVALUE", "ALIGNMENT",
+ "STORAGE", "LIKE", "CATEGORY", "PREFERRED",
+ "DEFAULT", "ELEMENT", "DELIMITER",
+ "COLLATABLE");
+ else if (TailMatches("(*|*,", "!*="))
+ COMPLETE_WITH("=");
+ else if (TailMatches("=", "!*)"))
+ COMPLETE_WITH(",", ")");
+ }
+ else if (HeadMatches("CREATE", "TYPE", MatchAny, "AS", "RANGE", "("))
+ {
+ if (TailMatches("(|*,"))
+ COMPLETE_WITH("SUBTYPE", "SUBTYPE_OPCLASS", "COLLATION",
+ "CANONICAL", "SUBTYPE_DIFF");
+ else if (TailMatches("(*|*,", "!*="))
+ COMPLETE_WITH("=");
+ else if (TailMatches("=", "!*)"))
+ COMPLETE_WITH(",", ")");
+ }
+
/* CREATE VIEW --- is allowed inside CREATE SCHEMA, so use TailMatches */
/* Complete CREATE VIEW <name> with AS */
else if (TailMatches("CREATE", "VIEW", MatchAny))
--
2.21.0