small bug - Mailing list pgsql-jdbc

From Christian Roux
Subject small bug
Date
Msg-id 4700F2B4.7030600@cegedim-srh.com
Whole thread Raw
Responses Re: small bug
List pgsql-jdbc
Hi everybody !!!

Driver version : postgresql-8.1-410.jdbc3.jar and
postgresql-jdbc-8.2-506.src.tar.gz
In file org.postgresql.jdbc2.TypeInfoCache :

private static final Object types[][] = {
        {"int2", new Integer(Oid.INT2), new Integer(Types.SMALLINT),
"java.lang.Short"},
        {"int4", new Integer(Oid.INT4), new Integer(Types.INTEGER),
"java.lang.Integer"},
        {"oid", new Integer(Oid.OID), new Integer(Types.INTEGER),
"java.lang.Integer"},
        {"int8", new Integer(Oid.INT8), new Integer(Types.BIGINT),
"java.lang.Long"},
        {"money", new Integer(Oid.MONEY), new Integer(Types.DOUBLE),
"java.lang.Double"},
        {"numeric", new Integer(Oid.NUMERIC), new
Integer(Types.NUMERIC), "java.math.BigDecimal"},
        {"float4", new Integer(Oid.FLOAT4), new Integer(Types.REAL),
"java.lang.Float"},
        {"float8", new Integer(Oid.FLOAT8), new Integer(Types.DOUBLE),
"java.lang.Double"},
        {"bpchar", new Integer(Oid.BPCHAR), new Integer(Types.CHAR),
"java.lang.String"},
        {"varchar", new Integer(Oid.VARCHAR), new
Integer(Types.VARCHAR), "java.lang.String"},
        {"text", new Integer(Oid.TEXT), new Integer(Types.VARCHAR),
"java.lang.String"},
        {"name", new Integer(Oid.NAME), new Integer(Types.VARCHAR),
"java.lang.String"},
        {"bytea", new Integer(Oid.BYTEA), new Integer(Types.BINARY),
"java.io.InputStream"},
        {"bool", new Integer(Oid.BOOL), new Integer(Types.BIT),
"java.lang.Boolean"},
        {"bit", new Integer(Oid.BIT), new Integer(Types.BIT),
"java.lang.Boolean"},
        {"date", new Integer(Oid.DATE), new Integer(Types.DATE),
"java.sql.Date"},
        {"time", new Integer(Oid.TIME), new Integer(Types.TIME),
"java.sql.Time"},
        {"timetz", new Integer(Oid.TIMETZ), new Integer(Types.TIME),
"java.sql.Time"},
        {"timestamp", new Integer(Oid.TIMESTAMP), new
Integer(Types.TIMESTAMP), "java.sql.Timestamp"},
        {"timestamptz", new Integer(Oid.TIMESTAMPTZ), new
Integer(Types.TIMESTAMP), "java.sql.Timestamp"}

should be

private static final Object types[][] = {
        {"int2", new Integer(Oid.INT2), new Integer(Types.SMALLINT),
"java.lang.Short"},
        {"int4", new Integer(Oid.INT4), new Integer(Types.INTEGER),
"java.lang.Integer"},
        {"oid", new Integer(Oid.OID), new Integer(Types.INTEGER),
"java.lang.Integer"},
        {"int8", new Integer(Oid.INT8), new Integer(Types.BIGINT),
"java.lang.Long"},
        {"money", new Integer(Oid.MONEY), new Integer(Types.DOUBLE),
"java.lang.Double"},
        {"numeric", new Integer(Oid.NUMERIC), new
Integer(Types.NUMERIC), "java.math.BigDecimal"},
        {"float4", new Integer(Oid.FLOAT4), new Integer(Types.REAL),
"java.lang.Float"},
        {"float8", new Integer(Oid.FLOAT8), new Integer(Types.DOUBLE),
"java.lang.Double"},
        {"bpchar", new Integer(Oid.BPCHAR), new Integer(Types.CHAR),
"java.lang.String"},
        {"varchar", new Integer(Oid.VARCHAR), new
Integer(Types.VARCHAR), "java.lang.String"},
        {"text", new Integer(Oid.TEXT), new Integer(Types.VARCHAR),
"java.lang.String"},
        {"name", new Integer(Oid.NAME), new Integer(Types.VARCHAR),
"java.lang.String"},
        {"bytea", new Integer(Oid.BYTEA), new Integer(Types.BINARY),
"java.io.InputStream"},
        {"bool", new Integer(Oid.BOOL), new Integer(Types.BOOLEAN),
"java.lang.Boolean"},
        {"bit", new Integer(Oid.BIT), new Integer(Types.BIT),
"java.lang.Boolean"},
        {"date", new Integer(Oid.DATE), new Integer(Types.DATE),
"java.sql.Date"},
        {"time", new Integer(Oid.TIME), new Integer(Types.TIME),
"java.sql.Time"},
        {"timetz", new Integer(Oid.TIMETZ), new Integer(Types.TIME),
"java.sql.Time"},
        {"timestamp", new Integer(Oid.TIMESTAMP), new
Integer(Types.TIMESTAMP), "java.sql.Timestamp"},
        {"timestamptz", new Integer(Oid.TIMESTAMPTZ), new
Integer(Types.TIMESTAMP), "java.sql.Timestamp"}


Small code :
create table mytable(
    mybool boolean
);

ps = conn.prepareStatement("select count(*) from mytable  where mybool =
? ");
System.out.println(ps.getParameterMetaData().getParameterTypeName(1));
  ----> produce bool
System.out.println(ps.getParameterMetaData().getParameterType(1));
----> produce -7
System.out.println(Types.BOOLEAN);  ------> produce 16

So I cant' write :
if (ps.getParameterMetaData().getParameterType(1) == Types.BOOLEAN)





Best regards

Christian

PS

BRAVO for your work !!!!

pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: statement caching link on jdbc page
Next
From: Kris Jurka
Date:
Subject: Re: small bug