@@ -2582,6 +2582,17 @@ psql_completion(const char *text, int start, int end)
25822582else if (Matches ("CREATE" ,"DATABASE" ,MatchAny ,"TEMPLATE" ))
25832583COMPLETE_WITH_QUERY (Query_for_list_of_template_databases );
25842584
2585+ /* CREATE DOMAIN */
2586+ else if (Matches ("CREATE" ,"DOMAIN" ,MatchAny ))
2587+ COMPLETE_WITH ("AS" );
2588+ else if (Matches ("CREATE" ,"DOMAIN" ,MatchAny ,"AS" ))
2589+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_datatypes ,NULL );
2590+ else if (Matches ("CREATE" ,"DOMAIN" ,MatchAny ,"AS" ,MatchAny ))
2591+ COMPLETE_WITH ("COLLATE" ,"DEFAULT" ,"CONSTRAINT" ,
2592+ "NOT NULL" ,"NULL" ,"CHECK (" );
2593+ else if (Matches ("CREATE" ,"DOMAIN" ,MatchAny ,"COLLATE" ))
2594+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_collations ,NULL );
2595+
25852596/* CREATE EXTENSION */
25862597/* Complete with available extensions rather than installed ones. */
25872598else if (Matches ("CREATE" ,"EXTENSION" ))
@@ -2805,8 +2816,11 @@ psql_completion(const char *text, int start, int end)
28052816/* CREATE SEQUENCE --- is allowed inside CREATE SCHEMA, so use TailMatches */
28062817else if (TailMatches ("CREATE" ,"SEQUENCE" ,MatchAny )||
28072818TailMatches ("CREATE" ,"TEMP|TEMPORARY" ,"SEQUENCE" ,MatchAny ))
2808- COMPLETE_WITH ("INCREMENT BY" ,"MINVALUE" ,"MAXVALUE" ,"NO" ,"CACHE" ,
2809- "CYCLE" ,"OWNED BY" ,"START WITH" );
2819+ COMPLETE_WITH ("AS" ,"INCREMENT BY" ,"MINVALUE" ,"MAXVALUE" ,"NO" ,
2820+ "CACHE" ,"CYCLE" ,"OWNED BY" ,"START WITH" );
2821+ else if (TailMatches ("CREATE" ,"SEQUENCE" ,MatchAny ,"AS" )||
2822+ TailMatches ("CREATE" ,"TEMP|TEMPORARY" ,"SEQUENCE" ,MatchAny ,"AS" ))
2823+ COMPLETE_WITH_CS ("smallint" ,"integer" ,"bigint" );
28102824else if (TailMatches ("CREATE" ,"SEQUENCE" ,MatchAny ,"NO" )||
28112825TailMatches ("CREATE" ,"TEMP|TEMPORARY" ,"SEQUENCE" ,MatchAny ,"NO" ))
28122826COMPLETE_WITH ("MINVALUE" ,"MAXVALUE" ,"CYCLE" );
@@ -2882,6 +2896,23 @@ psql_completion(const char *text, int start, int end)
28822896else if (Matches ("CREATE" ,"TEXT" ,"SEARCH" ,"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE" ,MatchAny ))
28832897COMPLETE_WITH ("(" );
28842898
2899+ /* CREATE TRANSFORM */
2900+ else if (Matches ("CREATE" ,"TRANSFORM" )||
2901+ Matches ("CREATE" ,"OR" ,"REPLACE" ,"TRANSFORM" ))
2902+ COMPLETE_WITH ("FOR" );
2903+ else if (Matches ("CREATE" ,"TRANSFORM" ,"FOR" )||
2904+ Matches ("CREATE" ,"OR" ,"REPLACE" ,"TRANSFORM" ,"FOR" ))
2905+ COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_datatypes ,NULL );
2906+ else if (Matches ("CREATE" ,"TRANSFORM" ,"FOR" ,MatchAny )||
2907+ Matches ("CREATE" ,"OR" ,"REPLACE" ,"TRANSFORM" ,"FOR" ,MatchAny ))
2908+ COMPLETE_WITH ("LANGUAGE" );
2909+ else if (Matches ("CREATE" ,"TRANSFORM" ,"FOR" ,MatchAny ,"LANGUAGE" )||
2910+ Matches ("CREATE" ,"OR" ,"REPLACE" ,"TRANSFORM" ,"FOR" ,MatchAny ,"LANGUAGE" ))
2911+ {
2912+ completion_info_charp = prev2_wd ;
2913+ COMPLETE_WITH_QUERY (Query_for_list_of_languages );
2914+ }
2915+
28852916/* CREATE SUBSCRIPTION */
28862917else if (Matches ("CREATE" ,"SUBSCRIPTION" ,MatchAny ))
28872918COMPLETE_WITH ("CONNECTION" );