diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 994c053..a6a4307 100644
*** a/src/bin/psql/tab-complete.c
--- b/src/bin/psql/tab-complete.c
*************** psql_completion(char *text, int start, i
*** 1550,1559 ****
  	{
  		static const char *const list_COMMENT[] =
  		{"CAST", "COLLATION", "CONVERSION", "DATABASE", "FOREIGN DATA WRAPPER",
! 			"SERVER", "FOREIGN TABLE", "INDEX", "LANGUAGE", "RULE", "SCHEMA",
! 			"SEQUENCE", "TABLE", "TYPE", "VIEW", "COLUMN", "AGGREGATE", "FUNCTION",
! 			"OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN", "LARGE OBJECT",
! 		"TABLESPACE", "TEXT SEARCH", "ROLE", NULL};
  
  		COMPLETE_WITH_LIST(list_COMMENT);
  	}
--- 1550,1560 ----
  	{
  		static const char *const list_COMMENT[] =
  		{"CAST", "COLLATION", "CONVERSION", "DATABASE", "FOREIGN DATA WRAPPER",
! 			"SERVER", "USER MAPPING FOR", "FOREIGN TABLE", "INDEX", "LANGUAGE",
! 			"RULE", "SCHEMA", "SEQUENCE", "TABLE", "TYPE", "VIEW", "COLUMN",
! 			"AGGREGATE", "FUNCTION", "OPERATOR", "TRIGGER", "CONSTRAINT",
! 			"DOMAIN", "LARGE OBJECT", "TABLESPACE", "TEXT SEARCH", "ROLE",
! 			NULL};
  
  		COMPLETE_WITH_LIST(list_COMMENT);
  	}
*************** psql_completion(char *text, int start, i
*** 1576,1581 ****
--- 1577,1606 ----
  
  		COMPLETE_WITH_LIST(list_TRANS2);
  	}
+ 	else if (pg_strcasecmp(prev3_wd, "COMMENT") == 0 &&
+ 			 pg_strcasecmp(prev2_wd, "ON") == 0 &&
+ 			 pg_strcasecmp(prev_wd, "USER") == 0)
+ 		COMPLETE_WITH_CONST("MAPPING FOR");
+ 	else if (pg_strcasecmp(prev4_wd, "COMMENT") == 0 &&
+ 			 pg_strcasecmp(prev3_wd, "ON") == 0 &&
+ 			 pg_strcasecmp(prev2_wd, "USER") == 0 &&
+ 			 pg_strcasecmp(prev_wd, "MAPPING") == 0)
+ 		COMPLETE_WITH_CONST("FOR");
+ 	else if (pg_strcasecmp(prev5_wd, "COMMENT") == 0 &&
+ 			 pg_strcasecmp(prev4_wd, "ON") == 0 &&
+ 			 pg_strcasecmp(prev3_wd, "USER") == 0 &&
+ 			 pg_strcasecmp(prev2_wd, "MAPPING") == 0 &&
+ 			 pg_strcasecmp(prev_wd, "FOR") == 0)
+ 		COMPLETE_WITH_QUERY(Query_for_list_of_roles
+ 							" UNION SELECT 'CURRENT_USER'"
+ 							" UNION SELECT 'PUBLIC'"
+ 							" UNION SELECT 'USER'");
+ 	else if (pg_strcasecmp(prev6_wd, "COMMENT") == 0 &&
+ 			 pg_strcasecmp(prev5_wd, "ON") == 0 &&
+ 			 pg_strcasecmp(prev4_wd, "USER") == 0 &&
+ 			 pg_strcasecmp(prev3_wd, "MAPPING") == 0 &&
+ 			 pg_strcasecmp(prev2_wd, "FOR") == 0)
+ 		COMPLETE_WITH_CONST("SERVER");
  	else if ((pg_strcasecmp(prev4_wd, "COMMENT") == 0 &&
  			  pg_strcasecmp(prev3_wd, "ON") == 0) ||
  			 (pg_strcasecmp(prev6_wd, "COMMENT") == 0 &&
