[Pljava-dev] R: select CURRENT_TIMESTAMP is wrong
Lucas Madar
lucas at mcsnw.com
Fri Jan 25 09:14:25 UTC 2008
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://pgfoundry.org/pipermail/pljava-dev/attachments/20080125/489b21e7/attachment.html
More information about the Pljava-dev
mailing list