Re: TIMESTAMP value binary transfer problem

Поиск
Список
Период
Сортировка
От Vladimir Crnčić (Infoart d.o.o.)
Тема Re: TIMESTAMP value binary transfer problem
Дата
Msg-id 000401cff167$03db1a50$0b914ef0$@infoart.hr
обсуждение исходный текст
Ответ на Re: TIMESTAMP value binary transfer problem  (John Lister <john.lister@kickstone.com>)
Ответы Re: TIMESTAMP value binary transfer problem  (John Lister <john.lister@kickstone.com>)
Список pgsql-jdbc

Well, the server and the client are on the same development Windows 7 machine. I've done some testing using class in attachment and found out that results depend on time zone and daylight saving settings, in some zones results are always correct, in some are correct with daylight saving turned off, in some with daylight saving turned on, and so on.  Obviously there's some problem with incoming binary data or time zone compensation in TimestampUtils.toTimestampBin()

 

                               if (!timestamptz) {

                                               if (tz == null) {

                                                               tz = defaultTz;

                                               }

                                               millis -= tz.getOffset(millis);

                               }

 

I don't really understand why this compensation is needed in the first place, conversion in TimestampUtils.toTimestamp() takes no time zone in account with TIMESTAMP type. Anyway, getting different results depending on data transfer type is unacceptable.

 

 

From: John Lister [mailto:john.lister@kickstone.com]
Sent: Saturday, October 25, 2014 10:26 PM
To: Dave Cramer; Vladimir Crnčić (Infoart d.o.o.)
Cc: List
Subject: Re: [JDBC] TIMESTAMP value binary transfer problem

 

There was a problem with some time zones from memory, in the uk for example 1970 had an odd daylight saving period and because 1970 is used in calculating the time values in the driver this skews the results in the driver. Using the current year fixes it when calculating times.

Maybe something to check.

On 25 October 2014 19:21:25 GMT+01:00, Dave Cramer <pg@fastcrypt.com> wrote:

This is the same as https://github.com/pgjdbc/pgjdbc/pull/133

 

So what I am wondering is why a small number of people see this and the rest are fine ???

 

What is unique about your environment. Are the server and the client on the same timezone ?


Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca

 

On 22 October 2014 14:03, Vladimir Crnčić (Infoart d.o.o.) <vcrncic@infoart.hr> wrote:

There is a problem with JDBS driver interpretation of "timestamp without time zone" values when binary transfer is on. When binary transfer is disabled for TIMESTAMP columns (binaryTransferDisable=TIMESTAMP or binaryTransfer=false) problem does not occur.

 

database version: 9.1.1

driver version: 9.2, 9.3

 

BINARY TRANSFER:

----------------

database value (TIMESTAMP):                 2014-10-26 01:00:04

bytes (AbstractJdbc2Resultset):              [0, 1, -87, 71, -77, -6, 45, 0]

long value (TimestampUtils):                    467600404000000

java timestamp (TimestampUtils):          2014-10-26 02:00:04.0                   (not OK)

 

TEXT TRANSFER:

--------------

database value (TIMESTAMP):                                 2014-10-26 01:00:04

string value (AbstractJdbc2Resultset):                 2014-10-26 01:00:04

java timestamp (TimestampUtils):                         2014-10-26 01:00:04.0    (OK)

 


--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Вложения

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: John Lister
Дата:
Сообщение: Re: TIMESTAMP value binary transfer problem
Следующее
От: John Lister
Дата:
Сообщение: Re: TIMESTAMP value binary transfer problem