diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 6cd5f3bfea52e0672df5ac7d7b1861b7306b2400..63c9c4303cbd1355d460ff2320ea43e4623fe7bc 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.196 2007/10/29 17:29:59 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.197 2007/12/11 19:01:06 tgl Exp $
 PostgreSQL documentation
 -->
 
@@ -362,24 +362,6 @@ PostgreSQL documentation
       </listitem>
     </varlistentry>
 
-    <varlistentry>
-      <term><option>-u</></term>
-      <listitem>
-      <para>
-      Forces <application>psql</application> to prompt for the user name and
-      password before connecting to the database.
-      </para>
-
-      <para>
-      This option is deprecated, as it is conceptually flawed.
-      (Prompting for a non-default user name and prompting for a
-      password because the server requires it are really two different
-      things.) You are encouraged to look at the <option>-U</option> and
-      <option>-W</option> options instead.
-      </para>
-      </listitem>
-    </varlistentry>
-
     <varlistentry>
       <term><option>-U <replaceable class="parameter">username</replaceable></></term>
       <term><option>--username <replaceable class="parameter">username</replaceable></></term>
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 55a502dd7173074023fc60a61856ef384654d4fb..1342bbaa66b2862d8eaf6c26c0226c5515fe8c1f 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -12,7 +12,7 @@
  *	by PostgreSQL
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.479 2007/11/19 23:48:33 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.480 2007/12/11 19:01:06 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -302,7 +302,7 @@ main(int argc, char **argv)
 		}
 	}
 
-	while ((c = getopt_long(argc, argv, "abcCdDE:f:F:h:in:N:oOp:RsS:t:T:uU:vWxX:Z:",
+	while ((c = getopt_long(argc, argv, "abcCdDE:f:F:h:in:N:oOp:RsS:t:T:U:vWxX:Z:",
 							long_options, &optindex)) != -1)
 	{
 		switch (c)
@@ -395,11 +395,6 @@ main(int argc, char **argv)
 				simple_string_list_append(&table_exclude_patterns, optarg);
 				break;
 
-			case 'u':
-				force_password = true;
-				username = simple_prompt("User name: ", 100, true);
-				break;
-
 			case 'U':
 				username = optarg;
 				break;
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index bd5869a2a6f7d903391dd6078359193b6417bfba..94f407c45b5e7cf62e9d7563dee8c709444401f9 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -34,7 +34,7 @@
  *
  *
  * IDENTIFICATION
- *		$PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.84 2006/10/14 23:07:22 tgl Exp $
+ *		$PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.85 2007/12/11 19:01:06 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -137,7 +137,7 @@ main(int argc, char **argv)
 		}
 	}
 
-	while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:n:Op:P:RsS:t:T:uU:vWxX:1",
+	while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:n:Op:P:RsS:t:T:U:vWxX:1",
 							cmdopts, NULL)) != -1)
 	{
 		switch (c)
@@ -223,11 +223,6 @@ main(int argc, char **argv)
 				opts->tableNames = strdup(optarg);
 				break;
 
-			case 'u':
-				opts->requirePassword = true;
-				opts->username = simple_prompt("User name: ", 100, true);
-				break;
-
 			case 'U':
 				opts->username = optarg;
 				break;
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 19d9d5141e76ac00a7e90780cb9de6778bc5548c..0c496ec86ec924cd670d6dd57e4fb618cb138f51 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2007, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.184 2007/12/09 19:01:40 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.185 2007/12/11 19:01:06 tgl Exp $
  */
 #include "postgres_fe.h"
 #include "command.h"
@@ -1081,8 +1081,9 @@ prompt_for_password(const char *username)
 	{
 		char	   *prompt_text;
 
-		prompt_text = malloc(strlen(username) + 32);
-		sprintf(prompt_text, "Password for user \"%s\": ", username);
+		prompt_text = malloc(strlen(username) + 100);
+		snprintf(prompt_text, strlen(username) + 100,
+				 _("Password for user %s: "), username);
 		result = simple_prompt(prompt_text, 100, false);
 		free(prompt_text);
 	}
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index 5c5ce5487e086e39be7c593fefa332a5f0a8790a..32f8dcd59ca9ba94b3b0e0c04cf4235d32c44149 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2007, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.143 2007/12/09 19:04:47 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.144 2007/12/11 19:01:06 tgl Exp $
  */
 #include "postgres_fe.h"
 
@@ -104,8 +104,6 @@ main(int argc, char *argv[])
 {
 	struct adhoc_opts options;
 	int			successResult;
-
-	char	   *username = NULL;
 	char	   *password = NULL;
 	char	   *password_prompt = NULL;
 	bool		new_pass;
@@ -176,26 +174,14 @@ main(int argc, char *argv[])
 	if (!pset.popt.topt.recordSep)
 		pset.popt.topt.recordSep = pg_strdup(DEFAULT_RECORD_SEP);
 
-	if (options.username)
-	{
-		/*
-		 * The \001 is a hack to support the deprecated -u option which issues
-		 * a username prompt. The recommended option is -U followed by the
-		 * name on the command line.
-		 */
-		if (strcmp(options.username, "\001") == 0)
-			username = simple_prompt("User name: ", 100, true);
-		else
-			username = pg_strdup(options.username);
-	}
-
 	if (options.username == NULL)
 		password_prompt = pg_strdup(_("Password: "));
 	else
 	{
 		password_prompt = malloc(strlen(_("Password for user %s: ")) - 2 +
-								 strlen(username) + 1);
-		sprintf(password_prompt, _("Password for user %s: "), username);
+								 strlen(options.username) + 1);
+		sprintf(password_prompt, _("Password for user %s: "),
+				options.username);
 	}
 
 	if (pset.getPassword)
@@ -208,7 +194,7 @@ main(int argc, char *argv[])
 		pset.db = PQsetdbLogin(options.host, options.port, NULL, NULL,
 					options.action == ACT_LIST_DB && options.dbname == NULL ?
 							   "postgres" : options.dbname,
-							   username, password);
+							   options.username, password);
 
 		if (PQstatus(pset.db) == CONNECTION_BAD &&
 			PQconnectionNeedsPassword(pset.db) &&
@@ -221,7 +207,6 @@ main(int argc, char *argv[])
 		}
 	} while (new_pass);
 
-	free(username);
 	free(password);
 	free(password_prompt);
 
@@ -446,11 +431,10 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
 	extern char *optarg;
 	extern int	optind;
 	int			c;
-	bool		used_old_u_option = false;
 
 	memset(options, 0, sizeof *options);
 
-	while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:uU:v:VWxX?1",
+	while ((c = getopt_long(argc, argv, "aAc:d:eEf:F:h:HlL:no:p:P:qR:sStT:U:v:VWxX?1",
 							long_options, &optindex)) != -1)
 	{
 		switch (c)
@@ -551,13 +535,6 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
 			case 'T':
 				pset.popt.topt.tableAttr = pg_strdup(optarg);
 				break;
-			case 'u':
-				pset.getPassword = true;
-				options->username = "\001";		/* hopefully nobody has that
-												 * username */
-				/* this option is out */
-				used_old_u_option = true;
-				break;
 			case 'U':
 				options->username = optarg;
 				break;
@@ -644,10 +621,6 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
 
 		optind++;
 	}
-
-	if (used_old_u_option && !pset.quiet)
-		fprintf(stderr, _("%s: Warning: The -u option is deprecated. Use -U.\n"), pset.progname);
-
 }