diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 733d7ec372ca7a2da56acae1267d590458062367..d4fbd33594f52d9b50b743af97725bb74e5cf688 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.103 1999/04/14 23:47:19 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.104 1999/05/04 15:47:35 thomas Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -606,10 +606,21 @@ main(int argc, char **argv)
 					int			i;
 
 					tablename = strdup(optarg);
-					for (i = 0; tablename[i]; i++)
-						if (isascii((unsigned char) tablename[i]) &&
-							isupper(tablename[i]))
-							tablename[i] = tolower(tablename[i]);
+					/* quoted string? Then strip quotes and preserve case... */
+					if (tablename[0] == '"')
+					{
+						strcpy(tablename, &tablename[1]);
+						if (*(tablename+strlen(tablename)-1) == '"')
+							*(tablename+strlen(tablename)-1) = '\0';
+					}
+					/* otherwise, convert table name to lowercase... */
+					else
+					{
+						for (i = 0; tablename[i]; i++)
+							if (isascii((unsigned char) tablename[i]) &&
+								isupper(tablename[i]))
+								tablename[i] = tolower(tablename[i]);
+					}
 				}
 				break;
 			case 'v':			/* verbose */