Bug extracting bit value

Lists: pgsql-jdbc
From: Holger Schulz <hst1(at)online(dot)de>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Bug extracting bit value
Date: 2006-10-01 10:57:17
Message-ID: bKGiHoZKhuw0FF0vBDRcMjj7JmqBR4ufH7XEELpMhkV@akmail
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

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


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Holger Schulz <hst1(at)online(dot)de>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Bug extracting bit value
Date: 2006-10-01 21:25:29
Message-ID: 45203249.7070304@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

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


From: Kris Jurka <books(at)ejurka(dot)com>
To: Oliver Jowett <oliver(at)opencloud(dot)com>
Cc: Holger Schulz <hst1(at)online(dot)de>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Bug extracting bit value
Date: 2006-10-30 20:41:04
Message-ID: Pine.BSO.4.63.0610301410390.2855@leary2.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

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