diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 2eef75ca5e969479b3b166a6c1d46d5d2cd8ee32..65047f9c8ea14fa5aeea8437ae8b406b890a26b8 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.60 1997/11/07 20:51:47 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.61 1997/11/10 05:10:21 momjian Exp $
  *
  * NOTES
  *
@@ -131,8 +131,8 @@ static char *progname = (char *) NULL;
  */
 static char Execfile[MAXPATHLEN] = "";
 
-static int ServerSock_INET = INVALID_SOCK;	/* stream socket server */
-static int ServerSock_UNIX = INVALID_SOCK;	/* stream socket server */
+static int	ServerSock_INET = INVALID_SOCK;		/* stream socket server */
+static int	ServerSock_UNIX = INVALID_SOCK;		/* stream socket server */
 
 /*
  * Set by the -o option
@@ -149,8 +149,8 @@ static char ExtraOptions[ARGV_SIZE] = "";
 static int	Reinit = 1;
 static int	SendStop = 0;
 
-static int      NetServer = 0; /* if not zero, postmaster listen for
-				  non-local connections */
+static int	NetServer = 0;		/* if not zero, postmaster listen for
+								 * non-local connections */
 static int	MultiplexedBackends = 0;
 static int	MultiplexedBackendPort;
 
@@ -318,8 +318,8 @@ PostmasterMain(int argc, char *argv[])
 				else
 					DebugLvl = 1;
 				break;
-		        case 'i':
-			        NetServer = 1;
+			case 'i':
+				NetServer = 1;
 				break;
 			case 'm':
 				MultiplexedBackends = 1;
@@ -394,15 +394,15 @@ PostmasterMain(int argc, char *argv[])
 	}
 
 	if (NetServer)
-	  {
-	    status = StreamServerPort(hostName, PostPortName, &ServerSock_INET);
-	    if (status != STATUS_OK)
-	      {
-		fprintf(stderr, "%s: cannot create INET stream port\n",
-			progname);
-		exit(1);
-	      }
-	  }
+	{
+		status = StreamServerPort(hostName, PostPortName, &ServerSock_INET);
+		if (status != STATUS_OK)
+		{
+			fprintf(stderr, "%s: cannot create INET stream port\n",
+					progname);
+			exit(1);
+		}
+	}
 	status = StreamServerPort(NULL, PostPortName, &ServerSock_UNIX);
 	if (status != STATUS_OK)
 	{
@@ -487,11 +487,13 @@ usage(const char *progname)
 static int
 ServerLoop(void)
 {
-	fd_set		rmask, basemask;
+	fd_set		rmask,
+				basemask;
 	int			nSockets,
 				nSelected,
 				status,
-				oldFd, newFd;
+				oldFd,
+				newFd;
 	Dlelem	   *next,
 			   *curr;
 
@@ -511,11 +513,11 @@ ServerLoop(void)
 	FD_SET(ServerSock_UNIX, &basemask);
 	nSockets = ServerSock_UNIX;
 	if (ServerSock_INET != INVALID_SOCK)
-	  {
-	    FD_SET(ServerSock_INET, &basemask);
-	    if (ServerSock_INET > ServerSock_UNIX) 
-	      nSockets = ServerSock_INET;
-	  }
+	{
+		FD_SET(ServerSock_INET, &basemask);
+		if (ServerSock_INET > ServerSock_UNIX)
+			nSockets = ServerSock_INET;
+	}
 	nSockets++;
 
 #ifdef HAVE_SIGPROCMASK
@@ -563,14 +565,14 @@ ServerLoop(void)
 
 		/* new connection pending on our well-known port's socket */
 		oldFd = -1;
-		if (FD_ISSET(ServerSock_UNIX, &rmask)) 
-		  oldFd = ServerSock_UNIX;
-		else if (ServerSock_INET != INVALID_SOCK && 
-			 FD_ISSET(ServerSock_INET, &rmask))
-		  oldFd = ServerSock_INET;
+		if (FD_ISSET(ServerSock_UNIX, &rmask))
+			oldFd = ServerSock_UNIX;
+		else if (ServerSock_INET != INVALID_SOCK &&
+				 FD_ISSET(ServerSock_INET, &rmask))
+			oldFd = ServerSock_INET;
 		if (oldFd >= 0)
 		{
-		  
+
 			/*
 			 * connect and make an addition to PortList.  If the
 			 * connection dies and we notice it, just forget about the
@@ -587,9 +589,9 @@ ServerLoop(void)
 							progname, newFd);
 			}
 			else if (DebugLvl)
-			  fprintf(stderr, 
-				  "%s: ServerLoop: connect failed: (%d) %s\n",
-				  progname, errno, strerror(errno));
+				fprintf(stderr,
+						"%s: ServerLoop: connect failed: (%d) %s\n",
+						progname, errno, strerror(errno));
 			--nSelected;
 			FD_CLR(oldFd, &rmask);
 		}
@@ -823,7 +825,7 @@ ConnStartup(Port *port, int *status,
 static void
 send_error_reply(Port *port, const char *errormsg)
 {
-	int			rc;	/* return code from write */
+	int			rc;				/* return code from write */
 	char	   *reply;
 
 	/*
@@ -1299,8 +1301,10 @@ ExitPostmaster(int status)
 	 * Not sure of the semantics here.	When the Postmaster dies, should
 	 * the backends all be killed? probably not.
 	 */
-	if (ServerSock_INET != INVALID_SOCK) close(ServerSock_INET);
-	if (ServerSock_UNIX != INVALID_SOCK) close(ServerSock_UNIX);
+	if (ServerSock_INET != INVALID_SOCK)
+		close(ServerSock_INET);
+	if (ServerSock_UNIX != INVALID_SOCK)
+		close(ServerSock_UNIX);
 	exitpg(status);
 }
 
@@ -1315,10 +1319,9 @@ dumpstatus(SIGNAL_ARGS)
 
 		fprintf(stderr, "%s: dumpstatus:\n", progname);
 		fprintf(stderr, "\tsock %d: nBytes=%d, laddr=0x%lx, raddr=0x%lx\n",
-			port->sock, port->nBytes,
-			(long int) port->laddr.in.sin_addr.s_addr,
-			(long int) port->raddr.in.sin_addr.s_addr);
+				port->sock, port->nBytes,
+				(long int) port->laddr.in.sin_addr.s_addr,
+				(long int) port->raddr.in.sin_addr.s_addr);
 		curr = DLGetSucc(curr);
 	}
 }
