diff -u -r -N mysql-connector-java-3.1.12/src/com/mysql/jdbc/ResultSet.java /opt/mysql-connector-java-3.1.12/src/com/mysql/jdbc/ResultSet.java --- mysql-connector-java-3.1.12/src/com/mysql/jdbc/ResultSet.java 2005-12-01 02:02:01.000000000 +0000 +++ /opt/mysql-connector-java-3.1.12/src/com/mysql/jdbc/ResultSet.java 2005-12-12 14:55:09.000000000 +0000 @@ -3945,12 +3945,22 @@ this.wasNullFlag = false; + Field f = this.fields[columnIndex]; + // TODO: Truncation warning? - switch (this.fields[columnIndex].getMysqlType()) { + switch (f.getMysqlType()) { case MysqlDefs.FIELD_TYPE_DOUBLE: return (short) getNativeDouble(columnIndex + 1); case MysqlDefs.FIELD_TYPE_TINY: - return getNativeByte(columnIndex + 1); + byte tinyintVal = getNativeByte(columnIndex + 1); + + if (!f.isUnsigned() || tinyintVal >= 0) { + return tinyintVal; + } + + short asShort = tinyintVal; + asShort += 256; + return asShort; case MysqlDefs.FIELD_TYPE_SHORT: case MysqlDefs.FIELD_TYPE_YEAR: byte[] bits = (byte[]) this.thisRow[columnIndex];