Обсуждение: timestamp bug 7.4beta3
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D POSTGRESQL BUG REPORT TEMPLATE =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Your name : Nayib Kiuhan Your email address : nayib@onlinetec.net System Configuration --------------------- Architecture (example: Intel Pentium) : Sun Sparc IIIi Operating System (example: Linux 2.0.26 ELF) : Solaris 9 PostgreSQL version (example: PostgreSQL-7.3): PostgreSQL-7.4beta3 Compiler used (example: gcc 2.95.2) : gcc 3.3 Please enter a FULL description of your problem: ------------------------------------------------ In versions before 7.4beta3 I use to have tables with=20 "date" timestamp DEFAULT 'now'=20=20=20 It use to works properly, placing the actual date at the moment a new recor= d was inserted. Now it always have the same date which correspond to the da= te at creating the table. Please describe a way to repeat the problem. Please try to provide a concise reproducible example, if at all possible: ----------------------------------------------------------------------
On Oct-15 2003, Wed, 02:08 -0400 Nayib Kiuhan <nayib@onlinetec.net> wrote: > "date" timestamp DEFAULT 'now' I believe you should be using "date" timestampt DEFAULT CURRENT_TIMESTAMP(0) -- Tomas Szepe <szepe@pinerecords.com>
On Wed, 2003-10-15 at 02:08, Nayib Kiuhan wrote: > In versions before 7.4beta3 I use to have tables with > "date" timestamp DEFAULT 'now' > It use to works properly, placing the actual date at the moment a new > record was inserted. Now it always have the same date which correspond > to the date at creating the table. >From the 7.4 HISTORY file: 'now' will no longer work as a column default, use now() (change required for prepared statements) (Tom) Admittedly, this change should also be noted in the 'migration to 7.4 section' of the release notes -- I'll send a patch to this effect to pgsql-patches. -Neil
On Wed, 2003-10-15 at 13:29, Nayib Kiuhan wrote: > It is a good idea to through out an error during the table creation if > the format is not as indicated (now()), because when I created my > tables with the old format, it did not show any problem I agree that this kind of silent backward-incompatibility isn't good, but I don't think that we can reject 'now' or its variants outright: it's legal syntax, it just doesn't do what you might expect. Since Tom implemented this change, perhaps he can contribute some insight -- Tom, can we improve the upgrade experience in this case? -Neil
Neil Conway <neilc@samurai.com> writes: > I agree that this kind of silent backward-incompatibility isn't good, It's unpleasant, but we were going to have to bite this bullet sooner or later. Allowing 'now' to work like a non-constant in this context was always a fragile hack. > Tom, can we improve the upgrade experience in this case? I don't see any very simple way; certainly not anything I'd want to stick in in a last-minute fashion. There are too many possible representations of 'now', and if we did try to substitute now() we'd be disabling a legal (if possibly useless) behavior. It's not like it's hard to fix post-upgrade (or pre-upgrade, for that matter): a simple "ALTER TABLE ... SET DEFAULT now()" will do it. regards, tom lane
Thank you for your answer. I tried before with 'now()' (inside the single a= spen) and didn't work . Now it is working very well without the aspens as y= ou already mentioned. It is a good idea to through out an error during the = table creation if the format is not as indicated (now()), because when I cr= eated my tables with the old format, it did not show any problem, I just fi= gure out that something was wrong with my tables once my java program start= to do weird things. Again, many thanks, Nayib ----- Original Message -----=20 From: "Neil Conway" <neilc@samurai.com> To: "Nayib Kiuhan" <nayib@onlinetec.net> Cc: <pgsql-bugs@postgresql.org> Sent: Wednesday, October 15, 2003 10:50 AM Subject: Re: [BUGS] timestamp bug 7.4beta3 > On Wed, 2003-10-15 at 02:08, Nayib Kiuhan wrote: > > In versions before 7.4beta3 I use to have tables with=20 > > "date" timestamp DEFAULT 'now'=20=20=20 > > It use to works properly, placing the actual date at the moment a new > > record was inserted. Now it always have the same date which correspond > > to the date at creating the table. >=20 > >From the 7.4 HISTORY file: >=20 > 'now' will no longer work as a column default, use now() (change > required for prepared statements) (Tom) >=20 > Admittedly, this change should also be noted in the 'migration to 7.4 > section' of the release notes -- I'll send a patch to this effect to > pgsql-patches. >=20 > -Neil >=20 >=20 >=20
=20 > It's not like it's hard to fix post-upgrade (or pre-upgrade, for that > matter): a simple "ALTER TABLE ... SET DEFAULT now()" will do it. Like 'now' and now() are both valid, at least will be good to have a note w= hen a table that includes 'now' is created, bringing the attention to peopl= e to review 'now' and now() functionalities. Regards, Nayib