Thread: Boolean/Bit BUG with 7.4 JDBC Driver (build 213)
Hi: The latest JDBC driver (build 213) returns -7 for the java.sql.Types value (obtained via DBMetaData, getColumns() and then "DATA_TYPE"). I am not sure if this has been a bug with all postgres JDBC drivers or if this is some kinda regression bug. -7 corresponds to a java.sql.Types.BIT and should NOT be returned for a BOOLEAN type. For a BOOLEAN type, a value of 16 should be returned which corresponds to a java.sql.Types.BOOLEAN. Please fix this ASAP, I am writing an advanced db abstraction layer and although both boolean/bit are suggested by sun to map to a java boolean type, I still need to distinguish between bits and booleans in case the user wants a different mapping. So: 16 for boolean, NOT -7 Best regards, --j __________________________________ Do you Yahoo!? Yahoo! Finance Tax Center - File online. File on time. http://taxes.yahoo.com/filing.html
j.random.programmer wrote: > Hi: > > The latest JDBC driver (build 213) returns -7 for > the java.sql.Types value (obtained via DBMetaData, > getColumns() and then "DATA_TYPE"). I am not sure > if this has been a bug with all postgres JDBC drivers > or if this is some kinda regression bug. > > -7 corresponds to a java.sql.Types.BIT and should > NOT be returned for a BOOLEAN type. > > For a BOOLEAN type, a value of 16 should be returned > which corresponds to a java.sql.Types.BOOLEAN. 1) BOOLEAN exists only in JDBC3. What should the driver return for a boolean column if JDBC1 or JDBC2 is in use? 2) JDBC3 explicitly says that either BOOLEAN or BIT may be returned for a boolean data type. See the tables in appendix B of the specificaton (pg. 175-180). 3) JDBC3 also says that "BOOLEAN is logically equivalent to BIT" (pg. 22). > Please fix this ASAP, I am writing an advanced > db abstraction layer and although both boolean/bit > are suggested by sun to map to a java boolean type, > I still need to distinguish between bits and > booleans in case the user wants a different mapping. Given that BIT and BOOLEAN are equivalent at the JDBC level I don't quite see how this works. What are the distinct underlying database types that would map to BIT and BOOLEAN? AFAIK, postgresql only has one such datatype (bool/boolean). If you think this is a bug in the driver and needs fixing rapidly, the fastest way to get it fixed is to provide a patch. -O
I wrote: > > The latest JDBC driver (build 213) returns -7 for > > the java.sql.Types value (obtained via DBMetaData, > > getColumns() and then "DATA_TYPE"). I am not sure > > if this has been a bug with all postgres JDBC > drivers > > or if this is some kinda regression bug. > > > > -7 corresponds to a java.sql.Types.BIT and should > > NOT be returned for a BOOLEAN type. > > > > For a BOOLEAN type, a value of 16 should be > returned > > which corresponds to a java.sql.Types.BOOLEAN. Oliver wrote: > 1) BOOLEAN exists only in JDBC3. What should the > driver return for a > boolean column if JDBC1 or JDBC2 is in use? Hmm. I see. Maybe fallback to BIT for those and return BOOLEAN it usinng JDBC3 ? But that may be more trouble than it's worth. > 2) JDBC3 explicitly says that either BOOLEAN or BIT > may be returned for > a boolean data type. See the tables in appendix B of > the specificaton > (pg. 175-180). Ok. Thanks for pointing this out. > 3) JDBC3 also says that "BOOLEAN is logically > equivalent to BIT" (pg. 22). Ok. Leave things the way they are. This is no big deal in hindsight. In my database abstraction layer, I have arranged to generate a 'getBoolean(..) method for both BIT and BOOLEAN column types. Best regards, --j __________________________________ Do you Yahoo!? Yahoo! Tax Center - File online by April 15th http://taxes.yahoo.com/filing.html