Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: possible ODBC bug with '-infinity'


  • From: Andrei Kovalevski <andyk(at)commandprompt(dot)com>
  • Cc: Postgresql ODBC List <pgsql-odbc(at)postgresql(dot)org>
  • Subject: Re: possible ODBC bug with '-infinity'
  • Date: Mon, 03 Dec 2007 15:46:30 +0200
  • Message-id: <475408B6.2010700@commandprompt.com> <text/plain>

Hello.

Richard Broersma Jr wrote:
--- On Sun, 12/2/07, Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp> wrote:

Do you think it is an appropriate handling ?

This is a good question.  I am not sure what an appropriate handling would be.  My first test of '-infinity' (which resulted in a raised error) was with an ado recordset.  Since you are questioning what is appropriate I thought that I should try a few different client front ends to see how they treated (+/-)infinity:

Client   |   -infinity       | + infinity
ADO      | <error>           |9999-12-31 23:59:59|
Access/LT|1899-11-30 00:00:00|9999-12-31 23:59:59|
OOB(ODBC)|0001-01-03 00:00:00|9999-12-31 23:59:59|

ADO = ado recordset created in VB
Access/LT = a linked tabled in MS-Access (probably DAO/ODBC?)
OOB(ODBC) = Open Office.org Base ODBC connection to the Database.

Having done further tests, it seems that the error must be a bug with ADO since other clients have not a problem with making -infinity equal to the smallest time stamp that their respective data type can display.  In my case, I do not really care about what time stamp values are displayed by the clients for (+/-) infinity since I use these values as an implied NULL value for time stamps.  Unfortunately, ADO is broken and can't display any value for -infinity.

How do you think the driver should treat -infinity ?

It seems that it already handles it correctly. I was mistaken in thinking that the translation of (+/-) infinity was handled by ODBC. :o)
It should be handled by ODBC because of possible type conversions on the ODBC driver layer. Take a look: http://msdn2.microsoft.com/en-us/library/ms709280aspx. Table shows required conversions. Also all Microsoft applications notify ODBC driver by setting additional parameter during initialization. I think ADO requests 'inifinity' value as SQL_C_CHAR and sure it doesn't expect it to be 'infinity'.


Regards,
Richard Broersma Jr.

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend




Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group