BUG #6047: prepare p1 as select 'now'::timestamp; then "execute p1" many times, they return the same time
От | |
---|---|
Тема | BUG #6047: prepare p1 as select 'now'::timestamp; then "execute p1" many times, they return the same time |
Дата | |
Msg-id | 201106020253.p522r1eD076376@wwwmaster.postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #6047: prepare p1 as select 'now'::timestamp; then
"execute p1" many times, they return the same time
Re: BUG #6047: prepare p1 as select 'now'::timestamp; then "execute p1" many times, they return the same time |
Список | pgsql-bugs |
The following bug has been logged online: Bug reference: 6047 Logged by: Email address: wcting163@163.com PostgreSQL version: 9.0.4 Operating system: WinXP 32bit Description: prepare p1 as select 'now'::timestamp; then "execute p1" many times, they return the same time Details: when i execute the following statements: prepare p1 as select 'now'::timestamp; execute p1; execute p1; every time i execute statement "execute p1", they all return the same time, the time when "prepare p1 ..." is created. but i expect it return the changing time ---- the current time. 1). although i kown that, "the system will convert **now** to a timestamp as soon as the constant is parsed", i think this is a bug. 2). maybe you suggest me: prepare p1 as select now()::timestamp; then "execute p1" will return the current time. this is because now() is a builtin function, so we can change "select 'now'::timestamp" to "select now()::timestamp"; but, what about "prepare p1 as select 'today'::timestamp"?? today() is not a builtin function, we can't change it to "select today()::timestamp"; So, the implementation method of "now" and "today" is different, and prepare p1 as select 'today'::timestamp; execute p1;-- will always return the day when the "prepare p1 ..." is created, even we're in another day.
В списке pgsql-bugs по дате отправления: