testGetTimeZone failures using CVS driver

From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: testGetTimeZone failures using CVS driver
Date: 2004-04-01 08:54:22
Message-ID: 406BD8BE.6060603@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

I get this test failure with the CVS HEAD driver:

> [junit] Testcase: testGetTimeZone(org.postgresql.test.jdbc2.TimeTest): FAILED
> [junit] expected:<100> but was:<-900>
> [junit] junit.framework.AssertionFailedError: expected:<100> but was:<-900>
> [junit] at org.postgresql.test.jdbc2.TimeTest.testGetTimeZone(TimeTest.java:81)
> [junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [junit] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> [junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

The failing line is this:

assertEquals(100, time.getTime() % 1000);

For reference the same inserts/select that the test uses produce this
under psql here (note that my timezone is GMT+1200):

> Welcome to psql 7.4.1, the PostgreSQL interactive terminal.
>
> test=> create table testtime(tm time, tz time with time zone);
> CREATE TABLE
> test=> insert into testtime values ('00:00:00','00:00:00');
> INSERT 24302 1
> test=> insert into testtime values ('00:00:00.1','00:00:00.01');
> INSERT 24303 1
> test=> insert into testtime values (now(),now());
> INSERT 24304 1
> test=> select tm,tz from testtime;
> tm | tz
> -----------------+--------------------
> 00:00:00 | 00:00:00+12
> 00:00:00.10 | 00:00:00.01+12
> 20:40:19.426658 | 20:40:19.426658+12
> (3 rows)

It looks like the problem is that 00:00:00.10 +1200 is actually before
the epoch in GMT, and the testcase explicitly sets the timezone to GMT,
so time.getTime() in the test is returning a negative value and
time.getTime()%1000 no longer returns the milliseconds part of the time
value.

I'm not really familiar enough with the guts of the Java timezone stuff
to be sure of this though -- if someone can confirm that it's a test
problem and not something deeper, I can provide a patch.

-O

Browse pgsql-jdbc by date

  From Date Subject
Next Message Oliver Jowett 2004-04-01 09:37:51 patch: enforce the requirements for scrollable resultsets
Previous Message Oliver Jowett 2004-04-01 08:09:32 Re: OutOfMemory