Bug #11940 | The PreparedStatement causes invalid transformation unsigned int type | ||
---|---|---|---|
Submitted: | 14 Jul 2005 14:06 | Modified: | 15 Jul 2005 12:05 |
Reporter: | Eugene Andrewhin | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / J | Severity: | S2 (Serious) |
Version: | 3.1.10 | OS: | Windows (Windows XP) |
Assigned to: | CPU Architecture: | Any |
[14 Jul 2005 14:06]
Eugene Andrewhin
[14 Jul 2005 19:30]
Aleksey Kishkin
testcase
Attachment: Bug11940.java (text/x-java), 1.30 KiB.
[14 Jul 2005 19:37]
Aleksey Kishkin
What version of mysql server did you use? Tested on linux (testcase attached) against mysql 5.0.10 and j/connector 3.1.10 - works properly. Plan to test on Windows. /opt/java/jre/bin/java -classpath .:my.jar Bug11940 2>/dev/null .Loading JDBC driver 'com.mysql.jdbc.Driver' Done. Done. 123456 123456 Time: 0,982 OK (1 test)
[15 Jul 2005 4:16]
Aleksey Kishkin
on win xp sp2, against mysql.5.0.7 and jdbc 3.1.10 was not able to reproduce it as well .Loading JDBC driver 'com.mysql.jdbc.Driver' Done. Done. Connected to 5.0.7-beta-nt 123456 123456 Time: 1,156 OK (1 test)
[15 Jul 2005 5:15]
Eugene Andrewhin
Java source illustrated trouble
Attachment: PreparedStatementBugFix.java (text/x-java), 3.47 KiB.
[15 Jul 2005 5:26]
Eugene Andrewhin
I am use MySQL 4.1.12 and java sdk version 1.4.2_08-b03 and latest MySQL Connector/J 3.1.10 verssion, and Windows XP sp2. I think, it is trouble Connector/J 3.1.10. Because simple replacement to backword version Connector/J (on 3.1.8 & 3.1.7) trouble is gone. I'm attach java test file for illustrated trouble.
[15 Jul 2005 5:38]
Eugene Andrewhin
I also tested with mysql-connector-java-3.2.0-alpha and too allright. I Ask to pay attention to mysql-connector-java-3.1.10
[15 Jul 2005 5:45]
Aleksey Kishkin
e:\java\bin\java -cp .;mysql-connector-java-3.1.10-bin.jar PreparedStatementBugFix 123456 123456 Win xp sp2, mysql 4.1.12 the only difference is - I use java -verson java version "1.5.0_02" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09) Java HotSpot(TM) Client VM (build 1.5.0_02-b09, mixed mode, sharing) OK. going to try elder java
[15 Jul 2005 6:06]
Aleksey Kishkin
Finaly got: .Loading JDBC driver 'com.mysql.jdbc.Driver' Done. Done. Connected to 4.1.12a-nt 123456 4295090752 F Time: 0,547 There was 1 failure: 1) testUnsignedInt(Bug11940)junit.framework.AssertionFailedError: We must fetch 123456 but fetched 4295090752 at Bug11940.testUnsignedInt(Bug11940.java:33) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at Bug11940.main(Bug11940.java:38) FAILURES!!! Tests run: 1, Failures: 1, Errors: 0 It looks like rs.getObject(1).toString() returns that wrong value. If I test rs.getInt(), no error appears.
[15 Jul 2005 6:06]
Aleksey Kishkin
real test case
Attachment: Bug11940.java (text/x-java), 1.35 KiB.
[15 Jul 2005 9:42]
Eugene Andrewhin
Yes really, getInt() returns faithfull importance because working like this int value = (int) longValue, since in this instance returns rs.getObject().getClass().getName() = java.lang.Long. Usage getInt() this private output from situation, but the problem of convertation remain. I think so be must not. What do you think?
[15 Jul 2005 12:05]
Mark Matthews
Known issue already fixed in nightly builds of 3.1. See http://downloads.mysql.com/snapshots.php#connector-j for a version you can test.