? temp.diff Index: org/postgresql/jdbc1/AbstractJdbc1ResultSet.java =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java,v retrieving revision 1.13 diff -c -p -r1.13 AbstractJdbc1ResultSet.java *** org/postgresql/jdbc1/AbstractJdbc1ResultSet.java 30 Jun 2003 21:10:55 -0000 1.13 --- org/postgresql/jdbc1/AbstractJdbc1ResultSet.java 18 Jul 2003 17:39:12 -0000 *************** public abstract class AbstractJdbc1Resul *** 805,811 **** try { s = s.trim(); ! return Integer.parseInt(s); } catch (NumberFormatException e) { --- 805,811 ---- try { s = s.trim(); ! return Float.valueOf(s).intValue(); } catch (NumberFormatException e) { *************** public abstract class AbstractJdbc1Resul *** 822,828 **** try { s = s.trim(); ! return Long.parseLong(s); } catch (NumberFormatException e) { --- 822,828 ---- try { s = s.trim(); ! return Double.valueOf(s).longValue(); } catch (NumberFormatException e) { Index: org/postgresql/jdbc1/AbstractJdbc1Statement.java =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java,v retrieving revision 1.27 diff -c -p -r1.27 AbstractJdbc1Statement.java *** org/postgresql/jdbc1/AbstractJdbc1Statement.java 9 Jul 2003 05:12:04 -0000 1.27 --- org/postgresql/jdbc1/AbstractJdbc1Statement.java 18 Jul 2003 17:39:14 -0000 *************** public abstract class AbstractJdbc1State *** 920,926 **** */ public void setByte(int parameterIndex, byte x) throws SQLException { ! bind(parameterIndex, Integer.toString(x), PG_TEXT); } /* --- 920,926 ---- */ public void setByte(int parameterIndex, byte x) throws SQLException { ! bind(parameterIndex, "'" + Integer.toString(x) + "'", PG_TEXT); } /* *************** public abstract class AbstractJdbc1State *** 933,939 **** */ public void setShort(int parameterIndex, short x) throws SQLException { ! bind(parameterIndex, Integer.toString(x), PG_INT2); } /* --- 933,939 ---- */ public void setShort(int parameterIndex, short x) throws SQLException { ! bind(parameterIndex, "'" + Integer.toString(x) + "'" , PG_INT2); } /* *************** public abstract class AbstractJdbc1State *** 946,952 **** */ public void setInt(int parameterIndex, int x) throws SQLException { ! bind(parameterIndex, Integer.toString(x), PG_INTEGER); } /* --- 946,952 ---- */ public void setInt(int parameterIndex, int x) throws SQLException { ! bind(parameterIndex, "'" + Integer.toString(x) + "'", PG_INTEGER); } /* *************** public abstract class AbstractJdbc1State *** 959,965 **** */ public void setLong(int parameterIndex, long x) throws SQLException { ! bind(parameterIndex, Long.toString(x), PG_INT8); } /* --- 959,965 ---- */ public void setLong(int parameterIndex, long x) throws SQLException { ! bind(parameterIndex, "'" + Long.toString(x) + "'", PG_INT8); } /* *************** public abstract class AbstractJdbc1State *** 972,978 **** */ public void setFloat(int parameterIndex, float x) throws SQLException { ! bind(parameterIndex, Float.toString(x), PG_FLOAT); } /* --- 972,978 ---- */ public void setFloat(int parameterIndex, float x) throws SQLException { ! bind(parameterIndex, "'" + Float.toString(x) + "'", PG_FLOAT); } /* *************** public abstract class AbstractJdbc1State *** 985,991 **** */ public void setDouble(int parameterIndex, double x) throws SQLException { ! bind(parameterIndex, Double.toString(x), PG_DOUBLE); } /* --- 985,991 ---- */ public void setDouble(int parameterIndex, double x) throws SQLException { ! bind(parameterIndex, "'" + Double.toString(x) + "'", PG_DOUBLE); } /* *************** public abstract class AbstractJdbc1State *** 1003,1009 **** setNull(parameterIndex, Types.DECIMAL); else { ! bind(parameterIndex, x.toString(), PG_NUMERIC); } } --- 1003,1009 ---- setNull(parameterIndex, Types.DECIMAL); else { ! bind(parameterIndex, "'" + x.toString() + "'", PG_NUMERIC); } } *************** 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,1484 ---- switch (targetSqlType) { case Types.INTEGER: case Types.TINYINT: case Types.SMALLINT: + x = removeRadix(x,Types.INTEGER); + bindNumber(parameterIndex, x, PG_INTEGER); + break; case Types.BIGINT: + x = removeRadix(x,Types.BIGINT); + bindNumber(parameterIndex, x, PG_INT8); + break; case Types.REAL: case Types.FLOAT: case Types.DOUBLE: case Types.DECIMAL: case Types.NUMERIC: ! bindNumber(parameterIndex,x,PG_NUMERIC); break; case Types.CHAR: case Types.VARCHAR: *************** public abstract class AbstractJdbc1State *** 2026,2031 **** --- 2024,2067 ---- if (parameterIndex != 1) throw new PSQLException("postgresql.call.noinout"); } + + private void bindNumber(int parameterIndex, Object x, String pgtype) throws SQLException + { + if (x instanceof Boolean) + bind(parameterIndex,((Boolean)x).booleanValue() ? "'1'" :"'0'", pgtype); + else + { + try + { + Double.valueOf(x.toString()); + bind(parameterIndex, "'"+x.toString()+"'", pgtype); + } + catch (NumberFormatException e) + { + throw new PSQLException("postgresql.bad.double", x.toString()); + } + } + + } + + + private Object removeRadix(Object x, int sqlType) + { + if (x.toString().indexOf(".")>0) + { + switch (sqlType) + { + case Types.BIGINT: + x = String.valueOf(Double.valueOf(x.toString()).longValue()); + break; + default: + x = String.valueOf(Float.valueOf(x.toString()).intValue()); + break; + } + } + return x; + } +