Buggy code:
public final void setBuffer ( byte [ ] dataBuffer ) { } public final void setIsUpdataDeleteHole ( int row , boolean isRowNull ) { } public final void setIsRowUpdated ( boolean isRowUpdated ) { } public final boolean getIsRowUpdated ( ) { } public final boolean getIsUpdateDeleteHole ( ) { } final int getPosition ( ) { } final void setPosition ( int newPosition ) { } public final void markCurrentRowPosition ( ) { } public final void markNextRowPosition ( ) { } public final void makeNextRowPositionCurrent ( ) { } final void repositionCursorToCurrentRow ( ) { } final void repositionCursorToNextRow ( ) { } public final byte [ ] getDataBuffer ( ) { } public final int getDataBufferLength ( ) { } public final int getLastValidBytePosition ( ) { } public final void incrementRowsReadEvent ( ) { } private final boolean get_BOOLEAN ( int column ) { } private final short get_SMALLINT ( int column ) { } protected final int get_INTEGER ( int column ) { } private final long get_BIGINT ( int column ) { } private final float get_FLOAT ( int column ) { } private final double get_DOUBLE ( int column ) { } private final BigDecimal get_DECIMAL ( int column ) throws SqlException { } private final double getDoubleFromDECIMAL ( int column ) throws SqlException { } private final long getLongFromDECIMAL ( int column ) throws SqlException { } private final String getVARCHAR ( int column ) throws SqlException { } private final String getCHAR ( int column ) throws SqlException { } private final Date getDATE ( int column , Calendar cal ) throws SqlException { } private final Time getTIME ( int column , Calendar cal ) throws SqlException { } private final Timestamp getTIMESTAMP ( int column , Calendar cal ) throws SqlException { } private final Timestamp getTimestampFromDATE ( int column , Calendar cal ) throws SqlException { } private final Timestamp getTimestampFromTIME ( int column , Calendar cal ) throws SqlException { } private final Date getDateFromTIMESTAMP ( int column , Calendar cal ) throws SqlException { } private final Time getTimeFromTIMESTAMP ( int column , Calendar cal ) throws SqlException { } private final String getStringFromDATE ( int column ) throws SqlException { } private final String getStringFromTIME ( int column ) throws SqlException { } private final String getStringFromTIMESTAMP ( int column ) throws SqlException { } private final byte [ ] get_CHAR_FOR_BIT_DATA ( int column ) throws SqlException { } private final byte [ ] get_VARCHAR_FOR_BIT_DATA ( int column ) throws SqlException { } private final Object get_UDT ( int column ) throws SqlException { } private Calendar getRecyclableCalendar ( ) { } CallableLocatorProcedures getLocatorProcedures ( ) { } protected abstract int locator ( int column ) { } public abstract Blob getBlobColumn_ ( int column , Agent agent , boolean toBePublished ) throws SqlException { } public abstract Clob getClobColumn_ ( int column , Agent agent , boolean toBePublished ) throws SqlException { } public abstract byte [ ] getClobBytes_ ( int column , int [ ] dataOffset ) throws SqlException { } final boolean getBoolean ( int column ) throws SqlException { } final byte getByte ( int column ) throws SqlException { } final short getShort ( int column ) throws SqlException { } final int getInt ( int column ) throws SqlException { } final long getLong ( int column ) throws SqlException { } final float getFloat ( int column ) throws SqlException { } final double getDouble ( int column ) throws SqlException { } final BigDecimal getBigDecimal ( int column ) throws SqlException { switch ( jdbcTypes_ [ ( column - 1 ) ] ) { case Types . BOOLEAN : <START_BUG> return new BigDecimal ( getInt ( column ) ) ; <END_BUG> case Types . DECIMAL : return get_DECIMAL ( column ) ; case Types . REAL : float f = get_FLOAT ( column ) ; return new BigDecimal ( String . valueOf ( f ) ) ; case Types . DOUBLE : return new BigDecimal ( String . valueOf ( get_DOUBLE ( column ) ) ) ; case Types . SMALLINT : return BigDecimal . valueOf ( get_SMALLINT ( column ) ) ; case Types . INTEGER : return BigDecimal . valueOf ( get_INTEGER ( column ) ) ; case Types . BIGINT : return BigDecimal . valueOf ( get_BIGINT ( column ) ) ; case Types . CHAR : return agent_ . crossConverters_ . getBigDecimalFromString ( getCHAR ( column ) ) ; case Types . VARCHAR : case Types . LONGVARCHAR : return agent_ . crossConverters_ . getBigDecimalFromString ( getVARCHAR ( column ) ) ; default : throw new ColumnTypeConversionException ( agent_ . logWriter_ , ( "java.sql.Types<seq2seq4repair_space>" + ( jdbcTypes_ [ ( column - 1 ) ] ) ) , "java.math.BigDecimal" ) ; } } final Date getDate ( int column , Calendar cal ) throws SqlException { } final Time getTime ( int column , Calendar cal ) throws SqlException { } final Timestamp getTimestamp ( int column , Calendar cal ) throws SqlException { } final String getString ( int column ) throws SqlException { } final byte [ ] getBytes ( int column ) throws SqlException { } public final InputStream getBinaryStream ( int column ) throws SqlException { } public final InputStream getAsciiStream ( int column ) throws SqlException { } public final InputStream getUnicodeStream ( int column ) throws SqlException { } public final Reader getCharacterStream ( int column ) throws SqlException { } public final java . sql . Blob getBlob ( int column ) throws SqlException { } public final java . sql . Clob getClob ( int column ) throws SqlException { } public final Array getArray ( int column ) throws SqlException { } public final Ref getRef ( int column ) throws SqlException { } public final Object getObject ( int column ) throws SqlException { } public final void allocateCharBuffer ( ) { }

Fix:
return BigDecimal . valueOf ( getLong ( column ) ) ;