On Mon, Nov 16, 2009 at 12:59 PM, Clark Pearson <[email protected]> wrote: > > The following bug has been logged online: > > Bug reference: 5191 > Logged by: Clark Pearson > Email address: [email protected] > PostgreSQL version: 8.3.7 > Operating system: Windows > Description: now() returns same value from Perl. > Details: > > Hi, > > I don't know if this is a core database issue, or a Perl DBD::Pg one; > however the same thing occurs using the 'pure perl' DBD::PgPP as well, so > the evidence points to the db. Note that I do not observe this behaviour if > connected via psql from a Windows DOS terminal. > > If I 'SELECT now()' repeatedly from a perl script connected to the database > via DBD::Pg, the returned value does not get updated to the new system > time. > > I have tried a number of different tricks, but the only way I have managed > to make it return a value not the same as the first time is by > dis-/reconnecting. > > Here is a simple perl script to test with > > #!perl > > use strict; > use warnings; > use DBI; > > my $dbh = DBI->connect( 'DBI:Pg:dbname=tc;host=localhost;port=5432', > 'user', 'pass', > { RaiseError => 1 > , PrintError => 1 > , AutoCommit => 0 > } > ); > > my $qry = q( > select current_timestamp > ); > $qry = $dbh->prepare($qry); > my $tmp = $dbh->selectrow_array( > 'select current_timestamp'); > warn $tmp; > > sleep 2; > > my $tm2 = $dbh->selectrow_array('SELECT 1'); > warn $tm2; > > my $tm3 = $dbh->selectrow_array('SELECT now()'); > warn $tm3; > > $dbh->disconnect(); > __END__
now() doesn't advance within a transaction. If you want a value that does, use clock_timestamp(). See http://www.postgresql.org/docs/current/interactive/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT ...Robert -- Sent via pgsql-bugs mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs
