diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index fc03173ce3df53a6148aa5214650ccefe3fd444b..9d6dfeb69a7266ea5d30076c3b4f10b664bf45b5 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *	$Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.191 2001/06/25 21:11:44 tgl Exp $
+ *	$Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.192 2001/07/04 17:36:54 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -954,8 +954,8 @@ transformCreateStmt(ParseState *pstate, CreateStmt *stmt)
 
 		index = makeNode(IndexStmt);
 
-		index->unique = TRUE;
-		index->primary = (constraint->contype == CONSTR_PRIMARY ? TRUE : FALSE);
+		index->unique = true;
+		index->primary = (constraint->contype == CONSTR_PRIMARY);
 		if (index->primary)
 		{
 			if (pkey != NULL)
@@ -1057,6 +1057,17 @@ transformCreateStmt(ParseState *pstate, CreateStmt *stmt)
 				elog(ERROR, "CREATE TABLE: column \"%s\" named in key does not exist",
 					 key->name);
 
+			/* Check for PRIMARY KEY(foo, foo) */
+			foreach(columns, index->indexParams)
+			{
+				iparam = (IndexElem *) lfirst(columns);
+				if (strcmp(key->name, iparam->name) == 0)
+					elog(ERROR, "CREATE TABLE: column \"%s\" appears twice in %s constraint",
+						 key->name,
+						 index->primary ? "PRIMARY KEY" : "UNIQUE");
+			}
+
+			/* OK, add it to the index definition */
 			iparam = makeNode(IndexElem);
 			iparam->name = pstrdup(key->name);
 			iparam->args = NIL;