Re: [COMMITTERS] pgsql: Remove arbitrary ALTER TABLE .. ADD COLUMN restriction.
От | Robert Haas |
---|---|
Тема | Re: [COMMITTERS] pgsql: Remove arbitrary ALTER TABLE .. ADD COLUMN restriction. |
Дата | |
Msg-id | AANLkTinfF=v7YyoTr4DFoNkk_Ev3AkQcWGLNoEh5f7as@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [COMMITTERS] pgsql: Remove arbitrary ALTER TABLE .. ADD COLUMN restriction. (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: [COMMITTERS] pgsql: Remove arbitrary ALTER TABLE .. ADD COLUMN restriction.
|
Список | pgsql-hackers |
On Wed, Jan 26, 2011 at 10:36 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Robert Haas <rhaas@postgresql.org> writes: >> Remove arbitrary ALTER TABLE .. ADD COLUMN restriction. >> The previous coding prevented ALTER TABLE .. ADD COLUMN from being used >> with a non-NULL default in situations where the table's rowtype was being >> used elsewhere. But this is a completely arbitrary restriction since >> you could do the same operation in multiple steps (add the column, add >> the default, update the table). > > This is not an "arbitrary restriction" because according to the SQL > standard those operations mean different things. In the first case you > get a column filled with the default value, in the second case you get a > column filled with nulls. And the latter case is the only one that > works properly with a rowtype. That's an untenable interpretation. If you set a default on a table column, it has no effect on the row type. rhaas=# create table foo (a int default 1); CREATE TABLE rhaas=# create table bar (b foo); CREATE TABLE rhaas=# insert into bar values (default); INSERT 0 1 rhaas=# select * from bar;b --- (1 row) I can't see any reason why ALTER TABLE .. ADD COLUMN should have a different interpretation of what the rowtype means than the rest of the system. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
В списке pgsql-hackers по дате отправления: