now() in PL/pgSQL Functions

Поиск
Список
Период
Сортировка
От Yosef Haas
Тема now() in PL/pgSQL Functions
Дата
Msg-id 009f01c7447d$1fb93260$0100a8c0@cqg2y51
обсуждение исходный текст
Ответы Re: now() in PL/pgSQL Functions  ("Yosef Haas" <yosef@karatedepot.com>)
Список pgsql-bugs
This is in version 8.1.4.



I've noticed what seems to be a strange behavior - it may be by design, but
I figured I'd ask.



Run this simple test function:



create or replace function test() RETURNS bool AS '

begin

            raise notice ''%'',now();

            for i IN 0..50000000  loop

            end loop;

            raise notice ''%'',now();

            return true;

end;

'

LANGUAGE 'plpgsql';



It should print the current date, wait a few seconds (by counting to 50
million)

And then print the current date. Clearly, the two dates are not identical;
however this is how it executes:



catalog=# select test();

NOTICE:  2007-01-30 09:33:19.323702-05

NOTICE:  2007-01-30 09:33:19.323702-05

 test

------

 t

(1 row)



For some reason it is using the same value for both "now()" calls. Is this a
bug, or by design? If it's by design what can I do to get the right time. I
know that the function only returns when it's finished executing, but
shouldn't now() return the actual time and not the time that the function
begins?



Thanks,



Yosef Haas

yosef@karatedepot.com

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Sergiy Vyshnevetskiy
Дата:
Сообщение: Re: BUG #2945: possibly forgotten SPI_push()/SPI_pop()
Следующее
От: "Yosef Haas"
Дата:
Сообщение: Re: now() in PL/pgSQL Functions