Re: BUG #6761: unexpected behaviour of 'now'::timestamp
От | Pavel Stehule |
---|---|
Тема | Re: BUG #6761: unexpected behaviour of 'now'::timestamp |
Дата | |
Msg-id | CAFj8pRD6mmx3e7tSHn_W-vsu8L68H+k3N9d7OLVFT=jNfviSFg@mail.gmail.com обсуждение исходный текст |
Ответ на | BUG #6761: unexpected behaviour of 'now'::timestamp (bert@brothom.nl) |
Ответы |
Re: BUG #6761: unexpected behaviour of 'now'::timestamp
|
Список | pgsql-bugs |
Hello this is not bug - it is consequence of plan cache http://postgres.cz/wiki/Automatic_execution_plan_caching_in_PL/pgSQL please, use CURRENT_TIMESTAMP instead - using 'now'::timestamp is deprecated due this issue Regards Pavel 2012/7/25 <bert@brothom.nl>: > The following bug has been logged on the website: > > Bug reference: 6761 > Logged by: Bert Thomas > Email address: bert@brothom.nl > PostgreSQL version: 9.1.3 > Operating system: Linux > Description: > > Hi, > > To reproduce what I mean, consider this function: > > CREATE FUNCTION testbug() RETURNS character varying > LANGUAGE plpgsql > AS $$declare > l_ts timestamp(0); > > begin > l_ts := 'now'::timestamp(0); > return l_ts::varchar; > end > $$; > > If a program invokes this function multiple times on a single connection, > only the first time the correct date and time is produced. All other > invocations return the exact same value as the first invocation. > > Changing the function to this fixes the problem: > > CREATE FUNCTION testbug() RETURNS character varying > LANGUAGE plpgsql > AS $$declare > l_ts timestamp(0); > l_nu varchar; > > begin > l_nu := 'now'; > l_ts := l_nu::timestamp(0); > return l_ts::varchar; > end > $$; > > Appearently the expression is re-evaluated every time in this case, whilst > in the first case it is only evaluated once as the constant 'now' could not > change obviously. I'm not sure if this is a bug or not, but at least it is > suprising behaviour. To me it looks like a bad form of optimization. > > Kind regards, > Bert Thomas > BroThom > > > -- > Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-bugs
В списке pgsql-bugs по дате отправления: