@@ -2686,6 +2686,45 @@ psql_completion(const char *text, int start, int end)
2686
2686
else if (Matches ("CREATE" ,"ROLE|USER|GROUP" ,MatchAny ,"IN" ))
2687
2687
COMPLETE_WITH ("GROUP" ,"ROLE" );
2688
2688
2689
+ /* CREATE TYPE */
2690
+ else if (Matches ("CREATE" ,"TYPE" ,MatchAny ))
2691
+ COMPLETE_WITH ("(" ,"AS" );
2692
+ else if (Matches ("CREATE" ,"TYPE" ,MatchAny ,"AS" ))
2693
+ COMPLETE_WITH ("ENUM" ,"RANGE" ,"(" );
2694
+ else if (HeadMatches ("CREATE" ,"TYPE" ,MatchAny ,"AS" ,"(" ))
2695
+ {
2696
+ if (TailMatches ("(|*," ,MatchAny ))
2697
+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_datatypes ,NULL );
2698
+ else if (TailMatches ("(|*," ,MatchAny ,MatchAnyExcept ("*)" )))
2699
+ COMPLETE_WITH ("COLLATE" ,"," ,")" );
2700
+ }
2701
+ else if (Matches ("CREATE" ,"TYPE" ,MatchAny ,"AS" ,"ENUM|RANGE" ))
2702
+ COMPLETE_WITH ("(" );
2703
+ else if (HeadMatches ("CREATE" ,"TYPE" ,MatchAny ,"(" ))
2704
+ {
2705
+ if (TailMatches ("(|*," ))
2706
+ COMPLETE_WITH ("INPUT" ,"OUTPUT" ,"RECEIVE" ,"SEND" ,
2707
+ "TYPMOD_IN" ,"TYPMOD_OUT" ,"ANALYZE" ,
2708
+ "INTERNALLENGTH" ,"PASSBYVALUE" ,"ALIGNMENT" ,
2709
+ "STORAGE" ,"LIKE" ,"CATEGORY" ,"PREFERRED" ,
2710
+ "DEFAULT" ,"ELEMENT" ,"DELIMITER" ,
2711
+ "COLLATABLE" );
2712
+ else if (TailMatches ("(*|*," ,MatchAnyExcept ("*=" )))
2713
+ COMPLETE_WITH ("=" );
2714
+ else if (TailMatches ("=" ,MatchAnyExcept ("*)" )))
2715
+ COMPLETE_WITH ("," ,")" );
2716
+ }
2717
+ else if (HeadMatches ("CREATE" ,"TYPE" ,MatchAny ,"AS" ,"RANGE" ,"(" ))
2718
+ {
2719
+ if (TailMatches ("(|*," ))
2720
+ COMPLETE_WITH ("SUBTYPE" ,"SUBTYPE_OPCLASS" ,"COLLATION" ,
2721
+ "CANONICAL" ,"SUBTYPE_DIFF" );
2722
+ else if (TailMatches ("(*|*," ,MatchAnyExcept ("*=" )))
2723
+ COMPLETE_WITH ("=" );
2724
+ else if (TailMatches ("=" ,MatchAnyExcept ("*)" )))
2725
+ COMPLETE_WITH ("," ,")" );
2726
+ }
2727
+
2689
2728
/* CREATE VIEW --- is allowed inside CREATE SCHEMA, so use TailMatches */
2690
2729
/* Complete CREATE VIEW <name> with AS */
2691
2730
else if (TailMatches ("CREATE" ,"VIEW" ,MatchAny ))