Я недавно портировал форму приложения Perl Oracle на Postgres (мой первый раз с Postgres), и меня озадачила небольшая проблема, которую я смог уменьшить до следующего примера кода:
use strict;
use warnings;
use DBI;
my @db_params = qw (dbi:Pg:host=127.0.0.1;database=test test test);
my $dbh = DBI->connect(@db_params, {AutoCommit => 0 } ) or die ;
while (1) {
my $sth = $dbh->prepare_cached('SELECT localtimestamp ') or die;
$sth->execute() or die;
my $result = $sth->fetchall_arrayref();
print $result->[0][0] , "\n";
sleep(5);
}
Это выводит:
2011-11-27 16:46:25.94291
2011-11-27 16:46:25.94291
2011-11-27 16:46:25.94291
Я получаю одну и ту же отметку времени все время, пока я не отсоединяюсь и повторно подключаюсь к базе данных.
Как я могу быть уверен, что когда-нибудь я выберу localtimestamp изв базу данных я получаю значение, соответствующее времени выполнения sql?