Обсуждение: Bug extracting bit value
Hello! When I extract a bit value by JDBC I get an Boolean Object - even for bit(3)! CREATE TABLE testbits ( cbitone bit(1), cbitthree bit(3), cvarbit varbit, cboolean bool ) INSERT INTO testbits ("cbitone", "cbitthree", "cvarbit", "cboolean") values ( B'1', B'101', B'0101', true ) ------------------ In Java: select * from testbits Object oValue = m_resultSet.getObject(i); returns: | cbitone | cbitthree | cvarbit | cboolean | -|---------------------|---------------------|--------------------------------|---------------------|- | true | false | 0101 | true | | 'java.lang.Boolean' | 'java.lang.Boolean' | 'org.postgresql.util.PGobject' | 'java.lang.Boolean' | ------------------ When I use getString() instead of getObject() I get this result: Object oValue = m_resultSet.getObject(i); | cbitone | cbitthree | cvarbit | cboolean | -|--------------------|--------------------|--------------------|--------------------|- | '1' | '101' | '0101' | 't' | | 'java.lang.String' | 'java.lang.String' | 'java.lang.String' | 'java.lang.String' | ------------------ Same statement in pgAdmin III returns: 1;101;"0101";t ------------------ Tested with: PostgreSQL 8.1.4 on Windows 2000 JDBC driver: postgresql-8.2dev-503.jdbc3.jar AND postgresql-8.1-407.jdbc3.jar Holger
Holger Schulz wrote: > When I extract a bit value by JDBC I get an Boolean Object - even for bit(3)! That's a bit strange, if varbit(n) returns a custom PGobject I'd expect bit(n) to do the same.. Again this is a type where there's no good JDBC mapping for it though .. maybe boolean[] would be right, but then you can also have real arrays of bools.. The confusing thing is that JDBC's Types.BIT really means "boolean" not "bit(n)" :( -O
On Sun, 1 Oct 2006, Oliver Jowett wrote: > Holger Schulz wrote: > >> When I extract a bit value by JDBC I get an Boolean Object - even for >> bit(3)! > > That's a bit strange, if varbit(n) returns a custom PGobject I'd expect > bit(n) to do the same.. Well, varbit only returns a bare PGobject not a custom implementation, so it's rather useless. Any type the driver knows nothing about gets this, so we could remove the bit behavior, but I'm not sure it's a clear winner. > > Again this is a type where there's no good JDBC mapping for it though .. > maybe boolean[] would be right, but then you can also have real arrays of > bools.. Right, this would be good for getObject, but setObject wouldn't know what to do with it. Kris Jurka