-
diff --git a/src/include/c.h b/src/include/c.h
index 2aeb743f9a0706ae68c5da553f7344678c4a96cb..a3c85f584cc7552c77b26a08aba68aa27eea5be1 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: c.h,v 1.26 1997/10/30 23:36:56 momjian Exp $
+ * $Id: c.h,v 1.27 1997/11/10 05:10:34 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -697,8 +697,8 @@ typedef struct Exception
 #define INT_ALIGN_MASK (sizeof(int32) - 1)
 
 /* This function gets call too often, so we inline it if we can */
-#define MemSet(start, val, len)	do \
-								{   /* are we aligned for int32? */ \
+#define MemSet(start, val, len) do \
+								{	/* are we aligned for int32? */ \
 									/* We have to cast the pointer to int \
 									   so we can do the AND */ \
 									if (((int)(start) & INT_ALIGN_MASK) == 0 && \
@@ -707,7 +707,7 @@ typedef struct Exception
 									/* \
 									 * We got this number by testing this \
 									 * against the stock memset() on \
-									 * bsd/os 3.0.  Larger values were \
+									 * bsd/os 3.0.	Larger values were \
 									 * slower. \
 									 */ \
 										(len) <= 64) \
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index f5ace69dc07a032c612fbf5644e89db399dd522b..e18702282818cc5ba8485444a892bbc08fe44821 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.43 1997/11/07 20:52:15 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.44 1997/11/10 05:10:45 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -340,8 +340,9 @@ PQsetdb(const char *pghost, const char *pgport, const char *pgoptions, const cha
 
 		if (!pghost || pghost[0] == '\0')
 		{
-		  conn->pghost = NULL;
-		  if (tmp = getenv("PGHOST")) conn->pghost = strdup(tmp);
+			conn->pghost = NULL;
+			if (tmp = getenv("PGHOST"))
+				conn->pghost = strdup(tmp);
 		}
 		else
 			conn->pghost = strdup(pghost);
@@ -413,14 +414,23 @@ PQsetdb(const char *pghost, const char *pgport, const char *pgoptions, const cha
 		{
 			if (((tmp = (char *) dbName) && (dbName[0] != '\0')) ||
 				((tmp = getenv("PGDATABASE"))))
-			{
 				conn->dbName = strdup(tmp);
-			}
 			else
 				conn->dbName = strdup(conn->pguser);
-			for (i = 0; conn->dbName[i]; i++)
-				if (isupper(conn->dbName[i]))
-					conn->dbName[i] = tolower(conn->dbName[i]);
+
+			/*
+			 * if the table name is surrounded by double-quotes, then
+			 * don't convert case
+			 */
+			if (*conn->dbName == '"')
+			{
+				strcpy(conn->dbName, conn->dbName + 1);
+				*(conn->dbName + strlen(conn->dbName) - 1) = '\0';
+			}
+			else
+				for (i = 0; conn->dbName[i]; i++)
+					if (isupper(conn->dbName[i]))
+						conn->dbName[i] = tolower(conn->dbName[i]);
 		}
 		else
 			conn->dbName = NULL;
@@ -470,7 +480,9 @@ connectDB(PGconn *conn)
 	MsgType		msgtype;
 	int			laddrlen = sizeof(struct sockaddr);
 	Port	   *port = conn->port;
-	int			portno, family, len;
+	int			portno,
+				family,
+				len;
 
 	/*
 	 * Initialize the startup packet.
@@ -498,8 +510,8 @@ connectDB(PGconn *conn)
 	port = (Port *) malloc(sizeof(Port));
 	MemSet((char *) port, 0, sizeof(Port));
 
-	if (conn->pghost && 
-	    (!(hp = gethostbyname(conn->pghost)) || hp->h_addrtype != AF_INET))
+	if (conn->pghost &&
+	  (!(hp = gethostbyname(conn->pghost)) || hp->h_addrtype != AF_INET))
 	{
 		(void) sprintf(conn->errorMessage,
 					   "connectDB() --  unknown hostname: %s\n",
@@ -510,17 +522,17 @@ connectDB(PGconn *conn)
 	portno = atoi(conn->pgport);
 	port->raddr.in.sin_family = family = conn->pghost ? AF_INET : AF_UNIX;
 	if (family == AF_INET)
-	  {
-	    memmove((char *) &(port->raddr.in.sin_addr),
-		    (char *) hp->h_addr,
-		    hp->h_length);
-	    port->raddr.in.sin_port = htons((unsigned short) (portno));
-	    len = sizeof(struct sockaddr_in);
-	  }
+	{
+		memmove((char *) &(port->raddr.in.sin_addr),
+				(char *) hp->h_addr,
+				hp->h_length);
+		port->raddr.in.sin_port = htons((unsigned short) (portno));
+		len = sizeof(struct sockaddr_in);
+	}
 	else
-	  {
-	    len = UNIXSOCK_PATH(port->raddr.un,portno);
-	  }
+	{
+		len = UNIXSOCK_PATH(port->raddr.un, portno);
+	}
 	/* connect to the server  */
 	if ((port->sock = socket(family, SOCK_STREAM, 0)) < 0)
 	{
@@ -529,12 +541,12 @@ connectDB(PGconn *conn)
 					   errno, strerror(errno));
 		goto connect_errReturn;
 	}
-	if (connect(port->sock, (struct sockaddr *) &port->raddr, len) < 0)
+	if (connect(port->sock, (struct sockaddr *) & port->raddr, len) < 0)
 	{
 		(void) sprintf(conn->errorMessage,
-			       "connectDB() failed: Is the postmaster running at '%s' on port '%s'?\n",
-			       conn->pghost ? conn->pghost : "UNIX Socket", 
-			       conn->pgport);
+					   "connectDB() failed: Is the postmaster running at '%s' on port '%s'?\n",
+					   conn->pghost ? conn->pghost : "UNIX Socket",
+					   conn->pgport);
 		goto connect_errReturn;
 	}
 	if (family == AF_INET)
@@ -779,7 +791,8 @@ packetSend(Port *port,
 		   PacketLen len,
 		   bool nonBlocking)
 {
-	PacketLen doneLen = write(port->sock,  buf, len);
+	PacketLen	doneLen = write(port->sock, buf, len);
+
 	if (doneLen < len)
 	{
 		return (STATUS_ERROR);
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 483644e7457907d41f2d0343dea9d86e98fc443a..2f1b55fbd12aad6920337e3ce715f7096c132caa 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.39 1997/11/03 04:21:49 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.40 1997/11/10 05:10:50 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -17,6 +17,7 @@
 #include <signal.h>
 #include <string.h>
 #include <errno.h>
+#include <ctype.h>
 #include "postgres.h"
 #include "libpq/pqcomm.h"
 #include "libpq/pqsignal.h"
@@ -31,12 +32,14 @@
 
 #ifdef TIOCGWINSZ
 struct winsize screen_size;
+
 #else
 struct winsize
 {
 	int			ws_row;
 	int			ws_col;
 }			screen_size;
+
 #endif
 
 /* the rows array in a PGresGroup  has to grow to accommodate the rows */
@@ -1674,6 +1677,7 @@ int
 PQfnumber(PGresult *res, const char *field_name)
 {
 	int			i;
+	char	   *field_case;
 
 	if (!res)
 	{
@@ -1686,13 +1690,27 @@ PQfnumber(PGresult *res, const char *field_name)
 		res->attDescs == NULL)
 		return -1;
 
+	field_case = strdup(field_name);
+	if (*field_case == '"')
+	{
+		strcpy(field_case, field_case + 1);
+		*(field_case + strlen(field_case) - 1) = '\0';
+	}
+	else
+		for (i = 0; field_case; i++)
+			if (isupper(field_case[i]))
+				field_case[i] = tolower(field_case[i]);
+
 	for (i = 0; i < res->numAttributes; i++)
 	{
-		if (strcasecmp(field_name, res->attDescs[i].name) == 0)
+		if (strcmp(field_name, res->attDescs[i].name) == 0)
+		{
+			free(field_case);
 			return i;
+		}
 	}
+	free(field_case);
 	return -1;
-
 }
 
 Oid