Subject: [Pljava-dev] R: select CURRENT_TIMESTAMP is wrong
Date: Fri, 25 Jan 2008 01:14:25 -0800
Message-ID: <A38F63DA-3A61-4796-8952-7D699433D5B2@mcsnw.com> (raw)
In-Reply-To: <227D74A0-C160-4036-ABBD-75D08B65C44A@mac.com>
References: <014401c85dbc$477601d0$16b0a8c0@ASUSSTEFANO>
<09DA7761-B2E9-4036-B2B1-84F97418F3D4@mac.com>
<014901c85dbf$c92040d0$16b0a8c0@ASUSSTEFANO>
<227D74A0-C160-4036-ABBD-75D08B65C44A@mac.com>
I didn't post this to the list by mistake, but I found a solution. It
appears that some precision is being lost with certain compilers. The
culprit is this:
mSecs += EPOCH_DIFF * 1000; /* Adjust for
diff between Postgres and Java (Unix) */
EPOCH_DIFF is cast as an int32; multiplying it by 1000 yields some 949
billion. Here's a fix:
--- src/C/pljava/type/Timestamp.c 12 Sep 2007 17:59:43 -0000 1.19
+++ src/C/pljava/type/Timestamp.c 25 Jan 2008 09:04:44 -0000
@@ -14,7 +14,7 @@
#include "pljava/type/Type_priv.h"
#include "pljava/type/Timestamp.h"
-#define EPOCH_DIFF (((uint32)86400) * (POSTGRES_EPOCH_JDATE -
UNIX_EPOCH_JDATE))
+#define EPOCH_DIFF (((uint64)86400) * (POSTGRES_EPOCH_JDATE -
UNIX_EPOCH_JDATE))
/*
* Timestamp type. Postgres will pass (and expect in return) a local
timestamp.
- Lucas Madar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pgfoundry.org/pipermail/pljava-dev/attachments/20080125/489b21e7/attachment.html;
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pljava-dev@postgresql.org
Subject: Re: [Pljava-dev] R: select CURRENT_TIMESTAMP is wrong
In-Reply-To: <A38F63DA-3A61-4796-8952-7D699433D5B2@mcsnw.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox