Обсуждение: pgsql 7.4b2 bug on column defaults?
Hi,
just testing beta2 I got strange things on default values with functions:
create table test2 (i integer, t timestamp default 'now()');
test1=# \d test2 Table "public.test2"Column | Type |
Modifiers
--------+-----------------------------+-------------------------------------------------------------------i |
integer |t | timestamp without time zone | default '29/08/2003
11:26:23.937421'::timestamp without time zone
test1=# insert into test2 values(1);
INSERT 9841455 1
test1=# insert into test2 values(1);
INSERT 9841456 1
test1=# insert into test2 values(1);
INSERT 9841457 1
test1=# select * from test2;i | t
---+----------------------------1 | 29/08/2003 11:26:23.9374211 | 29/08/2003 11:26:23.9374211 | 29/08/2003
11:26:23.937421
(3 rows)
Seems that functions are valuated when the table is created,
It is a known change or a bug ?
thanks,
Giuseppe
--
-------------------------------------------------------
Giuseppe Tanzilli g.tanzilli@gruppocsf.com
CSF Sistemi srl phone ++39 0775 7771
Via del Ciavattino
Anagni FR
Italy
Hi, I see it work without quotes around function, but I got it from a 7.2 dump with quotes around it. Maybe it require a note for people dumping from 7.2, I don't have 7.3 around to try, sorry bye Giuseppe Tanzilli - CSF wrote: > Hi, > just testing beta2 I got strange things on default values with functions: > > create table test2 (i integer, t timestamp default 'now()'); > > test1=# \d test2 > Table "public.test2" > Column | Type | > Modifiers > --------+-----------------------------+------------------------------------------------------------------- > > i | integer | > t | timestamp without time zone | default '29/08/2003 > 11:26:23.937421'::timestamp without time zone > > > test1=# insert into test2 values(1); > INSERT 9841455 1 > test1=# insert into test2 values(1); > INSERT 9841456 1 > test1=# insert into test2 values(1); > INSERT 9841457 1 > > test1=# select * from test2; > i | t > ---+---------------------------- > 1 | 29/08/2003 11:26:23.937421 > 1 | 29/08/2003 11:26:23.937421 > 1 | 29/08/2003 11:26:23.937421 > (3 rows) > > > Seems that functions are valuated when the table is created, > It is a known change or a bug ? > > thanks, > Giuseppe > > > -- ------------------------------------------------------- Giuseppe Tanzilli g.tanzilli@gruppocsf.com CSF Sistemi srl phone ++39 0775 7771 Via del Ciavattino Anagni FR Italy
Giuseppe Tanzilli - CSF <g.tanzilli@gruppocsf.com> writes:
> create table test2 (i integer, t timestamp default 'now()');
Use "DEFAULT now()". I'm surprised you didn't get a syntax error from
the above.
> It is a known change or a bug ?
It's an intentional change, yes.
regards, tom lane