[Pljava-dev] R: select CURRENT_TIMESTAMP is wrong

Kris Jurka books at ejurka.com
Fri Jan 25 10:08:14 UTC 2008



On Fri, 25 Jan 2008, Lucas Madar wrote:

> 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:
>
> +#define EPOCH_DIFF (((uint64)86400) * (POSTGRES_EPOCH_JDATE - 
> UNIX_EPOCH_JDATE))
>

I'm not sure what the implications of this change are.  I see this 
existing code for the reverse operation and think we should mirror that 
instead:

src/C/pljava/type/Timestamp.c:97

         mSecs -= ((jlong)EPOCH_DIFF) * 1000L;

Kris Jurka

PS: I'm aware of your other reports, but I just haven't found the time to 
look into them.  Keep things coming and we'll get to them eventually.



More information about the Pljava-dev mailing list