Bug #102076 | Contribution: MySQL JDBC Driver ResultSet.getLong() throws NumberOutOfRange | ||
---|---|---|---|
Submitted: | 27 Dec 2020 16:32 | Modified: | 12 Mar 2021 20:11 |
Reporter: | Gary Gregory (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / J | Severity: | S1 (Critical) |
Version: | 8.0.22 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | jdbc |
[27 Dec 2020 16:32]
Gary Gregory
[28 Dec 2020 15:48]
MySQL Verification Team
Thank you for the bug report. If you want to make a contribution, please attach here the patch and then assign the OCA according the instructions you got in the link you mentioned: n order to consider your code we need you to sign the Oracle Contribution Agreement (OCA). Please review the details and follow the instructions at http://www.oracle.com/technetwork/community/oca-486395.html
[28 Dec 2020 16:05]
Gary Gregory
I've submitted my OCA as part of my fix here: https://github.com/mysql/mysql-connector-j/pull/58
[28 Dec 2020 16:16]
MySQL Verification Team
src/main/protocol-impl/java/com/mysql/cj/protocol/a/MysqlTextValueDecoder.java @@ -102,7 +102,7 @@ } public <T> T decodeInt4(byte[] bytes, int offset, int length, ValueFactory<T> vf) { - return vf.createFromLong(getInt(bytes, offset, offset + length)); + return vf.createFromLong(getLong(bytes, offset, offset + length)); } public <T> T decodeUInt8(byte[] bytes, int offset, int length, ValueFactory<T> vf) {
[28 Dec 2020 16:18]
MySQL Verification Team
Thank you for the contribution.
[26 Jan 2021 8:40]
Alexander Soklakov
The Bug#102225 was marked as a duplicate of this one.
[12 Mar 2021 20:11]
Daniel So
Posted by developer: Added the following entry to the Connector/J 8.0.24 changelog: "Using getLong() on the CHAR_OCTET_LENGTH column of the ResultSet for DatabaseMetaData.getProcedureColumns() (or getFunctionColumns()) resulted in a NumberOutOfRange exception when the column's value exceeded 232 − 1. With this patch, the value of 232 − 1 is returned in the situation."