* 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 $
*
*-------------------------------------------------------------------------
*/
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)
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;