Re: Patch AbstractJdbc1Statement.setBoolean support BIT andINTEGER columns - Mailing list pgsql-jdbc

From Jeroen Habets
Subject Re: Patch AbstractJdbc1Statement.setBoolean support BIT andINTEGER columns
Date
Msg-id LHEKIEALPFANFIKAIAPJMELECLAA.Jeroen@twofoldmedia.com
Whole thread Raw
In response to Re: Patch AbstractJdbc1Statement.setBoolean support BIT and  (Dave Cramer <Dave@micro-automation.net>)
List pgsql-jdbc
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've been doing so for two years now in the projects that use
PostgreSQL ;-)

http://www.pp-partners.nl (JDBC)
http://www.seasons.nl (MMBase CMS and JDBC)
http://www.twofoldmediamarkt.nl (EJB1.1 and JDBC)

> -----Oorspronkelijk bericht-----
> Van: Dave Cramer [mailto:Dave@micro-automation.net]
> Verzonden: Tuesday, March 25, 2003 11:43
> Aan: Jeroen Habets
> CC: pgsql-jdbc@postgresql.org
> Onderwerp: Re: [JDBC] Patch AbstractJdbc1Statement.setBoolean
> support BIT andINTEGER columns
>
>
> Jeroen,
>
> Thanks for the patch. Have you verified that you can read a boolean
> from a small int col?
>
> ie getBoolean( "booleancol" );
>
>
> Regarding SQL92 vs SQL99. In general postgres supports SQL99, so
> the driver has little choice but to follow along.
>
>
> Dave
>
>
> On Tue, 2003-03-25 at 05:22, Jeroen Habets wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Hi,
> >
> > I use SMALLINT columns for booleans for compatibility with other
> > DB's (SQL92, BOOLEAN type was introduced in SQL99) . However the
> > JDBC driver does not support this.
> > It can be fixed simply by using '1' and '0' instead of 't' and
> > 'f' in AbstractJdbc1Statement.setBoolean(int parameterIndex,
> > boolean x)
> >
> > Actual patch:
> >
> > diff -w -b -i -r1.18 AbstractJdbc1Statement.java
> > 923c923
> > <         bind(parameterIndex, x ? "'t'" : "'f'", PG_BOOLEAN);
> > - ---
> > >         bind(parameterIndex, x ? "'1'" : "'0'", PG_BOOLEAN);
> >
> >
> > Column type test using psql:
> >
> > pp=> CREATE TABLE mytest ( bit_col BIT, boolean_col BOOLEAN,
> > smallint_col SMALLINT, int_col INT );
> > CREATE TABLE
> > pp=> INSERT INTO mytest (bit_col, boolean_col, smallint_col,
> > int_col) VALUES ('0', '0', '0', '0');
> > INSERT 1669409 1
> > pp=> INSERT INTO mytest (bit_col, boolean_col, smallint_col,
> > int_col) VALUES ('1', '1', '1', '1');
> > INSERT 1669410 1
> > pp=> SELECT * FROM mytest;
> >  bit_col | boolean_col | smallint_col | int_col
> > - ---------+-------------+--------------+---------
> >  0       | f           |            0 |       0
> >  1       | t           |            1 |       1
> > (2 rows)
> >
> >
> > I received a response from Barry Lind asking me to check if this
> > functionality hadn't been removed previously because it would
> > introduce bugs, so:
> >
> > - - I've googled a while but could not find any messages
> > containing patches. Loads of issues would benefit from my
> > approach IMHO.
> >
> > - - I've browsed the log for some relevant java files to no avail
> > then: - - I've 'updated' to revision 1.1 of the driver at
> >:pserver:anoncvs@anoncvs.postgresql.org:/projects/cvsroot/pgsql-ser
> >ver
> > /src/interfaces/jdbc/org/postgresql
> >   and saw that the first checkin already used 't' and 'f'.
> >
> >
> > I could imagine that older versions of postgresql *PERHAPS* would
> > not be able to handle 't' and 'f' but this could be handled using
> > a 'haveMinimumServerVersion' approach (as in Connection)
> >
> > I noticed that the postgresql documentation states that BOOLEAN
> > is a SQL99 data type, but I adhere to SQL92 which doesn't contain
> > it yet...
> > Note that SQL99 actually only defines the literals TRUE and FALSE
> > (not 't' and 'f')!!!
> >
> > A different approach could be to create a driver flag to toggle
> > between the to kinds of behaviour...
> >
> > If someone who has in-depth knowledge of the handling of BOOLEAN
> > type by the backend and its history could tell if previous
> > versions will handle '1' and '0' as BOOLEAN literals, we could
> > safely apply this patch or start a discussion for the
> > 'haveMinimumServerVersion' or driver flag work-arounds.
> >
> > Met vriendelijke groet,
> >
> > Jeroen Habets
> > Technology manager
> > Twofold Mediamarkt
> >
> >
> > -----BEGIN PGP SIGNATURE-----
> > Version: PGPfreeware 6.5.3 for non-commercial use
> > <http://www.pgp.com>
> >
> > iQA/AwUBPoAf9PIWL7P9qCbyEQKe9ACgiVdZj5IB32bcrfhMrp5jo0VVmBgAn0HJ
> > gZTCyn0H6xecok0jb0iRb61o
> > =fui5
> > -----END PGP SIGNATURE-----
> >
> >
> > ---------------------------(end of
> > broadcast)--------------------------- TIP 1: subscribe and
> > unsubscribe commands go to majordomo@postgresql.org
> --
Dave Cramer <Dave@micro-automation.net>

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.3 for non-commercial use <http://www.pgp.com>

iQA/AwUBPoAn1PIWL7P9qCbyEQJqSgCgkdZKWA9262LfPxRmczrq8QPAI4QAoKxG
EthIdvcJ4n1d/PB63z5cFX1L
=3fuH
-----END PGP SIGNATURE-----


pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: Low Priority: Harmless but useless code in
Next
From: Peter Royal
Date:
Subject: Re: DatabaseMetaData.getImportedKeys returning duplicate