@@ -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 ))
0 commit comments