Buggy code:
public public long getLong ( ResultSet rs , int column ) throws SQLException { } public Object getObject ( ResultSet rs , int column , Map map ) throws SQLException { } public Ref getRef ( ResultSet rs , int column , Map map ) throws SQLException { } public short getShort ( ResultSet rs , int column ) throws SQLException { } public String getString ( ResultSet rs , int column ) throws SQLException { } public Time getTime ( ResultSet rs , int column , Calendar cal ) throws SQLException { } public Timestamp getTimestamp ( ResultSet rs , int column , Calendar cal ) throws SQLException { } public void setArray ( PreparedStatement stmnt , int idx , Array val , Column col ) throws SQLException { } public void setAsciiStream ( PreparedStatement stmnt , int idx , InputStream val , int length , Column col ) throws SQLException { } public void setBigDecimal ( PreparedStatement stmnt , int idx , BigDecimal val , Column col ) throws SQLException { } public void setBigInteger ( PreparedStatement stmnt , int idx , BigInteger val , Column col ) throws SQLException { } public void setBinaryStream ( PreparedStatement stmnt , int idx , InputStream val , int length , Column col ) throws SQLException { } public void setBlob ( PreparedStatement stmnt , int idx , Blob val , Column col ) throws SQLException { } public void setBlobObject ( PreparedStatement stmnt , int idx , Object val , Column col , JDBCStore store ) throws SQLException { } public void setBoolean ( PreparedStatement stmnt , int idx , boolean val , Column col ) throws SQLException { } public void setByte ( PreparedStatement stmnt , int idx , byte val , Column col ) throws SQLException { } public void setBytes ( PreparedStatement stmnt , int idx , byte [ ] val , Column col ) throws SQLException { } public void setChar ( PreparedStatement stmnt , int idx , char val , Column col ) throws SQLException { } public void setCharacterStream ( PreparedStatement stmnt , int idx , Reader val , int length , Column col ) throws SQLException { } public void setClob ( PreparedStatement stmnt , int idx , Clob val , Column col ) throws SQLException { } public void setClobString ( PreparedStatement stmnt , int idx , String val , Column col ) throws SQLException { } public void setDate ( PreparedStatement stmnt , int idx , java . util . Date val , Column col ) throws SQLException { } public void setDate ( PreparedStatement stmnt , int idx , Date val , Calendar cal , Column col ) throws SQLException { } public void setCalendar ( PreparedStatement stmnt , int idx , Calendar val , Column col ) throws SQLException { } public void setDouble ( PreparedStatement stmnt , int idx , double val , Column col ) throws SQLException { } public void setFloat ( PreparedStatement stmnt , int idx , float val , Column col ) throws SQLException { } public void setInt ( PreparedStatement stmnt , int idx , int val , Column col ) throws SQLException { } public void setLong ( PreparedStatement stmnt , int idx , long val , Column col ) throws SQLException { } public void setLocale ( PreparedStatement stmnt , int idx , Locale val , Column col ) throws SQLException { } public void setNull ( PreparedStatement stmnt , int idx , int colType , Column col ) throws SQLException { } public void setNumber ( PreparedStatement stmnt , int idx , Number num , Column col ) throws SQLException { } public void setObject ( PreparedStatement stmnt , int idx , Object val , int colType , Column col ) throws SQLException { } public void setRef ( PreparedStatement stmnt , int idx , Ref val , Column col ) throws SQLException { } public void setShort ( PreparedStatement stmnt , int idx , short val , Column col ) throws SQLException { } public void setString ( PreparedStatement stmnt , int idx , String val , Column col ) throws SQLException { } public void setTime ( PreparedStatement stmnt , int idx , Time val , Calendar cal , Column col ) throws SQLException { } public void setTimestamp ( PreparedStatement stmnt , int idx , Timestamp val , Calendar cal , Column col ) throws SQLException { } public void setTyped ( PreparedStatement stmnt , int idx , Object val , Column col , int type , JDBCStore store ) throws SQLException { } public void setUnknown ( PreparedStatement stmnt , int idx , Object val , Column col ) throws SQLException { } public byte [ ] serialize ( Object val , JDBCStore store ) throws SQLException { } public void putBytes ( Object blob , byte [ ] data ) throws SQLException { } public void putString ( Object clob , String data ) throws SQLException { } public void putChars ( Object clob , char [ ] data ) throws SQLException { } private static Object invokePutLobMethod ( Method method , Object target , Object [ ] args ) throws SQLException { } protected void storageWarning ( Object orig , Object converted ) { } public int getJDBCType ( int metaTypeCode , boolean lob ) { if ( lob ) { switch ( metaTypeCode ) { case JavaTypes . STRING : case JavaSQLTypes . ASCII_STREAM : case JavaSQLTypes . CHAR_STREAM : return getPreferredType ( Types . CLOB ) ; default : return getPreferredType ( Types . BLOB ) ; } } switch ( metaTypeCode ) { case JavaTypes . BOOLEAN : case JavaTypes . BOOLEAN_OBJ : return getPreferredType ( Types . BIT ) ; case JavaTypes . BYTE : case JavaTypes . BYTE_OBJ : return getPreferredType ( Types . TINYINT ) ; case JavaTypes . CHAR : case JavaTypes . CHAR_OBJ : if ( storeCharsAsNumbers ) return getPreferredType ( Types . INTEGER ) ; return getPreferredType ( Types . CHAR ) ; case JavaTypes . DOUBLE : case JavaTypes . DOUBLE_OBJ : return getPreferredType ( Types . DOUBLE ) ; case JavaTypes . FLOAT : case JavaTypes . FLOAT_OBJ : return getPreferredType ( Types . REAL ) ; case JavaTypes . INT : case JavaTypes . INT_OBJ : return getPreferredType ( Types . INTEGER ) ; case JavaTypes . LONG : case JavaTypes . LONG_OBJ : return getPreferredType ( Types . BIGINT ) ; case JavaTypes . SHORT : case JavaTypes . SHORT_OBJ : return getPreferredType ( Types . SMALLINT ) ; case JavaTypes . STRING : case JavaTypes . LOCALE : case JavaSQLTypes . ASCII_STREAM : case JavaSQLTypes . CHAR_STREAM : return getPreferredType ( Types . VARCHAR ) ; case JavaTypes . BIGINTEGER : if ( storeLargeNumbersAsStrings ) return getPreferredType ( Types . VARCHAR ) ; return getPreferredType ( Types . BIGINT ) ; case JavaTypes . BIGDECIMAL : if ( storeLargeNumbersAsStrings ) return getPreferredType ( Types . VARCHAR ) ; <START_BUG> return getPreferredType ( Types . DOUBLE ) ; <END_BUG>

Fix:
return getPreferredType ( Types . NUMERIC ) ;