@@ -729,6 +729,13 @@ static const SchemaQuery Query_for_list_of_matviews = {
729729" FROM pg_catalog.pg_available_extensions "\
730730" WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s' AND installed_version IS NULL"
731731
732+ /* the silly-looking length condition is just to eat up the current word */
733+ #define Query_for_list_of_available_extension_versions \
734+ " SELECT pg_catalog.quote_ident(version) "\
735+ " FROM pg_catalog.pg_available_extension_versions "\
736+ " WHERE (%d = pg_catalog.length('%s'))"\
737+ " AND pg_catalog.quote_ident(name)='%s'"
738+
732739#define Query_for_list_of_prepared_statements \
733740" SELECT pg_catalog.quote_ident(name) "\
734741" FROM pg_catalog.pg_prepared_statements "\
@@ -2266,10 +2273,18 @@ psql_completion(const char *text, int start, int end)
22662273pg_strcasecmp (prev2_wd ,"EXTENSION" )== 0 )
22672274{
22682275static const char * const list_CREATE_EXTENSION []=
2269- {"WITH SCHEMA" ,"CASCADE" ,NULL };
2276+ {"WITH SCHEMA" ,"CASCADE" ,"VERSION" , NULL };
22702277
22712278COMPLETE_WITH_LIST (list_CREATE_EXTENSION );
22722279}
2280+ /* CREATE EXTENSION <name> VERSION */
2281+ else if (pg_strcasecmp (prev4_wd ,"CREATE" )== 0 &&
2282+ pg_strcasecmp (prev3_wd ,"EXTENSION" )== 0 &&
2283+ pg_strcasecmp (prev_wd ,"VERSION" )== 0 )
2284+ {
2285+ completion_info_charp = prev2_wd ;
2286+ COMPLETE_WITH_QUERY (Query_for_list_of_available_extension_versions );
2287+ }
22732288
22742289/* CREATE FOREIGN */
22752290else if (pg_strcasecmp (prev2_wd ,"CREATE" )== 0 &&