*** analyze.c.orig Wed Dec 9 05:22:34 1998 --- analyze.c Tue Dec 29 18:24:44 1998 *************** *** 535,540 **** --- 533,542 ---- CreateSeqStmt *sequence; sname = makeTableName(stmt->relname, column->colname, "seq", NULL); + if (sname == NULL) + elog(ERROR, "CREATE TABLE/SERIAL implicit sequence name must be less than %d characters" + "\n\tSum of lengths of '%s' and '%s' must be less than %d", + NAMEDATALEN, stmt->relname, column->colname, (NAMEDATALEN-5)); constraint = makeNode(Constraint); constraint->contype = CONSTR_DEFAULT; *************** *** 563,568 **** --- 565,574 ---- constraint = makeNode(Constraint); constraint->contype = CONSTR_UNIQUE; constraint->name = makeTableName(stmt->relname, column->colname, "key", NULL); + if (constraint->name == NULL) + elog(ERROR, "CREATE TABLE/SERIAL implicit index name must be less than %d characters" + "\n\tSum of lengths of '%s' and '%s' must be less than %d", + NAMEDATALEN, stmt->relname, column->colname, (NAMEDATALEN-5)); column->constraints = lappend(column->constraints, constraint); } *************** *** 584,589 **** --- 590,605 ---- constraint = lfirst(clist); switch (constraint->contype) { + case CONSTR_NULL: + /* We should mark this explicitly, + * so we can tell if NULL and NOT NULL are both specified + */ + if (column->is_not_null) + elog(ERROR, "CREATE TABLE/(NOT) NULL conflicting declaration" + " for %s.%s", stmt->relname, column->colname); + column->is_not_null = FALSE; + break; + case CONSTR_NOTNULL: if (column->is_not_null) elog(ERROR, "CREATE TABLE/NOT NULL already specified" *************** *** 601,606 **** --- 617,626 ---- case CONSTR_PRIMARY: if (constraint->name == NULL) constraint->name = makeTableName(stmt->relname, "pkey", NULL); + if (constraint->name == NULL) + elog(ERROR, "CREATE TABLE/PRIMARY KEY implicit index name must be less than %d characters" + "\n\tLength of '%s' must be less than %d", + NAMEDATALEN, stmt->relname, (NAMEDATALEN-6)); if (constraint->keys == NIL) constraint->keys = lappend(constraint->keys, column); dlist = lappend(dlist, constraint); *************** *** 609,614 **** --- 629,638 ---- case CONSTR_UNIQUE: if (constraint->name == NULL) constraint->name = makeTableName(stmt->relname, column->colname, "key", NULL); + if (constraint->name == NULL) + elog(ERROR, "CREATE TABLE/UNIQUE implicit index name must be less than %d characters" + "\n\tLength of '%s' must be less than %d", + NAMEDATALEN, stmt->relname, (NAMEDATALEN-5)); if (constraint->keys == NIL) constraint->keys = lappend(constraint->keys, column); dlist = lappend(dlist, constraint); *************** *** 618,623 **** --- 642,651 ---- constraints = lappend(constraints, constraint); if (constraint->name == NULL) constraint->name = makeTableName(stmt->relname, column->colname, NULL); + if (constraint->name == NULL) + elog(ERROR, "CREATE TABLE/CHECK implicit constraint name must be less than %d characters" + "\n\tSum of lengths of '%s' and '%s' must be less than %d", + NAMEDATALEN, stmt->relname, column->colname, (NAMEDATALEN-1)); break; default: *************** *** 636,641 **** --- 664,673 ---- case CONSTR_PRIMARY: if (constraint->name == NULL) constraint->name = makeTableName(stmt->relname, "pkey", NULL); + if (constraint->name == NULL) + elog(ERROR, "CREATE TABLE/PRIMARY KEY implicit index name must be less than %d characters" + "\n\tLength of '%s' must be less than %d", + NAMEDATALEN, stmt->relname, (NAMEDATALEN-5)); dlist = lappend(dlist, constraint); break; *************** *** 709,714 **** --- 741,750 ---- have_pkey = TRUE; index->idxname = makeTableName(stmt->relname, "pkey", NULL); + if (index->idxname == NULL) + elog(ERROR, "CREATE TABLE/PRIMARY KEY implicit index name must be less than %d characters" + "\n\tLength of '%s' must be less than %d", + NAMEDATALEN, stmt->relname, (NAMEDATALEN-5)); } else index->idxname = NULL;