@@ -2582,6 +2582,17 @@ psql_completion(const char *text, int start, int end)
2582
2582
else if (Matches ("CREATE" ,"DATABASE" ,MatchAny ,"TEMPLATE" ))
2583
2583
COMPLETE_WITH_QUERY (Query_for_list_of_template_databases );
2584
2584
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
+
2585
2596
/* CREATE EXTENSION */
2586
2597
/* Complete with available extensions rather than installed ones. */
2587
2598
else if (Matches ("CREATE" ,"EXTENSION" ))
@@ -2805,8 +2816,11 @@ psql_completion(const char *text, int start, int end)
2805
2816
/* CREATE SEQUENCE --- is allowed inside CREATE SCHEMA, so use TailMatches */
2806
2817
else if (TailMatches ("CREATE" ,"SEQUENCE" ,MatchAny )||
2807
2818
TailMatches ("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" );
2810
2824
else if (TailMatches ("CREATE" ,"SEQUENCE" ,MatchAny ,"NO" )||
2811
2825
TailMatches ("CREATE" ,"TEMP|TEMPORARY" ,"SEQUENCE" ,MatchAny ,"NO" ))
2812
2826
COMPLETE_WITH ("MINVALUE" ,"MAXVALUE" ,"CYCLE" );
@@ -2882,6 +2896,23 @@ psql_completion(const char *text, int start, int end)
2882
2896
else if (Matches ("CREATE" ,"TEXT" ,"SEARCH" ,"CONFIGURATION|DICTIONARY|PARSER|TEMPLATE" ,MatchAny ))
2883
2897
COMPLETE_WITH ("(" );
2884
2898
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
+
2885
2916
/* CREATE SUBSCRIPTION */
2886
2917
else if (Matches ("CREATE" ,"SUBSCRIPTION" ,MatchAny ))
2887
2918
COMPLETE_WITH ("CONNECTION" );