From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
---|---|
To: | Clark Pearson <cloink_friggson(at)ntlworld(dot)com> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #5191: now() returns same value from Perl. |
Date: | 2009-11-16 20:50:24 |
Message-ID: | 603c8f070911161250r2e1e4a1fi499be5d827313570@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Mon, Nov 16, 2009 at 12:59 PM, Clark Pearson
<cloink_friggson(at)ntlworld(dot)com> wrote:
>
> The following bug has been logged online:
>
> Bug reference: 5191
> Logged by: Clark Pearson
> Email address: cloink_friggson(at)ntlworld(dot)com
> 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().
...Robert
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2009-11-16 20:54:23 | Re: BUG #5191: now() returns same value from Perl. |
Previous Message | Thomas S. Chin | 2009-11-16 18:34:29 | BUG #5192: --disable-integer-datetimes changes timestamp comparison behavior |