Re: [SQL] An easy question about creating a primary key
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Christopher Kings-Lynne" <chriskl@familyhealth.com.au>
Cc: "Ligia Pimentel" <lmpimentel@yahoo.com>, "Hackers" <pgsql-hackers@postgresql.org>
Date: 2001-12-04T02:40:20Z
Lists: pgsql-hackers, pgsql-sql
Now that I look at it, I think I made the relevant changes in the parser: 2001-10-11 20:07 tgl * doc/src/sgml/ref/alter_table.sgml, src/backend/catalog/pg_type.c, src/backend/commands/command.c, src/backend/parser/analyze.c, src/backend/tcop/utility.c, src/include/commands/command.h, src/include/nodes/parsenodes.h, src/test/regress/expected/alter_table.out, src/test/regress/expected/foreign_key.out: Break transformCreateStmt() into multiple routines and make transformAlterStmt() use these routines, instead of having lots of duplicate (not to mention should-have-been-duplicate) code. Adding a column with a CHECK constraint actually works now, and the tests to reject unsupported DEFAULT and NOT NULL clauses actually fire now. ALTER TABLE ADD PRIMARY KEY works, modulo having to have created the column(s) NOT NULL already. I was mainly interested in eliminating the inconsistencies in parse-time handling of CREATE TABLE and ALTER TABLE, and the ensuing bugs mentioned in the commit log. I didn't think much about the possibility that I was obsoleting stuff in command.c, but maybe I did. regards, tom lane