@@ -3077,19 +3077,27 @@ psql_completion(const char *text, int start, int end)
3077
3077
COMPLETE_WITH ("SELECT" ,"INSERT" ,"DELETE" ,"UPDATE" ,"DECLARE" );
3078
3078
3079
3079
/* FETCH && MOVE */
3080
- /* Complete FETCH with one of FORWARD, BACKWARD, RELATIVE */
3080
+
3081
+ /*
3082
+ * Complete FETCH with one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL,
3083
+ * NEXT, PRIOR, FIRST, LAST
3084
+ */
3081
3085
else if (Matches ("FETCH|MOVE" ))
3082
- COMPLETE_WITH ("ABSOLUTE" ,"BACKWARD" ,"FORWARD" ,"RELATIVE" );
3083
- /* Complete FETCH <sth> with one of ALL, NEXT, PRIOR */
3084
- else if (Matches ("FETCH|MOVE" ,MatchAny ))
3085
- COMPLETE_WITH ("ALL" ,"NEXT" ,"PRIOR" );
3086
+ COMPLETE_WITH ("ABSOLUTE" ,"BACKWARD" ,"FORWARD" ,"RELATIVE" ,
3087
+ "ALL" ,"NEXT" ,"PRIOR" ,"FIRST" ,"LAST" );
3088
+
3089
+ /* Complete FETCH BACKWARD or FORWARD with one of ALL, FROM, IN */
3090
+ else if (Matches ("FETCH|MOVE" ,"BACKWARD|FORWARD" ))
3091
+ COMPLETE_WITH ("ALL" ,"FROM" ,"IN" );
3086
3092
3087
3093
/*
3088
- * Complete FETCH <sth1> <sth2 > with "FROM" or "IN". These are equivalent,
3094
+ * Complete FETCH <direction > with "FROM" or "IN". These are equivalent,
3089
3095
* but we may as well tab-complete both: perhaps some users prefer one
3090
3096
* variant or the other.
3091
3097
*/
3092
- else if (Matches ("FETCH|MOVE" ,MatchAny ,MatchAny ))
3098
+ else if (Matches ("FETCH|MOVE" ,"ABSOLUTE|BACKWARD|FORWARD|RELATIVE" ,
3099
+ MatchAnyExcept ("FROM|IN" ))||
3100
+ Matches ("FETCH|MOVE" ,"ALL|NEXT|PRIOR|FIRST|LAST" ))
3093
3101
COMPLETE_WITH ("FROM" ,"IN" );
3094
3102
3095
3103
/* FOREIGN DATA WRAPPER */