? cloudscape.LOG ? temp.diff Index: org/postgresql/jdbc1/AbstractJdbc1Statement.java =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java,v retrieving revision 1.26 diff -c -p -c -p -r1.26 AbstractJdbc1Statement.java *** org/postgresql/jdbc1/AbstractJdbc1Statement.java 30 Jun 2003 21:10:55 -0000 1.26 --- org/postgresql/jdbc1/AbstractJdbc1Statement.java 3 Jul 2003 16:22:36 -0000 *************** public abstract class AbstractJdbc1State *** 1464,1486 **** switch (targetSqlType) { case Types.INTEGER: ! if (x instanceof Boolean) ! bind(parameterIndex,((Boolean)x).booleanValue() ? "1" :"0", PG_BOOLEAN); ! else ! bind(parameterIndex, x.toString(), PG_INTEGER); break; case Types.TINYINT: case Types.SMALLINT: case Types.BIGINT: case Types.REAL: case Types.FLOAT: case Types.DOUBLE: case Types.DECIMAL: case Types.NUMERIC: ! if (x instanceof Boolean) ! bind(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0", PG_BOOLEAN); ! else ! bind(parameterIndex, x.toString(), PG_NUMERIC); break; case Types.CHAR: case Types.VARCHAR: --- 1464,1491 ---- switch (targetSqlType) { case Types.INTEGER: ! x = removeRadix(x, Types.INTEGER); ! bindNumber(parameterIndex,x,PG_INTEGER); break; case Types.TINYINT: case Types.SMALLINT: + x = removeRadix(x,Types.SMALLINT); + bindNumber(parameterIndex,x,PG_INT2); + break; case Types.BIGINT: + x = removeRadix(x,Types.BIGINT); + bindNumber(parameterIndex,x,PG_INT8); + break; case Types.REAL: case Types.FLOAT: + bindNumber(parameterIndex,x,PG_FLOAT); + break; case Types.DOUBLE: + bindNumber(parameterIndex,x,PG_DOUBLE); + break; case Types.DECIMAL: case Types.NUMERIC: ! bindNumber(parameterIndex,x,PG_NUMERIC); break; case Types.CHAR: case Types.VARCHAR: *************** public abstract class AbstractJdbc1State *** 2031,2036 **** --- 2036,2068 ---- { return m_useServerPrepare; } + + private void bindNumber(int parameterIndex, Object x, String pgtype) throws SQLException + { + if (x instanceof Boolean) + bind(parameterIndex,((Boolean)x).booleanValue() ? "'1'" :"'0'", pgtype); + else + bind(parameterIndex, "'"+x.toString()+"'", pgtype); + } + + + private Object removeRadix(Object x, int sqlType) + { + if (x.toString().indexOf(".")>0) + { + switch (sqlType) + { + case Types.BIGINT: + x = String.valueOf(new Double(x.toString()).longValue()); + break; + default: + x = String.valueOf(new Float(x.toString()).intValue()); + break; + } + } + return x; + } + private static final String PG_TEXT = "text";