Re: backwards compatibility problem
От | Kris Jurka |
---|---|
Тема | Re: backwards compatibility problem |
Дата | |
Msg-id | Pine.BSO.4.63.0605101236440.25380@leary2.csoft.net обсуждение исходный текст |
Ответ на | backwards compatibility problem (Csaba Nagy <nagy@ecircle-ag.com>) |
Список | pgsql-jdbc |
On Wed, 10 May 2006, Csaba Nagy wrote: > Hi all, > > I was trying to upgrade the postgres JDBC driver I was using due to the > fix for supporting high-unicode characters. > I was using before the file: > postgresql-8.1dev-400.jdbc3.jar > and upgraded to: > postgresql-8.1-405.jdbc3.jar > > The new one fixes indeed the high-unicode character support, but it > breaks other code we have... > > Specifically, with the former driver the following query would work: > > select ? - '1 day'::interval > > where the parameter is set to a timestamp value (either via setTimestamp > or setObject without specifying the type, the result is the same). > > With the new driver the same code results in: > ERROR: invalid input syntax for type interval: "2006-05-10 > 18:15:47.679000 +0200" > > Casting the ? sign to timestamp in the query works here (tested), but I > wonder why this was working in the older driver and stopped working with > the newer. AFAIK the protocol did not change and strict typing was > required already with the old driver, so how come that got it right and > the new one does not ? > The older driver did not correctly handle calling setTimestamp when inserting into a timestamp without time zone column because the setTimestamp call used the timestamp with time zone type. The newer driver version passes an unknown type and lets the server figure out what it is. In this case it incorrectly guesses interval. Unfortunately there is no way to hint to the server that we know it's a timestamp type, but we don't know which variety. Kris Jurka
В списке pgsql-jdbc по дате отправления: