6232 lines
		
	
	
		
			271 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			6232 lines
		
	
	
		
			271 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| # Changelog
 | |
| # https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/
 | |
| 
 | |
| Version 8.0.31
 | |
| 
 | |
|   - Fix for Bug#33637993, Loss of backslashes in data after modify api is used.
 | |
| 
 | |
|   - Fix for Bug#34529014, JSonParser not accepting valid JSON string when converting to DbDoc.
 | |
| 
 | |
|   - Fix for Bug#67828 (Bug#15967406), Crashing applets due to reading file.encoding system property.
 | |
| 
 | |
|   - WL#15259, Review maven publishing process.
 | |
| 
 | |
|   - Fix for Bug#107222 (Bug#34150112), ClientPreparedStatement.toString() no longer interpolates byte arrays.
 | |
| 
 | |
|   - Fix for Bug#104753 (Bug#33286177), PreparedStatement.setFetchSize(0) causes ArrayIndexOutOfBoundsException.
 | |
| 
 | |
| Version 8.0.30
 | |
| 
 | |
|   - Fix for Bug#107510 (Bug#34259416), Empty string given to set() from Collection.modify() replaces full document.
 | |
| 
 | |
|   - Fix for Bug#106758 (33973048), DatabaseMetaData.getTypeInfo returns AUTO_INCREMENT = false for all datatypes.
 | |
| 
 | |
|   - Fix for Bug#34090350, Update mappings for utf8mb3 and utf8mb4 collations.
 | |
| 
 | |
|   - Fix for Bug#106880 (34022110), Outdated description in connection property 'rewriteBatchedStatements'.
 | |
| 
 | |
|   - Fix for Bug#34082503, CONTRIBUTING.md contains broken links.
 | |
| 
 | |
|   - Fix for Bug#106779 (33976245), Contribution: Fix typo in PropertyDefinitions.
 | |
|     Thanks to Weijie Wu for his contribution.
 | |
| 
 | |
|   - Fix for Bug#76623 (20856749), JDBC driver misinterprets "--" as a comment, instead of "-- ".
 | |
| 
 | |
| Version 8.0.29
 | |
| 
 | |
|   - Fix for Bug#21978230, COMMENT PARSING NOT PROPER IN PREPSTMT.EXECUTEBATCH().
 | |
| 
 | |
|   - Fix for Bug#81468 (23312764), MySQL server fails to rewrite batch insert when column name contains word select.
 | |
| 
 | |
|   - Fix for Bug#106435 (33850099), 8.0.28 Connector/J has regressive in setAutoCommit after Bug#104067 (33054827).
 | |
| 
 | |
|   - Fix for Bug#106240 (33781440), StringIndexOutOfBoundsException when VALUE is at the end of the query.
 | |
| 
 | |
|   - Fix for Bug#106397 (33893591), Contribution: fix: fix LocalizedErrorMessages.properties doc: less then -> ...
 | |
|     Thanks to Jianjian Song for his contribution.
 | |
| 
 | |
|   - Fix for Bug#77924 (25710160), JDBC SOCKS SHOULD NOT PERFORM LOCAL DNS RESOLUTION.
 | |
| 
 | |
|   - Fix for Bug#82084 (23743938), YEAR DATA TYPE RETURNS INCORRECT VALUE FOR JDBC GETCOLUMNTYPE().
 | |
| 
 | |
|   - Fix for Bug#106441 (33850155), Add charset mapping for utf8mb3.
 | |
| 
 | |
|   - WL#15048, Upgrade Protocol Buffers dependency to protobuf-java-3.19.4.
 | |
| 
 | |
|   - Fix for Bug#106065 (33726184) Contribution: BigDecimal.toPlainString no need to check decimal exponent.
 | |
|     Thanks to Baoyi Chen for his contribution.
 | |
| 
 | |
|   - Fix for Bug#106171 (33757217), Contribution: Remove unnecessary boxing in ResultSetImpl.
 | |
|     Thanks to Ningpp Ning for his contribution.
 | |
| 
 | |
|   - Fix for Bug#25701740, STMT EXECUTION FAILS FOR REPLICATION CONNECTION WHEN USECURSORFETCH=TRUE.
 | |
| 
 | |
|   - Fix for Bug#33723611, getDefaultTransactionIsolation must return repeatable read.
 | |
| 
 | |
|   - Fix for Bug#38954 (11749415), DATA TRUNCATION WHILE USING BIT(1) IN STORED PROCEDURE WITH INOUT TYPE.
 | |
| 
 | |
|   - Fix for Bug#85317 (25672958), EXECUTE BATCH WILL THROW NULL POINTER EXCEPTION WHERE THE COLUMN IS BLOB!
 | |
| 
 | |
|   - Fix for Bug#105915 (33678490), Connector/J 8 server prepared statement precision loss in execute batch.
 | |
| 
 | |
|   - Fix for Bug#104349 (33563548), com.mysql.cj NPE.
 | |
| 
 | |
|   - Fix for Bug#62006 (16714956), JAVA.IO.NOTSERIALIZABLEEXCEPTION: JAVA.IO.STRINGREADER WHEN PROFILESQL=TRUE.
 | |
| 
 | |
|   - WL#14750, Better unification of query bindings.
 | |
| 
 | |
|   - WL#14834, Support for FIDO authentication.
 | |
| 
 | |
|   - WL#14835, Align TLS option checking across connectors.
 | |
| 
 | |
| Version 8.0.28
 | |
| 
 | |
|   - Fix for Bug#99260 (31189960), statement.setQueryTimeout,creates a database connection and does not close.
 | |
| 
 | |
|   - Fix for Bug#103324 (32770013), X DevAPI Collection.replaceOne() missing matching _id check.
 | |
| 
 | |
|   - Fix for Bug#105197 (33461744), Statement.executeQuery() may return non-navigable ResultSet.
 | |
| 
 | |
|   - Fix for Bug#105323 (33507321), README.md contains broken links.
 | |
| 
 | |
|   - Fix for Bug#96900 (30355150), STATEMENT.CANCEL()CREATE A DATABASE CONNECTION BUT DOES NOT CLOSE THE CONNECTION.
 | |
| 
 | |
|   - Fix for Bug#104067 (33054827), No reset autoCommit after unknown issue occurs.
 | |
|     Thanks to Tingyu Wei for his contribution.
 | |
| 
 | |
|   - Fix for Bug#85223 (25656020), MYSQLSQLXML SETSTRING CRASH.
 | |
| 
 | |
|   - Fix for Bug#84365 (33425867), INSERT..VALUE with VALUES function lead to a StringIndexOutOfBoundsException.
 | |
| 
 | |
|   - Fix for Bug#105211 (33468860), class java.time.LocalDate cannot be cast to class java.sql.Date.
 | |
| 
 | |
|   - Fix for Bug#101389 (32089018), GETWARNINGS SHOULD CHECK WARNING COUNT BEFORE SENDING SHOW.
 | |
| 
 | |
|   - Fix for Bug#33488091, Remove all references to xdevapi.useAsyncProtocol from properties and code.
 | |
| 
 | |
|   - WL#14805, Remove support for TLS 1.0 and 1.1.
 | |
| 
 | |
|   - WL#14650, Support for MFA (multi factor authentication) authentication.
 | |
| 
 | |
| Version 8.0.27
 | |
| 
 | |
|   - Fix for Bug#103612 (32902019), Incorrectly identified WITH...SELECT as unsafe for read-only connections.
 | |
| 
 | |
|   - Fix for Bug#71929 (18346501), Prefixing query with double comments cancels query DML validation.
 | |
| 
 | |
|   - Fix for Bug#23204652, CURSOR POSITIONING API'S DOESNOT CHECK THE VALIDITY OF RESULTSET.
 | |
| 
 | |
|   - Fix for Bug#28725534, MULTI HOST CONNECTION WOULD BLOCK IN CONNECTION POOLING.
 | |
| 
 | |
|   - Fix for Bug#95139 (29807572), CACHESERVERCONFIGURATION APPEARS TO THWART CHARSET DETECTION.
 | |
| 
 | |
|   - Fix for Bug#104641 (33237255), DatabaseMetaData.getImportedKeys can return duplicated foreign keys.
 | |
| 
 | |
|   - Fix for Bug#33185116, Have method ResultSet.getBoolean() supporting conversion of 'T' and 'F' in a VARCHAR to True/False (boolean).
 | |
| 
 | |
|   - Fix for Bug#31117686, PROTOCOL ALLOWLIST NOT COMPATIBLE WITH IBM JAVA.
 | |
| 
 | |
|   - Fix for Bug#104559 (33232419), ResultSet.getObject(i, java.util.Date.class) throws NPE when the value is null.
 | |
| 
 | |
|   - WL#14707, Support OCI IAM authentication.
 | |
| 
 | |
|   - WL#14660, Testsuite with support for single MySQL server instance.
 | |
| 
 | |
|   - Fix for Bug#103878 (32954449), CONNECTOR/J 8 : QUERY WITH 'SHOW XXX' WILL GET EXCEPTION WHEN USE CURSOR.
 | |
| 
 | |
|   - Fix for Bug#103796 (32922715), CONNECTOR/J 8 STMT SETQUERYTIMEOUT CAN NOT WORK.
 | |
|     Thanks to Hong Wang for his contribution.
 | |
| 
 | |
|   - Fix for Bug#104170 (33064455), CONTRIBUTION: CLIENTPREPAREDSTMT: LEAVE CALENDAR UNTOUCHED.
 | |
|     Thanks to Björn Michael for his contribution.
 | |
| 
 | |
|   - Fix for Bug#95564 (29894324), createDatabaseIfNotExist is not working for databases with hyphen in name.
 | |
|     Thanks to Lukasz Sanek for his contribution.
 | |
| 
 | |
| Version 8.0.26
 | |
| 
 | |
|   - Fix for Bug#32954396, EXECUTEQUERY HANGS WITH USECURSORFETCH=TRUE & SETFETCHSIZE.
 | |
| 
 | |
|   - Fix for Bug#102372 (32459408), v8.0.23 unusable in OSGi.
 | |
| 
 | |
|   - Fix for Bug#25554464, CONNECT FAILS WITH NPE WHEN THE SERVER STARTED WITH CUSTOM COLLATION.
 | |
| 
 | |
|   - Fix for Bug#100606 (31818423), UNECESARY CALL TO "SET NAMES 'UTF8' COLLATE 'UTF8_GENERAL_CI'".
 | |
|     Thanks to Marc Fletcher for his contribution.
 | |
| 
 | |
|   - Fix for Bug#102404 (32435618), CONTRIBUTION: ADD TRACK SESSION STATE CHANGE.
 | |
|     Thanks to William Lee for his contribution.
 | |
| 
 | |
|   - Fix for Bug#95280 (29757140), DATABASEMETADATA.GETIMPORTEDKEYS RETURNS DOUBLE THE ROWS.
 | |
|     Thanks to Miron Balcerzak for his contribution.
 | |
| 
 | |
|   - Fix for Bug#97269 (30438500), POSSIBLE BUG IN COM.MYSQL.CJ.XDEVAPI.STREAMINGDOCRESULTBUILDER.
 | |
| 
 | |
|   - Fix for Bug#103303 (32766143), JAVA.LANG.CLASSCASTEXCEPTION WHEN INSERTING BLOB WITH SERVER PREPARED STATEMENT.
 | |
| 
 | |
|   - WL#14205, Support query attributes.
 | |
| 
 | |
|   - WL#14411, Support for authentication_kerberos_client authentication plugin.
 | |
| 
 | |
|   - WL#14559, Deprecate TLS 1.0 and 1.1.
 | |
| 
 | |
|   - WL#14391, Migrate QA tests to WorkoutDatesUpdater repo.
 | |
| 
 | |
| Version 8.0.25
 | |
| 
 | |
|   - This release contains no functional changes and is published to align the version number with the MySQL Server 8.0.25 release.
 | |
| 
 | |
| Version 8.0.24
 | |
| 
 | |
|   - Fix for Bug#102188 (32526663), AccessControlException with AuthenticationLdapSaslClientPlugin.
 | |
| 
 | |
|   - Fix for Bug#22508715, SETSESSIONMAXROWS() CALL ON CLOSED CONNECTION RESULTS IN NPE.
 | |
| 
 | |
|   - Fix for Bug#102131 (32338451), UPDATABLERESULTSET NPE WHEN USING DERIVED QUERIES OR VIEWS.
 | |
| 
 | |
|   - Fix for Bug#101596 (32151143), GET THE 'HOST' PROPERTY ERROR AFTER CALLING TRANSFORMPROPERTIES() METHOD.
 | |
| 
 | |
|   - Fix for Bug#20391832, SETOBJECT() FOR TYPES.TIME RESULTS IN EXCEPTION WHEN VALUE HAS FRACTIONAL PART.
 | |
| 
 | |
|   - Fix for Bug#97730 (31699993), xdev api: ConcurrentModificationException at Session.close.
 | |
| 
 | |
|   - Fix for Bug#99708 (31510398), mysql-connector-java 8.0.20 ASSERTION FAILED: Unknown message type: 57 s.close.
 | |
| 
 | |
|   - Fix for Bug#32122553, EXTRA BYTE IN COM_STMT_EXECUTE.
 | |
| 
 | |
|   - Fix for Bug#101558 (32141210), NULLPOINTEREXCEPTION WHEN EXECUTING INVALID QUERY WITH USEUSAGEADVISOR ENABLED.
 | |
| 
 | |
|   - Fix for Bug#102076 (32329915), CONTRIBUTION: MYSQL JDBC DRIVER RESULTSET.GETLONG() THROWS NUMBEROUTOFRANGE.
 | |
| 
 | |
|   - Fix for Bug#31747910, BUG 30474158 FIX IMPROVES JDBC COMPLIANCE BUT CHANGES DEFAULT RESULTSETTYPE HANDLING.
 | |
| 
 | |
|   - Fix for Bug#102321 (32405590), CALLING RESULTSETMETADATA.GETCOLUMNCLASSNAME RETURNS WRONG VALUE FOR DATETIME.
 | |
| 
 | |
|   - WL#14453, Pluggable authentication: new default behavior & user-less authentications.
 | |
| 
 | |
|   - WL#14392, Improve timeout error messages [classic].
 | |
| 
 | |
|   - WL#14202, XProtocol: Support connection close notification.
 | |
| 
 | |
| Version 8.0.23
 | |
| 
 | |
|   - Fix for Bug#21789378, FORCED TO SET SERVER TIMEZONE IN CONNECT STRING.
 | |
| 
 | |
|   - Fix for Bug#95644 (30573281), JDBC GETDATE/GETTIME/GETTIMESTAMP INTERFACE BEHAVIOR CHANGE AFTER UPGRADE 8.0.
 | |
| 
 | |
|   - Fix for Bug#94457 (29402209), CONNECTOR/J RESULTSET.GETOBJECT( ..., OFFSETDATETIME.CLASS ) THROWS.
 | |
| 
 | |
|   - Fix for Bug#76775 (20959249), FRACTIONAL SECONDS IN TIME VALUES ARE NOT AVAILABLE VIA JDBC.
 | |
| 
 | |
|   - Fix for Bug#99013 (31074051), AN EXTRA HOUR GETS ADDED TO THE TIMESTAMP WHEN SUBTRACTING INTERVAL 'N' DAYS.
 | |
| 
 | |
|   - Fix for Bug#98695 (30962953), EXECUTION OF "LOAD DATA LOCAL INFILE" COMMAND THROUGH JDBC FOR DATETIME COLUMN.
 | |
| 
 | |
|   - Fix for Bug#101413 (32099505), JAVA.TIME.LOCALDATETIME CANNOT BE CAST TO JAVA.SQL.TIMESTAMP.
 | |
| 
 | |
|   - Fix for Bug#101242 (32046007), CANNOT USE BYTEARRAYINPUTSTREAM AS ARGUMENTS IN PREPARED STATEMENTS ANYMORE.
 | |
|     Thanks to Martynas Puronas for his contribution.
 | |
| 
 | |
|   - WL#14274, Support for authentication_ldap_sasl_client(SCRAM-SHA-256) authentication plugin.
 | |
| 
 | |
|   - WL#14206, Support for authentication_ldap_sasl_client(GSSAPI) authentication plugin.
 | |
| 
 | |
|   - WL#14207, Replace language in APIs and source code/docs.
 | |
| 
 | |
| Version 8.0.22
 | |
| 
 | |
|   - Fix for Bug#98667 (31711961), "All pipe instances are busy" exception on multiple connections to named Pipe.
 | |
| 
 | |
|   - Fix for Bug#96309 (31699357), MultiHost in loadbalance may lead to a TPS reduction during a quick switch.
 | |
| 
 | |
|   - Fix for Bug#99076 (31083755), Unclear exception/error when connecting with jdbc:mysql to a mysqlx port.
 | |
| 
 | |
|   - Fix for Bug#96870 (30304764), Contribution: Allow to disable AbandonedConnectionCleanupThread completely.
 | |
|     Thanks to Andrey Turbanov for his contribution.
 | |
| 
 | |
|   - WL#14115, Support for authentication_ldap_sasl_client(SCRAM-SHA-1) authentication plugin.
 | |
| 
 | |
|   - WL#14096, Add option to specify LOAD DATA LOCAL allow list folder.
 | |
| 
 | |
|   - WL#13780, Skip system-wide trust and key stores (incl. X DevAPI client certs).
 | |
| 
 | |
|   - WL#14017, XProtocol -- support for configurable compression algorithms.
 | |
| 
 | |
|   - Fix for Bug#92903 (28834903), MySQL Connector/j should support wildcard names or alternative names.
 | |
| 
 | |
|   - Fix for Bug#99767 (31443178), Contribution: Check SubjectAlternativeName for TLS instead of commonName.
 | |
|     Thanks to Daniël van Eeden for his contribution.
 | |
| 
 | |
|   - Fix for Bug#93444 (29015453), LOCALDATETIME PARAMETER VALUES ALTERED WHEN CLIENT AND SERVER TIMEZONES DIFFER.
 | |
|     Thanks to Iwao Abe for his contribution.
 | |
| 
 | |
|   - WL#14052, Remove asynchronous variant of X Protocol.
 | |
| 
 | |
|   - Fix for Bug#99713 (31418928), NPE DURING COM.MYSQL.CJ.SERVERPREPAREDQUERYBINDVALUE.STOREDATE().
 | |
| 
 | |
|   - WL#14068, Remove legacy integration with JBoss.
 | |
| 
 | |
| Version 8.0.21
 | |
| 
 | |
|   - WL#14051, Upgrade Protocol Buffers dependency to protobuf-java-3.11.4.
 | |
| 
 | |
|   - WL#14042, Upgrade testsuite to JUnit 5.
 | |
| 
 | |
|   - Fix for Bug#98237 (30911870), PREPAREDSTATEMENT.SETOBJECT(I, "FALSE", TYPES.BOOLEAN) ALWAYS SETS TRUE OR 1.
 | |
| 
 | |
|   - WL#13008, DevAPI: Add schema validation to create collection.
 | |
| 
 | |
| Version 8.0.20
 | |
| 
 | |
|   - Fix for Bug#30805426, IN CASE OF ISAUTHMETHODSWITCHREQUESTPACKET , TOSERVERS > 1 ARE IGNORED.
 | |
| 
 | |
|   - Fix for Bug#97714 (30570249), Contribution: Expose elapsed time for query interceptor to avoid hacky thread local implementations.
 | |
|     Thanks to Matti Sillanpää and Johnathan Crawford for their contribution.
 | |
| 
 | |
|   - Fix for Bug#97724 (30570721), Contribution: Allow \'3.\' formatted numbers.
 | |
|     Thanks to Nick Pollett for his contribution.
 | |
| 
 | |
|   - Fix for Bug#98536 (30877755), SIMPLEDATEFORMAT COULD CACHE A WRONG CALENDAR.
 | |
| 
 | |
|   - Fix for Bug#91112 (28125069), AGAIN WRONG JAVA.SQL.DATE.
 | |
| 
 | |
|   - Fix for Bug#30474158, CONNECTOR/J 8 DOES NOT HONOR THE REQUESTED RESULTSETTYPE SCROLL_INSENSITIVE ETC.
 | |
| 
 | |
|   - Fix for Bug#98445 (30832513), Connection option clientInfoProvider=ClientInfoProviderSP causes NPE.
 | |
| 
 | |
|   - WL#12248, DevAPI: Connection compression.
 | |
| 
 | |
|   - Fix for Bug#30636056, ResultSetUtil.resultSetToMap() can be unsafe to use.
 | |
| 
 | |
|   - Fix for Bug#97757 (30584907), NULLPOINTEREXCEPTION WITH CACHERESULTSETMETADATA=TRUE AND EXECUTEQUERY OF "SET".
 | |
| 
 | |
| Version 8.0.19
 | |
| 
 | |
|   - WL#13346, Support for mult-host and failover.
 | |
| 
 | |
|   - Fix for Bug#97413 (30477722), DATABASEMETADATA IS BROKEN AFTER SERVER WL#13528.
 | |
| 
 | |
|   - WL#13367, DNS SRV support.
 | |
| 
 | |
|   - WL#12736, DevAPI: Specify TLS ciphers to be used by a client or session.
 | |
| 
 | |
|   - Fix for regression tests broken by Bug#97079 fix.
 | |
| 
 | |
|   - Fix for Bug#96383 (30119545) RS.GETTIMESTAMP() HAS DIFFERENT RESULTS FOR TIME FIELDS WITH USECURSORFETCH=TRUE.
 | |
| 
 | |
|   - Fix for Bug#96059 (29999318), ERROR STREAMING MULTI RESULTSETS WITH MYSQL-CONNECTOR-JAVA 8.0.X.
 | |
| 
 | |
|   - Fix for Bug#96442 (30151808), INCORRECT DATE ERROR WHEN CALLING GETMETADATA ON PREPARED STATEMENT.
 | |
| 
 | |
| Version 8.0.18
 | |
| 
 | |
|   - WL#13347, Connectors should handle expired password sandbox without SET operations.
 | |
| 
 | |
|   - Fix for Bug#84098 (25223123), endless loop in LoadBalancedAutoCommitInterceptor.
 | |
| 
 | |
|   - Fix for Bug#23721537, MULTI-SELECT WITH EXECUTEASYNC() GIVES IMPROPER ERROR.
 | |
| 
 | |
|   - Fix for Bug#95741 (29898567), METADATA QUERY USES UPPER() AROUND NUMERIC EXPRESSION.
 | |
| 
 | |
|   - Fix for Bug#20913289, PSTMT.EXECUTEUPDATE() FAILS WHEN SQL MODE IS NO_BACKSLASH_ESCAPES.
 | |
| 
 | |
|   - Fix for Bug#80441 (22850444), SYNTAX ERROR ON RESULTSET.UPDATEROW() WITH SQL_MODE NO_BACKSLASH_ESCAPES.
 | |
| 
 | |
| Version 8.0.17
 | |
| 
 | |
|   - WL#13210, Generate Javadocs via ant.
 | |
| 
 | |
|   - WL#12247, DevAPI: indexing array fields.
 | |
| 
 | |
|   - WL#12726, DevAPI: Add overlaps and not_overlaps as operator.
 | |
| 
 | |
|   - Fix for Bug#95503 (29821029), Operator IN not mapping consistently to the right X Plugin operation.
 | |
| 
 | |
|   - WL#12942, Update README.md and add new CONTRIBUTING.md.
 | |
| 
 | |
|   - WL#13125, Support fully qualified hostnames longer than 60 characters.
 | |
| 
 | |
|   - Fix for Bug#95210 (29807741), ClassCastException in BlobFromLocator when connecting as jdbc:mysql:replication.
 | |
| 
 | |
|   - Fix for Bug#29591275, THE JAR FILE NEEDS TO CONTAIN A README AND LICENSE FILE.
 | |
| 
 | |
|   - WL#13124, Support new utf8mb4 bin collation.
 | |
| 
 | |
|   - WL#13009, DevAPI: Deprecate methods.
 | |
| 
 | |
|   - WL#11101, Remove de-cache and close of SSPSs on double call to close().
 | |
| 
 | |
|   - Fix for Bug#89133 (27356869)  CONTRIBUTION: UPDATE DATABASEMETADATA.JAVA.
 | |
|     Thanks to Harald Aamot for his contribution.
 | |
| 
 | |
|   - Fix for Bug#11891000, DABATASEMETADATA.GETTABLES() IGNORES THE SCHEMA_PATTERN ARGUMENT.
 | |
| 
 | |
|   - Fix for Bug#94101 (29277648), SETTING LOGSLOWQUERIES SHOULD NOT AUTOMATICALLY ENABLE PROFILESQL FOR QUERIES.
 | |
|     Thanks to Florian Agsteiner for the contribution.
 | |
| 
 | |
|   - Fix for Bug#74690 (20010454), PROFILEREVENT HOSTNAME HAS NO GETTER().
 | |
| 
 | |
|   - Fix for Bug#70677 (17640628), CONNECTOR J WITH PROFILESQL - LOG CONTAINS LOTS OF STACKTRACE DATA.
 | |
| 
 | |
|   - Fix for Bug#41172 (11750577), PROFILEREVENT.PACK() THROWS ARRAYINDEXOUTOFBOUNDSEXCEPTION.
 | |
| 
 | |
|   - Fix for Bug#27453692, CHARACTERS GET GARBLED IN CONCAT() IN PS WHEN USECURSORFETCH=TRUE.
 | |
| 
 | |
|   - Fix for Bug#94585 (29452669), GETTABLENAME() RETURNS NULL FOR A QUERY HAVING COUNT(*) WITH JDBC DRIVER V8.0.12.
 | |
| 
 | |
|   - Fix for Bug#94533 (29446100), GETOBJECT FOR BOXED PRIMITIVE TYPES DOESN'T RETURN NULL FOR NULL COLUMNS.
 | |
| 
 | |
|   - Fix for Bug#94442 (29446059), RESULTSETIMPL.GETDOUBLE IS INEFFICIENT BECAUSE OF BIGDECIMAL (RE)CONSTRUCTIONS.
 | |
| 
 | |
| Version 8.0.16
 | |
| 
 | |
|   - WL#12825, Remove third-party libraries from sources and bundles.
 | |
| 
 | |
|   - Fix for Bug#93590 (29054329), javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify.
 | |
| 
 | |
|   - Fix for Bug#94414 (29384853), Connector/J RPM package have version number in path.
 | |
| 
 | |
|   - Fix for Bug#27786499, REDUNDANT FILES IN DEBIAN PACKAGE FOR DEBIAN9(COMMUNITY PACKAGE) FOR CJAVA.
 | |
| 
 | |
|   - WL#12246, DevAPI: Prepared statement support.
 | |
| 
 | |
|   - WL#10839, Adjust c/J tests to the new "ON" default for explicit_defaults_for_timestamp.
 | |
| 
 | |
|   - Fix for Bug#29329326, PLEASE AVOID SHOW PROCESSLIST IF POSSIBLE.
 | |
| 
 | |
|   - WL#12460, DevAPI: Support new session reset functionality.
 | |
| 
 | |
|   - WL#12459, DevAPI: Support connection-attributes.
 | |
| 
 | |
|   - Fix for Bug#25650385, GETBYTE() RETURNS ERROR FOR BINARY() FLD.
 | |
| 
 | |
|   - Fix for Bug#27784363, MYSQL 8.0 JDBC DRIVER THROWS NUMBERFORMATEXCEPTION FOR TEXT DATA
 | |
| 
 | |
|   - Fix for Bug#93007 (28860051), LoadBalancedConnectionProxy.getGlobalBlacklist bug.
 | |
| 
 | |
|   - Fix for Bug#29186870, CONNECTOR/J REGRESSION: NOT RETURNING PRECISION GETPROCEDURECOLUMNS.
 | |
| 
 | |
|   - Fix for Bug#22038729, X DEVAPI: ANY API CALL AFTER A FAILED CALL PROC() RESULTS IN HANG.
 | |
| 
 | |
|   - Fix for Bug#29244101, ADD MAPPING FOR UTF8MB4_ZH_0900_AS_CS COLLATION.
 | |
| 
 | |
|   - Fix for Bug#92819 (28834959), EXPRPARSER THROWS WRONGARGUMENTEXCEPTION WHEN PARSING EMPTY JSON ARRAY.
 | |
| 
 | |
|   - Fix for Bug#21921956, X DEVAPI: EXPRESSION PARSE ERROR WITH UNARY OPERATOR.
 | |
| 
 | |
|   - Fix for Bug#94031 (29257922), WRONG JSON_UNQUOTE WORKAROUND.
 | |
| 
 | |
|   - Fix for Bug#22931700, BINDINGS.GETBOOLEAN() ALWAYS RETURNS FALSE.
 | |
| 
 | |
|   - Fix for Bug#25650912, ERROR MESSAGE NOT CLEAR WHEN WE PASS A CHAR DATA TO ANY TABLE API.
 | |
| 
 | |
|   - Fix for Bug#25642021, CHANGEUSER() FAILS WHEN ENABLEPACKETDEBUG=TRUE.
 | |
| 
 | |
| Version 8.0.15
 | |
| 
 | |
|   - Fix for Bug#94051 (29261254), Not recommended default for 'allowLoadLocalInfile'.
 | |
| 
 | |
| Version 8.0.14
 | |
| 
 | |
|   - WL#12298, Connectors: Expose metadata about source and binaries in unified way.
 | |
| 
 | |
|   - Fix for Bug#93111 (28894344), ConnectionUrl.java contains char U+00A7 (section sign).
 | |
| 
 | |
|   - WL#12621, DevAPI: Handling of Default Schema.
 | |
| 
 | |
|   - Fix for Bug#93340 (28970166), C/J BUILD SCRIPT IS TOO VERBOSE
 | |
| 
 | |
|   - WL#12462, DevAPI: Be prepared for initial notice on connection.
 | |
| 
 | |
|   - Fix for Bug#28924137, WL#12463:IF COLLECTION DOESN'T EXIST, COLL.COUNT() IS GIVING A WRONG ERROR MESSAGE.
 | |
| 
 | |
|   - WL#12463, DevAPI: Standardize count method.
 | |
| 
 | |
|   - Fix for Bug#92508 (28747636), mysql-connector in bootclasspath causing memory leak.
 | |
| 
 | |
|   - Fix for Bug#25650514, UPDATEROW() CALL FAILS WITH NPE WHEN SSPS=TRUE AND TABLE HAS MULTI-FLD KEY.
 | |
| 
 | |
|   - Fix for Bug#25650482, REFRESHROW() CALL AFTER UPDATEROW() API FAILS WHEN USESERVERPREPSTMTS=TRUE.
 | |
| 
 | |
|   - Fix for Bug#92536 (28692243), UPDATEING SERVER SIDE PREPSTMTS RESULTSET FAIL.
 | |
| 
 | |
|   - Fix for Bug#92625 (28731795), CONTRIBUTION: FIX OBSERVED NPE IN CLEARINPUTSTREAM.
 | |
|     Thanks to Henning Schmiedehausen for his contribution.
 | |
| 
 | |
|   - Fix for Bug#23045642, ADDING NO-DOC (MYSQLCONNJ-696) RESULTS IN EXCEPTION.
 | |
| 
 | |
|   - Fix for Bug#91065 (28101003), ZERODATETIMEBEHAVIOR=CONVERT_TO_NULL SHOULD NOT APPLY TO 00:00:00 TIME COLUMNS.
 | |
| 
 | |
|   - Fix for Bug#92574 (28706219), WHEN CONVERTING FROM VARCHAR TO JAVA BOOLEAN, 'N' IS NOT SUPPORTED.
 | |
| 
 | |
|   - Fix for Bug#25642226, CHANGEUSER() NOT SETTING THE DATABASE PROPERLY WITH SHA USER.
 | |
| 
 | |
|   - Fix for Bug#28606708, NAMED PIPE CONNECTION FOR X PROTOCOL RETURNS NPE, EXPECTED PROPER ERROR MESSAGE.
 | |
| 
 | |
| Version 8.0.13
 | |
| 
 | |
|   - Fix for Bug#91317 (28207422), Wrong defaults on collation mappings.
 | |
| 
 | |
|   - WL#12245, DevAPI: Implement connect timeout.
 | |
| 
 | |
|   - Fix for Bug#21774249, UNIT TEST FAILS WITH ERROR " 'CEST' IS UNRECOGNIZED TIME ZONE".
 | |
| 
 | |
|   - WL#11857, DevAPI: Implement connection pooling for xprotocol.
 | |
| 
 | |
|   - Fix for Bug#91873 (28444461), REMOVE USEOLDUTF8BEHAVIOR CONNECTION PROPERTY.
 | |
| 
 | |
|   - Fix for Bug#92264 (28594434), JSONPARSER PUTS UNNECESSARY MAXIMUM LIMIT ON JSONNUMBER TO 10 DIGITS.
 | |
| 
 | |
|   - WL#12110, Extend PropertyDefinitions.PropertyKey usage.
 | |
| 
 | |
|   - Fix for Bug#81063 (23098159), w/ rewriteBatchedStatements, when 2 tables involved, the rewriting not correct.
 | |
| 
 | |
|   - Fix for Bug#84813 (25501750), rewriteBatchedStatements fails in INSERT.
 | |
| 
 | |
|   - Fix for Bug#81196 (23227334), CONNECTOR/J NOT FOLLOWING DATABASE CHARACTER SET.
 | |
| 
 | |
|   - Fix for Bug#72609 (18749544), SETDATE() NOT USING A PROLEPTIC GREGORIAN CALENDAR.
 | |
| 
 | |
|   - Fix for Bug#87534 (26730196), UNION ALL query fails when useServerPrepStmts=true on database connection.
 | |
|     Test case only. Base bug fixed in MySQL 5.7.22.
 | |
| 
 | |
|   - Fix for Bug#89948 (27658489), Batched statements are not committed for useLocalTransactionState=true.
 | |
| 
 | |
|   - Fix for BUG#22305979, WRONG RECORD UPDATED IF SENDFRACTIONALSECONDS=FALSE AND SMT IS SCROLLABLE.
 | |
| 
 | |
|   - Fix for Bug#27102307, CHANGE USESSL AND VERIFYSERVERCERTIFICATE TO SSLMODE OPTION.
 | |
| 
 | |
|   - Fix for Bug#28150662, CONNECTOR/J 8 MALFORMED DATABASE URL EXCEPTION WHIT CORRECT URL STRING.
 | |
| 
 | |
|   - Fix for Bug#91421 (28246270), ALLOWED VALUES FOR ZERODATETIMEBEHAVIOR ARE INCOMPATIBLE WITH NETBEANS.
 | |
| 
 | |
|   - Fix for Bug#23045604, XSESSION.GETURI() RETURNS NPE.
 | |
| 
 | |
|   - Fix for Bug#21914769, NPE WHEN TRY TO EXECUTE INVALID JSON STRING.
 | |
| 
 | |
|   - Fix for Bug#BUG#90887 (28034570), DATABASEMETADATAUSINGINFOSCHEMA#GETTABLES FAILS IF METHOD ARGUMENTS ARE NULL.
 | |
| 
 | |
|   - Fix for Bug#28207088, C/JAVA: UPDATECLOB(INT COLUMNLABEL, JAVA.SQL.CLOB CLOB) IS FAILING.
 | |
| 
 | |
|   - Fix for Bug#27629553, NPE FROM GETSESSION() FOR SSL CONNECTION WHEN NO PASSWORD PASSED.
 | |
| 
 | |
| Version 8.0.12
 | |
| 
 | |
|   - Fix for Bug#28208000, MASTER : HANG IN ASYNCHRONOUS SELECT TEST.
 | |
| 
 | |
|   - WL#10544, Update MySQL 8.0 keywords list.
 | |
| 
 | |
|   - WL#11858, DevAPI: Core API v1 alignment.
 | |
| 
 | |
|   - Fix for Bug#27652379, NPE FROM GETSESSION(PROPERTIES) WHEN HOST PARAMETER IS GIVEN IN SMALL LETTER.
 | |
| 
 | |
|   - Fix for BUG#87600 (26724154), CONNECTOR THROWS 'MALFORMED DATABASE URL' ON NON MYSQL CONNECTION-URLS.
 | |
| 
 | |
|   - Fix for BUG#26089880, GETCONNECTION("MYSQLX://..") RETURNS NON-X PROTOCOL CONNECTION.
 | |
| 
 | |
|   - WL#11876, Improve connection properties design.
 | |
| 
 | |
|   - WL#11933, Connector/J 8.0 X DevAPI reference documentation update.
 | |
| 
 | |
|   - WL#11860, Ensure >= 75% code coverage.
 | |
| 
 | |
|   - Fix for Bug#90753 (27977617), WAIT_TIMEOUT EXCEEDED MESSAGE NOT TRIGGERED.
 | |
| 
 | |
|   - Fix for Bug#85941 (25924324), WASNULL NOT SET AFTER GETBYTES IS CALLED.
 | |
| 
 | |
|   - Fix for Bug#28066709, COLLECTION.CREATEINDEX() TEST IS BROKEN AFTER WL#11808 IMPLEMENTATION.
 | |
| 
 | |
|   - Fix for Bug#90872 (28027459), FILTERPARAMS CLASS IS NOT NEEDED.
 | |
| 
 | |
|   - Fix for Bug#27522054, POSSIBLE ASYNC XPROTOCOL MESSAGE HANDLING PERF ISSUE.
 | |
|     The "xdevapi.useAsyncProtocol" connection property default value is changed to "false".
 | |
| 
 | |
| Version 8.0.11
 | |
| 
 | |
|   - WL#11293, DevAPI: Support new locking modes : NOWAIT and SKIP LOCKED.
 | |
| 
 | |
|   - Fix for Bug#90029 (27678308), FAILURE WHEN GETTING GEOMCOLLECTION COLUMN TYPE.
 | |
| 
 | |
|   - Fix for BUG#90024 (27677574), SOME TESTS FAILED AGAINST MYSQL 8.0.5 BECAUSE OF DEPRECATED FEATURES REMOVAL.
 | |
| 
 | |
|   - Fix for Bug#86741 (26314325), Multi-Host connection with autocommit=0 getAutoCommit maybe wrong.
 | |
| 
 | |
|   - Fix for Bug#27231383, PROVIDE MAVEN-FRIENDLY COMMERCIAL PACKAGES WITHOUT "-BIN".
 | |
| 
 | |
|   - Fix for Bug#26819691, SETTING PACKETDEBUGBUFFERSIZE=0 RESULTS IN CONNECTION FAILURE.
 | |
| 
 | |
|   - Fix for Bug#88227 (27029657), Connector/J 5.1.44 cannot be used against MySQL 5.7.20 without warnings.
 | |
| 
 | |
|   - Fix for Bug#27374581, CONNECTION FAILS WHEN GPL SERVER STARTED WITH TLS-VERSION=TLSV1.2.
 | |
| 
 | |
|   - WL#11419, DevAPI: New document _id generation support.
 | |
| 
 | |
|   - WL#11620, Change caching_sha2_password padding.
 | |
| 
 | |
|   - WL#11604, DevAPI: Add SHA256_MEMORY support.
 | |
| 
 | |
|   - Fix for BUG#86278 (26092824), SUPPORT CUSTOM CONSTRUCTION OF SSLSOCKET DURING CONNECTION ESTABLISHMENT.
 | |
| 
 | |
|   - Fix for BUG#27226293, JSONNUMBER.GETINTEGER() & NUMBERFORMATEXCEPTION.
 | |
| 
 | |
|   - WL#10527, Clean up Protocol and Session interfaces.
 | |
| 
 | |
| Version 8.0.10
 | |
| 
 | |
|   - (Skipped version number to align versions between components and server)
 | |
| 
 | |
| Version 8.0.9
 | |
| 
 | |
|   - WL#11469, Update license header in GPL packages.
 | |
| 
 | |
|   - Fix for BUG#27247349, WL#11208 : UNIQUE DOES NOT GIVE ERROR EVEN THOUGH IT IS NOT SUPPORTED.
 | |
| 
 | |
|   - WL#11208, DevAPI: Collection.createIndex.
 | |
| 
 | |
|   - WL#10156, Add setters/getters for connection properties to MysqlDataSource, MysqlXADataSource and MysqlConnectionPoolDataSource.
 | |
| 
 | |
|   - WL#11401, DevAPI: Remove configuration API.
 | |
|     Partial revert of "WL#9868, DevAPI: Configuration handling interface."
 | |
| 
 | |
|   - WL#10619, Ensure compatibility with new data dictionary.
 | |
| 
 | |
|   - Fix for BUG#27217264, WL#10937: NULL POINTER EXCEPTION WHEN NULL IS PASSED AS _ID IN COLL.REPLACEONE.
 | |
| 
 | |
|   - WL#10937, DevAPI: ReplaceOne, AddOrReplaceOne, GetOne, RemoveOne.
 | |
| 
 | |
|   - Fix for Bug#26723646, JSON_MERGE() FUNCTION IS DEPRECATED IN MYSQL 8.0.
 | |
| 
 | |
|   - Fix for Bug#27185332, WL#11210:ERROR IS THROWN WHEN NESTED EMPTY DOCUMENTS ARE INSERTED TO COLLECTION.
 | |
| 
 | |
|   - Fix for Bug#27151601, WL#11210: DOCUMENT PATCH EXPRESSIONS ARE NOT SUPPORTED.
 | |
| 
 | |
|   - WL#11210, DevAPI: Modify/MergePatch.
 | |
| 
 | |
|   - Fix for Bug#79612 (22362474), CONNECTION ATTRIBUTES LOST WHEN CONNECTING WITHOUT DEFAULT DATABASE.
 | |
| 
 | |
|   - WL#10152, Enable TLSv1.2 on mysqlx.
 | |
| 
 | |
|   - Fix for Bug#27131768, NULL POINTER EXCEPTION IN CONNECTION.
 | |
| 
 | |
|   - Fix for Bug#88232 (27047676), c/J does not rollback transaction when autoReconnect=true.
 | |
| 
 | |
|   - Fix for Bug#88242 (27040063), autoReconnect and socketTimeout JDBC option makes wrong order of client packet.
 | |
| 
 | |
|   - Fix for Bug#88021 (26939943), High GC pressure when driver configured with serversideprepared statements.
 | |
|     Thanks to Johnathan Crawford for his contribution.
 | |
| 
 | |
|   - Fix for Bug#26724085, CHARSET MAPPING TO BE UPDATED FOR MYSQL 8.0.3.
 | |
| 
 | |
|   - Fix for Bug#87704 (26771560), THE STREAM GETS THE RESULT SET ?THE DRIVER SIDE GET WRONG ABOUT GETLONG().
 | |
| 
 | |
|   - Fix for Bug#24924097, SERVER GREETING ERROR ISN'T RECOGNIZED DURING HANDSHAKE.
 | |
| 
 | |
|   - Fix for Bug#26748909, MASTER : ERROR - NO OPERATIONS ALLOWED AFTER STATEMENT CLOSED FOR TOSTRING().
 | |
| 
 | |
|   - Fix for Bug#26266731, CONCUR_UPDATABLE RESULTSET OPERATIONS FAIL AGAINST 8.0 FOR BOOLEAN COLUMN.
 | |
| 
 | |
|   - WL#11239, DevAPI: Remove create table implementation.
 | |
| 
 | |
|   - Fix for Bug#27131100, WL#11212 : SAVEPOINT CREATING WITH EMPTY STRING AND SPACE AS NAME.
 | |
| 
 | |
|   - WL#11212, DevAPI: transaction save-points.
 | |
| 
 | |
|   - WL#11060, Support new SHA-256 authentication system.
 | |
| 
 | |
|   - Fix for Bug#87826 (26846249), MYSQL JDBC CONNECTOR/J DATABASEMETADATA NULL PATTERN HANDLING IS NON-COMPLIANT.
 | |
| 
 | |
|   - WL#11163, Extract parameter setters, serverPrepare() and serverExecute() to core classes.
 | |
| 
 | |
|   - Fix for BUG#26995710, WL#11161 : NULL POINTER EXCEPTION IN EXECUTEBATCH() AND CLOSE().
 | |
| 
 | |
|   - WL#11161, Unify query bindings.
 | |
| 
 | |
|   - WL#8469, Don't extract query text from packets when possible.
 | |
| 
 | |
| Version 8.0.8
 | |
| 
 | |
|   - Fix for BUG#26722030, TEST FAILING DUE TO BINARY LOGGING ENABLED BY DEFAULT IN MYSQL 8.0.3.
 | |
| 
 | |
|   - Fix for BUG#26722018, TESTS FAILING DUE TO CHANGE IN INFORMATION_SCHEMA.INNODB_SYS_* NAMING.
 | |
| 
 | |
|   - Fix for BUG#26750807, MASTER : NULL POINTER EXCEPTION IN SCHEMA.DROPVIEW(NULL).
 | |
| 
 | |
|   - Fix for BUG#26750705, MASTER : ERROR - UNSUPPORTED CONVERSION FROM TIME TO JAVA.SQL.DATE.
 | |
| 
 | |
|   - WL#10620, DevAPI: SHA256 Authentication support.
 | |
| 
 | |
|   - WL#10936, DevAPI: Row locking for Crud.Find.
 | |
| 
 | |
|   - WL#9868, DevAPI: Configuration handling interface.
 | |
| 
 | |
|   - WL#10935, DevAPI: Array or Object "contains" operator.
 | |
| 
 | |
|   - WL#9875, Prepare c/J 8.0 for DEB and RPM builds.
 | |
| 
 | |
|   - Fix for BUG#26259384, CALLABLE STATEMENT GIVES ERROR IN C/JAVA WHEN RUN AGAINST MYSQL 8.0.
 | |
| 
 | |
|   - Fix for Bug#26393132, NULLPOINTEREXCEPTION IS THROWN WHEN TRIED TO DROP A NULL COLLECTION.
 | |
| 
 | |
|   - WL#10532, DevAPI: Cleanup Drop APIs.
 | |
| 
 | |
|   - Fix for Bug#87429 (26633984), repeated close of ServerPreparedStatement causes memory leak.
 | |
|     Thanks to Eduard Gurskiy for his contribution.
 | |
| 
 | |
|   - Fix for Bug#87379 (26646676), Perform actual TLS capabilities check when restricting TLSv1.2.
 | |
|     Thanks to Todd Farmer for his contribution.
 | |
| 
 | |
|   - Fix for Bug#85601 (25777822), Unit notation is missing in the description of the property involved in the time.
 | |
| 
 | |
|   - Fix for Bug#87153 (26501245), INCORRECT RESULT OF DBMD.GETVERSIONCOLUMNS() AGAINST MYSQL 8.0.2+.
 | |
| 
 | |
|   - Fix for Bug#78313 (21931572), proxies not handling Object.equals(Object) calls correctly.
 | |
| 
 | |
|   - Fix for Bug#85885 (25874048), resultSetConcurrency and resultSetType are swapped in call to prepareStatement.
 | |
| 
 | |
|   - Fix for Bug#74932 (20066806), ConnectionImp Doesn't Close Server Prepared Statement (PreparedStatement Leak).
 | |
| 
 | |
|   - WL#10536, Deprecating COM_SHUTDOWN.
 | |
| 
 | |
|   - Fix for Bug#25946965, UPDATE THE TIME ZONE MAPPINGS WITH LATEST TZ DATABASES.
 | |
| 
 | |
|   - Fix for Bug#20182108, INCLUDE CUSTOM LOAD BALANCING STRATEGY USING PLUGIN API.
 | |
|     New load-balancing strategy "serverAffinity" and new connection property "serverAffinityOrder" added.
 | |
| 
 | |
|   - Fix for Bug#26440544, CONNECTOR/J SHOULD NOT USE TX_{READ_ONLY,ISOLATION} WHICH IS PLANNED FOR REMOVAL.
 | |
| 
 | |
|   - Fix for Bug#26399958, UNABLE TO CONNECT TO MYSQL 8.0.3.
 | |
| 
 | |
|   - Fix for Bug#25650305, GETDATE(),GETTIME() AND GETTIMESTAMP() CALL WITH NULL CALENDAR RETURNS NPE.
 | |
| 
 | |
| Version 8.0.7
 | |
| 
 | |
|   - Fix for Bug#26227653, WL#10528 DIFF BEHAVIOUR WHEN SYSTEM PROP JAVAX.NET.SSL.TRUSTSTORETYPE IS SET.
 | |
| 
 | |
|   - WL#10528, DevAPI: Ensure all connectors are secure by default.
 | |
| 
 | |
|   - WL#8305, Remove internal dependency on connection objects.
 | |
| 
 | |
|   - Fix for Bug#22972057, X DEVAPI: CLIENT HANGS AFTER CONNECTION FAILURE.
 | |
| 
 | |
|   - Fix for Bug#26140577, GIS TESTS ARE FAILING WITH MYSQL 8.0.1.
 | |
| 
 | |
|   - WL#10765, DevAPI: Forbid modify() and remove() with no condition.
 | |
| 
 | |
|   - Fix for Bug#26090721, CONNECTION FAILING WHEN SERVER STARTED WITH COLLATION UTF8MB4_DE_PB_0900_AI_CI.
 | |
| 
 | |
|   - WL#10781, enum-based connection properties.
 | |
| 
 | |
|   - Fix for Bug#73775 (19531384), DBMD.getProcedureColumns()/.getFunctionColumns() fail to filter by columnPattern.
 | |
| 
 | |
|   - Fix for Bug#84324 (25321524), CallableStatement.extractProcedureName() not work when catalog name with dash.
 | |
| 
 | |
|   - Fix for Bug#79561 (22333996), NullPointerException when calling a fully qualified stored procedure.
 | |
| 
 | |
|   - Fix for Bug#84783 (25490163), query timeout is not working(thread hang).
 | |
| 
 | |
|   - Fix for Bug#70704 (17653733), Deadlock using UpdatableResultSet.
 | |
| 
 | |
|   - Fix for Bug#66430 (16714868), setCatalog on connection leaves ServerPreparedStatement cache for old catalog.
 | |
| 
 | |
|   - Fix for Bug#70808 (17757070), Set sessionVariables in a single query.
 | |
| 
 | |
|   - Fix for Bug#77192 (21170603), Description for the Property replicationConnetionGroup Missing from the Manual.
 | |
| 
 | |
|   - Fix for Bug#83834 (25101890), Typo in Connector/J error message.
 | |
| 
 | |
|   - WL#10531, Support utf8mb4 as default charset.
 | |
| 
 | |
|   - Fix for Bug#85555 (25757019), useConfigs Can't find configuration template named, in mysql-connector-java 6.x
 | |
| 
 | |
|   - WL#10529, Move version number to 8.0.
 | |
| 
 | |
|   - WL#10530, DevAPI: Remove XSession, rename NodeSession to Session.
 | |
| 
 | |
|   - Fix for Bug#23510958, CONCURRENT ASYNC OPERATIONS RESULT IN HANG.
 | |
| 
 | |
|   - Fix for Bug#23597281, GETNODESESSION() CALL WITH SSL PARAMETERS RETURNS CJCOMMUNICATIONSEXCEPTION.
 | |
| 
 | |
|   - Fix for Bug#25207784, C/J DOESN'T FOLLOW THE FINAL X DEVAPI MY-193 SPECIFICATION.
 | |
| 
 | |
|   - Fix for Bug#25494338, ENABLEDSSLCIPHERSUITES PARAMETER NOT WORKING AS EXPECTED WITH X-PLUGIN.
 | |
| 
 | |
|   - Fix for Bug#84084 (25215008), JAVA.LANG.ARRAYINDEXOUTOFBOUNDSEXCEPTION ON ATTEMPT TO GET VALUE FROM RESULTSET.
 | |
| 
 | |
|   - WL#10553, Add mapping for Japanese utf8mb4 collation.
 | |
| 
 | |
|   - Fix for Bug#25575103, NPE FROM CREATETABLE() WHEN SOME OF THE INPUTS ARE NULL.
 | |
| 
 | |
|   - Fix for Bug#25575156, NPE FROM CREATEVIEW() WHEN SOME OF THE INPUTS ARE NULL.
 | |
| 
 | |
|   - Fix for Bug#25636947, CONNECTION USING MYSQL CLIENT FAILS IF WE USE THE SSL CERTIFICATES FROM C/J SRC.
 | |
| 
 | |
|   - Fix for Bug#25687718, INCORRECT TIME ZONE IDENTIFIER IN STATEMENTREGRESSIONTEST.
 | |
| 
 | |
|   - Fix for Bug#25556597, RESULTSETTEST.TESTPADDING UNIT TEST IS FAILING IN 5.1.41 RELEASE PACKAGE.
 | |
| 
 | |
|   - Fix for Bug#25517837, CONNECT PERFORMNACE DEGRADED BY 10% IN 5.1.41.
 | |
| 
 | |
|   - Fix for Bug#25504578, CONNECT FAILS WHEN CONNECTIONCOLLATION=ISO-8859-13.
 | |
| 
 | |
|   - Fix for Bug#25438355, Improper automatic deserialization of binary data.
 | |
| 
 | |
|   - Fix for Bug#70785 (17756825), MySQL Connector/J inconsistent init state for autocommit.
 | |
|     Property 'elideSetAutoCommits' is temporarily disabled due to Bug#66884. Defaults to 'false' until this bug is fixed.
 | |
| 
 | |
|   - Fix for Bug#75615 (21181249), Incorrect implementation of Connection.setNetworkTimeout().
 | |
| 
 | |
|   - Fix for Bug#81706 (23535001), NullPointerException in driver.
 | |
| 
 | |
|   - Fix for Bug#83052 (25048543), static method in com.mysql.jdbc.Util relies on null object.
 | |
| 
 | |
|   - Fix for Bug#69526 (17035755), 'Abandoned connection cleanup thread' at mysql-connector-java-5.1.25.
 | |
| 
 | |
|   - Fix for Bug#82826 (24942672), Unneeded version requirement for javax.net.ssl Import-Package on OSGi MANIFEST.MF.
 | |
| 
 | |
| Version 6.0.6
 | |
| 
 | |
|   - Added Core TLS/SSL options for the mysqlx URI scheme.
 | |
| 
 | |
|   - Updated collations map.
 | |
| 
 | |
|   - Fix for Bug#24350526, UNEXPECTED BEHAVIOUR OF IS_NUMBER_SIGNED API IN C/JAVA.
 | |
| 
 | |
|   - Fix for Bug#82707 (24512766), WRONG MILLI SECOND VALUE RETURNED FROM TIMESTAMP COLUMN.
 | |
| 
 | |
|   - Fix for Bug#82005 (23702040), JDBCDATEVALUEFACTORY FAILS TO PARSE SOME DATES.
 | |
| 
 | |
|   - Fix for Bug#83725 (25056803), NPE IN XPROTOCOL.GETPLUGINVERSION() WITH MYSQL 5.7.17.
 | |
| 
 | |
|   - Fix for Bug#24525461, UPDATABLE RESULTSET FEATURE FAILS WHEN USESERVERPREPSTMTS=TRUE.
 | |
| 
 | |
|   - Fix for Bug#24527173, QUERY EXECUTION USING PREPARED STMT FAILS WHEN USECURSORFETCH=TRUE.
 | |
| 
 | |
|   - Fix for Bug#82964 (24658016), JSR-310 DATA TYPES CREATED THROUGH JAVA.SQL TYPES.
 | |
| 
 | |
|   - Fix for Bug#81202 (23188159), RESULTSETIMPL.GETOBJECT THROWS NULLPOINTEREXCEPTION WHEN FIELD IS NULL.
 | |
| 
 | |
|   - Fix for Bug#22931277, COLUMN.GETTYPE() RETURNS ERROR FOR VALID DATATYPES.
 | |
| 
 | |
|   - Fix for BUG#24471057, UPDATE FAILS WHEN THE NEW VALUE IS OF TYPE DBDOC WHICH HAS ARRAY IN IT.
 | |
| 
 | |
|   - Fix for Bug#81691 (23519211), GETLASTDOCUMENTIDS() DOESN'T REPORT IDS PROVIDED BY USER.
 | |
| 
 | |
|   - Fix for Bug#82826 (24942672), Unneeded version requirement for javax.net.ssl Import-Package on OSGi MANIFEST.MF.
 | |
| 
 | |
| 10-21-16 - Version 6.0.5
 | |
| 
 | |
|   - Fix for BUG#82896 (24613062), Unexpected behavior on attempt to connect to JDBC driver with unsupported URL.
 | |
| 
 | |
|   - Added client-side failover during XSession initialization for multi-router configuration.
 | |
| 
 | |
|   - Removed Extension interface. All extension classes now implement their specific interfaces.
 | |
| 
 | |
|   - Fix for Bug#22988922, GETLENGTH() RETURNS -1 FOR LONGBLOB AND LONGTEXT FIELDS.
 | |
| 
 | |
|   - Fix for Bug#24619829, NEW FAILURES IN C/JAVA UNITTESTS AGAINST MYSQL 8.0.
 | |
| 
 | |
|   - Fix for Bug#75209 (20212882), Set useLocalTransactionState may result in partially committed transaction.
 | |
| 
 | |
|   - Fix for Bug#48346 (11756431), Communications link failure when reading compressed data with compressed=true.
 | |
|     Thanks to Ryosuke Yamazaki for his contribution.
 | |
| 
 | |
|   - Fix for Bug#80631 (22891845), ResultSet.getString return garbled result with json type data.
 | |
|     Thanks to Dong SongLing for his contribution.
 | |
| 
 | |
|   - Fix for Bug#64188 (13702433), MysqlXAConnection.MYSQL_ERROR_CODES_TO_XA_ERROR_CODES is missing XA error codes.
 | |
| 
 | |
|   - Fix for Bug#72632 (18759269), NullPointerException for invalid JDBC URL.
 | |
| 
 | |
|   - Fix for Bug#82115 (23743956), Some exceptions are intercepted twice or fail to set the init cause.
 | |
| 
 | |
|   - Fix for Bug#78685 (21938551), Wrong results when retrieving the value of a BIT column as an integer.
 | |
| 
 | |
|   - Fix for Bug#80615 (22954007), prepared statement leak when rewriteBatchedStatements=true and useServerPrepStmt.
 | |
| 
 | |
|   - Extended X DevAPI with flexible parameter lists.
 | |
|   
 | |
|   - Added a virtual NodeSession to X DevAPI. 
 | |
| 
 | |
| 09-05-16 - Version 6.0.4
 | |
| 
 | |
|   - X DevAPI URL prefix changed from "mysql:x:" to "mysqlx:".
 | |
| 
 | |
|   - Fix for Bug#24301468 X DEVAPI SSL CONNECTION FAILS ON WINDOWS
 | |
| 
 | |
|   - The X DevAPI Table object now represents both database tables and views.
 | |
| 
 | |
|   - Added support for matching against pattern for X DevAPI list_objects calls.
 | |
|     Added Schema.getCollections(String pattern) and Schema.getTables(String pattern) interface methods.
 | |
| 
 | |
|   - Switched to "mysqlx" namespace for X DevAPI StmtExecute messages. This change is incompatible to MySQL server versions < 5.7.14.
 | |
| 
 | |
|   - Fix for Bug#82046 (23743947), MYSQL CONNECTOR JAVA OSGI METADATA BROKEN.
 | |
| 
 | |
|   - Fix for Bug#21690043, CONNECT FAILS WHEN PASSWORD IS BLANK.
 | |
| 
 | |
|   - Fix for Bug#22931433, GETTING VALUE OF BIT COLUMN RESULTS IN EXCEPTION.
 | |
| 
 | |
| 06-17-16 - Version 6.0.3
 | |
| 
 | |
|   - Fix for Bug#23535571, EXCESSIVE MEMORY USAGE WHEN ENABLEPACKETDEBUG=TRUE.
 | |
| 
 | |
|   - Fix for Bug#23212347, ALL API CALLS ON RESULTSET METADATA RESULTS IN NPE WHEN USESERVERPREPSTMTS=TRUE.
 | |
| 
 | |
|   - Fix for Bug#23201930, CLIENT HANG WHEN RSLT CUNCURRENCY=CONCUR_UPDATABLE AND RSLTSET TYPE=FORWARD_ONLY.
 | |
| 
 | |
|   - Fix for Bug#23188498, CLIENT HANG WHILE USING SERVERPREPSTMT WHEN PROFILESQL=TRUE AND USEIS=TRUE.
 | |
| 
 | |
|   - Fix for Bug#22678872, NPE DURING UPDATE WITH FABRIC.
 | |
|     New property 'loadBalanceHostRemovalGracePeriod' sets the grace period when removing hosts from a load-balanced connection.
 | |
| 
 | |
|   - Fix for Bug#71131 (18068303), Poor error message in CallableStatement.java.
 | |
| 
 | |
|   - Fix for Bug#59462 (16736619), ConcurrentModificationException inside ConnectionImpl.closeAllOpenStatements().
 | |
| 
 | |
|   - Fix for Bug#22848249, LOADBALANCECONNECTIONGROUPMANAGER.REMOVEHOST() NOT WORKING AS EXPECTED.
 | |
| 
 | |
|   - Fix for Bug#22730682, ARRAYINDEXOUTOFBOUNDSEXCEPTION FROM CONNECTIONGROUPMANAGER.REMOVEHOST().
 | |
| 
 | |
|   - Fix for Bug#77171 (21181466), On every connect getting sql_mode from server creates unnecessary exception.
 | |
| 
 | |
|   - Fix for Bug#79343 (22353759), NPE in TimeUtil.loadTimeZoneMappings causing server time zone value unrecognized.
 | |
| 
 | |
|   - Fix for Bug#22038729, X DevAPI: Any API call after a failed CALL PROC() results in hang
 | |
| 
 | |
|   - Remove Schema.drop(), Collection.drop() and replaced with X DevAPI's session.dropSchema() and session.dropCollection().
 | |
|     Also added session.dropTable().
 | |
| 
 | |
|   - Fix for Bug#22932078, GETTIMESTAMP() RETURNS WRONG VALUE FOR FRACTIONAL PART
 | |
| 
 | |
|   - Extracted packet readers from MysqlaProtocol.
 | |
| 
 | |
|   - Fix for Bug#22972057, X protocol CLIENT HANGS AFTER CONNECTION FAILURE
 | |
| 
 | |
|   - Fix for Bug#23044312, NullPointerException in X protocol AsyncMessageReader due to race condition
 | |
| 
 | |
|   - Returned support for MySQL 5.5 and 5.6.
 | |
| 
 | |
| 04-05-16 - Version 6.0.2
 | |
| 
 | |
|   - Deprecate the EOF packet.
 | |
| 
 | |
|   - Fix for Bug#75956, Inserting timestamps using a server PreparedStatement and useLegacyDatetimeCode=false
 | |
| 
 | |
|   - Fix for Bug#22385172, CONNECTOR/J MANIFEST DOES NOT EXPOSE FABRIC (OSGi).
 | |
| 
 | |
|   - Fix for Bug#22598938, FABRICMYSQLDATASOURCE.GETCONNECTION() NPE AFTER SWITCHOVER.
 | |
| 
 | |
|   - Merged version 5.1.38.
 | |
| 
 | |
|   - Fix for Bug#21286268, CONNECTOR/J REPLICATION USE MASTER IF SLAVE IS UNAVAILABLE.
 | |
| 
 | |
|   - Fix for Bug#21296840 & Bug#17910835, Server information in a group from Fabric is not refreshed after expired TTL.
 | |
| 
 | |
|   - Fix for Bug#56122 (11763419), JDBC4 functionality failure when using replication connections.
 | |
| 
 | |
|   - Added support for TLSv1.1 and TLSv1.2
 | |
| 
 | |
|   - Fix for Bug#78961 (22096981), Can't call MySQL procedure with InOut parameters in Fabric environment.
 | |
| 
 | |
|   - Fix for Bug#56100 (11763401), Replication driver routes DML statements to read-only slaves.
 | |
| 
 | |
|   - StandardSSLSocketFactory implements SocketMetadata.
 | |
| 
 | |
|   - Fix for Bug#21978216, GETTYPEINFO REPORT MAXIMUM PRECISION OF 255 FOR VARBINARY.
 | |
| 
 | |
|   - Fix for Bug#78706 (21947042), Prefer TLS where supported by MySQL Server.
 | |
| 
 | |
|   - Fix for Bug#21934573, FABRIC CODE INVOLVED IN THREAD DEADLOCK.
 | |
|     Duplicate: Bug#78710 (21966391), Deadlock on ReplicationConnection and ReplicationConnectionGroup when failover.
 | |
| 
 | |
|   - Merged version 5.1.37.
 | |
| 
 | |
|   - Fix for Bug#21876798, CONNECTOR/J WITH MYSQL FABRIC AND SPRING PRODUCES PROXY ERROR.
 | |
| 
 | |
| 10-19-15 - Version 6.0.1
 | |
| 
 | |
|   - Removed useJvmCharsetConverters connection property. JVM charset converters are now used in all cases.
 | |
| 
 | |
|   - Refactored value decoding and removed all date/time connection properties
 | |
| 
 | |
|   - Refactored connection properties
 | |
| 
 | |
|   - Assume existence of INFORMATION_SCHEMA.PARAMETERS (and thus MySQL 5.5) when preparing stored procedure calls.
 | |
| 
 | |
|   - Removed retainStatementAfterResultSetClose connection property.
 | |
| 
 | |
|   - Null-merge of Bug#54095 (11761585) fix.
 | |
| 
 | |
|   - Removed support code for MySQL server versions < 5.7.
 | |
| 
 | |
|   - Merged version 5.1.37.
 | |
| 
 | |
|   - Fix for Bug#76859 (20969312), DBMD getColumns using I_S doesn't have column IS_GENERATEDCOLUMN as per JDBC 4.1.
 | |
|     Added support for GENERATED COLUMNS.
 | |
| 
 | |
|   - Update Time Zone mappings with IANA Time Zone database tsdata2015f and Unicode CLDR v.28.
 | |
| 
 | |
|   - Update DatabaseMetaData SQL keywords.
 | |
| 
 | |
|   - Added tests for Optimizer hints syntax introduced in MySQL 5.7.7.
 | |
| 
 | |
|   - Fix for Bug#21860833, JSON DATA TYPE DOESN'T WORK WITH SSPS.
 | |
|     Added support for JSON data type.
 | |
| 
 | |
|   - Added support for JDBC 4.2 new features.
 | |
|     New property 'enableEscapeProcessing' sets the default escape processing behavior for Statement objects.
 | |
| 
 | |
|   - Fix for Bug#16634180, LOCK WAIT TIMEOUT EXCEEDED CAUSES SQLEXCEPTION, SHOULD CAUSE SQLTRANSIENTEXCEPTION
 | |
| 
 | |
|   - Fix for Bug#75849 (20536592), NPE in abortInternal() method on line 1358 of ConnectionImpl.
 | |
| 
 | |
|   - Fix for Bug#78106 (21648826), Potential memory leak with inflater.
 | |
| 
 | |
|   - Fix for Bug#78225 (21697684), DEFAULT NO_AUTO_CREATE_USER SQL_MODE BEHAVIOR BROKE SOME TESTS
 | |
| 
 | |
|   - Fix for Bug#77665 (21415165), JDBC fails to connect with MySQL 5.0.
 | |
| 
 | |
|   - Fix for Bug#77681 (21429909), rewrite replace sql like insert when rewriteBatchedStatements=true (contribution).
 | |
|     Thanks to Jie Han for his contribution.
 | |
| 
 | |
|   - Fix for Bug#77449 (21304726) Add 'truncateFractionalSeconds=true|false' property (contribution).
 | |
|     The property 'sendFractionalSeconds' was added instead of the proposed 'truncateFractionalSeconds'.
 | |
|     Thanks to KwonNam for his contribution.
 | |
| 
 | |
|   - Fix for Bug#50348 (11758179), mysql connector/j 5.1.10 render the wrong value for dateTime column in GMT DB.
 | |
| 
 | |
|   - Fix for Bug#75670 (20433047), Connection fails with "Public Key Retrieval is not allowed" for native auth.
 | |
| 
 | |
|   - Fix for Bug#76187 (20675539), getTypeInfo report maximum precision of 255 for varchar.
 | |
| 
 | |
|   - Merged version 5.1.36.
 | |
| 
 | |
|   - Add test for new syntax 'ALTER TABLE ... DISCARD|IMPORT PARTITION ...' introduced in MySQL 5.7.4.
 | |
| 
 | |
|   - Fix for Bug#20727196, GETPROCEDURECOLUMNS() RETURNS EXCEPTION FOR FUNCTION WHICH RETURNS ENUM/SET TYPE.
 | |
| 
 | |
|   - Fix for Bug#19803348, GETPROCEDURES() RETURNS INCORRECT OUTPUT WHEN USEINFORMATIONSCHEMA=FALSE.
 | |
| 
 | |
|   - Fix for Bug#21215151, DATABASEMETADATA.GETCATALOGS() FAILS TO SORT RESULTS.
 | |
| 
 | |
|   - Fix for Bug#72630 (18758686), NullPointerException during handshake in some situations
 | |
| 
 | |
|   - Fix for Bug#20825727, CONNECT FAILURE WHEN TRY TO CONNECT SHA USER WITH DIFFERENT CHARSET.
 | |
| 
 | |
|   - Flag RowDataDynamic.isInterrupted removed as it isn't needed.
 | |
| 
 | |
|   - Fix for Bug#20518653, XSL FILES IN PACKAGES
 | |
| 
 | |
|   - Fix for Bug#20804635, GETTIME() AND GETDATE() FUNCTIONS FAILS WHEN FRACTIONAL PART EXISTS
 | |
| 
 | |
|   - Fix for Bug#62452 (16444069), NPE thrown in JDBC4MySQLPooledException when statement is closed.
 | |
| 
 | |
|   - Fix for BUG#70927 (17810800), Connector/J COM_CHANGE_USER handling is broken
 | |
| 
 | |
|   - Fix for Bug#75335 (20283655), Maven artifact for Connector/J is missing source jar.
 | |
| 
 | |
|   - Fix for BUG#75592 (20408891), "SHOW VARIABLES WHERE" is expensive.
 | |
| 
 | |
|   - Fix for Bug#75113 (20821888), Fail in failover of the connection in MySQL fabric
 | |
| 
 | |
|   - Fix for Bug#72077 (18425861), Fabric connection with username to a server with disabled auth throws NPE
 | |
| 
 | |
|   - Add test for already fixed Bug#72546 (18719760), C/J Fabric createGroup() throws ClassCastException
 | |
| 
 | |
|   - Fix for Bug#77217 (21184949), ClassCastException when executing a streaming PreparedStatement with Fabric
 | |
| 
 | |
|   - Merged version 5.1.35.
 | |
| 
 | |
|   - Fix for Bug#19536760, GETSTRING() CALL AFTER RS.RELATIVE() RETURNS NULLPOINTEREXCEPTION
 | |
| 
 | |
|   - Fix for BUG#20453712, CLOB.SETSTRING() WITH VALID INPUT RETURNS EXCEPTION
 | |
| 
 | |
|   - Fix for BUG#20453671, CLOB.POSITION() API CALL WITH CLOB INPUT RETURNS EXCEPTION
 | |
| 
 | |
|   - Fix for Bug#20685022, SSL CONNECTION TO MYSQL 5.7.6 COMMUNITY SERVER FAILS.
 | |
| 
 | |
|   - Fix for Bug#20606107, TEST FAILURES WHEN RUNNING AGAINST 5.7.6 SERVER VERSION
 | |
| 
 | |
|   - Fix for Bug#20533907, BUG#20204783 FIX EXPOSES WRONG BEAHAVIORS IN FAILOVER CONNECTIONS.
 | |
|     This fix is a refactoring of the default failover feature which is no longer attached to load-balancing support.
 | |
| 
 | |
|   - Fix for Bug#20504139, GETFUNCTIONCOLUMNS() AND GETPROCEDURECOLUMNS() RETURNS ERROR FOR VALID INPUTS.
 | |
| 
 | |
|   - Expose PreparedStatment.ParseInfo for external usage, with no capture of the connection, which allows for global, highly-concurrent parse caches to be
 | |
|     implemented.
 | |
| 
 | |
|   - Fix for Bug#75309 (20272931), mysql connector/J driver in streaming mode will in the blocking state.
 | |
| 
 | |
|   - New property 'readOnlyPropagatesToServer' controls the implicit propagation of read only transaction access mode to server.
 | |
| 
 | |
|   - Fix for Bug#54095 (11761585), Unnecessary call in newSetTimestampInternal.
 | |
|     Test case only. The bug was fixed as a consequence of the patch for Bug#71084.
 | |
| 
 | |
|   - Fix for Bug#67760 (15936413), Deadlock when concurrently executing prepared statements with Timestamp objects.
 | |
| 
 | |
|   - Fix for Bug#71084 (18028319), Wrong java.sql.Date stored if client and server time zones differ.
 | |
|     Two connection properties added, "noTimezoneConversionForDateType" and "cacheDefaultTimezone", to define if and how time zone conversions are available to
 | |
|     DATE data type values. 
 | |
| 
 | |
|   - Fix for Bug#75080 (20217686), NullPointerException during setTimestamp on Fabric connection.
 | |
| 
 | |
|   - Fix for Bug#75168 (20204783), loadBalanceExceptionChecker interface cannot work using JDBC4/JDK7.
 | |
| 
 | |
|   - Fix for Bug#73595 (19465516), Replace usage of StringBuffer in JDBC driver.
 | |
| 
 | |
|   - Fix for Bug#18925727, SQL INJECTION IN MYSQL JDBC DRIVER.
 | |
| 
 | |
|   - Fix for Bug#74998 (20112694), readRemainingMultiPackets not computed correctly for rows larger than 16 MB.
 | |
| 
 | |
|   - Merged version 5.1.34.
 | |
| 
 | |
|   - Fix for Bug#73012 (19219158), Precedence between timezone options is unclear.
 | |
| 
 | |
|   - Implement support for connecting through SOCKS proxies (WL#8105). Connection properties supporting this are socksProxyHost, socksProxyPort.
 | |
| 
 | |
|   - Ant buildfile reworked to fix incompatibilities with latest Eclipse, to remove dependency from ant-contrib and to improve structure and documentation.
 | |
| 
 | |
|   - Fix for Bug#18474141, TESTSUITE.FABRIC TEST CASES FAIL IF NO FABRIC.TESTSUITE PROPERTIES PROVIDED
 | |
| 
 | |
|   - Fix for Bug#19383371, CONNECT USING MYSQL_OLD_PASSWORD USER FAILS WHEN PWD IS BLANK
 | |
| 
 | |
|   - Merged version 5.1.33.
 | |
| 
 | |
|   - Fix for Bug#17441747, C/J DOESN'T SUPPORT XA RECOVER OUTPUT FORMAT CHANGED IN MYSQL 5.7.
 | |
|     Test case was disabled for affected server versions 5.7.0 - 5.7.4.
 | |
| 
 | |
|   - Fix for Bug#19145408, Error messages may not be interpreted according to the proper character set
 | |
| 
 | |
|   - Fix for Bug#19505524, UNIT TEST SUITE DOES NOT CONSIDER ALL THE PARAMETERS PASSED TO BUILD.XML.
 | |
| 
 | |
|   - Fix for Bug#73474 (19365473), Invalid empty line in MANIFEST.MF
 | |
| 
 | |
|   - Fix for Bug#70436 (17527948), Incorrect mapping of windows timezone to Olson timezone.
 | |
|     TimeZone mappings were revised in order to use latest data from IANA Time Zone Database and Unicode CLDR.
 | |
| 
 | |
|   - Fix for Bug73163 (19171665), IndexOutOfBoundsException thrown preparing statement.
 | |
|     Regression test added. Fix was included in patch from 5.1.32: "Fix for failing tests when running test suite with Java 6+".
 | |
| 
 | |
|   - Added support for gb18030 character set
 | |
| 
 | |
|   - Fix for Bug#73663 (19479242), utf8mb4 does not work for connector/j >=5.1.13
 | |
| 
 | |
|   - Fix for Bug#73594 (19450418), ClassCastException in MysqlXADataSource if pinGlobalTxToPhysicalConnection=true
 | |
| 
 | |
|   - Fix for Bug#19354014, changeUser() call results in "packets out of order" error when useCompression=true.
 | |
| 
 | |
|   - Fix for Bug#73577 (19443777), CHANGEUSER() CALL WITH USECOMPRESSION=TRUE COULD LEAD TO IO FREEZE
 | |
| 
 | |
|   - Fix for Bug#19172037, TEST FAILURES WHEN RUNNING AGAINST 5.6.20 SERVER VERSION
 | |
| 
 | |
|   - Merged version 5.1.32
 | |
| 
 | |
|   - Fix for Bug#71923 (18344403), Incorrect generated keys if ON DUPLICATE KEY UPDATE not exact.
 | |
|     Additionally several methods in StringUtils were fixed/upgraded.
 | |
| 
 | |
|   - Fix for Bug#72502 (18691866), NullPointerException in isInterfaceJdbc() when using DynaTrace
 | |
| 
 | |
|   - Fix for Bug#72890 (18970520), Java jdbc driver returns incorrect return code when it's part of XA transaction.
 | |
| 
 | |
|   - Fabric client now supports Fabric 1.5. Older versions are no longer supported.
 | |
| 
 | |
|   - Fix for Bug#71672 (18232840), Every SQL statement is checked if it contains "ON DUPLICATE KEY UPDATE" or not.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#73070 (19034681), Preparing a stored procedure call with Fabric results in an exception
 | |
| 
 | |
|   - Fix for Bug#73053 (19022745), Endless loop in MysqlIO.clearInputStream due to Linux kernel bug.
 | |
|     In the source of this issue is a Linux kernel bug described in the patch "tcp: fix FIONREAD/SIOCINQ" 
 | |
|     (https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a3374c4).
 | |
| 
 | |
|   - Fix for Bug#18869381, CHANGEUSER() FOR SHA USER RESULTS IN NULLPOINTEREXCEPTION
 | |
| 
 | |
|   - Fix for Bug#62577 (16722757), XA connection fails with ClassCastException
 | |
| 
 | |
|   - Fix for Bug#18852587, CONNECT WITH A USER CREATED USING SHA256_PASSWORD PLUGIN FAILS WHEN PWD IS BLANK
 | |
| 
 | |
|   - Fix for Bug#18852682, TEST TESTSHA256PASSWORDPLUGIN FAILS WHEN EXECUTE AGAINST COMMERCIAL SERVER
 | |
| 
 | |
|   - Fix for failing tests when running test suite with Java 6+.
 | |
|     Includes fix for Bug#35829 (11748301), build.xml check for java6 should use or instead of and.
 | |
| 
 | |
|   - Charset mappings refactored.
 | |
| 
 | |
|   - Fix for Bug#72712 (18836319), No way to configure Connector JDBC to not do extra queries on connection
 | |
| 
 | |
| 06-09-14 - Version 5.1.31
 | |
| 
 | |
|   - Fix for Bug#66947 (16004987), Calling ServerPreparedStatement.close() twice corrupts cached statements.
 | |
| 
 | |
|   - Fix for Bug#61213 (18009254), ON DUPLICATE KEY UPDATE breaks generated key list when extended INSERT is used
 | |
| 
 | |
|   - Test cases updated to comply with MySQL 5.7.4 new STRICT_MODE behavior and no longer supported IGNORE clause in
 | |
|     ALTER TABLE statement.
 | |
| 
 | |
|   - Added support for sha256_password authentication with RSA encryption.
 | |
| 
 | |
|   - Fix for Bug#71753 (18260918), Bad SSL socket transform.
 | |
| 
 | |
|   - Added tests for changes in GET DIAGNOSTIC syntax introduced in MySQL 5.7.0.
 | |
| 
 | |
|   - Fix for Bug#67803 (16708231), XA commands sent twice to MySQL server.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#55680 (16737192), MySQL Connector/J memory leak
 | |
| 
 | |
|   - Fix for Bug#72326 (18598665), Typo in fullDebug.properties - gatherPerMetrics should be gatherPerfMetrics
 | |
| 
 | |
|   - Fix for Bug#72023 (18403456), Avoid byte array creation in MysqlIO#unpackBinaryResultSetRow.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#72000 (18402873), java.lang.ArrayIndexOutOfBoundsException on java.sql.ResultSet.getInt(String).
 | |
| 
 | |
|   - Fix for Bug#71850 (18318197), init() is called twice on exception interceptors
 | |
| 
 | |
|   - Fix for Bug#72008 (18389973), Avoid useless object creation in StringUtils#getBytes-methods.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#72006 (18403199), Avoid creation of a character array in PreparedStatement$ParseInfo.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
|     Additionally, unneeded StringBuffer replaced by StringBuilder instances in StringUtils.
 | |
| 
 | |
|   - Fix for Bug#72301 (18549472), Fabric driver swallows exceptions thrown during connection creation using JDBC4
 | |
| 
 | |
| 03-28-14 - Version 5.1.30
 | |
| 
 | |
|   - Fix for Bug#71679 (18236388), Avoid iterator creation when invoking statement interceptors in MysqlIO.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#70944 (17831255), community and commercial builds should have the same line number tables
 | |
| 
 | |
|   - Fix for Bug#71861 (18327245), Avoid manual array copy in MysqlIO and LoadBalancingConnectionProxy.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#71623 (18228668), Field#getStringFromBytes() creates useless byte array when using JVM converter.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#71621 (18228302), MysqlXAConnection#xidToString(Xid xid) produces too much garbage.
 | |
|     Thanks to Andrej Golovnin for his contribution.
 | |
| 
 | |
|   - Fix for Bug#67318 (16722637), SQLException thrown on already closed ResultSet. Thanks to Thomas Manville and Andrej Golovnin for their contribution.
 | |
| 
 | |
|   - Fix for Bug#71396 (18110320), setMaxRows (SQL_SELECT_LIMIT) from one query used in later queries (sometimes).
 | |
|     Additionally, SQL_SELECT_LIMIT is no longer sent unnecessarily between consecutive queries.
 | |
| 
 | |
|   - Fix for Bug#71432 (18107621), Key store files not closed when making SSL connection
 | |
| 
 | |
|   - Reserved words lists updated from latest official SQL:92 and SQL:2003 specifications.
 | |
| 
 | |
|   - Fix for Bug#18091639, STRINGINDEXOUTOFBOUNDSEXCEPTION IN PREPAREDSTATEMENT.SETTIMESTAMP WITH 5.6.15
 | |
| 
 | |
|   - Added Fabric support
 | |
| 
 | |
| 02-10-14 - Version 5.1.29
 | |
| 
 | |
|   - Fix for Bug#70701 (17647584), DatabaseMetaData.getSQLKeywords() doesn't match MySQL 5.6 reserved words.
 | |
| 
 | |
|   - Fix for Bug#17435879, REMOVE SRC/LIB-NODIST DIRECTORY FROM LAUNCHPAD DISTRIBUTION.
 | |
|     Additional "com.mysql.jdbc.extra.libs" parameter must be used for ant build.
 | |
| 
 | |
|   - Fix for Bug#71038, Add an option for custom collations detection.
 | |
|     Added new connection property detectCustomCollations=[true|false], with default false.
 | |
|     Please be aware that these changed the previous default behavior and if you use custom charsets or collations
 | |
|     you need to set detectCustomCollations=true.
 | |
| 
 | |
|   - Added tests for new index renaming syntax introduced in 5.7.1.
 | |
| 
 | |
| 12-23-13 - Version 5.1.28
 | |
| 
 | |
|   - Fix for Bug#69579, DriverManager.setLoginTimeout not honored.
 | |
| 
 | |
|   - Fix for Bug#51313, Escape processing is confused by multiple backslashes.
 | |
| 
 | |
|   - Fix for Bug#55340, initializeResultsMetadataFromCache fails on second call to stored proc.
 | |
| 
 | |
|   - Fix for Bug#70969, Shadow declaration of OperationNotSupportedException in RowDataDynamic.
 | |
| 
 | |
|   - Fix for Bug#70835 (17750877), SQLExceptions thrown because of query interruption (KILL QUERY, query timeout, etc.)
 | |
|     didn't extend java.sql.SQLNonTransientException for JDBC4+ deployments.
 | |
| 
 | |
|   - Fix for Bug#24344 test case, test fails if it's run with UTC timezone settings. 
 | |
| 
 | |
|   - Fix for Bug#69777, Setting maxAllowedPacket below 8203 makes blobSendChunkSize negative.
 | |
| 
 | |
|   - Fix for Bug#35115, yearIsDateType=false has no effect on result's column type and class.
 | |
| 
 | |
|   - Fix for Bug#68916 (16691047), closeOnCompletion doesn't work.
 | |
| 
 | |
|   - Fix for Bug #69746 (17164058), ResultSet closed after Statement.close() when dontTrackOpenResources=true
 | |
| 
 | |
|   - Fix for Bug#70842 (17753369), Adding live management of replication host topographies.
 | |
| 
 | |
| 11-04-13 - Version 5.1.27
 | |
| 
 | |
|   - Fix for Bug#17248345, getFunctionColumns() method returns columns of procedure.
 | |
| 
 | |
|   - Fix for Bug#69290 (16879239), JDBC Table type "SYSTEM TABLE" is used inconsistently.
 | |
| 
 | |
|   - Fix for Bug#68562, Combination rewriteBatchedStatements and useAffectedRows not working as expected.
 | |
| 
 | |
|   - Fix for Bug#69452 (17015673), memory size connection property doesn't support large values well.
 | |
| 
 | |
|   - Added tests for InnoDB full-text search support introduced in 5.6GA.
 | |
| 
 | |
|   - Extended slow query warning with query execution plan for INSERT, REPLACE, UPDATE and DELETE.
 | |
| 
 | |
|   - Added tests for IPv6 functions introduced in 5.6GA.
 | |
| 
 | |
|   - Added support of authentication data up to 2^64-1 bytes.
 | |
| 
 | |
|   - Fix for Bug#38252, ResultSet.absolute(0) is not behaving according to JDBC specification.
 | |
| 
 | |
|   - Fix for Bug#62469, JDBC Authentication Fails with Null Byte in Scramble
 | |
| 
 | |
|   - Fix for Bug#69506, XAER_DUPID error code is not returned when a duplicate XID is offered in Java.
 | |
| 
 | |
|   - Added support for multi-master replication topographies in ReplicationDriver.  ReplicationDriver now uses two discrete load-balanced
 | |
|     connections, one each for master and slave connections.  The same load-balancing options which apply to load-balanced connections
 | |
|     now also apply to ReplicationConnections.  By default, this means that when a ReplicationConnection uses master connections
 | |
|     (because the read-only property of the Connection is false), work may be re-balanced between configured master hosts at transaction 
 | |
|     boundaries.  As with load-balanced connections, the ReplicationConnection host list may be managed within the JVM (see
 | |
|     com.mysql.jdbc.ReplicationConnectionGroupManager) or optionally via JMX (using replicationEnableJMX configuration option; see
 | |
|     com.mysql.jdbc.jmx.ReplicationGroupManagerMBean).  To specify multi-master replication topographies, define each host "type"
 | |
|     property using the following format:
 | |
|  
 | |
|     address=(host=hostname)(port=3306)(type=[master|slave])
 | |
| 
 | |
|     In the absense of explicit type definitions, the driver will assume a single master listed first, with all subsequently-listed
 | |
|     hosts configured as slaves.
 | |
| 
 | |
|   - Fix for Bug#63354 (16443992), JDBC cannot make new connections if master is down.
 | |
| 
 | |
|   - Fix for Bug#17003626, REGRESSION TEST FAILURE WITH SERVER VERSION 5.7.1
 | |
| 
 | |
|   - Removed ant-contrib.jar from C/J distribution.
 | |
| 
 | |
|   - Added tests for GIS precise spatial operations introduced in 5.6GA.
 | |
| 
 | |
|   - Fixed META-INF information
 | |
| 
 | |
|   - Fix for Bug#17251955, ARRAYINDEXOUTOFBOUNDSEXCEPTION ON LONG MULTI-BYTE DB/USER NAMES
 | |
| 
 | |
|   - Fix for Bug#50538, DatabaseMetaData.getDriverVersion() contains unexpanded ${bzr.revision-id}
 | |
| 
 | |
| 08-05-13 - Version 5.1.26
 | |
| 
 | |
|   - Fix for Bug#69298 (16845965), Methods DatabaseMetaData.getProcedures() and DatabaseMetaData.getProcedureColumns(), in JDBC4,
 | |
|     return stored procedure only or both stored procedures and functions metadata information, depending on the value set in the
 | |
|     connection property "getProceduresReturnsFunctions", having default value 'true'. Several fixes in Functions and
 | |
|     Procedures metadata so that consulting I__S and MySQL/DDL returns the same info.
 | |
| 
 | |
|   - Fix for Bug#69308 (16879267), Avoid calling batchedStatement.close() twice, and thus raising and ignoring an undercover SQLException, in methods
 | |
|     PreparedStatement.executeBatchedInserts and PreparedStatement.executePreparedBatchAsMultiStatement.
 | |
| 
 | |
|   - Fix for Bug#68400, useCompression=true and connect to server, zip native method cause out of memory.
 | |
|     CompressedInputStream now does not keep reference to connection.
 | |
|     Thank Dominic Tootell for his investigation, proposed solution and all the help he provided.
 | |
| 
 | |
|   - Fix for Bug#65871, DatabaseMetaData.getColumns() throws an MySQLSyntaxErrorException.
 | |
|     Delimited names of databases and tables are handled correctly now. The edge case is ANSI quoted
 | |
|     identifiers with leading and trailing "`" symbols, for example CREATE DATABASE "`dbname`". Methods
 | |
|     like DatabaseMetaData.getColumns() allow parameters passed both in unquoted and quoted form,
 | |
|     quoted form is not JDBC-compliant but used by third party tools. So when you pass the indentifier
 | |
|     "`dbname`" in unquoted form (`dbname`) driver handles it as quoted by "`" symbol. To handle such
 | |
|     identifiers correctly a new behavior was added to pedantic mode (connection property pedantic=true),
 | |
|     now if it set to true methods like DatabaseMetaData.getColumns() treat all parameters as unquoted.
 | |
| 
 | |
|   - Fix for Bug#45757 (11754192), Don't allow updateRow() to be called when updatable cursor is positioned on insert row.
 | |
| 
 | |
|   - Fix for Bug#68098 (16224299), Return indexes sorted by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION in DatabaseMetaData.getIndexInfo.
 | |
|   
 | |
|   - Fix for Bug#68307 (16707803), Return correct COLUMN_TYPE from both getProcedureColumns() and getFunctionColumns().
 | |
| 
 | |
|   - Fix for Bug#42267, PreparedStatementWrapper doesn't have a toString() implementation
 | |
| 
 | |
|   - Fix for Bug#44451 (11753081), Added missing fields in methods getColumns(), getProcedureColumns(), getTables() and getUDTs().
 | |
|     Methods getClientInfoProperties() and getFunctions() were made available in all *DatabaseMetaDataUsingInfoSchema implementations.
 | |
| 
 | |
| 05-06-13 - Version 5.1.25
 | |
| 
 | |
|   - Fix for Bug#68801, java webstart mysql-connector-java lib calls -bin library.
 | |
| 
 | |
|   - Fix for Bug#16426462, SyntaxRegressionTest failing on C/J 5.1.24 against MySQL 5.6.10
 | |
| 
 | |
|   - Fix for Bug#60816, Cannot pass NULL to an INOUT procedure parameter.
 | |
| 
 | |
|   - Added support for Connection Attributes when used with MySQL Server versions (5.6+) which support this feature.  
 | |
|     By default, the following standard attributes are sent to the server, where they can be seen in the 
 | |
|     performance_schema.session_connect_attrs table:
 | |
|      * _client_version : the version of MySQL Connector Java in use
 | |
|      * _client_name : "MySQL Connector Java"
 | |
|      * _runtime_version : the version of the Java runtime environment in which the driver is running
 | |
|      * _runtime_vendor : the name of company which produced the Java runtime environment
 | |
|     Additionally, users may supply their own key/value attributes to be exposed by providing them in 
 | |
|     "key1:value1,key2:value2" format in the connectionAttributes connection property.
 | |
|     To avoid sending any connection attributes to the server, set connectionAttributes property to "none".
 | |
|     
 | |
|   - Fix for Bug#68763 (16545334), ReplicationConnection.isMasterConnection() returns false always.
 | |
| 
 | |
|   - Fix for Bug#68733 (16526938), ReplicationConnection doesn't ping all slaves.
 | |
| 
 | |
|   - Fix for Bug#68556, Tomcat can't stop a cleanup thread by clearReferencesStopThreads.
 | |
| 
 | |
|   - Fix for Bug#16436511, getDriverName() returns a string with company name "MySQL-AB". Driver name changed to "MySQL Connector Java".
 | |
| 
 | |
|   - Fix for Bug#68664 (16486957), Enable packaging of .JAR file from Eclipse.
 | |
| 
 | |
| 03-05-13 - Version 5.1.24
 | |
| 
 | |
|   - Fix for Bug#64204, ResultSet.close hangs if streaming query is killed.
 | |
| 
 | |
|   - Fix for Bug#16224249, Deadlock on concurrently used LoadBalancedMySQLConnection:
 | |
|     1) abortInternal() method was moved from com.mysql.jdbc.MySQLConnection to com.mysql.jdbc.Connection interface;
 | |
|     2) load-balanced/failover proxy now broadcasts abortInternal() to all underlying physical connections;
 | |
|     3) load-balanced/failover proxy now prevents picking of new physical connection after close() or abortInternal() were called explicitly on proxy;
 | |
|     4) connection synchronization mutex was refactored, now mutex is proxy instance for proxied connection or connection instance itself if there is no proxy.
 | |
| 
 | |
|   - Fix for Bug#64805, StatementImpl$CancelTask occasionally throws NullPointerExceptions.
 | |
| 
 | |
|   - Fixed typos in descriptions of properties.
 | |
| 
 | |
|   - Fix for Bug#68011, Invalid error message noDatetimeSync property instead of noDatetimeStringSync.
 | |
| 
 | |
| 02-04-13 - Version 5.1.23
 | |
| 
 | |
|   - Fix for Bug#35653, executeQuery() in Statement.java let "TRUNCATE" queries being executed. "TRUNCATE" and "RENAME" are now filtered for executeQuery().
 | |
| 
 | |
|   - Fix for Bug#65909, referenceThread causes memory leak in Tomcat.
 | |
|     Abandoned connection cleanup thread was refactored to have static shutdown method.
 | |
|     If you encountered this leak problem, your application should implement context listener with
 | |
|     AbandonedConnectionCleanupThread.shutdown() call in contextDestroyed method.
 | |
| 
 | |
|     For example:
 | |
|        @WebListener
 | |
|        public class YourThreadsListener implements ServletContextListener {
 | |
|           public void contextDestroyed(ServletContextEvent arg0) {
 | |
|              try {
 | |
|                  AbandonedConnectionCleanupThread.shutdown();
 | |
|              } catch (InterruptedException e) {
 | |
|              }
 | |
|           }
 | |
|           ...
 | |
|        }
 | |
| 
 | |
|     Note that if container does not support annotations you should add description to web.xml:
 | |
|        <listener>
 | |
|           <listener-class>user.package.YourThreadsListener</listener-class>
 | |
|        </listener>
 | |
| 
 | |
|   - Added tests for explicit partition selection syntax introduced in 5.6GA.
 | |
| 
 | |
|   - Added support of password expiration protocol. This introduces new boolean connection property disconnectOnExpiredPasswords.
 | |
|     If disconnectOnExpiredPasswords = true and password expired then connection will be rejected by server with ErrorCode == 1820 (ER_MUST_CHANGE_PASSWORD).
 | |
|     If disconnectOnExpiredPasswords = false then connection will enter to "sandbox" mode,
 | |
|     all commands except SET PASSWORD = ... and SET PASSWORD FOR CURRRENT_USER() = ... will cause an error to be thrown.
 | |
| 
 | |
|   - Added tests for EXCHANGE PARTITION syntax introduced in 5.6GA.
 | |
| 
 | |
|   - Added tests for transportable tablespaces syntax introduced in 5.6GA.
 | |
| 
 | |
|   - Added tests for CREATE TABLE syntax changed in 5.6GA: CREATE TABLE ... DATA DIRECTORY = 'absolute/path/to/directory/'
 | |
| 
 | |
|   - Added tests for ALTER TABLE syntax changed in 5.6GA: ALGORITHM and LOCK keywords.
 | |
| 
 | |
|   - Fix for Bug#67954, stack trace used for point-of-origin in log and exception messages
 | |
|     causes permgen leak with webapp classloader on application redeploy. We no longer store the entire
 | |
|     stack trace, only the calling class and method, and even then, that only when using the usage advisor
 | |
|     or when profiling.
 | |
|     
 | |
|   - Fix for Bug#11237, useCompression=true and LOAD DATA LOCAL INFILE SQL Command.
 | |
| 
 | |
|   - Static charset/collation maps were updated.
 | |
| 
 | |
|   - Fix for Bug#14260352, difference in Timestamp value returned with rewriteBatchedStatements=true.
 | |
| 
 | |
|   - Fix for Bug#60598, nativeSQL() truncates fractional seconds.
 | |
| 
 | |
|   - Fix for Bug#40279, Timestamp values get truncated when passed as prepared statement parameters.
 | |
|     This was partly fixed in 5.1.19 but that fix did not cover useLegacyDatetimeCode=true case.
 | |
| 
 | |
|   - Fix for Bug#14665141, Diff results returned from ResultSet and CachedRowSet with new password hashing.
 | |
|     Test suite modified to don't perform comparison of PASSWORD() results if old_passwords=2
 | |
|     because with SHA-256 password hashing enabled they are nondeterministic.
 | |
|     
 | |
|   - The driver now allows the mechanism for caching MySQL server configuration values replaceable at runtime,
 | |
|     via the "serverConfigCacheFactory" property. The default is an implementation that is a per-VM concurrent
 | |
|     map, keyed by URL. The driver will invalidate cache entries when SQLExceptions that indicate communications
 | |
|     errors are thrown (on the assumption that the server has been or is restarting), or if the server version
 | |
|     that is being connected to, differs from the one that was present when the cached values were populated.
 | |
|     
 | |
|     To replace the default implementation, implement CacheAdapterFactory<String, Map<String, String>>, and
 | |
|     use the fully-qualified class name of this implementation for "serverConfigCacheFactory".
 | |
|     
 | |
|   - Connection.setReadOnly() will take advantage of server-side support for read-only transactions
 | |
|     present in MySQL-5.6 and newer. Calling .isReadOnly() will incur a round-trip if useLocalSessionState
 | |
|     is not enabled.
 | |
| 
 | |
| 09-06-12 - Version 5.1.22
 | |
|   - Fix for Bug#57662, Incorrect Query Duration When useNanosForElapsedTime Enabled.
 | |
| 
 | |
|   - Fix for Bug#65503, ResultSets created by PreparedStatement.getGeneratedKeys() are not close()d.
 | |
| 
 | |
|   - Fix for Bug#63800, getVersionColumns() does not return timestamp fields; always empty.
 | |
|     Added support of ON UPDATE CURRENT_TIMESTAMP for TIMESTAMP and DATETIME fields.
 | |
| 
 | |
|   - Fix for Bug#41752, Can't connect mysqld which character_set_server=ucs2.
 | |
| 
 | |
|   - Fix for Bug#65508, getCharsetNameForIndex() should be faster.
 | |
| 
 | |
|   - Fix for Bug#14563127, Load-balanced connection fails to select valid host, closes connection
 | |
|     on re-balance.
 | |
| 
 | |
| 07-05-12 - Version 5.1.21
 | |
|   - Added new built-in authentication plugin com.mysql.jdbc.authentication.Sha256PasswordPlugin
 | |
|     ("sha256_password").
 | |
| 
 | |
|   - Fix for Bug#64731, StringUtils.getBytesWrapped throws StringIndexOutOfBoundsException.
 | |
| 
 | |
|   - Added new built-in authentication plugin com.mysql.jdbc.authentication.MysqlClearPasswordPlugin
 | |
|     ("mysql_clear_password"). It allows C/J based clients to connect to MySQL accounts which use
 | |
|     PAM authentication for example. SSL connection required for this authentication method.
 | |
|     If SSL is not enabled then authentication which requires "mysql_clear_password" will lead to an error.
 | |
| 
 | |
|   - Fix for Bug#13980303, Auth plugin's confidentiality requirements are not checked after Auth Switch Request.
 | |
| 
 | |
|   - Fix for Bug#64205, Connected through Connector/J 5.1 to MySQL 5.5, the error message is garbled.
 | |
| 
 | |
|   - Fix for Bug#37931, Null Pointer Exception Thrown When specifying invalid character_set_results enc.
 | |
| 
 | |
|   - Fix for Bug#36662, TimeUtil.java: MEST mapping n/a.
 | |
| 
 | |
|   - Fix a scalability/memory footprint issue where Object.finalize() was being used on 
 | |
|     ConnectionImpl to clean up the low-level network connection to MySQL should a 
 | |
|     connection be abandoned by the application before being cleanly close()d. We now
 | |
|     track connections in a phantom reference queue, and have a single thread per-vm
 | |
|     clean these up when the VM notices the connection is no longer referenced by
 | |
|     anything else.
 | |
|     
 | |
|   - Added the ability to add new client-side prepared statement parse info caches by
 | |
|     implementing com.mysql.jdbc.CacheAdapterFactory and telling the driver to use it
 | |
|     when "cachePrepStmts=true" via the "parseInfoCacheFactory" configuration property. 
 | |
|     
 | |
|   - Implemented JDBC-4.1 methods from Java-7:
 | |
|   
 | |
|        - Connection.setSchema(String) - no-op, until we support database==schema in the driver
 | |
|        - Connection.getSchema() - see above
 | |
|        - Connection.abort(Executor executor)
 | |
|        - Connection.setNetworkTimeout(Executor, int)
 | |
|        - Connection.getNetworkTimeout() throws SQLException;
 | |
|        - CallableStatement.getObject(int, Class<T>)
 | |
|        - CallableStatement.getObject(String, Class<T>)
 | |
|        - DBMD.getPseudoColumns() - returns an empty result set
 | |
|        - DBMD.generatedKeyAlwaysReturned() - always true for MySQL
 | |
|        - ResultSet.getObject(int, Class<T>)
 | |
|        - ResultSet.getObject(String, Class<T>)
 | |
|        - Statement.closeOnCompletion()
 | |
|        - Statement.isCloseOnCompletion()
 | |
| 
 | |
| 05-02-12 - Version 5.1.20
 | |
|   - Fix for Bug#64983, 5.1.19 not working with JBoss AS 4.2.3.GA.
 | |
| 
 | |
|   - Fix for Bug#13960556, java.lang.StringIndexOutOfBoundsException in com.mysql.jdbc.PreparedStatement.formatNanos(int nanos).
 | |
| 
 | |
|   - Fix for pluggable authentication tests to run on Windows.
 | |
| 
 | |
|   - Fix for Bug#13897714, NPE in testsuite.regression.StatementRegressionTest.testBug1933() with 5.6.5_m8 server.
 | |
| 
 | |
|   - Fix for Bug#55962, Savepoint identifier is occasionally considered as floating point numbers.
 | |
| 
 | |
|   - Fix for Bug#13955027, SET OPTION syntax was removed starting from 5.6.5 server version.
 | |
| 
 | |
|   - Fix for Bug#13958793, ClassCastException in ConnectionImpl.buildCollationMapping() with 4.1 server.
 | |
| 
 | |
|   - Fix for Bug#36478, Client prepared statement bugged if word 'limit' included in the query.
 | |
| 
 | |
| 04-02-12 - Version 5.1.19
 | |
|   - Fix for Bug#64621, setMaxRows was not correctly processed during CS PS metadata
 | |
|     collection causing entire resultset to be fetched and possibly leading to OOM.
 | |
| 
 | |
|   - Fix for Bug#63456, MetaData precision is different when using UTF8 or Latin1 tables.
 | |
| 	The problem was in finding maxBytesPerChar through versioned mapping from Java charset to MySQL charset.
 | |
| 	That map returns "utf8mb4" instead "utf8" for server versions starting with 5.5.2.
 | |
| 	CharsetMapping, ConnectionImpl and Field have been reorganized to use static maps INDEX_TO_MYSQL_CHARSET,
 | |
| 	STATIC_CHARSET_TO_NUM_BYTES_MAP instead. Also dynamic maps ConnectionImpl.indexToCustomMysqlCharset
 | |
| 	and ConnectionImpl.mysqlCharsetToCustomMblen have been added for custom charsets.
 | |
| 
 | |
|   - Added support for pluggable authentication via the com.mysql.jdbc.AuthenticationPlugin
 | |
|     interface (which extends standard "extension" interface). Examples are in
 | |
|     com/mysql/jdbc/authentication and in testsuite.regression.ConnectionRegressionTest.
 | |
|     This introduces three new properties:
 | |
| 
 | |
|        authenticationPlugins defines comma-delimited list of classes that implement
 | |
|        com.mysql.jdbc.AuthenticationPlugin and which will be used for authentication
 | |
|        unless disabled by "disabledAuthenticationPlugins" property.
 | |
| 
 | |
|        disabledAuthenticationPlugins defines comma-delimited list of classes implementing
 | |
|        com.mysql.jdbc.AuthenticationPlugin or mechanisms, i.e. "mysql_native_password".
 | |
|        The authentication plugins or mechanisms listed will not be used for authentication
 | |
|        which will fail if it requires one of them. It is an error to disable the default
 | |
|        authentication plugin (either the one named by "defaultAuthenticationPlugin" property
 | |
|        or the hard-coded one if "defaultAuthenticationPlugin" propery is not set).
 | |
| 
 | |
|        defaultAuthenticationPlugin defines name of a class implementing
 | |
|        com.mysql.jdbc.AuthenticationPlugin which will be used as the default authentication
 | |
|        plugin. It is an error to use a class which is not listed in "authenticationPlugins"
 | |
|        nor it is one of the built-in plugins. It is an error to set as default a plugin
 | |
|        which was disabled with "disabledAuthenticationPlugins" property. It is an error
 | |
|        to set this value to null or the empty string (i.e. there must be at least a valid
 | |
|        default authentication plugin specified for the connection, meeting all constraints
 | |
|        listed above).
 | |
| 
 | |
|   - Fix for Bug#63526. The problem happens in com.mysql.jdbc.EscapeProcessor#escapeSQL.  The function recognizes the string in the create table statement as an escape sequence (line 136+138). The "if" construct beginning in line 182 tries to match a white-space collapsed version of the string to prefixes for valid jdbc-escapes (till line 300). Since no matching escape sequence is found and no "else" clause is defined, neither the token, nor replacement are added to the resulting escaped SQL string.
 | |
| 
 | |
|   - Fix for Bug#61203, noAccessToProcedureBodies does not work anymore.
 | |
| 
 | |
|   - Fix for Bug#63811, pointless Socket.bind() when using ephemeral ports and interfaces, which limits scalability on some platforms.
 | |
|     
 | |
|   - Connection.changeUser() would not check for closed connections, leading to NPEs when this method was called on a closed connection.
 | |
| 	
 | |
|   - Fix for Bug#63284, memory leak with Failover proxied Statement/PreparedStatement with DBCP due to improper implementation of equals().
 | |
|     
 | |
|   - Prepared statements would needlessly allocate a 4K buffer for converting
 | |
|     streams when no set*Stream() methods had been used.
 | |
|   
 | |
| 10-03-11 - Version 5.1.18
 | |
|  
 | |
|   - Fix for Bug#12565726, not putting the space between VALUES() and ON DUPLICATE KEY UPDATE
 | |
| 	causes C/J a) enter rewriting the query although it has ON UPDATE 
 | |
| 	and b) to generate the wrong query with multiple ON DUPLICATE KEY
 | |
| 
 | |
|   - Fix for Bug#12784170, "process fork failure" errors while running test suite via ant on Windows.
 | |
|     Added new ant flag, com.mysql.jdbc.junit.fork, which controls whether JUnit will fork new processes
 | |
|     for testing ("on", default and legacy behavior) or not ("off", required for Windows).  
 | |
| 
 | |
|   - Reverting changes made to ConnectionImpl.java,
 | |
|     private boolean characterSetNamesMatches function.
 | |
| 
 | |
|   - Added function MYSQL_INDEX_TO_MYSQL_CHARSET to retrieve server charset name
 | |
|     using index instead of parsing variables to CharsetMapping.java.
 | |
| 
 | |
|   - Completed fix for Bug#61201/12649557, fixed tests failures.
 | |
|   
 | |
|   - Fix for Bug#61201/12649557, Can't establish connection when url has
 | |
|     sessionVariables and characterEncoding. Fix covers only MySQL server 4.1+
 | |
|     
 | |
|   - Fix for Bug#61501 - Calling Statement.cancel() on a statement that isn't
 | |
|     currently executing will cause some later-executed query on the same
 | |
|     connection to be cancelled unexpectedly. The driver now guards against this
 | |
|     condition, but it is an underlying server issue. The MySQL statement "KILL QUERY"
 | |
|     (which is what the driver uses to implement Statement.cancel()) is rather
 | |
|     non-deterministic, and thus the use of Statement.cancel() should be avoided
 | |
|     if possible.
 | |
|     
 | |
|   - Fix for Bug#61866/12791594 - Calling Statement.getWarnings() after
 | |
|     Statement.clearWarnings() has been called, returns the "old" warnings.
 | |
|     
 | |
|   - Fix for Bug#13036537 - LRUCache was really a least-recently-added cache.
 | |
| 
 | |
|   - Fix for Bug#13036309, Correcting parameter name in maxPerformance.properties.
 | |
| 
 | |
| 
 | |
| 07-04-11 - Version 5.1.17
 | |
| 
 | |
|   - Fix for Bug#61332 - LIKE not optimized in server when run against I__S tables and no wildcards used.
 | |
|     Databases/tables with "_" and/or "%" in their names (escaped or not) will be handled by this code path,
 | |
| 	although slower, since it's rare to find these characters in table names in SQL. If there's a "_" or "%"
 | |
| 	in the string, LIKE will take care of that, otherwise we now use = . The only exception is
 | |
| 	information_schema database which is handled separately. Patch covers both getTables() and getColumns().
 | |
| 
 | |
|   - Fix for Bug#61150 - First call to stored procedure fails with "No Database Selected".
 | |
| 	The workaround introduced in DatabaseMetaData.getCallStmtParameterTypes to fix
 | |
| 	the bug in server where SHOW CREATE PROCEDURE was not respecting lower-case table names
 | |
| 	is misbehaving when connection is not attached to database and on non-casesensitive OS.
 | |
| 
 | |
|   - Fix for Bug#61105 - Avoid a concurrent bottleneck in Java's character set
 | |
|     encoding/decoding when converting bytes to/from Strings.
 | |
|     
 | |
| 04-21-11 - Version 5.1.16
 | |
| 
 | |
|   - Partial fix for BUG#54135 - setQueryTimeout unsafe across VIP. Fix prevents c/J from 
 | |
|     killing the right ConnectionID but on wrong server.
 | |
| 
 | |
|   - Fix for BUG#57808 - wasNull not set for DATE field with value 0000-00-00
 | |
| 	in getDate() although zeroDateTimeBehavior is convertToNull.
 | |
| 
 | |
|   - Fix for Bug#54425 - Bypassing the server protocol bug where DB should be null-terminated
 | |
|     whether it exists or not. Affects COM_CHANGE_USER.
 | |
| 	
 | |
|   - Fix for Bug#60313 (11890729), bug in 
 | |
|     com.mysql.jdbc.ResultSetRow.getTimestampFast().
 | |
| 
 | |
|   - Fix for bug 11782297, DBMD.getTables (so thus getColumns too) fails with 
 | |
|     table names containing dot (like "junk_[Sp:e,c/ C-h+a=.r]").
 | |
|   
 | |
|   - Added the ability to determine if the connection is against a server on the 
 | |
|     same host via the Connection.isServerLocal() method.
 | |
|     
 | |
|   - Fix for bug 12325877, Setting "autoReconnect=true" and 
 | |
|     "cacheServerConfiguration=true" would cause connections created after
 | |
|     an existing connection fails to have non-existent values for server
 | |
|     variables which lead to exceeding of max allowed packet exceptions when the
 | |
|     new connections were used.
 | |
| 
 | |
| 02-08-11 - Version 5.1.15
 | |
| 
 | |
|    - Fix for Bug#38367, parameters metadata did not reflect the fact that NULL is allowed 
 | |
|      parameter value. So DatabaseMetaData.getProcedureColumns will set isNullable member to
 | |
| 	 java.sql.DatabaseMetaData.procedureNullable now.
 | |
| 
 | |
|    - Completed fix for Bug#27916.
 | |
| 
 | |
|    - Fix for Bug#59224, adding 5.5 reserved words to DatabaseMetaData.getSQLKeywords().
 | |
| 
 | |
|    - Fixed an issue where statement comments set via Connection.setStatementComment()
 | |
|      weren't represented in autoGenerateTestcaseScript=true output.
 | |
|      
 | |
|    - Added ability to include the current java thread dump in the exception message
 | |
|      given for deadlock/wait lock timeout exceptions, enable with 
 | |
|      "includeThreadDumpInDeadlockExceptions=true" in your JDBC url.
 | |
| 
 | |
|    - Added ability to include current thread name as a statement comment visible
 | |
|      in MySQL's "SHOW PROCESSLIST" and Innodb deadlock diagnostics, enable with
 | |
|      "includeThreadNamesAsStatementComment=true".
 | |
|      
 | |
|    - Added an SLF4J WorkoutDatesUpdater.logging adapter. Enable by adding setting the connection
 | |
|      property "logger" to "Slf4JLogger" and placing the appropriate bridge
 | |
|      from SLF4J to the WorkoutDatesUpdater.logging framework of choice in your CLASSPATH. As with
 | |
|      other Connector/J WorkoutDatesUpdater.logging adapters, the log category name used by the
 | |
|      driver is "MySQL". See http://www.slf4j.org/manual.html for more details. 
 | |
|      
 | |
| 12-06-10 - Version 5.1.14
 | |
| 
 | |
|    - Fix for Bug#58728, NPE in com.mysql.jdbc.jdbc2.optional.StatementWrappe.getResultSet()
 | |
|      if rs is null. Regression test case added to Statement regression tests.
 | |
| 
 | |
|    - Fix for Bug#58751, DatabaseMetadata.getIndexInfo() CARDINALITY now clamped
 | |
|      to Integer.MAX_VALUE.
 | |
| 
 | |
|    - Fix for BUG#58590
 | |
|    - Testsuite.Simple.DateTest, MetadataTest, NumbersTest and StatementsTest cleaned and fixed.
 | |
| 
 | |
|    - Testsuite.simple, ConenctionTest & DataSourceTest are up to date. Major rework on 
 | |
|      ConnectionTest.testDeadlockDetection (Sveta) and testUseCompress.
 | |
|    
 | |
|    - Testsuite.simple, CallableStatementTest & CharsetTests are up to date.
 | |
|    
 | |
|    - Testsuite.regression SubqueriesRegressionTest and StringRegressionTest are up to date.
 | |
| 
 | |
|    - Testsuite.regression MicroPerformanceRegressionTest, NumbersRegressionTest, PooledConnectionRegressionTest,
 | |
|      ResultSetRegressionTest are up to date.
 | |
| 
 | |
|    - Testsuite.regression.MetaDataRegressionTest up to date.
 | |
|    
 | |
|    - Typo in StatementRegressionTest.testLikeWithBackslashes fixed. StatementRegressionTest
 | |
|      is up to date.
 | |
| 
 | |
|    - Fix for Bug#58232 - CallableStatement fails to fetch OUT parameter against 5.5 server
 | |
|    
 | |
|    - Testsuite.regression.Connection, tests for BUG#45419 refined by Todd so not to cause failures.
 | |
| 
 | |
|    - Testsuite.regression.CallableStatement, tests for BUG#26959 failing against 5.5+ server.
 | |
| 
 | |
|    - Bringing testsuite.regression.CachedRowsetTest up to date.
 | |
| 
 | |
|    - Bringing BLOBregression tests up to date.
 | |
| 
 | |
|    - Fix for Bug#58042 - Statements test failure not handled.
 | |
| 
 | |
|    - Fix for Bug#57850 - Refresh SELECT statement doesn't use correct data type.
 | |
|      Added Field.valueNeedsQuoting (private final boolean) and protected boolean getvalueNeedsQuoting().
 | |
| 	 UpdatableResultSet refresher and updater call upon this value now.
 | |
| 	 
 | |
|    - Removing commented source in fix for Bug#57697
 | |
|    - Fix for Bug#57697 - Metadata getTables() was not checking for table_name already been quoted.
 | |
|    - Fix for Bug#57694 - 3byte UTF8 can not be used with 5.5.3+ server.
 | |
|    - Fix for Bug#57701 - StatementsTest.testBatchRewriteErrors() failing on new servers.
 | |
|    
 | |
|    - Fix for Bug#54756 - Cannot retrieve data from ResultSet by column name from a Sphinx daemon.
 | |
|      We were relying only on "server version string" passed. Now, determining
 | |
| 	 server version is done via protocol flags too, where applicable.
 | |
| 
 | |
|    - Fix for Bug#57022 - cannot execute a store procedure with output parameters,
 | |
|      database parameter was ignored in db.sp notation. The fix is to "sanitize" 
 | |
| 	 db.sp call just like in patch for noAccessToProcedureBodies. BaseTestCase
 | |
| 	 extended with createDatabase and dropDatabase. Regression test added.
 | |
| 
 | |
|    - Fix for Bug#57262 - "useOldUTF8Behavior" behavior was broken since 5.1.3,
 | |
|      now explicitly sets connection character set to latin1 ("SET NAMES latin1")
 | |
|      during connection post-handshake process.
 | |
|      
 | |
|    - Patch for problem where "noAccessToProcedureBodies=true" was causing 
 | |
|      "underprivileged" user not to have access to procedures created by him.
 | |
| 
 | |
|    - Patch for Bug#56305, unhandled NPE in DatabaseMetaData.java when calling 
 | |
|      wrong-cased function without access to mysql.proc. Although simple by 
 | |
|      itself, some more enhancements were needed for everything to function 
 | |
|      properly.  So, along with catching potential NPE due to server bug, a 
 | |
|      guard against calling JDBC functions with db_name.proc_name notation was 
 | |
|      also added. Necessary changes added to StringUtils.java too.
 | |
| 
 | |
|    - Added ability to load-balance while auto-commit is enabled.  This 
 | |
|      introduces two new properties:
 | |
| 
 | |
|        loadBalanceAutoCommitStatementThreshold defines the number of matching 
 | |
|        statements which will trigger the driver to (potentially) swap physical 
 | |
|        server connections, 
 | |
| 
 | |
|        loadBalanceAutoCommitStatementRegex defines the regular expression 
 | |
|        against which statements must match.  The default values (0 and blank, 
 | |
|        respectively) retain the previously-established behavior that 
 | |
|        connections with auto-commit enabled are never balanced.  Feature 
 | |
|        request documented in Bug#55723.
 | |
| 
 | |
|    - Minor fix in getProcedureColumns() DisplaySize for Bug#51712. Fix for 
 | |
|      Bug#41269 is not complete without this.  getColumnDisplaySize on a 
 | |
|      ResultSet already consisting of metadata is now functional thanks to 
 | |
|      Bogdan.
 | |
| 
 | |
|    - Minor fix for Bug#55217, return 4 as a result of DataBaseMetadata.getJDBCMajorVersion() as per manual.
 | |
| 
 | |
|    - Added support for hosts specified in the URL of the form: 
 | |
|      address=(key=value), supported keys are:
 | |
|        
 | |
|        (protocol=tcp or pipe (for named pipes on Windows)
 | |
|        (path=[] for named pipes)
 | |
|        (host=[]) for TCP connections 
 | |
|        (port=[]) for TCP connections 
 | |
|        
 | |
|        An example would be:
 | |
|        
 | |
|        jdbc:mysql://address=(protocol=tcp)(host=localhost)(port=3306)(user=test)/db
 | |
|        
 | |
|       Any other parameters are treated as host-specific properties that follow 
 | |
|       the conventions of the JDBC URL properties. This now allows per-host 
 | |
|       overrides of any configuration property for multi-host connections 
 | |
|       (failover, loadbalance, replication). We do recommend that the overrides 
 | |
|       are limited to user, password, network timeouts and statement and 
 | |
|       metadata cache sizes. Unexpected behavior may be observed with other 
 | |
|       per-host overrides.
 | |
| 
 | |
|     - Fix for Bug#56099 - Added support for JDBC4-specific functionality when 
 | |
|       using load-balanced connections.
 | |
| 
 | |
|     - Fix for Bug#56200 - Added diagnostic information to SQLException message 
 | |
|       thrown when a closed load-balanced connection is reused.  This 
 | |
|       information will identify the conditions which caused the connection to 
 | |
|       be closed.
 | |
|       
 | |
|     - Fix for Bug#56429 - When using Connector/J configured for failover 
 | |
|       (jdbc:mysql://host1,host2,... URLs), the non-primary servers re-balance 
 | |
|       and spawned new idle connections when the transactions on the master were
 | |
|       committed or rolled-back, eventually exceeding max_connections. It was 
 | |
|       also discovered that session state (autocommit, isolation level, catalog)
 | |
|       wasn't  being copied from the primary connection to secondary 
 | |
|       connections correctly because of the same changes that caused this bug, 
 | |
|       and this was fixed as well.
 | |
|      
 | |
|     - Fix for Bug#56706 - Ensure read-only state is synchronized when new 
 | |
|       load-balanced connections are selected.
 | |
|       
 | |
|     - Fixed Bug#56955 - Connection properties "trustCertificateKeyStoreType" 
 | |
|       and "clientCertificateKeyStoreType" have invalid defaults, therefore 
 | |
|       connections that specify "useSSL" will sometimes fail with exceptions 
 | |
|       from JSSE unless "JKS" has been specified for both of these properties. 
 | |
|       The default value for these properties is now "JKS", and thus it no 
 | |
|       longer has to be specified.
 | |
|       
 | |
|     - Fixed Bug#56979 - Improper connection closing logic leads to TIME_WAIT 
 | |
|       sockets on server
 | |
|       
 | |
|     - Fixed Bug#57380 - DatabaseMetaData.supportsMultipleResultSets() now returns
 | |
|       true when connected to a 4.1 version or later server.
 | |
|       
 | |
|     - Fixed Bug#58706 - Failover connections didn't honor "failOverReadOnly=false", and in some
 | |
|       situations would not fall back.
 | |
|       
 | |
|     - Removed WorkoutDatesUpdater.logging integrations with log4j and apache-commons-WorkoutDatesUpdater.logging due to license
 | |
|       incompatibility. Replacing with SLF4J integration in next release.
 | |
| 
 | |
| 06-24-10 - Version 5.1.13
 | |
| 
 | |
|    - Minor fix in previous patch for Bug#51904. Function ConnectionImpl.setCatalog() was passed quoted argument thus breaking with "...for the right syntax to use near 'test``'"
 | |
| 	  
 | |
|     - Fix for Bug#51912 - Passing NULL as cat. param to getProcedureColumns with !nullCatalogMeansCurrent
 | |
| 	
 | |
|     - Fix for Bug#52167 - Can't parse parameter list with special characters inside
 | |
| 	
 | |
|     - Fix for Bug#51904 - getProcedureColumns() always returns PROCEDURE_CAT result column as NULL
 | |
| 	
 | |
|     - Fix for Bug#51712 - Display Size is always 0 for columns returned by getProcedureColumns()
 | |
| 
 | |
|     - Fix for Bug#51908 - db variable might have end up unassigned when calling
 | |
|       getProcedureColumns()/Functions(). This is a followup on code changes made
 | |
|       for Bug#51022.
 | |
|     
 | |
|     - Fixed Bug#51266 - jdbc:mysql:loadbalance:// would stick to the first
 | |
|       host in the list in some cases, especially exacerbated if the host was
 | |
|       down.
 | |
|       
 | |
|     - Replaced URLs of the form jdbc:mysql://host-1,host-2 with a composite of
 | |
|       a normal connection and a jdbc:mysql:loadbalance:// connection for more 
 | |
|       robustness and cleaner code.
 | |
|       
 | |
|     - Fixed BUG#51643 - Connections using jdbc:mysql:loadbalance:// would 
 | |
|       have statements (and prepared statements) that did not have their connections
 | |
|       changed upon commit()/rollback(), and thus applications that held statement
 | |
|       instances past commit()/rollback() could have data written to or read from
 | |
|       un-intended connections.
 | |
|       
 | |
|     - Fixed BUG#51666 - StatementInterceptors were never "un-safed" after connection 
 | |
|       establishment, causing interceptors which returned result sets pre/post execution
 | |
|       would not work.
 | |
|       
 | |
|     - Fixed BUG#51783 - Load-balanced connections could throw a SQLException
 | |
|       incorrectly on commit() or rollback().  This was not caused by failures in commit
 | |
|       or rollback, but rather by the possibility that the newly-selected physical
 | |
|       connection was stale.  Added logic to catch and retry if this happens, up to
 | |
|       the number of hosts specified for load-balancing.  Also added new property,
 | |
|       loadBalanceValidateConnectionOnSwapServer, which controls whether to explicitly
 | |
|       ping the selected host (otherwise, the host is presumed to be up, and will only
 | |
|       be noticed if auto-commit or transaction isolation state needs to be set and
 | |
|       fails).
 | |
|       
 | |
|     - Added loadBalancePingTimeout property to allow a specific timeout to be set
 | |
|       for each ping executed against the servers.  This ping is executed when the
 | |
|       physical connections are rebalanced (commit/rollback or communication exception),
 | |
|       or when a query starting with (exactly) "/* ping */" is executed.  The latter
 | |
|       causes each open underlying physical connection to be pinged.
 | |
| 
 | |
|     - Fixed BUG#51776 - Connection.rollback() could swallow exceptions incorrectly.
 | |
| 
 | |
|     - Fixed BUG#52231 - Differences in definitions of which SQLExceptions trigger
 | |
|       a failover event could result in failure to try more than a single host in 
 | |
|       certain situations.
 | |
|       
 | |
|     - Fixed BUG#52534 - Performance regression using load-balanced connection.  
 | |
| 
 | |
|     - More aggressively purge the statement timeout timers after they've been cancelled to
 | |
|       trade time for memory. This purge only happens if statement timeouts are in use.
 | |
|       
 | |
|     - Added management of running load-balanced connections.  Statistics can be obtained,
 | |
|       and hosts added/dropped via com.mysql.jdbc.ConnectionGroupManager or the JMX
 | |
|       implementation.  This functionality is enabled by setting the new paramenter,
 | |
|       loadBalanceConnectionGroup to the name of the logical grouping of connections.
 | |
|       All load-balanced connections sharing the same loadBalanceConnectionGroup value,
 | |
|       regardless of how the application creates them, will be managed together.  To
 | |
|       enable JMX-based management, set loadBalanceEnableJMX=true and ensure that remote
 | |
|       JMX is enabled in the JRE (eg, use -Dcom.sun.management.jmxremote).
 | |
|       
 | |
|     - Added loadBalanceExceptionChecker property, which takes a fully-qualified class
 | |
|       name implementing com.mysql.jdbc.LoadBalancedExceptionChecker interface.  This
 | |
|       allows custom evaluation of SQLExceptions thrown to determine whether they should
 | |
|       trigger failover to an alternate host in load-balanced deployments.  The default
 | |
|       is com.mysql.jdbc.StandardLoadBalanceExceptionChecker.
 | |
|       
 | |
|     - Added two new properties which allow more flexibility in determining which
 | |
|       SQLExceptions should trigger failover in a load-balanced deployment.  The new
 | |
|       loadBalanceSQLStateFailover property takes a comma-delimited list of SQLState
 | |
|       codes which are compared to the SQLState of the SQLException (matching done
 | |
|       with trailing wildcard), while loadBalanceSQLExceptionSubclassFailover takes
 | |
|       a comma-delimited list of fully-qualified class/interface names, against
 | |
|       which the SQLException is checked to determine if it is an instance of any.
 | |
|       Matches trigger failover to an alternate host.
 | |
|       
 | |
|     - Fixed Bug#51704 - Re-written batched statements don't honor escape processing 
 | |
|       flag of their creator.
 | |
|       
 | |
|     - Fixed Bug#43576 - Sometimes not able to register OUT parameters for 
 | |
|       CallableStatements.
 | |
|       
 | |
|     - Fixed Bug#54175 - Driver doesn't support utf8mb4 for servers 5.5.2 and newer. The
 | |
|       driver now auto-detects servers configured with character_set_server=utf8mb4 or
 | |
|       treats the Java encoding "utf-8" passed via "characterEncoding=..." as utf8mb4 in
 | |
|       the "SET NAMES=" calls it makes when establishing the connection. 
 | |
|     
 | |
| 02-18-10 - Version 5.1.12
 | |
| 
 | |
|     - NO_INDEX_USED and NO_GOOD_INDEX used were only being set when profileSQL 
 | |
|       was set to "true", and in some cases their values were reversed.
 | |
| 
 | |
|     - Fix for Bug#51022 - conn.getMetaData().getProcedures("schema",null,"%"); 
 | |
|       returns all stored procedures from all databases and not only for given 
 | |
|       one.
 | |
| 	
 | |
|     - Fixed Bug#50538 - ${svn.revno} shows up in DBMD.getDriverVersion().
 | |
|     
 | |
|     - Removed usage of timestamp nanoseconds in PreparedStatement.setTimestamp(),
 | |
|       as long as Bug#50774 exists in the server and there's no real support
 | |
|       for nanos/micros in TIMESTAMPs, avoid the performance regression usage of 
 | |
|       them causes.
 | |
| 
 | |
|     
 | |
| 01-20-10 - Version 5.1.11
 | |
|  
 | |
|     - Fix for BUG#50288 - NullPointerException possible during invalidateCurrentConnection() for load-balanced
 | |
|       connections.
 | |
|  
 | |
|     - Fix for BUG#49745 - deleteRow() for updatable result sets can cause full table scan because escaped hex 
 | |
|       values are used for primary key identifiers.
 | |
|  
 | |
|     - Fix for BUG#49607 - Provide Connection context in ExceptionInterceptor.
 | |
|  
 | |
|     - Fix for BUG#48605 - Ping leaves closed connections in liveConnections, causing subsequent Exceptions when
 | |
|       that connection is used.
 | |
|  
 | |
|     - Fix for BUG#48442 - Load-balanced Connection object returns inconsistent results for hashCode() and equals()
 | |
|       dependent upon state of underlying connections.
 | |
|  
 | |
|     - Fix for BUG#48172 - Batch rewrite requires space immediately after "VALUES"
 | |
|     
 | |
|     - Statement Interceptors didn't completely intercept server-side prepared statements.
 | |
|     
 | |
|     - Fix for BUG#48486 Cannot use load balanced connections with MysqlConnectionPoolDataSource.
 | |
|     
 | |
|     - Fix for Bug#32525 - "noDatetimeStringSync" doesn't work for server-side prepared statements. Now it does.
 | |
| 
 | |
|     - Hooked up exception interceptors so they get called now.
 | |
|     
 | |
|     - Rev'd the statement interceptor interface to pass on some server flags, warning counts and errors. See 
 | |
|       the com.mysql.jdbc.StatementInteceptorsV2 interface for more details. The driver will create adaptors to
 | |
|       transparently convert older implementations to the newer interface at runtime.
 | |
|       
 | |
|     - Statement Interceptors are now enabled at connection instantiation, but 
 | |
|       can not return result sets (they will be ignored)  until the connection 
 | |
|       has bootstrapped itself. If during the init() method your interceptor 
 | |
|       requires access to the connection itself, it should ensure that methods 
 | |
|       that might throw exceptions if the connection is closed should handle 
 | |
|       this in a robust manner.
 | |
|       
 | |
|     - "Replication" connections (those with URLs that start with 
 | |
|       jdbc:mysql:replication) now use a jdbc:mysql:loadbalance connection
 | |
|       under the hood for the slave "pool". This also means that one can set
 | |
|       load balancing properties such as "loadBalanceBlacklistTimeout" and
 | |
|       "loadBalanceStrategy" to choose a mechanism for balancing the load and
 | |
|       failover/fault tolerance strategy for the slave pool. This work was done
 | |
|       in order to fix Bug#49537.
 | |
|       
 | |
|     - Fixed Bug#36565 - permgen leak from java.util.Timer. Unfortunately no great
 | |
|       fix exists that lets us keep the timer shared amongst connection instances, so
 | |
|       instead it's lazily created if need be per-instance, and torn down when the 
 | |
|       connection is closed.
 | |
|       
 | |
|     - Fixed BUG#49700 - Connections from ConnectionPoolDataSource don't
 | |
|       maintain any values set with "sesssionVariables=...". This was a bug
 | |
|       in Connection.changeUser()/resetServerState(), we now resubmit the
 | |
|       session variables during the execution of these methods.
 | |
|     
 | |
| 09-22-09 - Version 5.1.10
 | |
| 
 | |
|     - Fix for BUG#47494 - Non standard port numbers in the URL are not honored.
 | |
| 
 | |
| 09-16-09 - Version 5.1.9
 | |
| 
 | |
|     - The driver has been OSGi-ified. The bundle symbolic name is "com.mysql.jdbc", see META-INF/MANIFEST.MF to see
 | |
|       what interfaces we export.
 | |
|       
 | |
|     - Fixed BUG#45040, adding missing tags from SVN import to BZR branch for
 | |
|       5.1.
 | |
|       
 | |
|     - Fix for a variant of Bug#41484 - ResultSet.find*(String) failed when using cached result set
 | |
|       metadata.
 | |
|       
 | |
|     - Fixed BUG#46637 - When the driver encounters an error condition that causes it to create a 
 | |
|       CommunicationsException, it tries to build a friendly error message that helps diagnose 
 | |
|       what is wrong. However, if there has been no network packets received from the server, 
 | |
|       the error message contains bogus information like:
 | |
| 
 | |
|       "The last packet successfully received from the server was 1,249,932,468,916 milliseconds ago.  
 | |
|       The last packet sent successfully to the server was 0 milliseconds ago."
 | |
|       
 | |
|       Now the error message states that it has never received any packets from the server in this
 | |
|       scenario.
 | |
|       
 | |
|     - Added a new option, "queryTimeoutKillsConnection", when set to "true" will cause timeouts set
 | |
|       by Statement.setQueryTimeout() to forcibly kill the connection, not just the query.
 | |
|       
 | |
|     - Fixed BUG#32216, "PORT" property filled in by Driver.parseURL() not always present. The driver 
 | |
|       will now always fill in the "PORT" (using 3306 if not specified) property, and the "HOST" property 
 | |
|       (using "localhost" if not specified) when parseURL() is called. The driver also parses a list of hosts 
 | |
|       into HOST.n and PORT.n properties as well as adding a property "NUM_HOSTS" for the number of hosts 
 | |
|       it has found. If a list of hosts is passed to the driver, "HOST" and "PORT" will be set to the 
 | |
|       values given by "HOST.1" and "PORT.1" respectively. This change has centralized and cleaned up a large
 | |
|       swath of code used to generate lists of hosts, both for load-balanced and fault tolerant connections and
 | |
|       their tests.
 | |
|       
 | |
|     - Fixed the ResultSet side of BUG#23584 - Calendar discared when retrieving dates from server-side prepared
 | |
|       statements. The other cases of this bug were fixed when "useLegacyDatetimeCode=false" became the default.
 | |
| 
 | |
|     - Fixed Bug#44324 - Data truncation exceptions did not return the vendor error code from the server. Note that
 | |
|       the vendor error code is not hard-coded to 1265 as in the bug report, because the server returns different
 | |
|       error codes for different types of truncations, and we did not want to mask those.
 | |
|       
 | |
|     - Fixed Bug#27431 - ResultSet.deleteRow() advances the cursor. The driver now places the cursor on the prior
 | |
|       row in the result set, or before the start of the result set if the result set is empty after the deletion.
 | |
|       
 | |
|     - Fixed Bug#43759 - ResultSet.deleteRow() generates corrupt DELETE statement for primary keys with binary
 | |
|       data.
 | |
|       
 | |
|     - Fixed Bug#46925 - Suspendable XA connections were not pinned to the XID for the global transaction, leading
 | |
|       to failure when attempting to suspend/resume/commit from different logical XA connections.
 | |
|       
 | |
|     - Fixed Bug#44508 - DatabaseMetadata.getSuperTypes() returns result set with incorrect column names.
 | |
|       
 | |
|     - Fixed Bug#46788 - Batched prepared statements with ON DUPLICATE KEY UPDATE are rewritten incorrectly when
 | |
|       when there are parameters as part of the UPDATE clause. Statements of this form can not be rewritten
 | |
|       as multi-value INSERTs so they are rewritten into multi-statements instead.
 | |
| 
 | |
| 07-16-09 - Version 5.1.8
 | |
|     - Fixed BUG#44588 - Fixed error message for connection exceptions when
 | |
|       streaming result sets are used.
 | |
|       
 | |
|     - Modified/fixed test cases using UnreliableSocketFactory.
 | |
| 
 | |
|     - Fixed BUG#43421 - Made doPing() global blacklist-aware, so that it does not
 | |
|       throw Exceptions when at least a single load-balanced server is available.
 | |
| 
 | |
|     - Fixed BUG#43071 - Specifying ASCII encoding for converting seed String to
 | |
|       byte array; allowing system default encoding to be used causes auth failures
 | |
|       on EBCDIC platforms.
 | |
| 
 | |
|     - Fixed BUG#43070 - traceProtocol parameter isn't configured early enough to
 | |
|       capture handshake protocol.
 | |
| 
 | |
|     - Fixed BUG#41161 - PreparedStatement.addBatch() doesn't check for all parameters
 | |
|       being set, which leads to a NullPointerException when calling executeBatch() and
 | |
|       rewriting batched statements into multi-value or multi-statement statements.
 | |
| 
 | |
|     - Fixed BUG#42055 - ConcurrentModificationException possible when removing items
 | |
|       from global blacklist.
 | |
|       
 | |
|     - Fixed Bug #42309 - Statement.getGeneratedKeys() returns 2 keys when
 | |
|       using ON DUPLICATE KEY UPDATE
 | |
|       
 | |
|     - Fixed some quoting of substituted parameter issues in localized error messages.
 | |
|     
 | |
|     - Added a version check around getting the variable 'auto_increment_increment' for
 | |
|       servers < 5.0.2, which quiets down a warning message that the driver would log
 | |
|       when connecting to MySQL-4.1 or older.
 | |
|       
 | |
|     - The driver will automatically disable elideSetAutoCommit and useLocalTransactionState
 | |
|       if it detects a MySQL server version older than 6.0.10 with the query cache enabled, due
 | |
|       to Bug#36326 which can cause the server to report bogus transaction state.
 | |
|       
 | |
|     - Fixed a performance regression (Bug#41532) in rewritten batched inserts when "ON DUPLICATE KEY" 
 | |
|       was present.
 | |
|       
 | |
|       Fixes include an improvement to token searching in the statement, and the ability for the driver
 | |
|       to rewrite prepared statements that include "ON DUPLICATE KEY UPDATE" into multi-valued inserts as
 | |
|       long as there is no use of LAST_INSERT_ID() in the update clause (as this would render 
 | |
|       getGeneratedKey() values incorrect).
 | |
|       
 | |
|     - Fixed Bug#44056 - Statement.getGeneratedKeys() retains result set instances until statement is closed,
 | |
|       thus causing memory leaks for long-lived statements, or statements used in tight loops.
 | |
|       
 | |
|     - Fixed issues with server-side prepared statement batch re-writing caused by the fix to Bug#41532.
 | |
|       Rewriting of batched statements now works the same between normal prepared statements and server-side
 | |
|       prepared statements.
 | |
|       
 | |
|     - Fixed Bug#44862 - getBestRowIdentifier does not return resultset as per JDBC API specifications
 | |
| 
 | |
|     - Fixed Bug#44683 - getVersionColumns does not return resultset as per JDBC API specifications
 | |
| 
 | |
|     - Fixed Bug#44865 - getColumns does not return resultset as per JDBC API specifications
 | |
| 
 | |
|     - Fixed Bug#44868 - getTypeInfo does not return resultset as per JDBC API specifications
 | |
| 
 | |
|     - Fixed Bug#44869 - getIndexInfo does not return resultset as per JDBC API specifications
 | |
| 
 | |
|     - Fixed Bug#44867 - getImportedKeys/exportedKeys/crossReference doesn't have correct type for DEFERRABILITY
 | |
| 
 | |
|     - Fixed Bug#41730 - SQL Injection when using U+00A5 and SJIS
 | |
|     
 | |
|     - Fixed Bug#43196 - Statement.getGeneratedKeys() doesn't return values for UNSIGNED BIGINTS with values > Long.MAX_VALUE.
 | |
|       Unfortunately, because the server doesn't tell clients what TYPE the auto increment value is, the driver can't consistently 
 | |
|       return BigIntegers for the result set returned from getGeneratedKeys(), it will only return them if the value is > Long.MAX_VALUE. 
 | |
|       If your application needs this consistency, it will need to check the class of the return value from .getObject() on the 
 | |
|       ResultSet returned by Statement.getGeneratedKeys() and if it's not a BigInteger, create one based on the java.lang.Long that 
 | |
|       is returned.
 | |
|       
 | |
|     - Fixed Bug#38387 - "functionsNeverReturnBlobs=true" now works for SQL functions that return binary/binary collation VAR_STRINGS.
 | |
| 
 | |
|     - Fixed Bug#45171 - Connection.serverPrepareStatement() returns wrong default result set types
 | |
|     
 | |
|     - Fixed Bug #43714 - useInformationSchema with
 | |
|       DatabaseMetaData.getExportedKeys() throws exception
 | |
| 
 | |
|     - Fixed Bug #42253 - multiple escaped quotes cause exception from
 | |
|       EscapeProcessor
 | |
| 
 | |
|     - Fixed Bug #41566 - Quotes within comments not correctly ignored by
 | |
|       statement parser
 | |
| 
 | |
|     - Fixed Bug #41269 - DatabaseMetadata.getProcedureColumns() returns
 | |
|       wrong value for column length
 | |
| 
 | |
|     - Fixed Bug #40439 - Error rewriting batched statement if table name
 | |
|       ends with "values".
 | |
| 
 | |
|     - Fixed Bug #41484 Accessing fields by name after the ResultSet is closed throws
 | |
|       NullPointerException.
 | |
| 
 | |
|     - Fixed Bug #39426 - executeBatch passes most recent PreparedStatement params
 | |
|       to StatementInterceptor
 | |
|       
 | |
|     - Support use of INFORMATION_SCHEMA.PARAMETERS when "useInformationSchema" is set "true" and the view exists
 | |
|       for DatabaseMetaData.getProcedureColumns() and getFunctionColumns().
 | |
|       
 | |
|     - When "logSlowQueries" is set to "true", and the driver has made a connection to a server that has suport
 | |
|       for the SERVER_QUERY_WAS_SLOW flag in the protocol, the query will be logged if the server indicates the
 | |
|       query has passed the slow query threshold.
 | |
| 
 | |
|     - Added new property, "maxAllowedPacket" to set maximum allowed packet size to
 | |
|       send to server.
 | |
| 
 | |
| 10-22-08 - Version 5.1.7
 | |
| 	- Fixed BUG#33861 - Added global blacklist for LoadBalancingConnectionProxy and
 | |
| 	  implemented in RandomBalanceStrategy and BestResponseTimeBalanceStrategy.
 | |
| 	  Added new property, "loadBalanceBlacklistTimeout", to control how long a
 | |
| 	  server lives in the global blacklist.
 | |
| 	  
 | |
| 	- Fixed BUG#38782 - Possible IndexOutOfBoundsException in random load balancing
 | |
| 	  strategy.
 | |
| 	  
 | |
| 	- Fixed BUG#39784 - invalidateCurrentConnection() does not manage global blacklist
 | |
| 	  when handling connection exceptions.
 | |
| 
 | |
| 	- Fixed BUG#40031 - Adding support for CallableStatement.execute() to call
 | |
| 	  stored procedures that are defined as NO SQL or SQL READ DATA when failed
 | |
| 	  over to a read-only slave with replication driver.
 | |
| 
 | |
| 	- Fixed BUG#35170- ResultSet.isAfterLast() doesn't work with for
 | |
| 	  streaming result sets.
 | |
| 	  
 | |
| 	- Fixed BUG#35199 - Parse error for metadata in stored function.
 | |
| 	
 | |
| 	- Fixed BUG#35415 - When result set is from views without access to underlying
 | |
| 	  columns and is opened with CONCUR_UPDATABLE, don't throw SQLExceptions when
 | |
| 	  checking updatability due to access permissions, instead return
 | |
| 	  CONCUR_READONLY from getConcurrency.
 | |
| 	  
 | |
| 	- Fixed BUG#35666 - NullPointerException when using "logSlowQueries=true" with
 | |
| 	  server-side prepared statements enabled.
 | |
| 	  
 | |
| 	- Fixed BUG#35660 - Calling equals() on connections created with "jdbc:mysql:loadbalance:"
 | |
| 	  URLs did not have the same behavior as "plain" connections. The behavior we use
 | |
| 	  is the implementation in java.lang.Object, load-balanced connections just happened
 | |
| 	  to be using a java.lang.reflect.Proxy which required some custom behavior in 
 | |
| 	  equals() to make it work the same as "plain" connections.
 | |
| 	  
 | |
| 	  Note that there is no *specified* equals contract for JDBC connections in the
 | |
| 	  JDBC specification itself, but the test makes sure that our implementation is
 | |
| 	  at least consistent.
 | |
| 	    
 | |
| 	- Fixed BUG#35810 - Properties set in URLs and then passed to DataSources via setUrl() 
 | |
| 	  did not take effect in certain circumstances. This also fixes related bugs BUG#13261 and
 | |
| 	  BUG#35753.
 | |
| 	  
 | |
| 	- Fixed BUG#36051 - ResultSet.getTime() won't accept value of '24' for hours component of
 | |
| 	  a java.sql.Time.
 | |
| 	  
 | |
| 	- Fixed BUG#36830 - DBMD.getColumns() doesn't return correct COLUMN_SIZE for SET columns. The
 | |
| 	  logic wasn't accounting for the ","s in the column size.
 | |
| 	  
 | |
|     - Fixed BUG#35610, BUG#35150- ResultSet.findColumn() and ResultSet.get...(String) doesn't allow
 | |
|       column names to be used, and isn't congruent with ResultSetMetadata.getColumnName().
 | |
|       
 | |
|       By default, we follow the JDBC Specification here, in that the 4.0 behavior
 | |
| 	  is correct. Calling programs should use ResultSetMetaData.getColumnLabel() to dynamically determine
 | |
| 	  the correct "name" to pass to ResultSet.findColumn() or ResultSet.get...(String) whether or not the
 | |
| 	  query specifies an alias via "AS" for the column. ResultSetMetaData.getColumnName() will return the
 | |
| 	  actual name of the column, if it exists, and this name can *not* be used as input to ResultSet.findColumn()
 | |
| 	  or ResultSet.get...(String).
 | |
| 	  
 | |
| 	  The JDBC-3.0 (and earlier) specification has a bug, but you can get the buggy behavior
 | |
| 	  (allowing column names *and* labels to be used for ResultSet.findColumn() and get...(String)) by setting 
 | |
| 	  "useColumnNamesInFindColumn" to "true".
 | |
| 	
 | |
| 	- Fixed BUG#35489 - Prepared statements from pooled connections cause NPE when closed() under JDBC-4.0.
 | |
| 	
 | |
| 	- Added connection property "useLocalTransactionState" which configures if the driver use the in-transaction 
 | |
| 	  state provided by the MySQL protocol to determine if a commit() or rollback() should actually be sent to the database.
 | |
| 	  (disabled by default).
 | |
| 	  
 | |
| 	- Use socket timeouts for JDBC-4.0's Connection.isValid(int timeout) instead of timer tasks, for scalability. As a side effect
 | |
| 	  internally, any communications with the database can use a timeout different than the configured timeout, but this isn't currently
 | |
| 	  used.
 | |
| 	  
 | |
| 	- The number and position of columns for "SHOW INNODB STATUS" changed in MySQL-5.1, which caused the 
 | |
| 	  "includeInnodbStatusInDeadlockExceptions" feature to not show data about the deadlock.
 | |
| 	  
 | |
| 	- Implemented support of INFORMATION_SCHEMA for DatabaseMetadata.getTables() (views there are available as "SYSTEM TABLE"), and thus
 | |
| 	  also made INFORMATION_SCHEMA tables available via DatabaseMetadata.getColumns().
 | |
| 	  
 | |
| 	- Fixed BUG#39352, "INSERT ... ON DUPLICATE KEY UPDATE" doesn't return "0" for un-affected rows. This requires the driver to not
 | |
| 	  send the "CLIENT_FOUND_ROWS" flag to the server when it connects if the connection property "useAffectedRows" is set to "true", 
 | |
| 	  which breaks JDBC-compliance, but currently there is no other way to get correct return values from the server.
 | |
| 	  
 | |
| 	- Fixed BUG#38747 - ResultSets in "streaming" mode throw an exception when closed when the connection is set as "read-only".
 | |
| 	  
 | |
| 	- Fixed BUG#37570 - Can't use non-latin1 passwords. Added connection property "passwordCharacterEncoding". Leaving this set to 
 | |
| 	  the default value (null), uses the platform character set, which works for ISO8859_1 (i.e. "latin1") passwords. For passwords 
 | |
| 	  in other character encodings, the encoding will have to be specified with this property, as it's not possible for the driver to 
 | |
| 	  auto-detect this.
 | |
| 	  
 | |
| 	- Fixed BUG#39911 - We don't retrieve nanos correctly when -parsing- a string for a TIMESTAMP. MySQL itself doesn't support micros
 | |
| 	  or nanos in timestamp values, but if they're stored as strings, historically we try and parse the nanos portion as well. 
 | |
| 	  Unfortunately we -interpreted- them as micros. This fix includes correcting that behavior, and setting the milliseconds portion of
 | |
| 	  such TIMESTAMPs to a correct value as well.
 | |
| 	  
 | |
| 	- Fixed BUG#39962 - ResultSet.findColumn() is slow for applications that call it too often (we're looking at -you- Hibernate). We're
 | |
| 	  using TreeMaps to get case-insensitive comparisons (required for JDBC compliance), but they can be slower than hash maps, so using the
 | |
| 	  approach Alex Burgel points out in this bug seems to help.
 | |
| 	  
 | |
| 	- Fixed BUG#39956 - Statement.getGeneratedKeys() doesn't respect the 'auto_increment_increment' value. We now grab the *session-scoped* 
 | |
| 	  value, and use that. Beware that using "cacheServerConfig=true" will cause us to cache this value, so new connections won't see changes
 | |
| 	  that are applied via something like "init-sql".
 | |
| 	  
 | |
| 	- Fixed BUG#39611 - ReplicationConnection never sends queries to last host in slave list.
 | |
| 	
 | |
| 	- Fixed BUG#34185 - Statement.getGeneratedKeys() does not raise exception when statement was not 
 | |
| 	  created with Statement.RETURN_GENERATED_KEYS flags.
 | |
| 	  
 | |
| 	- Using autoGenerateTestcaseScript=true now logs all statements, regardless or not if they cause errors when processed by MySQL.
 | |
| 	  A "clock" value (millis since epoch) was added in the comment that is pre-pended with the idea that it can then be used
 | |
| 	  when post-processing output to sequence things correctly for a multi-threaded testcase, or to replay the test case with the
 | |
| 	  correct think times.
 | |
| 	
 | |
| 03-06-08 - Version 5.1.6
 | |
| 
 | |
|     - JDBC-4.0-ized XAConnections and datasources.
 | |
|     
 | |
|     - Fixed BUG#31790 MysqlValidConnectionChecker 
 | |
|       doesn't properly handle ReplicationConnection
 | |
|     
 | |
|     - Fixed Bug#20491 - DatabaseMetadata.getColumns() doesn't
 | |
|       return correct column names if connection character set
 | |
|       isn't UTF-8. (There was a server-side component of this that
 | |
|       was fixed late in the 5.0 development cycle, it seems, this
 | |
|       is the last piece that fixes some loose ends in the JDBC
 | |
|       driver). This fix touches *all* metadata information coming
 | |
|       from the MySQL server itself.
 | |
|       
 | |
|     - Fixed MysqlIO.nextRowFast() to only attempt to read server
 | |
|       warning counts and status if talking to a 4.1 or newer server
 | |
|       (fixes a hang when reading data from 4.0 servers).
 | |
|       
 | |
|     - Made profiler event handling extensible via the "profilerEventHandler"
 | |
|       connection property.
 | |
|       
 | |
|     - Fixed Bug#31823 - CallableStatement.setNull() on a stored function would 
 | |
|       throw an ArrayIndexOutOfBounds when setting the last parameter to null when calling setNull().
 | |
| 
 | |
|     - Added SSL-related configuration property "verifyServerCertificate". If set to "false", the driver won't verify 
 | |
|       the server's certificate when "useSSL" is set to "true".
 | |
|       
 | |
|       When using this feature, the keystore parameters should be specified by the 
 | |
|       "clientCertificateKeyStore*" properties, rather than system properties, as the JSSE doesn't
 | |
|       make it straightforward to have a non-verifying trust store and the "default" key store.
 | |
|       
 | |
|     - Fixed ResultSetMetadata.getColumnName() for result sets returned from
 | |
|       Statement.getGeneratedKeys() - it was returning null instead of
 | |
|       "GENERATED_KEY" as in 5.0.x.
 | |
|       
 | |
|     - More applicable fix for the "random" load balance strategy in the face
 | |
|       of node non-responsive, it re-tries a *different* random node, rather 
 | |
|       than waiting for the node to recover (for BUG#31053)
 | |
|       
 | |
|     - Fixed BUG#32577 - no way to store two timestamp/datetime values that happens
 | |
|       over the DST switchover, as the hours end up being the same when sent as
 | |
|       the literal that MySQL requires.
 | |
| 
 | |
|       Note that to get this scenario to work with MySQL (since it doesn't support
 | |
|       per-value timezones), you need to configure your server (or session) to be in UTC,
 | |
|       and tell the driver not to use the legacy date/time code by setting
 | |
|       "useLegacyDatetimeCode" to "false". This will cause the driver to always convert
 | |
|       to/from the server and client timezone consistently.
 | |
|       
 | |
|       This bug fix also fixes BUG#15604, by adding entirely new date/time handling
 | |
|       code that can be switched on by "useLegacyDatetimeCode" being set to "false" as
 | |
|       a JDBC configuration property. For Connector/J 5.1.x, the default is "true",
 | |
|       in trunk and beyond it will be "false" (i.e. the old date/time handling code, warts
 | |
|       and all will be deprecated).
 | |
|       
 | |
|     - Fixed BUG#32877 - Load balancing connection using best response time would incorrectly
 | |
|       "stick" to hosts that were down when the connection was first created.
 | |
|       
 | |
|       We solve this problem with a black list that is used during the picking of new hosts.
 | |
|       If the black list ends up including all configured hosts, the driver will retry for
 | |
|       a configurable number of times (the "retriesAllDown" configuration property, with a default
 | |
|       of 120 times), sleeping 250ms between attempts to pick a new connection.
 | |
|       
 | |
|       We've also went ahead and made the balancing strategy extensible. To create a new strategy,
 | |
|       implement the interface com.mysql.jdbc.BalanceStrategy (which also includes our standard
 | |
|       "extension" interface), and tell the driver to use it by passing in the
 | |
|       class name via the "loadBalanceStrategy" configuration property. 
 | |
|       
 | |
|     - Fixed BUG#30508 - ResultSet returned by Statement.getGeneratedKeys() is not closed 
 | |
|       automatically when statement that created it is closed.
 | |
|       
 | |
|     - Added two new connection properties, "selfDestructOnPingSecondsLifetime" and 
 | |
|       "selfDestructOnPingMaxOperations" designed to control overall connection lifetime
 | |
|       (useful to reclaim resources on the server side) for connection pools that don't have such a 
 | |
|       facility. 
 | |
|       
 | |
|       The driver will consult the values of these properties when a ping is sent, either through 
 | |
|       calling Connection.ping(), issuing the "ping marker" query (any query that starts with 
 | |
|       "/* ping */"), or when using JDBC-4.0, calling Connection.isValid(). 
 | |
|       
 | |
|       If the connection has issued too many operations, or is too old, the driver will
 | |
|       throw a SQLException with the SQLState of "08S01" at the time of the ping, which
 | |
|       will cause the connection to be invalidated with most pools in use today.
 | |
|       
 | |
|     - Fixed issue where driver could send invalid server-side prepared statement 
 | |
|       IDs to the server when the driver was setup to do auto-reconnect as the
 | |
|       connection could get set up enough to start sending queries on one thread,
 | |
|       while the thread that "noticed" the connection was down hasn't completed
 | |
|       re-preparing all of the server-side prepared statements that were open when
 | |
|       the connection died.
 | |
|       
 | |
|       Potentially fixes cause for bug 28934. Potentially fixes other possible race
 | |
|       conditions where one thread that has created a connection "shares" it with other
 | |
|       threads if the connection is reconnected due to auto-reconnect functionality.
 | |
|       
 | |
|     - Fixed BUG#33823 - Public interface ResultSetInternalMethods with reference to 
 | |
|       non-public class com.mysql.jdbc.CachedResultSetMetaData.
 | |
|       
 | |
|     - For any SQLException caused by another Throwable, besides dumping the message or stack
 | |
|       trace as a string into the message, set the underlying Throwable as the cause for
 | |
|       the SQLException, making it accessible via getCause().  
 | |
|      
 | |
|     - Fixed BUG#34093 - Statements with batched values do not return correct values for 
 | |
|       getGeneratedKeys() when "rewriteBatchedStatements" is set to "true", and the 
 | |
|       statement has an "ON DUPLICATE KEY UPDATE" clause.
 | |
| 
 | |
|     - Fixed BUG#31192 - Encoding Issue retrieving serverVersion in MysqlIO in the 
 | |
|       method doHandshake when encoding doesn't contain ASCII characters in the "standard"
 | |
|       place (i.e. ebcdic).
 | |
|       
 | |
|     - Fixed issue where META-INF in the binary .jar file wasn't packed correctly,
 | |
|       leading to failure of the JDBC-4.0 SPI mechanism.
 | |
|        
 | |
|     - CallableStatements that aren't really stored procedure or stored function calls can
 | |
|       now be used, for tools such as Oracle JDeveloper ADF that issue statements such as 
 | |
|       DDL through CallableStatements.
 | |
|     
 | |
|     - Fixed BUG#34518 - Statements using cursor fetch leaked internal prepared statements
 | |
|       until connection was closed. The internal prepared statement is now held open while
 | |
|       the result set is open, and closed by the result set itself being closed.
 | |
| 
 | |
|     - Fixed BUG#34677 - Blob.truncate() wouldn't take "0" as an argument.
 | |
| 
 | |
|     - CommunicationExceptions now carry information about the last time a packet
 | |
|       was received from the MySQL server, as well as when the last packet was sent
 | |
|       to one, in an effort to make it easier to debug communications errors caused
 | |
|       by network timeouts.
 | |
|       
 | |
|     - Reverted a change to DatabaseMetadata.getColumns() from 5.0, where
 | |
|       getColumns() would report NULL for COLUMN_SIZE for TIME, DATE, DATETIME
 | |
|       and TIMESTAMP types. It now reports the column size, in the 
 | |
|       DatabaseMetadata implementations that use "SHOW" commands, and the 
 | |
|       INFORMATION_SCHEMA.
 | |
|       
 | |
|     - Fixed Bug#34762 - RowDataStatic does't always set the metadata in 
 | |
|       ResultSetRow, which can lead to failures when unpacking DATE,
 | |
|       TIME, DATETIME and TIMESTAMP types when using absolute, relative,
 | |
|       and previous result set navigation methods.
 | |
|       
 | |
|     - Fixed BUG#34703 - Connection.isValid() invalidates connection after
 | |
|       timeout, even if connection is actually valid.
 | |
|       
 | |
|     - Fixed BUG#34194 - ResultSetMetaData.getColumnTypeName() returns
 | |
|       "UNKNOWN" for GEOMETRY type.
 | |
|       
 | |
|     - Fixed BUG#33162 - NullPointerException instead of SQLException 
 | |
|       thrown for ResultSet.getTimestamp() when not positioned on a
 | |
|       row.
 | |
| 
 | |
|     - The ConnectionLifecycleInterceptor interface now has callback methods for
 | |
|       transaction initiation (transactionBegun()), and completion 
 | |
|       (transactionCompleted()), as reported by the *server* (i.e. 
 | |
|       calling Connection.setAutoCommit(false) will not trigger 
 | |
|       transactionBegun() being called, however the first statement
 | |
|       which causes a transaction to start on the server will cause
 | |
|       transactionBegun() to be called *after* the statement has been processed
 | |
|       on the server).
 | |
| 
 | |
|     - Fixed Bug#34913 - ResultSet.getTimestamp() returns incorrect
 | |
|       values for month/day of TIMESTAMPs when using server-side
 | |
|       prepared statements (not enabled by default).
 | |
|       
 | |
|     - Fixed BUG#34937 - MysqlConnectionPoolDataSource does not support 
 | |
|       ReplicationConnection. Notice that we implemented com.mysql.jdbc.Connection
 | |
|       for ReplicationConnection, however, only accessors from ConnectionProperties
 | |
|       are implemented (not the mutators), and they return values from the currently
 | |
|       active connection. All other methods from com.mysql.jdbc.Connection are
 | |
|       implemented, and operate on the currently active connection, with the exception of
 | |
|       resetServerState() and changeUser().
 | |
|       
 | |
|     - Connections created with jdbc:mysql:replication:// URLs now force
 | |
|       roundRobinLoadBalance=true on the slaves, and round-robin loadbalancing
 | |
|       now uses a "random" choice to more evenly distribute load across slave
 | |
|       servers, especially in connection pools. Connections that are configured
 | |
|       with "roundRobinLoadBalance=true" no longer set the failover state,
 | |
|       as it's assumed that we're not attempting to fall-back to a master
 | |
|       server. This fixes BUG#34963.
 | |
|     
 | |
| 10-09-07 - Version 5.1.5
 | |
| 
 | |
|     - Released instead of 5.1.4 to pickup patch for BUG#31053
 | |
|       from 5.0.8.
 | |
|       
 | |
| 10-09-07 - Version 5.1.4 
 | |
| 
 | |
|     - Added "autoSlowLog" configuration property, overrides 
 | |
|       "slowQueryThreshold*" properties, driver determines slow
 | |
|       queries by those that are slower than 5 * stddev of the mean
 | |
|       query time (outside the 96% percentile).
 | |
|       
 | |
|     - Fixed BUG#28256 - When connection is in read-only mode, 
 | |
|       queries that are wrapped in parentheses incorrectly identified 
 | |
|       as DML.
 | |
|        
 | |
| 09-07-07 - Version 5.1.3 RC
 | |
| 
 | |
| 	- Setting "useBlobToStoreUTF8OutsideBMP" to "true" tells the
 | |
| 	  driver to treat [MEDIUM/LONG/TINY]BLOB columns as [LONG]VARCHAR
 | |
| 	  columns holding text encoded in UTF-8 that has characters
 | |
| 	  outside the BMP (4-byte encodings), which MySQL server
 | |
| 	  can't handle natively.
 | |
| 
 | |
| 	  Set "utf8OutsideBmpExcludedColumnNamePattern" to a regex so that
 | |
| 	  column names matching the given regex will still be treated
 | |
| 	  as BLOBs The regex must follow the patterns used for the
 | |
| 	  java.util.regex package. The default is to exclude no columns,
 | |
| 	  and include all columns.
 | |
| 
 | |
| 	  Set "utf8OutsideBmpIncludedColumnNamePattern" to specify exclusion
 | |
| 	  rules to "utf8OutsideBmpExcludedColumnNamePattern". The regex must
 | |
| 	  follow the patterns used for the java.util.regex package.
 | |
| 
 | |
| 	- New methods on com.mysql.jdbc.Statement: setLocalInfileInputStream()
 | |
| 	  and getLocalInfileInputStream().
 | |
| 
 | |
| 	  setLocalInfileInputStream() sets an InputStream instance that will be used to send data
 | |
|       to the MySQL server for a "LOAD DATA LOCAL INFILE" statement
 | |
|       rather than a FileInputStream or URLInputStream that represents
 | |
|       the path given as an argument to the statement.
 | |
| 
 | |
|       This stream will be read to completion upon execution of a
 | |
|       "LOAD DATA LOCAL INFILE" statement, and will automatically
 | |
|       be closed by the driver, so it needs to be reset
 | |
|       before each call to execute*() that would cause the MySQL
 | |
|       server to request data to fulfill the request for
 | |
|       "LOAD DATA LOCAL INFILE".
 | |
| 
 | |
|       If this value is set to NULL, the driver will revert to using
 | |
|       a FileInputStream or URLInputStream as required.
 | |
| 
 | |
|       getLocalInfileInputStream() returns the InputStream instance that will be used to send
 | |
|       data in response to a "LOAD DATA LOCAL INFILE" statement.
 | |
| 
 | |
|       This method returns NULL if no such stream has been set
 | |
|       via setLocalInfileInputStream().
 | |
| 
 | |
|     - The driver now connects with an initial character set
 | |
|       of "utf-8" solely for the purposes of authentication to
 | |
|       allow usernames and database names in any character set to
 | |
|       be used in the JDBC URL.
 | |
| 
 | |
|     - Errors encountered during Statement/PreparedStatement/CallableStatement.executeBatch()
 | |
|       when "rewriteBatchStatements" has been set to "true" now return
 | |
|       BatchUpdateExceptions according to the setting of "continueBatchOnError".
 | |
|       
 | |
|       If "continueBatchOnError" is set to "true", the update counts for the
 | |
|       "chunk" that were sent as one unit will all be set to EXECUTE_FAILED, but
 | |
|       the driver will attempt to process the remainder of the batch. You can determine which
 | |
|       "chunk" failed by looking at the update counts returned in the BatchUpdateException.
 | |
|       
 | |
|       If "continueBatchOnError" is set to "false", the update counts returned
 | |
|       will contain the failed "chunk", and stop with the failed chunk, with all 
 | |
|       counts for the failed "chunk" set to EXECUTE_FAILED.
 | |
|       
 | |
|       Since MySQL doesn't return multiple error codes for multiple-statements, or
 | |
|       for multi-value INSERT/REPLACE, it is the application's responsibility to handle 
 | |
|       determining which item(s) in the "chunk" actually failed.
 | |
|       
 | |
|     - Statement.setQueryTimeout()s now affect the entire batch for batched 
 | |
|       statements, rather than the individual statements that make up the batch.
 | |
|       
 | |
| 06-29-07 - Version 5.1.2 Beta
 | |
| 
 | |
|     - Setting the configuration property "rewriteBatchedStatements"
 | |
|       to "true" will now cause the driver to rewrite batched prepared
 | |
|       statements with more than 3 parameter sets in a batch into
 | |
|       multi-statements (separated by ";") if they are not plain
 | |
|       (i.e. without SELECT or ON DUPLICATE KEY UPDATE clauses) INSERT
 | |
|       or REPLACE statements.
 | |
| 
 | |
| 06-22-07 - Version 5.1.1 Alpha
 | |
| 
 | |
|     - Pulled vendor-extension methods of Connection implementation out
 | |
|       into an interface to support java.sql.Wrapper functionality from
 | |
|       ConnectionPoolDataSource. The vendor extensions are javadoc'd in
 | |
|       the com.mysql.jdbc.Connection interface.
 | |
| 
 | |
|       For those looking further into the driver implementation, it is not
 | |
|       an API that is used for plugability of implementations inside our driver
 | |
|       (which is why there are still references to ConnectionImpl throughout the
 | |
|       code).
 | |
| 
 | |
|       Incompatible change: Connection.serverPrepare(String) has been re-named
 | |
|       to Connection.serverPrepareStatement() for consistency with
 | |
|       Connection.clientPrepareStatement().
 | |
| 
 | |
|       We've also added server and client prepareStatement() methods that cover
 | |
|       all of the variants in the JDBC API.
 | |
| 
 | |
|     - Similar to Connection, we pulled out vendor extensions to Statement
 | |
|       into an interface named "com.mysql.Statement", and moved the Statement
 | |
|       class into com.mysql.StatementImpl. The two methods (javadoc'd in
 | |
|       "com.mysql.Statement" are enableStreamingResults(), which already existed,
 | |
|       and disableStreamingResults() which sets the statement instance back to
 | |
|       the fetch size and result set type it had before enableStreamingResults()
 | |
|       was called.
 | |
| 
 | |
|     - Added experimental support for statement "interceptors" via the
 | |
|       com.mysql.jdbc.StatementInterceptor interface, examples are
 | |
|       in com/mysql/jdbc/interceptors.
 | |
| 
 | |
|       Implement this interface to be placed "in between" query execution, so that
 | |
|       you can influence it. (currently experimental).
 | |
| 
 | |
|       StatementInterceptors are "chainable" when configured by the user, the
 | |
|       results returned by the "current" interceptor will be passed on to the next
 | |
|       on in the chain, from left-to-right order, as specified by the user in the
 | |
|       JDBC configuration property "statementInterceptors".
 | |
| 
 | |
|       See the sources (fully javadoc'd) for com.mysql.jdbc.StatementInterceptor
 | |
|       for more details until we iron out the API and get it documented in the
 | |
|       manual.
 | |
| 
 | |
|     - Externalized the descriptions of connection properties.
 | |
| 
 | |
|     - The data (and how it's stored) for ResultSet rows are now behind an
 | |
|       interface which allows us (in some cases) to allocate less memory
 | |
|       per row, in that for "streaming" result sets, we re-use the packet
 | |
|       used to read rows, since only one row at a time is ever active.
 | |
| 
 | |
|     - Made it possible to retrieve prepared statement parameter bindings
 | |
|       (to be used in StatementInterceptors, primarily).
 | |
| 
 | |
|     - Row navigation now causes any streams/readers open on the result set
 | |
|       to be closed, as in some cases we're reading directly from a shared network
 | |
|       packet and it will be overwritten by the "next" row.
 | |
| 
 | |
|     - Setting "rewriteBatchedStatements" to "true" now causes CallableStatements
 | |
|       with batched arguments to be re-written in the form "CALL (...); CALL (...); ..."
 | |
|       to send the batch in as few client-server round trips as possible.
 | |
| 
 | |
|     - Driver now picks appropriate internal row representation (whole row in one
 | |
|       buffer, or individual byte[]s for each column value) depending on heuristics,
 | |
|       including whether or not the row has BLOB or TEXT types and the overall
 | |
|       row-size. The threshold for row size that will cause the driver to
 | |
|       use a buffer rather than individual byte[]s is configured by the
 | |
|       configuration property "largeRowSizeThreshold", which has a default
 | |
|       value of 2KB.
 | |
| 
 | |
| 04-11-07 - Version 5.1.0 Alpha
 | |
| 
 | |
| 	- Bumped JDBC Specification version number in jar-file manifest.
 | |
| 
 | |
| 	- Re-worked Ant buildfile to build JDBC-4.0 classes separately, as well
 | |
| 	  as support building under Eclipse (since Eclipse can't mix/match JDKs).
 | |
| 
 | |
| 	  To build, you must set JAVA_HOME to J2SDK-1.4.2 or Java-5, and set
 | |
| 	  the following properties on your Ant commandline:
 | |
| 
 | |
| 	  com.mysql.jdbc.java6.javac - full path to your Java-6 javac executable
 | |
| 	  com.mysql.jdbc.java6.rtjar - full path to your Java-6 rt.jar file
 | |
| 
 | |
| 	- New feature - driver will automatically adjust session variable
 | |
| 	  "net_write_timeout" when it determines its been asked for a "streaming"
 | |
| 	  result, and resets it to the previous value when the result set
 | |
| 	  has been consumed. (configuration property is named
 | |
| 	  "netTimeoutForStreamingResults", value has unit of seconds,
 | |
| 	  the value '0' means the driver will not try and adjust this value).
 | |
| 
 | |
|     - Added support for JDBC-4.0 categorized SQLExceptions.
 | |
| 
 | |
| 	- Refactored CommunicationsException into a JDBC3 version, and a JDBC4
 | |
| 	  version (which extends SQLRecoverableException, now that it exists).
 | |
| 
 | |
| 	  This change means that if you were catching
 | |
| 	  com.mysql.jdbc.CommunicationsException in your applications instead
 | |
| 	  of looking at the SQLState class of "08", and are moving to Java 6
 | |
| 	  (or newer), you need to change your imports to that exception
 | |
| 	  to be com.mysql.jdbc.exceptions.jdbc4.CommunicationsException, as
 | |
| 	  the old class will not be instantiated for communications link-related
 | |
| 	  errors under Java 6.
 | |
| 
 | |
| 	- Added support for JDBC-4.0's client information. The backend storage
 | |
| 	  of information provided via Connection.setClientInfo() and retrieved
 | |
| 	  by Connection.getClientInfo() is pluggable by any class that implements
 | |
| 	  the com.mysql.jdbc.JDBC4ClientInfoProvider interface and has a no-args
 | |
| 	  constructor.
 | |
| 
 | |
| 	  The implementation used by the driver is configured using the
 | |
| 	  "clientInfoProvider" configuration property (with a default of value
 | |
| 	  of "com.mysql.jdbc.JDBC4CommentClientInfoProvider", an implementation
 | |
| 	  which lists the client info as a comment prepended to every query
 | |
| 	  sent to the server).
 | |
| 
 | |
| 	  This functionality is only available when using Java-6 or newer.
 | |
| 
 | |
| 	- Added support for JDBC-4.0's SQLXML interfaces.
 | |
| 
 | |
| 	- Added support for JDBC-4.0's Wrapper interface.
 | |
| 
 | |
| 	- Added support for JDBC-4.0's NCLOB, and NCHAR/NVARCHAR types.
 | |
| 
 | |
| nn-nn-07 - Version 5.0.9
 | |
| 
 | |
|     - Driver now calls SocketFactory.afterHandshake() at appropriate time.
 | |
|     
 | |
| 10-09-07 - Version 5.0.8
 | |
| 
 | |
|     - Fixed BUG#30550, executeBatch() would fail with an ArithmeticException
 | |
|       and/or NullPointerException when the batch had zero members and
 | |
|       "rewriteBatchedStatements" was set to "true" for the connection.
 | |
|     
 | |
|     - Added two configuration parameters (both default to "false")
 | |
|     
 | |
|             * blobsAreStrings  - Should the driver always treat BLOBs as Strings 
 | |
|                                  specifically to work around dubious metadata returned 
 | |
|                                  by the server for GROUP BY clauses?
 | |
|             
 | |
|             * functionsNeverReturnBlobs - Should the driver always treat data from 
 | |
|                                           functions returning BLOBs as Strings - 
 | |
|                                           specifically to work around dubious metadata 
 | |
|                                           returned by the server for GROUP BY clauses?
 | |
| 
 | |
|     - Fixed BUG#29106 - Connection checker for JBoss didn't use same method parameters
 | |
|       via reflection, causing connections to always seem "bad".
 | |
|       
 | |
|     - Fixed BUG#30664 - Note that this fix only works for MySQL server 
 | |
|       versions 5.0.25 and newer, since earlier versions didn't consistently 
 | |
|       return correct metadata for functions, and thus results from 
 | |
|       subqueries and functions were indistinguishable from each other, 
 | |
|       leading to type-related bugs.
 | |
| 
 | |
|     - Fixed BUG#28972 - DatabaseMetaData.getTypeInfo() for the types DECIMAL
 | |
|       and NUMERIC will return a precision of 254 for server versions older than
 | |
|       5.0.3, 64 for versions 5.0.3-5.0.5 and 65 for versions newer than 5.0.5.
 | |
|     
 | |
|     - Fixed BUG#29852 - Closing a load-balanced connection would cause a
 | |
|       ClassCastException.
 | |
|     
 | |
|     - Fixed BUG#27867 - Schema objects with identifiers other than
 | |
|       the connection character aren't retrieved correctly in 
 | |
|       ResultSetMetadata.
 | |
|       
 | |
|     - Fixed BUG#28689 - CallableStatement.executeBatch() doesn't work when 
 | |
|       connection property "noAccessToProcedureBodies" has been set to "true".
 | |
|      
 | |
|       The fix involves changing the behavior of "noAccessToProcedureBodies",in 
 | |
|       that the driver will now report all paramters as "IN" paramters
 | |
|       but allow callers to call registerOutParameter() on them without throwing
 | |
|       an exception.
 | |
|       
 | |
|     - Fixed BUG#27182 - Connection.getServerCharacterEncoding() doesn't work
 | |
|       for servers with version >= 4.1.
 | |
| 
 | |
|     - Fixed BUG#27915 - DatabaseMetaData.getColumns() doesn't
 | |
|       contain SCOPE_* or IS_AUTOINCREMENT columns.
 | |
| 
 | |
|     - Fixed BUG#30851, NPE with null column values when
 | |
|       "padCharsWithSpace" is set to "true".
 | |
|     
 | |
|     - Specifying a "validation query" in your connection pool 
 | |
|       that starts with "/* ping */" _exactly_ will cause the driver to 
 | |
|       instead send a ping to the server and return a fake result set (much 
 | |
|       lighter weight), and when using a ReplicationConnection or a LoadBalancedConnection, 
 | |
|       will send the ping across all active connections.
 | |
|       
 | |
|     - Fixed Bug#30892 setObject(int, Object, int, int) delegate in
 | |
|       PreparedStatmentWrapper delegates to wrong method.
 | |
|       
 | |
|     - XAConnections now start in auto-commit mode (as per JDBC-4.0 specification
 | |
|       clarification).
 | |
|      
 | |
|     - Fixed Bug#27412 - cached metadata with PreparedStatement.execute()
 | |
|       throws NullPointerException.
 | |
|       
 | |
|     - Driver will now fall back to sane defaults for max_allowed_packet and
 | |
|       net_buffer_length if the server reports them incorrectly (and will log
 | |
|       this situation at WARN level, since it's actually an error condition).
 | |
|     
 | |
|     - Fixed BUG#27916 - UNSIGNED types not reported via DBMD.getTypeInfo(), and 
 | |
|       capitalization of type names is not consistent between DBMD.getColumns(), 
 | |
|       RSMD.getColumnTypeName() and DBMD.getTypeInfo().
 | |
| 
 | |
|       This fix also ensures that the precision of UNSIGNED MEDIUMINT
 | |
|       and UNSIGNED BIGINT is reported correctly via DBMD.getColumns().
 | |
| 
 | |
|     - Fixed BUG#31053 - Connections established using URLs of the form
 | |
|       "jdbc:mysql:loadbalance://" weren't doing failover if they tried to 
 | |
|       connect to a MySQL server that was down. The driver now attempts
 | |
|       connections to the next "best" (depending on the load balance strategy
 | |
|       in use) server, and continues to attempt connecting to the next "best"
 | |
|       server every 250 milliseconds until one is found that is up and running 
 | |
|       or 5 minutes has passed.
 | |
|       
 | |
|       If the driver gives up, it will throw the last-received SQLException.
 | |
|       
 | |
| 07-19-07 - Version 5.0.7
 | |
| 
 | |
|     - Setting the configuration parameter "useCursorFetch" to "true" for
 | |
|       MySQL-5.0+ enables the use of cursors that allow Connector/J to save
 | |
|       memory by fetching result set rows in chunks (where the chunk size
 | |
|       is set by calling setFetchSize() on a Statement or ResultSet) by
 | |
|       using fully-materialized cursors on the server.
 | |
| 
 | |
|       The driver will will now automatically set "useServerPrepStmts" to
 | |
|       "true" when "useCursorFetch" has been set to "true", since the feature
 | |
|       requires server-side prepared statements in order to function.
 | |
| 
 | |
| 	- Fixed BUG#28469 - PreparedStatement.getMetaData() for statements
 | |
| 	  containing leading one-line comments is not returned correctly.
 | |
| 
 | |
| 	  As part of this fix, we also overhauled detection of DML for
 | |
| 	  executeQuery() and SELECTs for executeUpdate() in plain and
 | |
| 	  prepared statements to be aware of the same  types of comments.
 | |
| 
 | |
|     - Added configuration property "useNanosForElapsedTime" - for
 | |
|       profiling/debugging functionality that measures elapsed time,
 | |
|       should the driver try to use nanoseconds resolution if available
 | |
|       (requires JDK >= 1.5)?
 | |
| 
 | |
|     - Added configuration property "slowQueryThresholdNanos" - if
 | |
|       "useNanosForElapsedTime" is set to "true", and this property
 | |
|       is set to a non-zero value the driver will use this threshold
 | |
|       (in nanosecond units) to determine if a query was slow, instead
 | |
|       of using millisecond units.
 | |
| 
 | |
|       Note, that if "useNanosForElapsedTime" is set to "true", and this
 | |
|       property is set to "0" (or left default), then elapsed times will
 | |
|       still be measured in nanoseconds (if possible), but the slow query
 | |
|       threshold will be converted from milliseconds to nanoseconds, and thus
 | |
|       have an upper bound of approximately 2000 millesconds (as that threshold
 | |
|       is represented as an integer, not a long).
 | |
| 
 | |
| 	- Added configuration properties to allow tuning of TCP/IP socket
 | |
| 	  parameters:
 | |
| 
 | |
| 	  	"tcpNoDelay" - Should the driver set SO_TCP_NODELAY (disabling the
 | |
| 	  	               Nagle Algorithm, default "true")?
 | |
| 
 | |
| 		"tcpKeepAlive" - Should the driver set SO_KEEPALIVE (default "true")?
 | |
| 
 | |
| 		"tcpRcvBuf" - Should the driver set SO_RCV_BUF to the given value?
 | |
| 		              The default value of '0', means use the platform default
 | |
| 		              value for this property.
 | |
| 
 | |
| 		"tcpSndBuf" - Should the driver set SO_SND_BUF to the given value?
 | |
| 		              The default value of '0', means use the platform default
 | |
| 		              value for this property.
 | |
| 
 | |
| 		"tcpTrafficClass" - Should the driver set traffic class or
 | |
| 		                    type-of-service fields? See the documentation
 | |
| 		                    for java.net.Socket.setTrafficClass() for more
 | |
| 		                    information.
 | |
| 
 | |
| 	- Give more information in EOFExceptions thrown out of MysqlIO (how many
 | |
| 	  bytes the driver expected to read, how many it actually read, say that
 | |
| 	  communications with the server were unexpectedly lost).
 | |
| 
 | |
| 	- Setting "useDynamicCharsetInfo" to "false" now causes driver to use
 | |
| 	  static lookups for collations as well (makes
 | |
| 	  ResultSetMetadata.isCaseSensitive() much more efficient, which leads
 | |
| 	  to performance increase for ColdFusion, which calls this method for
 | |
| 	  every column on every table it sees, it appears).
 | |
| 
 | |
| 	- Driver detects when it is running in a ColdFusion MX server (tested
 | |
| 	  with version 7), and uses the configuration bundle "coldFusion",
 | |
| 	  which sets useDynamicCharsetInfo to "false" (see previous entry), and
 | |
| 	  sets useLocalSessionState and autoReconnect to "true".
 | |
| 
 | |
| 	- Fixed BUG#28851 - parser in client-side prepared statements
 | |
| 	  eats character following '/' if it's not a multi-line comment.
 | |
| 
 | |
| 	- Fixed BUG#28956 - parser in client-side prepared statements
 | |
| 	  runs to end of statement, rather than end-of-line for '#' comments.
 | |
| 
 | |
| 	  Also added support for '--' single-line comments.
 | |
| 
 | |
| 	- Don't send any file data in response to LOAD DATA LOCAL INFILE
 | |
| 	  if the feature is disabled at the client side. This is to prevent
 | |
| 	  a malicious server or man-in-the-middle from asking the client for
 | |
| 	  data that the client is not expecting. Thanks to Jan Kneschke for
 | |
| 	  discovering the exploit and Andrey "Poohie" Hristov, Konstantin Osipov
 | |
| 	  and Sergei Golubchik for discussions about implications and possible
 | |
| 	  fixes. This fixes BUG 29605 for JDBC.
 | |
| 
 | |
| 	- Added new debugging functionality - Setting configuration property
 | |
| 	  "includeInnodbStatusInDeadlockExceptions" to "true" will cause the driver
 | |
| 	  to append the output of "SHOW ENGINE INNODB STATUS" to deadlock-related
 | |
| 	  exceptions, which will enumerate the current locks held inside InnoDB.
 | |
| 
 | |
| 05-15-07 - Version 5.0.6
 | |
| 
 | |
| 	- Fixed BUG#25545 - Client options not sent correctly when using SSL,
 | |
| 	  leading to stored procedures not being able to return results. Thanks
 | |
| 	  to Don Cohen for the bug report, testcase and patch.
 | |
| 
 | |
| 	- Fixed BUG#26592 - PreparedStatement is not closed in
 | |
| 	  BlobFromLocator.getBytes().
 | |
| 
 | |
| 	- Fixed BUG#25624 - Whitespace surrounding storage/size specifiers in
 | |
| 	  stored procedure parameters declaration causes NumberFormatException to
 | |
| 	  be thrown when calling stored procedure on JDK-1.5 or newer, as the Number
 | |
| 	  classes in JDK-1.5+ are whitespace intolerant.
 | |
| 
 | |
| 	- Fixed BUG#26173 - When useCursorFetch=true, sometimes server would return
 | |
| 	  new, more exact metadata during the execution of the server-side prepared
 | |
| 	  statement that enables this functionality, which the driver ignored (using
 | |
| 	  the original metadata returned during prepare()), causing corrupt reading
 | |
| 	  of data due to type mismatch when the actual rows were returned.
 | |
| 
 | |
| 	- Fixed BUG#26959 - comments in DDL of stored procedures/functions confuse
 | |
| 	  procedure parser, and thus metadata about them can not be created, leading to
 | |
| 	  inability to retrieve said metadata, or execute procedures that have certain
 | |
| 	  comments in them.
 | |
| 
 | |
| 	- Give better error message when "streaming" result sets, and the connection
 | |
| 	  gets clobbered because of exceeding net_write_timeout on the server. (which is
 | |
| 	  basically what the error message says too).
 | |
| 
 | |
| 	- Fixed BUG#26789 - fast date/time parsing doesn't take into
 | |
| 	  account 00:00:00 as a legal value.
 | |
| 
 | |
| 	- Fixed BUG#27317 - ResultSet.get*() with a column index < 1 returns
 | |
| 	  misleading error message.
 | |
| 
 | |
| 	- Fixed BUG#25517 - Statement.setMaxRows() is not effective on result
 | |
| 	  sets materialized from cursors.
 | |
| 
 | |
| 	- New configuration property, "enableQueryTimeouts" (default "true").
 | |
| 	  When enabled, query timeouts set via Statement.setQueryTimeout() use a
 | |
| 	  shared java.util.Timer instance for scheduling. Even if the timeout
 | |
| 	  doesn't expire before the query is processed, there will be
 | |
| 	  memory used by the TimerTask for the given timeout which won't be
 | |
| 	  reclaimed until the time the timeout would have expired if it
 | |
| 	  hadn't been cancelled by the driver. High-load environments
 | |
| 	  might want to consider disabling this functionality. (this configuration
 | |
| 	  property is part of the "maxPerformance" configuration bundle).
 | |
| 
 | |
| 	- Fixed BUG#27400 - CALL /* ... */ some_proc() doesn't work. As a side effect
 | |
| 	  of this fix, you can now use /* */ and # comments when preparing statements using
 | |
| 	  client-side prepared statement emulation.
 | |
| 
 | |
| 	  If the comments happen to contain parameter markers '?', they will be treated
 | |
| 	  as belonging to the comment (i.e. not recognized) rather than being a parameter
 | |
| 	  of the statement.
 | |
| 
 | |
| 	  Note that the statement when sent to the server will contain the comments
 | |
| 	  as-is, they're not stripped during the process of preparing the PreparedStatement
 | |
| 	  or CallableStatement.
 | |
| 
 | |
| 	- Fixed BUG#25328 - BIT(> 1) is returned as java.lang.String from ResultSet.getObject()
 | |
| 	  rather than byte[].
 | |
| 
 | |
| 	- Fixed BUG#25715 - CallableStatements with OUT/INOUT parameters that
 | |
| 	  are "binary" (blobs, bits, (var)binary, java_object) have extra 7 bytes
 | |
| 	  (which happens to be the _binary introducer!)
 | |
| 
 | |
| 	- Added configuration property "padCharsWithSpace" (defaults to "false"). If set
 | |
| 	  to "true", and a result set column has the CHAR type and the value does not
 | |
| 	  fill the amount of characters specified in the DDL for the column, the driver
 | |
| 	  will pad the remaining characters with space (for ANSI compliance).
 | |
| 
 | |
| 	- Fixed BUG#27655 - Connection.getTransactionIsolation() uses
 | |
| 	  "SHOW VARIABLES LIKE" which is very inefficient on MySQL-5.0+
 | |
| 
 | |
| 	- Added configuration property "useDynamicCharsetInfo". If set to "false"
 | |
| 	  (the default), the driver will use a per-connection cache of character set
 | |
| 	  information queried from the server when necessary, or when set to "true",
 | |
| 	  use a built-in static mapping that is more efficient, but isn't aware of
 | |
| 	  custom character sets or character sets implemented after the release of
 | |
| 	  the JDBC driver.
 | |
| 
 | |
| 	  Note: this only affects the "padCharsWithSpace" configuration property and the
 | |
|             ResultSetMetaData.getColumnDisplayWidth() method.
 | |
| 
 | |
| 	- More intelligent initial packet sizes for the "shared" packets are used
 | |
| 	  (512 bytes, rather than 16K), and initial packets used during handshake are
 | |
| 	  now sized appropriately as to not require reallocation.
 | |
| 
 | |
| 	- Fixed issue where calling getGeneratedKeys() on a prepared statement after
 | |
| 	  calling execute() didn't always return the generated keys (executeUpdate()
 | |
| 	  worked fine however).
 | |
| 
 | |
| 	- Fixed issue where a failed-over connection would let an application call
 | |
| 	  setReadOnly(false), when that call should be ignored until the connection
 | |
| 	  is reconnected to a writable master unless "failoverReadOnly" had been set
 | |
| 	  to "false".
 | |
| 
 | |
| 	- Fixed BUG#28085 - Generate more useful error messages for diagnostics
 | |
| 	  when the driver thinks a result set isn't updatable. (Thanks to Ashley Martens
 | |
| 	  for the patch).
 | |
| 
 | |
| 	- Driver will now use INSERT INTO ... VALUES (DEFAULT) form of statement
 | |
| 	  for updatable result sets for ResultSet.insertRow(), rather than
 | |
| 	  pre-populating the insert row with values from DatabaseMetaData.getColumns()
 | |
| 	  (which results in a "SHOW FULL COLUMNS" on the server for every result
 | |
| 	  set). If an application requires access to the default values before
 | |
| 	  insertRow() has been called, the JDBC URL should be configured with
 | |
| 	  "populateInsertRowWithDefaultValues" set to "true".
 | |
| 
 | |
| 	  This fix specifically targets performance issues with ColdFusion and the
 | |
| 	  fact that it seems to ask for updatable result sets no matter what the
 | |
| 	  application does with them.
 | |
| 
 | |
| 	- com.mysql.jdbc.[NonRegistering]Driver now understands URLs of the format
 | |
| 	  "jdbc:mysql:replication://" and "jdbc:mysql:loadbalance://" which will
 | |
| 	  create a ReplicationConnection (exactly like when
 | |
| 	  using [NonRegistering]ReplicationDriver) and an experimenal load-balanced
 | |
| 	  connection designed for use with SQL nodes in a MySQL Cluster/NDB environment,
 | |
| 	  respectively.
 | |
| 
 | |
| 	  In an effort to simplify things, we're working on deprecating multiple
 | |
| 	  drivers, and instead specifying different core behavior based upon JDBC URL
 | |
| 	  prefixes, so watch for [NonRegistering]ReplicationDriver to eventually
 | |
| 	  disappear, to be replaced with com.mysql.jdbc[NonRegistering]Driver with
 | |
| 	  the new URL prefix.
 | |
| 
 | |
| 	- Added an experimental load-balanced connection designed for use with SQL nodes
 | |
|       in a MySQL Cluster/NDB environment (This is not for master-slave replication.
 | |
|       For that, we suggest you look at ReplicationConnection or "lbpool").
 | |
| 
 | |
| 	  If the JDBC URL starts with "jdbc:mysql:loadbalance://host-1,host-2,...host-n",
 | |
| 	  the driver will create an implementation of java.sql.Connection that load
 | |
| 	  balances requests across a series of MySQL JDBC connections to the given hosts,
 | |
| 	  where the balancing takes place after transaction commit.
 | |
| 
 | |
|       Therefore, for this to work (at all), you must use transactions, even if only
 | |
|       reading data.
 | |
| 
 | |
|       Physical connections to the given hosts will not be created until needed.
 | |
| 
 | |
|       The driver will invalidate connections that it detects have had
 | |
|       communication errors when processing a request. A new connection to the
 | |
|       problematic host will be attempted the next time it is selected by the load
 | |
|       balancing algorithm.
 | |
| 
 | |
|       There are two choices for load balancing algorithms, which may be specified
 | |
|       by the "loadBalanceStrategy" JDBC URL configuration property:
 | |
| 
 | |
|       * "random" - the driver will pick a random host for each request. This tends
 | |
|         to work better than round-robin, as the randomness will somewhat account for
 | |
|         spreading loads where requests vary in response time, while round-robin
 | |
|         can sometimes lead to overloaded nodes if there are variations in response times
 | |
|         across the workload.
 | |
| 
 | |
|       * "bestResponseTime" - the driver will route the request to the host that had
 | |
|         the best response time for the previous transaction.
 | |
| 
 | |
|     - When "useLocalSessionState" is set to "true" and connected to a MySQL-5.0 or
 | |
|       later server, the JDBC driver will now determine whether an actual "commit" or
 | |
|       "rollback" statement needs to be sent to the database when Connection.commit()
 | |
|       or Connection.rollback() is called.
 | |
| 
 | |
|       This is especially helpful for high-load situations with connection pools that
 | |
|       always call Connection.rollback() on connection check-in/check-out because it
 | |
|       avoids a round-trip to the server.
 | |
| 
 | |
| 03-01-07 - Version 5.0.5
 | |
| 
 | |
|     - Fixed BUG#23645 - Some collations/character sets reported as "unknown"
 | |
| 	  (specifically cias variants of existing character sets), and inability to override
 | |
| 	  the detected server character set.
 | |
| 
 | |
| 	- Performance enhancement of initial character set configuration, driver
 | |
|       will only send commands required to configure connection character set
 | |
|       session variables if the current values on the server do not match
 | |
|       what is required.
 | |
| 
 | |
|     - Fixed BUG#24360 .setFetchSize() breaks prepared SHOW and other commands.
 | |
| 
 | |
|     - Fixed BUG#24344 - useJDBCCompliantTimezoneShift with server-side prepared
 | |
| 	  statements gives different behavior than when using client-side prepared
 | |
| 	  statements. (this is now fixed if moving from server-side prepared statements
 | |
| 	  to client-side prepared statements by setting "useSSPSCompatibleTimezoneShift" to
 | |
| 	  true", as the driver can't tell if this is a new deployment that never used
 | |
| 	  server-side prepared statements, or if it is an existing deployment that is
 | |
| 	  switching to client-side prepared statements from server-side prepared statements.
 | |
| 
 | |
|     - Fixed BUG#23304 - DBMD using "show" and DBMD using information_schema do
 | |
|       not return results consistent with each other. (note this fix only
 | |
|       addresses the inconsistencies, not the issue that the driver is
 | |
|       treating schemas differently than some users expect. We will revisit
 | |
|       this behavior when there is full support for schemas in MySQL).
 | |
| 
 | |
|     - Fixed BUG#25073 - rewriting batched statements leaks internal statement
 | |
| 	  instances, and causes a memory leak.
 | |
| 
 | |
| 	- Fixed issue where field-level for metadata from DatabaseMetaData when using
 | |
| 	  INFORMATION_SCHEMA didn't have references to current connections,
 | |
| 	  sometimes leading to NullPointerExceptions when intropsecting them via
 | |
| 	  ResultSetMetaData.
 | |
| 
 | |
| 	- Fixed BUG#25025 - Client-side prepared statement parser gets confused by
 | |
| 	  in-line (/* ... */) comments and therefore can't rewrite batched statements
 | |
| 	  or reliably detect type of statements when they're used.
 | |
| 
 | |
| 	- Fixed BUG#24065 - Better error message when server doesn't return enough
 | |
| 	  information to determine stored procedure/function parameter types.
 | |
| 
 | |
| 	- Fixed BUG#21438 - Driver sending nanoseconds to server for timestamps when
 | |
| 	  using server-side prepared statements, when server expects microseconds.
 | |
| 
 | |
| 	- Fixed BUG#25514 - Timer instance used for Statement.setQueryTimeout()
 | |
| 	  created per-connection, rather than per-VM, causing memory leak
 | |
| 
 | |
| 	- Fixed BUG#25009 - Results from updates not handled correctly in
 | |
| 	  multi-statement queries, leading to erroneous "Result is from UPDATE"
 | |
| 	  exceptions.
 | |
| 
 | |
| 	- Fixed BUG#25047 - StringUtils.indexOfIgnoreCaseRespectQuotes() isn't
 | |
| 	  case-insensitive on the first character of the target. This bug broke
 | |
| 	  rewriteBatchedStatements functionality when prepared statements don't
 | |
| 	  use upper-case for the VALUES clause in their statements.
 | |
| 
 | |
| 	- Fixed BUG#21480 - Some exceptions thrown out of StandardSocketFactory
 | |
| 	  were needlessly wrapped, obscurring their true cause, especially when
 | |
| 	  using socket timeouts.
 | |
| 
 | |
| 	- Fixed BUG#23303 - DatabaseMetaData.getSchemas() doesn't return a
 | |
| 	  TABLE_CATALOG column.
 | |
| 
 | |
|     - Fixed BUG#25399 - EscapeProcessor gets confused by multiple
 | |
|       backslashes. We now push the responsibility of syntax errors back
 | |
|       on to the server for most escape sequences.
 | |
| 
 | |
| 	- Fixed BUG#25379 - INOUT parameters in CallableStatements get
 | |
| 	  doubly-escaped.
 | |
| 
 | |
| 	- Removed non-short-circuited logical ORs from "if" statements.
 | |
| 
 | |
| 	- Re-worked stored procedure parameter parser to be more robust. Driver no
 | |
| 	  longer requires "BEGIN" in stored procedure definition, but does have
 | |
| 	  requirement that if a stored function begins with a label directly after the
 | |
| 	  "returns" clause, that the label is not a quoted identifier.
 | |
|     - Reverted back to internal character conversion routines for single-byte
 | |
|       character sets, as the ones internal to the JVM are using much more CPU
 | |
|       time than our internal implementation.
 | |
| 
 | |
| 	- Changed cached result set metadata (when using
 | |
| 	  "cacheResultSetMetadata=true") to be cached per-connection rather
 | |
| 	  than per-statement as previously implemented.
 | |
| 
 | |
| 	- Use a java.util.TreeMap to map column names to ordinal indexes for
 | |
| 	  ResultSet.findColumn() instead of a HashMap. This allows us to have
 | |
| 	  case-insensitive lookups (required by the JDBC specification) without
 | |
| 	  resorting to the many transient object instances needed to support this
 | |
| 	  requirement with a normal HashMap with either case-adjusted keys, or
 | |
| 	  case-insensitive keys. (In the worst case scenario for lookups of a 1000
 | |
| 	  column result set, TreeMaps are about half as fast wall-clock time as
 | |
| 	  a HashMap, however in normal applications their use gives many orders
 | |
| 	  of magnitude reduction in transient object instance creation which pays
 | |
| 	  off later for CPU usage in garbage collection).
 | |
| 
 | |
| 	- Avoid static synchronized code in JVM class libraries for dealing with
 | |
| 	  default timezones.
 | |
| 
 | |
| 	- Fixed cases where ServerPreparedStatements weren't using cached metadata
 | |
| 	  when "cacheResultSetMetadata=true" was configured.
 | |
| 
 | |
| 	- Use faster datetime parsing for ResultSets that come from plain or
 | |
| 	  non-server-side prepared statements. (Enable old implementation with
 | |
| 	  "useFastDateParsing=false" as a configuration parameter).
 | |
| 
 | |
| 	- Fixed BUG#24794 - DatabaseMetaData.getSQLKeywords() doesn't return
 | |
| 	  all reserved words for current MySQL version. The current fix/implementation
 | |
| 	  returns keywords for MySQL-5.1, and doesn't distinguish between different
 | |
| 	  versions of the server.
 | |
| 
 | |
| 	- When using cached metadata, skip field-level metadata packets coming from
 | |
| 	  the server, rather than reading them and discarding them without creating
 | |
| 	  com.mysql.jdbc.Field instances.
 | |
| 
 | |
| 	- Fixed BUG#25836 - Statement execution which timed out doesn't always
 | |
| 	  throw MySQLTimeoutException.
 | |
| 
 | |
| 	- Throw exceptions encountered during timeout to thread
 | |
| 	  calling Statement.execute*(), rather than RuntimeException.
 | |
| 
 | |
| 	- Added configuration property "localSocketAddress",which is the hostname or
 | |
| 	  IP address given to explicitly configure the interface that the driver will
 | |
| 	  bind the client side of the TCP/IP connection to when connecting.
 | |
| 
 | |
| 	- Take "localSocketAddress" property into account when creating instances
 | |
| 	  of CommunicationsException when the underyling exception is a
 | |
| 	  java.net.BindException, so that a friendlier error message is given with
 | |
| 	  a little internal diagnostics.
 | |
| 
 | |
| 	- Fixed some NPEs when cached metadata was used with UpdatableResultSets.
 | |
| 
 | |
| 	- The "rewriteBatchedStatements" feature can now be used with server-side
 | |
| 	  prepared statements.
 | |
| 
 | |
| 	- Fixed BUG#26326 - Connection property "socketFactory" wasn't exposed via
 | |
| 	  correctly named mutator/accessor, causing data source implementations that
 | |
| 	  use JavaBean naming conventions to set properties to fail to set the property
 | |
| 	  (and in the case of SJAS, fail silently when trying to set this parameter).
 | |
| 
 | |
| 	- Fixed BUG#25787 - java.util.Date should be serialized for
 | |
| 	  PreparedStatement.setObject().
 | |
| 
 | |
| 	  We've added a new configuration option "treatUtilDateAsTimestamp", which is
 | |
| 	  false by default, as (1) We already had specific behavior to treat
 | |
| 	  java.util.Date as a java.sql.Timestamp because it's useful to many folks,
 | |
| 	  and (2) that behavior will very likely be required for drivers JDBC-post-4.0.
 | |
| 
 | |
|     - Fixed BUG#22628 - Driver.getPropertyInfo() throws NullPointerException for
 | |
|       URL that only specifies host and/or port.
 | |
| 
 | |
| 	- Fixed BUG#21267, ParameterMetaData throws NullPointerException when
 | |
| 	  prepared SQL actually has a syntax error. Added
 | |
| 	  "generateSimpleParameterMetadata" configuration property, which when set
 | |
| 	  to "true" will generate metadata reflecting VARCHAR for every parameter
 | |
| 	  (the default is "false", which will cause an exception to be thrown if no
 | |
| 	  parameter metadata for the statement is actually available).
 | |
| 
 | |
| 	- When extracting foreign key information from "SHOW CREATE TABLE " in
 | |
| 	  DatabaseMetaData, ignore exceptions relating to tables being missing
 | |
| 	  (which could happen for cross-reference or imported-key requests, as
 | |
| 	  the list of tables is generated first, then iterated).
 | |
| 
 | |
| 	- Fixed WorkoutDatesUpdater.logging of XA commands sent to server, it's now configurable
 | |
| 	  via "logXaCommands" property (defaults to "false").
 | |
| 
 | |
| 	- Fixed issue where XADataSources couldn't be bound into JNDI,
 | |
| 	  as the DataSourceFactory didn't know how to create instances
 | |
| 	  of them.
 | |
| 
 | |
| 	- Fixed issue where XADataSources couldn't be bound into JNDI,
 | |
| 	  as the DataSourceFactory didn't know how to create instances
 | |
| 	  of them.
 | |
| 
 | |
| 	- Usage advisor will now issue warnings for result sets with large numbers
 | |
| 	  of rows (size configured by "resultSetSizeThreshold" property, default
 | |
| 	  value is 100).
 | |
| 
 | |
| 10-20-06 - Version 5.0.4
 | |
| 
 | |
|     - Fixed BUG#21379 - column names don't match metadata in cases
 | |
|       where server doesn't return original column names (column functions)
 | |
| 	  thus breaking compatibility with applications that expect 1-1 mappings
 | |
| 	  between findColumn() and rsmd.getColumnName(), usually manifests itself
 | |
| 	  as "Can't find column ('')" exceptions.
 | |
| 
 | |
|     - Fixed BUG#21544 - When using information_schema for metadata,
 | |
| 	  COLUMN_SIZE for getColumns() is not clamped to range of
 | |
| 	  java.lang.Integer as is the case when not using
 | |
| 	  information_schema, thus leading to a truncation exception that
 | |
| 	  isn't present when not using information_schema.
 | |
| 
 | |
|     - Fixed configuration property "jdbcCompliantTruncation" was not
 | |
|       being used for reads of result set values.
 | |
| 
 | |
|     - Fixed BUG#22024 - Newlines causing whitespace to span confuse
 | |
| 	  procedure parser when getting parameter metadata for stored
 | |
| 	  procedures.
 | |
| 
 | |
| 	- Driver now supports {call sp} (without "()" if procedure has no
 | |
| 	  arguments).
 | |
| 
 | |
| 	- Fixed BUG#22359 - Driver was using milliseconds for
 | |
| 	  Statement.setQueryTimeout() when specification says argument is
 | |
| 	  to be in seconds.
 | |
| 
 | |
| 	- Workaround for server crash when calling stored procedures
 | |
| 	  via a server-side prepared statement (driver now detects
 | |
| 	  prepare(stored procedure) and substitutes client-side prepared
 | |
| 	  statement), addresses BUG#22297.
 | |
| 
 | |
| 	- Added new _ci collations to CharsetMapping, fixing
 | |
| 	  Bug#22456 - utf8_unicode_ci not working.
 | |
| 
 | |
| 	- Fixed BUG#22290 - Driver issues truncation on write exception when
 | |
| 	  it shouldn't (due to sending big decimal incorrectly to server with
 | |
| 	  server-side prepared statement).
 | |
| 
 | |
| 	- Fixed BUG#22613 - DBMD.getColumns() does not return expected
 | |
| 	  COLUMN_SIZE for the SET type, now returns length of largest possible
 | |
| 	  set disregarding whitespace or the "," delimitters to be consistent
 | |
| 	  with the ODBC driver.
 | |
| 
 | |
| 	- Driver now sends numeric 1 or 0 for client-prepared statement
 | |
| 	  setBoolean() calls instead of '1' or '0'.
 | |
| 
 | |
| 	- DatabaseMetaData correctly reports true for supportsCatalog*()
 | |
| 	  methods.
 | |
| 
 | |
| 07-26-06 - Version 5.0.3
 | |
| 
 | |
|     - Fixed BUG#20650 - Statement.cancel() causes NullPointerException
 | |
|       if underlying connection has been closed due to server failure.
 | |
| 
 | |
|     - Added configuration option "noAccessToProcedureBodies" which will
 | |
|       cause the driver to create basic parameter metadata for
 | |
|       CallableStatements when the user does not have access to procedure
 | |
|       bodies via "SHOW CREATE PROCEDURE" or selecting from mysql.proc
 | |
|       instead of throwing an exception. The default value for this option
 | |
|       is "false".
 | |
| 
 | |
| 07-11-06 - Version 5.0.2-beta (5.0.1 not released due to packaging error)
 | |
| 
 | |
|     - Fixed BUG#17401 - Can't use XAConnection for local transactions when
 | |
|       no global transaction is in progress.
 | |
| 
 | |
|     - Fixed BUG#18086 - Driver fails on non-ASCII platforms. The driver
 | |
|       was assuming that the platform character set would be a superset
 | |
|       of MySQL's "latin1" when doing the handshake for authentication,
 | |
|       and when reading error messages. We now use Cp1252 for all strings
 | |
|       sent to the server during the handshake phase, and a hard-coded mapping
 | |
|       of the "language" server variable to the character set that
 | |
|       is used for error messages.
 | |
| 
 | |
|     - Fixed BUG#19169 - ConnectionProperties (and thus some
 | |
| 	  subclasses) are not serializable, even though some J2EE containers
 | |
| 	  expect them to be.
 | |
| 
 | |
| 	- Fixed BUG#20242 - MysqlValidConnectionChecker for JBoss doesn't
 | |
| 	  work with MySQLXADataSources.
 | |
| 
 | |
| 	- Better caching of character set converters (per-connection)
 | |
| 	  to remove a bottleneck for multibyte character sets.
 | |
| 
 | |
| 	- Added connection/datasource property  "pinGlobalTxToPhysicalConnection"
 | |
| 	  (defaults to "false"). When set to "true", when using XAConnections, the
 | |
| 	  driver ensures that operations on a given XID are always routed to the
 | |
| 	  same physical connection. This allows the XAConnection to support
 | |
| 	  "XA START ... JOIN" after "XA END" has been called, and is also a
 | |
| 	  workaround for transaction managers that don't maintain thread affinity
 | |
| 	  for a global transaction (most either always maintain thread affinity,
 | |
| 	  or have it as a configuration option).
 | |
| 
 | |
| 	- MysqlXaConnection.recover(int flags) now allows combinations of
 | |
| 	  XAResource.TMSTARTRSCAN and TMENDRSCAN. To simulate the "scanning"
 | |
| 	  nature of the interface, we return all prepared XIDs for TMSTARTRSCAN,
 | |
| 	  and no new XIDs for calls with TMNOFLAGS, or TMENDRSCAN when not in
 | |
| 	  combination with TMSTARTRSCAN. This change was made for API compliance,
 | |
| 	  as well as integration with IBM WebSphere's transaction manager.
 | |
| 
 | |
| 12-23-05 - Version 5.0.0-beta
 | |
| 
 | |
|     - XADataSource implemented (ported from 3.2 branch which won't be
 | |
|       released as a product). Use
 | |
|       "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" as your datasource
 | |
|       class name in your application server to utilize XA transactions
 | |
|       in MySQL-5.0.10 and newer.
 | |
| 
 | |
|     - PreparedStatement.setString() didn't work correctly when
 | |
|       sql_mode on server contained NO_BACKSLASH_ESCAPES, and no characters
 | |
|       that needed escaping were present in the string.
 | |
| 
 | |
|     - Attempt detection of the MySQL type "BINARY" (it's an alias, so this isn't
 | |
|       always reliable), and use the java.sql.Types.BINARY type mapping for it.
 | |
| 
 | |
|     - Moved -bin-g.jar file into separate "debug" subdirectory to avoid confusion.
 | |
| 
 | |
|     - Don't allow .setAutoCommit(true), or .commit() or .rollback() on an XA-managed
 | |
|       connection as-per the JDBC specification.
 | |
| 
 | |
|     - If the connection "useTimezone" is set to "true", then also respect timezone
 | |
|       conversions in escape-processed string literals (e.g. "{ts ...}" and
 | |
|       "{t ...}").
 | |
| 
 | |
|     - Return original column name for RSMD.getColumnName() if the column was aliased,
 | |
|       alias name for .getColumnLabel() (if aliased), and original table name
 | |
|       for .getTableName(). Note this only works for MySQL-4.1 and newer, as
 | |
|       older servers don't make this information available to clients.
 | |
| 
 | |
|     - Setting "useJDBCCompliantTimezoneShift=true" (it's not the default)
 | |
|       causes the driver to use GMT for _all_ TIMESTAMP/DATETIME timezones,
 | |
|       and the current VM timezone for any other type that refers to timezones.
 | |
|       This feature can not be used when "useTimezone=true" to convert between
 | |
|       server and client timezones.
 | |
| 
 | |
|     - Add one level of indirection of internal representation of CallableStatement
 | |
|       parameter metadata to avoid class not found issues on JDK-1.3 for
 | |
|       ParameterMetadata interface (which doesn't exist prior to JDBC-3.0).
 | |
| 
 | |
|     - Added unit tests for XADatasource, as well as friendlier exceptions
 | |
|       for XA failures compared to the "stock" XAException (which has no
 | |
|       messages).
 | |
| 
 | |
|     - Fixed BUG#14279 - Idle timeouts cause XAConnections to whine about rolling
 | |
|       themselves back
 | |
| 
 | |
|     - Added support for Connector/MXJ integration via url subprotocol
 | |
|       "jdbc:mysql:mxj://....".
 | |
| 
 | |
|     - Moved all SQLException constructor usage to a factory in SQLError
 | |
|       (ground-work for JDBC-4.0 SQLState-based exception classes).
 | |
| 
 | |
|     - Removed Java5-specific calls to BigDecimal constructor (when
 | |
|       result set value is '', (int)0 was being used as an argument
 | |
|       in-directly via method return value. This signature doesn't exist
 | |
|       prior to Java5.)
 | |
| 
 | |
|     - Moved all SQLException creation to a factory method in SQLError,
 | |
|       groundwork for JDBC-4.0 SQLState class-based exceptions.
 | |
| 
 | |
|     - Added service-provider entry to META-INF/services/java.sql.Driver
 | |
|       for JDBC-4.0 support.
 | |
| 
 | |
|     - Return "[VAR]BINARY" for RSMD.getColumnTypeName() when that is actually
 | |
|       the type, and it can be distinguished (MySQL-4.1 and newer).
 | |
| 
 | |
|     - When fix for BUG#14562 was merged from 3.1.12, added functionality
 | |
|       for CallableStatement's parameter metadata to return correct
 | |
|       information for .getParameterClassName().
 | |
| 
 | |
|     - Fuller synchronization of Connection to avoid deadlocks when
 | |
|       using multithreaded frameworks that multithread a single connection
 | |
|       (usually not recommended, but the JDBC spec allows it anyways),
 | |
|       part of fix to BUG#14972).
 | |
| 
 | |
|     - Implementation of Statement.cancel() and Statement.setQueryTimeout().
 | |
|       Both require MySQL-5.0.0 or newer server, require a separate connection
 | |
|       to issue the "KILL QUERY" command, and in the case of setQueryTimeout()
 | |
|       creates an additional thread to handle the timeout functionality.
 | |
| 
 | |
|       Note: Failures to cancel the statement for setQueryTimeout() may manifest
 | |
|       themselves as RuntimeExceptions rather than failing silently, as there
 | |
|       is currently no way to unblock the thread that is executing the query being
 | |
|       cancelled due to timeout expiration and have it throw the exception
 | |
|       instead.
 | |
| 
 | |
|     - Removed dead code in com.mysql.jdbc.Connection.
 | |
| 
 | |
|     - Made construction of com.mysql.jdbc.Field (result set metadata)
 | |
|       instances more efficient for non-string types by not doing
 | |
|       character set initialization, or detection of type changes due to
 | |
|       temporary tables.
 | |
| 
 | |
|     - Removed redundant code in com.mysql.jdbc.MysqlIO.
 | |
| 
 | |
|     - Removed work done for BUG#14652, and instead loosened synchronization
 | |
|       to solve a number of deadlock issues in BUG#18719, BUG#18367, BUG#17709
 | |
|       and BUG#15067. New strategy basically makes Connection instances threadsafe
 | |
|       and thus shareable across threads, and anything else threadsafe, but not
 | |
|       necessarily shareable across threads due to JDBC API interactions that
 | |
|       can cause non-obvious behavior and/or deadlock scenarios to occur since
 | |
|       the API is not designed to be used from multiple threads at once.
 | |
| 
 | |
|       Therefore, unless external synchronization is provided, clients should
 | |
|       not allow multiple threads to share a given statement or result set. Examples
 | |
|       of issues with the API itself not being multi-thread suitable include,
 | |
|       but are not limited to race conditions between modifiers and execution and
 | |
|       retrieval methods on statements and result sets that are not synchronizable
 | |
|       such as ResultSet.get*() and traversal methods, or Statement.execute*() closing
 | |
|       result sets without effectively making the driver itself serializable across the
 | |
|       board.
 | |
| 
 | |
|       These changes should not have any effect on "normal" J(2)EE use cases
 | |
|       where only one thread ever uses a connection instance and the objects created by
 | |
|       it.
 | |
| 
 | |
|     - Use a java.util.Timer to schedule cancellation of queries via
 | |
|       Statement.setQueryTimeout() rather than one thread per potential cancellation.
 | |
| 
 | |
|       A new thread will be used to actually cancel a running query, as there's potential
 | |
|       for a cancel request to block other cancel requests if all run from the
 | |
|       same thread.
 | |
| 
 | |
| nn-nn-07 - Version 3.1.15
 | |
| 
 | |
| 	- Fixed BUG#23281 - Downed slave caused round-robin load balance to
 | |
| 	  not cycle back to first host in list.
 | |
| 
 | |
| 	- Disabled use of server-side prepared statements by default.
 | |
| 
 | |
| 	- Handle YYYY-MM-DD hh:mm:ss format of timestamp in
 | |
| 	  ResultSet.getTimeFromString().
 | |
| 
 | |
| 	- Fixed BUG#24840 - character encoding of "US-ASCII" doesn't map correctly
 | |
| 	  for 4.1 or newer
 | |
| 
 | |
| 	- Added Implementation-Vendor-Id attribute to jar manifest per request
 | |
| 	  in BUG#15641.
 | |
| 
 | |
| 	- C3P0 >= version 0.9.1 passes non-proxied connections to
 | |
| 	  MysqlConnectionTester,  thus it began throwing ClassCastExceptions.
 | |
| 	  MysqlConnectionTester now checks if it has a plain Connection and uses
 | |
| 	  that if possible. Thanks to Brian Skrab for the fix.
 | |
| 
 | |
| 10-19-06 - Version 3.1.14
 | |
| 
 | |
|     - Fixed BUG#20479 - Updatable result set throws ClassCastException
 | |
| 	  when there is row data and moveToInsertRow() is called.
 | |
| 
 | |
| 	- Fixed BUG#20485 - Updatable result set that contains
 | |
| 	  a BIT column fails when server-side prepared statements are used.
 | |
| 
 | |
| 	- Fixed BUG#16987 - Memory leak with profileSQL=true.
 | |
| 
 | |
| 	- Fixed BUG#19726 - Connection fails to localhost when using
 | |
| 	  timeout and IPv6 is configured.
 | |
| 
 | |
| 	- Fixed BUG#16791 - NullPointerException in MysqlDataSourceFactory
 | |
| 	  due to Reference containing RefAddrs with null content.
 | |
| 
 | |
| 	- Fixed BUG#20306 - ResultSet.getShort() for UNSIGNED TINYINT
 | |
| 	  returns incorrect values when using server-side prepared statements.
 | |
| 
 | |
| 	- Fixed BUG#20687 - Can't pool server-side prepared statements, exception
 | |
| 	  raised when re-using them.
 | |
| 
 | |
| 	- Fixed BUG#21062 - ResultSet.getSomeInteger() doesn't work for BIT(>1).
 | |
| 
 | |
| 	- Fixed BUG#18880 - ResultSet.getFloatFromString() can't retrieve
 | |
| 	  values near Float.MIN/MAX_VALUE.
 | |
| 
 | |
| 	- Fixed BUG#20888 - escape of quotes in client-side prepared
 | |
| 	  statements parsing not respected. Patch covers more than bug report,
 | |
| 	  including NO_BACKSLASH_ESCAPES being set, and stacked quote characters
 | |
| 	  forms of escaping (i.e. '' or "").
 | |
| 
 | |
| 	- Fixed BUG#19993 - ReplicationDriver does not always round-robin load
 | |
| 	  balance depending on URL used for slaves list.
 | |
| 
 | |
| 	- Fixed calling toString() on ResultSetMetaData for driver-generated
 | |
| 	  (i.e. from DatabaseMetaData method calls, or from getGeneratedKeys())
 | |
| 	  result sets would raise a NullPointerException.
 | |
| 
 | |
| 	- Fixed Bug#21207 - Driver throws NPE when tracing prepared statements that
 | |
| 	  have been closed (in asSQL()).
 | |
| 
 | |
| 	- Removed logger autodectection altogether, must now specify logger
 | |
| 	  explitly if you want to use a logger other than one that logs
 | |
| 	  to STDERR.
 | |
| 
 | |
| 	- Fixed BUG#22290 - Driver issues truncation on write exception when
 | |
| 	  it shouldn't (due to sending big decimal incorrectly to server with
 | |
| 	  server-side prepared statement).
 | |
| 
 | |
| 	- Driver now sends numeric 1 or 0 for client-prepared statement
 | |
| 	  setBoolean() calls instead of '1' or '0'.
 | |
| 
 | |
| 	- Fixed bug where driver would not advance to next host if
 | |
| 	  roundRobinLoadBalance=true and the last host in the list is down.
 | |
| 
 | |
| 	- Fixed BUG#18258 - DatabaseMetaData.getTables(), columns() with bad
 | |
| 	  catalog parameter threw exception rather than return empty result
 | |
| 	  set (as required by spec).
 | |
| 
 | |
| 	- Check and store value for continueBatchOnError property in constructor
 | |
|       of Statements, rather than when executing batches, so that Connections
 | |
|       closed out from underneath statements don't cause NullPointerExceptions
 | |
|       when it's required to check this property.
 | |
| 
 | |
|     - Fixed bug when calling stored functions, where parameters weren't
 | |
|       numbered correctly (first parameter is now the return value, subsequent
 | |
|       parameters if specified start at index "2").
 | |
| 
 | |
| 	- Fixed BUG#21814 - time values outside valid range silently wrap.
 | |
| 
 | |
| 05-26-06 - Version 3.1.13
 | |
| 
 | |
|     - Fixed BUG#15464 - INOUT parameter does not store IN value.
 | |
| 
 | |
|     - Fixed BUG#14609 - Exception thrown for new decimal type when
 | |
|       using updatable result sets.
 | |
| 
 | |
|     - Fixed BUG#15544, no "dos" character set in MySQL > 4.1.0
 | |
| 
 | |
|     - Fixed BUG#15383 - PreparedStatement.setObject() serializes
 | |
|       BigInteger as object, rather than sending as numeric value
 | |
|       (and is thus not complementary to .getObject() on an UNSIGNED
 | |
|       LONG type).
 | |
| 
 | |
|     - Fixed BUG#11874 - ResultSet.getShort() for UNSIGNED TINYINT
 | |
|       returned wrong values.
 | |
| 
 | |
|     - Fixed BUG#15676 - lib-nodist directory missing from
 | |
|       package breaks out-of-box build
 | |
| 
 | |
|     - Fixed BUG#15854 - DBMD.getColumns() returns wrong type for BIT.
 | |
| 
 | |
|     - Fixed BUG#16169 - ResultSet.getNativeShort() causes stack overflow error
 | |
|       via recurisve calls.
 | |
| 
 | |
|     - Fixed BUG#14938 - Unable to initialize character set mapping tables.
 | |
|       Removed reliance on .properties files to hold this information, as it
 | |
|       turns out to be too problematic to code around class loader hierarchies
 | |
|       that change depending on how an application is deployed. Moved information
 | |
|       back into the CharsetMapping class.
 | |
| 
 | |
|     - Fixed BUG#16841 - updatable result set doesn't return AUTO_INCREMENT
 | |
|       values for insertRow() when multiple column primary keys are used. (the
 | |
|       driver was checking for the existence of single-column primary keys and
 | |
|       an autoincrement value > 0 instead of a straightforward isAutoIncrement()
 | |
|       check).
 | |
| 
 | |
|     - Fixed BUG#17099 - Statement.getGeneratedKeys() throws NullPointerException
 | |
|       when no query has been processed.
 | |
| 
 | |
|     - Fixed BUG#13469 - Driver tries to call methods that don't exist on older and
 | |
|       newer versions of Log4j. The fix is not trying to auto-detect presense of log4j,
 | |
|       too many different incompatible versions out there in the wild to do this reliably.
 | |
| 
 | |
|       If you relied on autodetection before, you will need to add
 | |
|       "logger=com.mysql.jdbc.log.Log4JLogger" to your JDBC URL to enable Log4J usage,
 | |
|       or alternatively use the new "CommonsLogger" class to take care of this.
 | |
| 
 | |
|     - Added support for Apache Commons WorkoutDatesUpdater.logging, use "com.mysql.jdbc.log.CommonsLogger"
 | |
|       as the value for the "logger" configuration property.
 | |
| 
 | |
|     - LogFactory now prepends "com.mysql.jdbc.log" to log class name if it can't be
 | |
|       found as-specified. This allows you to use "short names" for the built-in log
 | |
|       factories, for example "logger=CommonsLogger" instead of
 | |
|       "logger=com.mysql.jdbc.log.CommonsLogger".
 | |
| 
 | |
|     - Fixed BUG#15570 - ReplicationConnection incorrectly copies state,
 | |
| 	  doesn't transfer connection context correctly when transitioning between
 | |
| 	  the same read-only states.
 | |
| 
 | |
| 	- Fixed BUG#18041 - Server-side prepared statements don't cause
 | |
| 	  truncation exceptions to be thrown when truncation happens.
 | |
| 
 | |
| 	- Added performance feature, re-writing of batched executes for
 | |
| 	  Statement.executeBatch() (for all DML statements) and
 | |
| 	  PreparedStatement.executeBatch() (for INSERTs with VALUE clauses
 | |
| 	  only). Enable by using "rewriteBatchedStatements=true" in your JDBC URL.
 | |
| 
 | |
| 	- Fixed BUG#17898 - registerOutParameter not working when some
 | |
| 	  parameters pre-populated. Still waiting for feedback from JDBC experts
 | |
| 	  group to determine what correct parameter count from getMetaData()
 | |
| 	  should be, however.
 | |
| 
 | |
| 	- Fixed BUG#17587 - clearParameters() on a closed prepared statement
 | |
| 	  causes NPE.
 | |
| 
 | |
| 	- Map "latin1" on MySQL server to CP1252 for MySQL > 4.1.0.
 | |
| 
 | |
| 	- Added additional accessor and mutator methods on ConnectionProperties
 | |
| 	  so that DataSource users can use same naming as regular URL properties.
 | |
| 
 | |
| 	- Fixed BUG#18740 - Data truncation and getWarnings() only returns last
 | |
| 	  warning in set.
 | |
| 
 | |
| 	- Improved performance of retrieving BigDecimal, Time, Timestamp and Date
 | |
| 	  values from server-side prepared statements by creating fewer short-lived
 | |
| 	  instances of Strings when the native type is not an exact match for
 | |
| 	  the requested type. Fixes BUG#18496 for BigDecimals.
 | |
| 
 | |
| 	- Fixed BUG#18554 - Aliased column names where length of name > 251
 | |
| 	  are corrupted.
 | |
| 
 | |
| 	- Fixed BUG#17450 - ResultSet.wasNull() not always reset
 | |
| 	  correctly for booleans when done via conversion for server-side
 | |
| 	  prepared statements.
 | |
| 
 | |
| 	- Fixed BUG#16277 - Invalid classname returned for
 | |
| 	  RSMD.getColumnClassName() for BIGINT type.
 | |
| 
 | |
| 	- Fixed case where driver wasn't reading server status correctly when
 | |
| 	  fetching server-side prepared statement rows, which in some cases
 | |
| 	  could cause warning counts to be off, or multiple result sets to not
 | |
| 	  be read off the wire.
 | |
| 
 | |
| 	- Driver now aware of fix for BIT type metadata that went into
 | |
| 	  MySQL-5.0.21 for server not reporting length consistently (bug
 | |
| 	  number 13601).
 | |
| 
 | |
| 	- Fixed BUG#19282 - ResultSet.wasNull() returns incorrect value
 | |
| 	  when extracting native string from server-side prepared statement
 | |
| 	  generated result set.
 | |
| 
 | |
| 11-30-05 - Version 3.1.12
 | |
| 
 | |
|     - Fixed client-side prepared statement bug with embedded ? inside
 | |
|       quoted identifiers (it was recognized as a placeholder, when it
 | |
|       was not).
 | |
| 
 | |
|     - Don't allow executeBatch() for CallableStatements with registered
 | |
|       OUT/INOUT parameters (JDBC compliance).
 | |
| 
 | |
|     - Fall back to platform-encoding for URLDecoder.decode() when
 | |
|       parsing driver URL properties if the platform doesn't have a
 | |
|       two-argument version of this method.
 | |
| 
 | |
|     - Fixed BUG#14562 - Java type conversion may be incorrect for
 | |
|       mediumint.
 | |
| 
 | |
|     - Added configuration property "useGmtMillisForDatetimes" which
 | |
|       when set to true causes ResultSet.getDate(), .getTimestamp() to
 | |
|       return correct millis-since GMT when .getTime() is called on
 | |
|       the return value (currently default is "false" for legacy
 | |
|       behavior).
 | |
| 
 | |
|     - Fixed DatabaseMetaData.stores*Identifiers():
 | |
| 
 | |
|         * if lower_case_table_names=0 (on server):
 | |
| 
 | |
|             storesLowerCaseIdentifiers() returns false
 | |
|             storesLowerCaseQuotedIdentifiers() returns false
 | |
|             storesMixedCaseIdentifiers() returns true
 | |
|             storesMixedCaseQuotedIdentifiers() returns true
 | |
|             storesUpperCaseIdentifiers() returns false
 | |
|             storesUpperCaseQuotedIdentifiers() returns true
 | |
| 
 | |
|         * if lower_case_table_names=1 (on server):
 | |
| 
 | |
|             storesLowerCaseIdentifiers() returns true
 | |
|             storesLowerCaseQuotedIdentifiers() returns true
 | |
|             storesMixedCaseIdentifiers() returns false
 | |
|             storesMixedCaseQuotedIdentifiers() returns false
 | |
|             storesUpperCaseIdentifiers() returns false
 | |
|             storesUpperCaseQuotedIdentifiers() returns true
 | |
| 
 | |
|     - Fixed BUG#14815 - DatabaseMetaData.getColumns() doesn't
 | |
|       return TABLE_NAME correctly.
 | |
| 
 | |
|     - Fixed BUG#14909 - escape processor replaces quote character
 | |
|       in quoted string with string delimiter.
 | |
| 
 | |
|     - Fixed BUG#12975 - OpenOffice expects
 | |
|       DBMD.supportsIntegrityEnhancementFacility() to return "true"
 | |
|       if foreign keys are supported by the datasource, even though
 | |
|       this method also covers support for check constraints,
 | |
| 	  which MySQL _doesn't_ have. Setting the configuration property
 | |
| 	  "overrideSupportsIntegrityEnhancementFacility" to "true" causes
 | |
| 	  the driver to return "true" for this method.
 | |
| 
 | |
|     - Added "com.mysql.jdbc.testsuite.url.default" system property to
 | |
| 	  set default JDBC url for testsuite (to speed up bug resolution
 | |
| 	  when I'm working in Eclipse).
 | |
| 
 | |
| 	- Fixed BUG#14938 - Unable to initialize character set mapping
 | |
| 	  tables (due to J2EE classloader differences).
 | |
| 
 | |
| 	- Fixed BUG#14972 - Deadlock while closing server-side prepared
 | |
| 	  statements from multiple threads sharing one connection.
 | |
| 
 | |
| 	- Fixed BUG#12230 -	logSlowQueries should give better info.
 | |
| 
 | |
| 	- Fixed BUG#13775 - Extraneous sleep on autoReconnect.
 | |
| 
 | |
| 	- Fixed BUG#15024 - Driver incorrectly closes streams passed as
 | |
| 	  arguments to PreparedStatements. Reverts to legacy behavior by
 | |
| 	  setting the JDBC configuration property "autoClosePStmtStreams"
 | |
| 	  to "true" (also included in the 3-0-Compat configuration "bundle").
 | |
| 
 | |
| 	- Fixed BUG#13048 - maxQuerySizeToLog is not respected. Added WorkoutDatesUpdater.logging of
 | |
| 	  bound values for execute() phase of server-side prepared statements
 | |
| 	  when profileSQL=true as well.
 | |
| 
 | |
| 	- Fixed BUG#15065 - Usage advisor complains about unreferenced
 | |
| 	  columns, even though they've been referenced.
 | |
| 
 | |
| 	- Don't increase timeout for failover/reconnect (BUG#6577)
 | |
| 
 | |
| 	- Process escape tokens in Connection.prepareStatement(...), fix
 | |
| 	  for BUG#15141. You can disable this behavior by setting
 | |
| 	  the JDBC URL configuration property "processEscapeCodesForPrepStmts"
 | |
| 	  to "false".
 | |
| 
 | |
| 	- Fixed BUG#13255 - Reconnect during middle of executeBatch()
 | |
| 	  should not occur if autoReconnect is enabled.
 | |
| 
 | |
| 10-07-05 - Version 3.1.11
 | |
| 
 | |
|     - Fixed BUG#11629 - Spurious "!" on console when character
 | |
|       encoding is "utf8".
 | |
| 
 | |
|     - Fixed statements generated for testcases missing ";" for
 | |
|       "plain" statements.
 | |
| 
 | |
|     - Fixed BUG#11663 - Incorrect generation of testcase scripts
 | |
|       for server-side prepared statements.
 | |
| 
 | |
|     - Fixed regression caused by fix for BUG#11552 that caused driver
 | |
|       to return incorrect values for unsigned integers when those
 | |
|       integers where within the range of the positive signed type.
 | |
| 
 | |
|     - Moved source code to svn repo.
 | |
| 
 | |
|     - Fixed BUG#11797 - Escape tokenizer doesn't respect stacked single quotes
 | |
| 	  for escapes.
 | |
| 
 | |
| 	- GEOMETRY type not recognized when using server-side prepared statements.
 | |
| 
 | |
|     - Fixed BUG#11879 -- ReplicationConnection won't switch to slave, throws
 | |
|       "Catalog can't be null" exception.
 | |
| 
 | |
|     - Fixed BUG#12218, properties shared between master and slave with
 | |
|       replication connection.
 | |
| 
 | |
|     - Fixed BUG#10630, Statement.getWarnings() fails with NPE if statement
 | |
|       has been closed.
 | |
| 
 | |
|     - Only get char[] from SQL in PreparedStatement.ParseInfo() when needed.
 | |
| 
 | |
|     - Fixed BUG#12104 - Geometry types not handled with server-side prepared
 | |
|       statements.
 | |
| 
 | |
|     - Fixed BUG#11614 - StringUtils.getBytes() doesn't work when using
 | |
|       multibyte character encodings and a length in  _characters_ is
 | |
|       specified.
 | |
| 
 | |
|     - Fixed BUG#11798 - Pstmt.setObject(...., Types.BOOLEAN) throws exception.
 | |
| 
 | |
|     - Fixed BUG#11976 - maxPerformance.properties mis-spells
 | |
| 	  "elideSetAutoCommits".
 | |
| 
 | |
| 	- Fixed BUG#11575 -- DBMD.storesLower/Mixed/UpperIdentifiers()
 | |
| 	  reports incorrect values for servers deployed on Windows.
 | |
| 
 | |
| 	- Fixed BUG#11190 - ResultSet.moveToCurrentRow() fails to work when
 | |
| 	  preceeded by a call to ResultSet.moveToInsertRow().
 | |
| 
 | |
| 	- Fixed BUG#11115, VARBINARY data corrupted when using server-side
 | |
| 	  prepared statements and .setBytes().
 | |
| 
 | |
| 	- Fixed BUG#12229 - explainSlowQueries hangs with server-side
 | |
| 	  prepared statements.
 | |
| 
 | |
| 	- Fixed BUG#11498 - Escape processor didn't honor strings demarcated
 | |
| 	  with double quotes.
 | |
| 
 | |
| 	- Lifted restriction of changing streaming parameters with server-side
 | |
| 	  prepared statements. As long as _all_ streaming parameters were set
 | |
| 	  before execution, .clearParameters() does not have to be called.
 | |
| 	  (due to limitation of client/server protocol, prepared statements
 | |
| 	   can not reset _individual_ stream data on the server side).
 | |
| 
 | |
| 	- Reworked Field class, *Buffer, and MysqlIO to be aware of field
 | |
| 	  lengths > Integer.MAX_VALUE.
 | |
| 
 | |
| 	- Updated DBMD.supportsCorrelatedQueries() to return true for versions >
 | |
| 	  4.1, supportsGroupByUnrelated() to return true and
 | |
| 	  getResultSetHoldability() to return HOLD_CURSORS_OVER_COMMIT.
 | |
| 
 | |
| 	- Fixed BUG#12541 - Handling of catalog argument in
 | |
| 	  DatabaseMetaData.getIndexInfo(), which also means changes to the following
 | |
| 	  methods in DatabaseMetaData:
 | |
| 
 | |
| 	    - getBestRowIdentifier()
 | |
| 	    - getColumns()
 | |
| 	    - getCrossReference()
 | |
| 	    - getExportedKeys()
 | |
| 	    - getImportedKeys()
 | |
| 	    - getIndexInfo()
 | |
| 	    - getPrimaryKeys()
 | |
| 	    - getProcedures() (and thus indirectly getProcedureColumns())
 | |
| 	    - getTables()
 | |
| 
 | |
| 	  The "catalog" argument in all of these methods now behaves in the following
 | |
| 	  way:
 | |
| 
 | |
| 	    - Specifying NULL means that catalog will not be used to filter the
 | |
| 	      results (thus all databases will be searched), unless you've
 | |
| 	      set "nullCatalogMeansCurrent=true" in your JDBC URL properties.
 | |
| 
 | |
| 	    - Specifying "" means "current" catalog, even though this isn't quite
 | |
| 	      JDBC spec compliant, it's there for legacy users.
 | |
| 
 | |
| 	    - Specifying a catalog works as stated in the API docs.
 | |
| 
 | |
| 	- Made Connection.clientPrepare() available from "wrapped" connections
 | |
| 	  in the jdbc2.optional package (connections built by
 | |
| 	  ConnectionPoolDataSource instances).
 | |
| 
 | |
|     - Added Connection.isMasterConnection() for clients to be able to determine
 | |
|       if a multi-host master/slave connection is connected to the first host
 | |
|       in the list.
 | |
| 
 | |
|     - Fixed BUG#12753 - Tokenizer for "=" in URL properties was causing
 | |
|       sessionVariables=.... to be parameterized incorrectly.
 | |
| 
 | |
|     - Fixed BUG#11781, foreign key information that is quoted is
 | |
|       parsed incorrectly when DatabaseMetaData methods use that
 | |
|       information.
 | |
| 
 | |
|     - The "sendBlobChunkSize" property is now clamped to "max_allowed_packet"
 | |
|       with consideration of stream buffer size and packet headers to avoid
 | |
|       PacketTooBigExceptions when "max_allowed_packet" is similar in size
 | |
|       to the default "sendBlobChunkSize" which is 1M.
 | |
| 
 | |
|     - CallableStatement.clearParameters() now clears resources associated
 | |
|       with INOUT/OUTPUT parameters as well as INPUT parameters.
 | |
| 
 | |
|     - Fixed BUG#12417 - Connection.prepareCall() is database name
 | |
|       case-sensitive (on Windows systems).
 | |
| 
 | |
|     - Fixed BUG#12752 - Cp1251 incorrectly mapped to win1251 for
 | |
|       servers newer than 4.0.x.
 | |
| 
 | |
|     - Fixed BUG#12970 - java.sql.Types.OTHER returned for
 | |
| 	  BINARY and VARBINARY columns when using
 | |
| 	  DatabaseMetaData.getColumns().
 | |
| 
 | |
| 	- ServerPreparedStatement.getBinding() now checks if the statement
 | |
| 	  is closed before attempting to reference the list of parameter
 | |
| 	  bindings, to avoid throwing a NullPointerException.
 | |
| 
 | |
|     - Fixed BUG#13277 - ResultSetMetaData from
 | |
|       Statement.getGeneratedKeys() caused NullPointerExceptions to be
 | |
|       thrown whenever a method that required a connection reference
 | |
|       was called.
 | |
| 
 | |
|     - Removed support for java.nio I/O. Too many implementations
 | |
|       turned out to be buggy, and there was no performance difference
 | |
|       since MySQL is a blocking protocol anyway.
 | |
| 
 | |
| 06-23-05 - Version 3.1.10-stable
 | |
| 
 | |
| 	- Fixed connecting without a database specified raised an exception
 | |
| 	  in MysqlIO.changeDatabaseTo().
 | |
| 
 | |
| 	- Initial implemention of ParameterMetadata for
 | |
| 	  PreparedStatement.getParameterMetadata(). Only works fully
 | |
| 	  for CallableStatements, as current server-side prepared statements
 | |
| 	  return every parameter as a VARCHAR type.
 | |
| 
 | |
| 	- Fixed BUG#11552 - Server-side prepared statements return incorrect
 | |
| 	  values for unsigned TINYINT, SMALLINT, INT and Long.
 | |
| 
 | |
| 	- Fixed BUG#11540 - Incorrect year conversion in setDate(..) for
 | |
| 	  system that use B.E. year in default locale.
 | |
| 
 | |
| 06-22-05 - Version 3.1.9-stable
 | |
| 
 | |
| 	- Overhaul of character set configuration, everything now
 | |
| 	  lives in a properties file.
 | |
| 
 | |
| 	- Driver now correctly uses CP932 if available on the server
 | |
| 	  for Windows-31J, CP932 and MS932 java encoding names,
 | |
| 	  otherwise it resorts to SJIS, which is only a close
 | |
| 	  approximation. Currently only MySQL-5.0.3 and newer (and
 | |
| 	  MySQL-4.1.12 or .13, depending on when the character set
 | |
| 	  gets backported) can reliably support any variant of CP932.
 | |
| 
 | |
| 	- Fixed BUG#9064 - com.mysql.jdbc.PreparedStatement.ParseInfo
 | |
| 	  does unnecessary call to toCharArray().
 | |
| 
 | |
| 	- Fixed Bug#10144 - Memory leak in ServerPreparedStatement if
 | |
| 	  serverPrepare() fails.
 | |
| 
 | |
| 	- Actually write manifest file to correct place so it ends up
 | |
| 	  in the binary jar file.
 | |
| 
 | |
| 	- Added "createDatabaseIfNotExist" property (default is "false"),
 | |
| 	  which will cause the driver to ask the server to create the
 | |
| 	  database specified in the URL if it doesn't exist. You must have
 | |
| 	  the appropriate privileges for database creation for this to
 | |
| 	  work.
 | |
| 
 | |
| 	- Fixed BUG#10156 - Unsigned SMALLINT treated as signed for ResultSet.getInt(),
 | |
| 	  fixed all cases for UNSIGNED integer values and server-side prepared statements,
 | |
| 	  as well as ResultSet.getObject() for UNSIGNED TINYINT.
 | |
| 
 | |
| 	- Fixed BUG#10155, double quotes not recognized when parsing
 | |
| 	  client-side prepared statements.
 | |
| 
 | |
| 	- Made enableStreamingResults() visible on
 | |
| 	  com.mysql.jdbc.jdbc2.optional.StatementWrapper.
 | |
| 
 | |
| 	- Made ServerPreparedStatement.asSql() work correctly so auto-explain
 | |
| 	  functionality would work with server-side prepared statements.
 | |
| 
 | |
| 	- Made JDBC2-compliant wrappers public in order to allow access to
 | |
| 	  vendor extensions.
 | |
| 
 | |
| 	- Cleaned up WorkoutDatesUpdater.logging of profiler events, moved code to dump a profiler
 | |
| 	  event as a string to com.mysql.jdbc.log.LogUtils so that third
 | |
| 	  parties can use it.
 | |
| 
 | |
| 	- DatabaseMetaData.supportsMultipleOpenResults() now returns true. The
 | |
| 	  driver has supported this for some time, DBMD just missed that fact.
 | |
| 
 | |
| 	- Fixed BUG#10310 - Driver doesn't support {?=CALL(...)} for calling
 | |
| 	  stored functions. This involved adding support for function retrieval
 | |
| 	  to DatabaseMetaData.getProcedures() and getProcedureColumns() as well.
 | |
| 
 | |
| 	- Fixed BUG#10485, SQLException thrown when retrieving YEAR(2)
 | |
| 	  with ResultSet.getString(). The driver will now always treat YEAR types
 | |
| 	  as java.sql.Dates and return the correct values for getString().
 | |
| 	  Alternatively, the "yearIsDateType" connection property can be set to
 | |
| 	  "false" and the values will be treated as SHORTs.
 | |
| 
 | |
| 	- The datatype returned for TINYINT(1) columns when "tinyInt1isBit=true"
 | |
| 	  (the default) can be switched between Types.BOOLEAN and Types.BIT
 | |
| 	  using the new configuration property "transformedBitIsBoolean", which
 | |
| 	  defaults to "false". If set to "false" (the default),
 | |
| 	  DatabaseMetaData.getColumns() and ResultSetMetaData.getColumnType()
 | |
| 	  will return Types.BOOLEAN for TINYINT(1) columns. If "true",
 | |
| 	  Types.BOOLEAN will be returned instead. Irregardless of this configuration
 | |
| 	  property, if "tinyInt1isBit" is enabled, columns with the type TINYINT(1)
 | |
| 	  will be returned as java.lang.Boolean instances from
 | |
| 	  ResultSet.getObject(..), and ResultSetMetaData.getColumnClassName()
 | |
| 	  will return "java.lang.Boolean".
 | |
| 
 | |
| 	- Fixed BUG#10496 - SQLException is thrown when using property
 | |
| 	  "characterSetResults" with cp932 or eucjpms.
 | |
| 
 | |
| 	- Reorganized directory layout, sources now in "src" folder,
 | |
| 	  don't pollute parent directory when building, now output goes
 | |
| 	  to "./build", distribution goes to "./dist".
 | |
| 
 | |
| 	- Added support/bug hunting feature that generates .sql test
 | |
| 	  scripts to STDERR when "autoGenerateTestcaseScript" is set
 | |
| 	  to "true".
 | |
| 
 | |
| 	- Fixed BUG#10850 - 0-length streams not sent to server when
 | |
| 	  using server-side prepared statements.
 | |
| 
 | |
| 	- Setting "cachePrepStmts=true" now causes the Connection to also
 | |
| 	  cache the check the driver performs to determine if a prepared
 | |
| 	  statement can be server-side or not, as well as caches server-side
 | |
| 	  prepared statements for the lifetime of a connection. As before,
 | |
| 	  the "prepStmtCacheSize" parameter controls the size of these
 | |
| 	  caches.
 | |
| 
 | |
| 	- Try to handle OutOfMemoryErrors more gracefully. Although not
 | |
| 	  much can be done, they will in most cases close the connection
 | |
| 	  they happened on so that further operations don't run into
 | |
| 	  a connection in some unknown state. When an OOM has happened,
 | |
| 	  any further operations on the connection will fail with a
 | |
| 	  "Connection closed" exception that will also list the OOM exception
 | |
| 	  as the reason for the implicit connection close event.
 | |
| 
 | |
| 	- Don't send COM_RESET_STMT for each execution of a server-side
 | |
| 	  prepared statement if it isn't required.
 | |
| 
 | |
| 	- Driver detects if you're running MySQL-5.0.7 or later, and does
 | |
| 	  not scan for "LIMIT ?[,?]" in statements being prepared, as the
 | |
| 	  server supports those types of queries now.
 | |
| 
 | |
| 	- Fixed BUG#11115, Varbinary data corrupted when using server-side
 | |
| 	  prepared statements and ResultSet.getBytes().
 | |
| 
 | |
| 	- Connection.setCatalog() is now aware of the "useLocalSessionState"
 | |
| 	  configuration property, which when set to true will prevent
 | |
| 	  the driver from sending "USE ..." to the server if the requested
 | |
| 	  catalog is the same as the current catalog.
 | |
| 
 | |
| 	- Added the following configuration bundles, use one or many via
 | |
| 	  the "useConfigs" configuration property:
 | |
| 
 | |
| 	    * maxPerformance -- maximum performance without being reckless
 | |
| 	    * solarisMaxPerformance -- maximum performance for Solaris,
 | |
| 	                               avoids syscalls where it can
 | |
| 	    * 3-0-Compat -- Compatibility with Connector/J 3.0.x functionality
 | |
| 
 | |
| 	- Added "maintainTimeStats" configuration property (defaults to "true"),
 | |
| 	  which tells the driver whether or not to keep track of the last query time
 | |
| 	  and the last successful packet sent to the server's time. If set to
 | |
| 	  false, removes two syscalls per query.
 | |
| 
 | |
| 	- Fixed BUG#11259, autoReconnect ping causes exception on connection
 | |
| 	  startup.
 | |
| 
 | |
| 	- Fixed BUG#11360 Connector/J dumping query into SQLException twice
 | |
| 
 | |
| 	- Fixed PreparedStatement.setClob() not accepting null as a parameter.
 | |
| 
 | |
| 	- Fixed BUG#11411 - Production package doesn't include JBoss integration
 | |
| 	  classes.
 | |
| 
 | |
| 	- Removed nonsensical "costly type conversion" warnings when using
 | |
| 	  usage advisor.
 | |
| 
 | |
| 04-14-05 - Version 3.1.8-stable
 | |
| 
 | |
| 	- Fixed DatabaseMetaData.getTables() returning views when they were
 | |
| 	  not asked for as one of the requested table types.
 | |
| 
 | |
| 	- Added support for new precision-math DECIMAL type in MySQL >= 5.0.3.
 | |
| 
 | |
| 	- Fixed ResultSet.getTime() on a NULL value for server-side prepared
 | |
| 	  statements throws NPE.
 | |
| 
 | |
| 	- Made Connection.ping() a public method.
 | |
| 
 | |
| 	- Fixed Bug#8868, DATE_FORMAT() queries returned as BLOBs from getObject().
 | |
| 
 | |
| 	- ServerPreparedStatements now correctly 'stream' BLOB/CLOB data to the
 | |
| 	  server. You can configure the threshold chunk size using the
 | |
| 	  JDBC URL property 'blobSendChunkSize' (the default is one megabyte).
 | |
| 
 | |
|     - BlobFromLocator now uses correct identifier quoting when generating
 | |
|       prepared statements.
 | |
| 
 | |
|     - Server-side session variables can be preset at connection time by
 | |
|       passing them as a comma-delimited list for the connection property
 | |
|       'sessionVariables'.
 | |
| 
 | |
| 	- Fixed regression in ping() for users using autoReconnect=true.
 | |
| 
 | |
| 	- Fixed BUG#9040 - PreparedStatement.addBatch() doesn't work with server-side
 | |
| 	  prepared statements and streaming BINARY data.
 | |
| 
 | |
| 	- Fixed BUG#8800 - DBMD.supportsMixedCase*Identifiers() returns wrong
 | |
| 	  value on servers running on case-sensitive filesystems.
 | |
| 
 | |
| 	- Fixed BUG#9206, can not use 'UTF-8' for characterSetResults
 | |
|       configuration property.
 | |
| 
 | |
|     - Fixed BUG#9236, a continuation of BUG#8868, where functions used in queries
 | |
|       that should return non-string types when resolved by temporary tables suddenly
 | |
|       become opaque binary strings (work-around for server limitation). Also fixed
 | |
|       fields with type of CHAR(n) CHARACTER SET BINARY to return correct/matching
 | |
|       classes for RSMD.getColumnClassName() and ResultSet.getObject().
 | |
| 
 | |
|     - Fixed BUG#8792 - DBMD.supportsResultSetConcurrency() not returning
 | |
| 	  true for forward-only/read-only result sets (we obviously support this).
 | |
| 
 | |
| 	- Fixed BUG#8803, 'DATA_TYPE' column from DBMD.getBestRowIdentifier()
 | |
| 	  causes ArrayIndexOutOfBoundsException when accessed (and in fact, didn't
 | |
| 	  return any value).
 | |
| 
 | |
| 	- Check for empty strings ('') when converting char/varchar column data to numbers,
 | |
| 	  throw exception if 'emptyStringsConvertToZero' configuration property is set
 | |
| 	  to 'false' (for backwards-compatibility with 3.0, it is now set to 'true'
 | |
| 	  by default, but will most likely default to 'false' in 3.2).
 | |
| 
 | |
| 	- Fixed BUG#9320 - PreparedStatement.getMetaData() inserts blank row in database
 | |
| 	  under certain conditions when not using server-side prepared statements.
 | |
| 
 | |
| 	- Connection.canHandleAsPreparedStatement() now makes 'best effort' to distinguish
 | |
| 	  LIMIT clauses with placeholders in them from ones without in order to have fewer
 | |
| 	  false positives when generating work-arounds for statements the server cannot
 | |
| 	  currently handle as server-side prepared statements.
 | |
| 
 | |
| 	- Fixed build.xml to not compile log4j WorkoutDatesUpdater.logging if log4j not available.
 | |
| 
 | |
| 	- Added support for the c3p0 connection pool's (http://c3p0.sf.net/)
 | |
| 	  validation/connection checker interface which uses the lightweight
 | |
| 	  'COM_PING' call to the server if available. To use it, configure your
 | |
| 	  c3p0 connection pool's 'connectionTesterClassName' property to use
 | |
| 	  'com.mysql.jdbc.integration.c3p0.MysqlConnectionTester'.
 | |
| 
 | |
| 	- Better detection of LIMIT inside/outside of quoted strings so that
 | |
| 	  the driver can more correctly determine whether a prepared statement
 | |
| 	  can be prepared on the server or not.
 | |
| 
 | |
| 	- Fixed BUG#9319 - Stored procedures with same name in
 | |
| 	  different databases confuse the driver when it tries to determine
 | |
| 	  parameter counts/types.
 | |
| 
 | |
|     - Added finalizers to ResultSet and Statement implementations to be JDBC
 | |
|       spec-compliant, which requires that if not explicitly closed, these
 | |
|       resources should be closed upon garbage collection.
 | |
| 
 | |
|     - Fixed BUG#9682 - Stored procedures with DECIMAL parameters with
 | |
| 	  storage specifications that contained "," in them would fail.
 | |
| 
 | |
| 	- PreparedStatement.setObject(int, Object, int type, int scale) now
 | |
| 	  uses scale value for BigDecimal instances.
 | |
| 
 | |
| 	- Fixed BUG#9704 - Statement.getMoreResults() could throw NPE when
 | |
| 	  existing result set was .close()d.
 | |
| 
 | |
| 	- The performance metrics feature now gathers information about
 | |
| 	  number of tables referenced in a SELECT.
 | |
| 
 | |
| 	- The WorkoutDatesUpdater.logging system is now automatically configured. If the value has
 | |
| 	  been set by the user, via the URL property "logger" or the system
 | |
| 	  property "com.mysql.jdbc.logger", then use that, otherwise, autodetect
 | |
| 	  it using the following steps:
 | |
| 
 | |
|     	 Log4j, if it's available,
 | |
|     	 Then JDK1.4 WorkoutDatesUpdater.logging,
 | |
|     	 Then fallback to our STDERR WorkoutDatesUpdater.logging.
 | |
| 
 | |
|    	- Fixed BUG#9778, DBMD.getTables() shouldn't return tables if views
 | |
| 	  are asked for, even if the database version doesn't support views.
 | |
| 
 | |
| 	- Fixed driver not returning 'true' for '-1' when ResultSet.getBoolean()
 | |
| 	  was called on result sets returned from server-side prepared statements.
 | |
| 
 | |
| 	- Added a Manifest.MF file with implementation information to the .jar
 | |
| 	  file.
 | |
| 
 | |
| 	- More tests in Field.isOpaqueBinary() to distinguish opaque binary (i.e.
 | |
| 	  fields with type CHAR(n) and CHARACTER SET BINARY) from output of
 | |
| 	  various scalar and aggregate functions that return strings.
 | |
| 
 | |
| 	- Fixed BUG#9917 - Should accept null for catalog (meaning use current)
 | |
| 	  in DBMD methods, even though it's not JDBC-compliant for legacy's sake.
 | |
| 	  Disable by setting connection property "nullCatalogMeansCurrent" to "false"
 | |
| 	  (which will be the default value in C/J 3.2.x).
 | |
| 
 | |
| 	- Fixed BUG#9769 - Should accept null for name patterns in DBMD (meaning "%"),
 | |
| 	  even though it isn't JDBC compliant, for legacy's sake. Disable by setting
 | |
| 	  connection property "nullNamePatternMatchesAll" to "false" (which will be
 | |
| 	  the default value in C/J 3.2.x).
 | |
| 
 | |
| 02-18-05 - Version 3.1.7-stable
 | |
| 
 | |
| 
 | |
|     - Fixed BUG#7686, Timestamp key column data needed "_binary'"
 | |
|       stripped for UpdatableResultSet.refreshRow().
 | |
| 
 | |
|     - Fixed BUG#7715 - Timestamps converted incorrectly to strings
 | |
|       with Server-side prepared statements and updatable result sets.
 | |
| 
 | |
|     - Detect new sql_mode variable in string form (it used to be
 | |
|       integer) and adjust quoting method for strings appropriately.
 | |
| 
 | |
|     - Added 'holdResultsOpenOverStatementClose' property (default is
 | |
|       false), that keeps result sets open over statement.close() or new
 | |
|       execution on same statement (suggested by Kevin Burton).
 | |
| 
 | |
|     - Fixed BUG#7952 -- Infinite recursion when 'falling back' to master
 | |
|       in failover configuration.
 | |
| 
 | |
|     - Disable multi-statements (if enabled) for MySQL-4.1 versions prior
 | |
|       to version 4.1.10 if the query cache is enabled, as the server
 | |
|       returns wrong results in this configuration.
 | |
| 
 | |
|     - Fixed duplicated code in configureClientCharset() that prevented
 | |
|       useOldUTF8Behavior=true from working properly.
 | |
| 
 | |
|     - Removed 'dontUnpackBinaryResults' functionality, the driver now
 | |
|       always stores results from server-side prepared statements as-is
 | |
|       from the server and unpacks them on demand.
 | |
| 
 | |
|     - Fixed BUG#8096 where emulated locators corrupt binary data
 | |
|       when using server-side prepared statements.
 | |
| 
 | |
|     - Fixed synchronization issue with
 | |
|       ServerPreparedStatement.serverPrepare() that could cause
 | |
|       deadlocks/crashes if connection was shared between threads.
 | |
| 
 | |
|     - By default, the driver now scans SQL you are preparing via all
 | |
|       variants of Connection.prepareStatement() to determine if it is a
 | |
|       supported type of statement to prepare on the server side, and if
 | |
|       it is not supported by the server, it instead prepares it as a
 | |
|       client-side emulated prepared statement (BUG#4718). You can
 | |
|       disable this by passing 'emulateUnsupportedPstmts=false' in your
 | |
|       JDBC URL.
 | |
| 
 | |
|     - Remove _binary introducer from parameters used as in/out
 | |
|       parameters in CallableStatement.
 | |
| 
 | |
|     - Always return byte[]s for output parameters registered as *BINARY.
 | |
| 
 | |
|     - Send correct value for 'boolean' "true" to server for
 | |
|       PreparedStatement.setObject(n, "true", Types.BIT).
 | |
| 
 | |
|     - Fixed bug with Connection not caching statements from
 | |
|       prepareStatement() when the statement wasn't a server-side
 | |
|       prepared statement.
 | |
| 
 | |
|     - Choose correct 'direction' to apply time adjustments when both
 | |
|       client and server are in GMT timezone when using
 | |
|       ResultSet.get(..., cal) and PreparedStatement.set(...., cal).
 | |
| 
 | |
|     - Added 'dontTrackOpenResources' option (default is false, to be
 | |
|       JDBC compliant), which helps with memory use for non-well-behaved
 | |
|       apps (i.e applications which don't close Statements when they
 | |
|       should).
 | |
| 
 | |
|     - Fixed BUG#8428 - ResultSet.getString() doesn't maintain format
 | |
|       stored on server, bug fix only enabled when 'noDatetimeStringSync'
 | |
|       property is set to 'true' (the default is 'false').
 | |
| 
 | |
|     - Fixed NPE in ResultSet.realClose() when using usage advisor and
 | |
|       result set was already closed.
 | |
| 
 | |
|     - Fixed BUG#8487 - PreparedStatements not creating streaming result
 | |
|       sets.
 | |
| 
 | |
|     - Don't pass NULL to String.valueOf() in
 | |
|       ResultSet.getNativeConvertToString(), as it stringifies it (i.e.
 | |
|       returns "null"), which is not correct for the method in question.
 | |
| 
 | |
|     - Fixed BUG#8484 - ResultSet.getBigDecimal() throws exception
 | |
|       when rounding would need to occur to set scale. The driver now
 | |
|       chooses a rounding mode of 'half up' if non-rounding
 | |
|       BigDecimal.setScale() fails.
 | |
| 
 | |
|     - Added 'useLocalSessionState' configuration property, when set to
 | |
|       'true' the JDBC driver trusts that the application is well-behaved
 | |
|       and only sets autocommit and transaction isolation levels using
 | |
|       the methods provided on java.sql.Connection, and therefore can
 | |
|       manipulate these values in many cases without incurring
 | |
|       round-trips to the database server.
 | |
| 
 | |
|     - Added enableStreamingResults() to Statement for connection pool
 | |
|       implementations that check Statement.setFetchSize() for
 | |
|       specification-compliant values. Call Statement.setFetchSize(>=0)
 | |
|       to disable the streaming results for that statement.
 | |
| 
 | |
|     - Added support for BIT type in MySQL-5.0.3. The driver will treat
 | |
|       BIT(1-8) as the JDBC standard BIT type (which maps to
 | |
|       java.lang.Boolean), as the server does not currently send enough
 | |
|       information to determine the size of a bitfield when < 9 bits are
 | |
|       declared. BIT(>9) will be treated as VARBINARY, and will return
 | |
|       byte[] when getObject() is called.
 | |
| 
 | |
| 12-23-04 - Version 3.1.6-stable
 | |
| 
 | |
|     - Fixed hang on SocketInputStream.read() with Statement.setMaxRows() and
 | |
|       multiple result sets when driver has to truncate result set directly,
 | |
|       rather than tacking a 'LIMIT n' on the end of it.
 | |
| 
 | |
|     - Fixed BUG#7026 - DBMD.getProcedures() doesn't respect catalog parameter.
 | |
| 
 | |
|     - Respect bytes-per-character for RSMD.getPrecision().
 | |
| 
 | |
| 12-02-04 - Version 3.1.5-gamma
 | |
| 
 | |
| 	- Fix comparisons made between string constants and dynamic strings that
 | |
| 	  are either toUpperCase()d or toLowerCase()d to use Locale.ENGLISH, as
 | |
| 	  some locales 'override' case rules for English. Also use
 | |
| 	  StringUtils.indexOfIgnoreCase() instead of .toUpperCase().indexOf(),
 | |
| 	  avoids creating a very short-lived transient String instance.
 | |
| 
 | |
| 	- Fixed BUG#5235 - Server-side prepared statements did not honor
 | |
|       'zeroDateTimeBehavior' property, and would cause class-cast
 | |
|       exceptions when using ResultSet.getObject(), as the all-zero string
 | |
|       was always returned.
 | |
| 
 | |
|     - Fixed batched updates with server prepared statements weren't looking if
 | |
|       the types had changed for a given batched set of parameters compared
 | |
|       to the previous set, causing the server to return the error
 | |
|       'Wrong arguments to mysql_stmt_execute()'.
 | |
| 
 | |
|     - Handle case when string representation of timestamp contains trailing '.'
 | |
|       with no numbers following it.
 | |
| 
 | |
|     - Fixed BUG#5706 - Inefficient detection of pre-existing string instances
 | |
|       in ResultSet.getNativeString().
 | |
| 
 | |
|     - Don't throw exceptions for Connection.releaseSavepoint().
 | |
| 
 | |
|     - Use a per-session Calendar instance by default when decoding dates
 | |
|       from ServerPreparedStatements (set to old, less performant behavior by
 | |
|       setting property 'dynamicCalendars=true').
 | |
| 
 | |
|     - Added experimental configuration property 'dontUnpackBinaryResults',
 | |
|       which delays unpacking binary result set values until they're asked for,
 | |
|       and only creates object instances for non-numerical values (it is set
 | |
|       to 'false' by default). For some usecase/jvm combinations, this is
 | |
|       friendlier on the garbage collector.
 | |
| 
 | |
|     - Fixed BUG#5729 - UNSIGNED BIGINT unpacked incorrectly from
 | |
|       server-side prepared statement result sets.
 | |
| 
 | |
|     - Fixed BUG#6225 - ServerSidePreparedStatement allocating short-lived
 | |
|       objects un-necessarily.
 | |
| 
 | |
|     - Removed un-wanted new Throwable() in ResultSet constructor due to bad
 | |
|       merge (caused a new object instance that was never used for every result
 | |
|       set created) - Found while profiling for BUG#6359.
 | |
| 
 | |
|     - Fixed too-early creation of StringBuffer in EscapeProcessor.escapeSQL(),
 | |
|       also return String when escaping not needed (to avoid unnecssary object
 | |
|       allocations). Found while profiling for BUG#6359.
 | |
| 
 | |
|     - Use null-safe-equals for key comparisons in updatable result sets.
 | |
| 
 | |
|     - Fixed BUG#6537, SUM() on Decimal with server-side prepared statement ignores
 | |
|       scale if zero-padding is needed (this ends up being due to conversion to DOUBLE
 | |
|       by server, which when converted to a string to parse into BigDecimal, loses all
 | |
|       'padding' zeros).
 | |
| 
 | |
|     - Use DatabaseMetaData.getIdentifierQuoteString() when building DBMD
 | |
|       queries.
 | |
| 
 | |
|     - Use 1MB packet for sending file for LOAD DATA LOCAL INFILE if that
 | |
|       is < 'max_allowed_packet' on server.
 | |
| 
 | |
|     - Fixed BUG#6399, ResultSetMetaData.getColumnDisplaySize() returns incorrect
 | |
|       values for multibyte charsets.
 | |
| 
 | |
|     - Make auto-deserialization of java.lang.Objects stored in BLOBs
 | |
|       configurable via 'autoDeserialize' property (defaults to 'false').
 | |
| 
 | |
|     - Re-work Field.isOpaqueBinary() to detect 'CHAR(n) CHARACTER SET BINARY'
 | |
|       to support fixed-length binary fields for ResultSet.getObject().
 | |
| 
 | |
|     - Use our own implementation of buffered input streams to get around
 | |
|       blocking behavior of java.io.BufferedInputStream. Disable this with
 | |
|       'useReadAheadInput=false'.
 | |
| 
 | |
|     - Fixed BUG#6348, failing to connect to the server when one of the
 | |
|       addresses for the given host name is IPV6 (which the server does
 | |
|       not yet bind on). The driver now loops through _all_ IP addresses
 | |
|       for a given host, and stops on the first one that accepts() a
 | |
|       socket.connect().
 | |
| 
 | |
| 09-04-04 - Version 3.1.4-beta
 | |
| 
 | |
|     - Fixed BUG#4510 - connector/j 3.1.3 beta does not handle integers
 | |
|       correctly (caused by changes to support unsigned reads in
 | |
|       Buffer.readInt() -> Buffer.readShort()).
 | |
| 
 | |
|     - Added support in DatabaseMetaData.getTables() and getTableTypes()
 | |
|       for VIEWs which are now available in MySQL server version 5.0.x.
 | |
| 
 | |
|     - Fixed BUG#4642 -- ServerPreparedStatement.execute*() sometimes
 | |
|       threw ArrayIndexOutOfBoundsException when unpacking field metadata.
 | |
| 
 | |
|     - Optimized integer number parsing, enable 'old' slower integer parsing
 | |
|       using JDK classes via 'useFastIntParsing=false' property.
 | |
| 
 | |
|     - Added 'useOnlyServerErrorMessages' property, which causes message text
 | |
|       in exceptions generated by the server to only contain the text sent by
 | |
|       the server (as opposed to the SQLState's 'standard' description, followed
 | |
|       by the server's error message). This property is set to 'true' by default.
 | |
| 
 | |
|     - Fixed BUG#4689 - ResultSet.wasNull() does not work for primatives if a
 | |
|       previous null was returned.
 | |
| 
 | |
|     - Track packet sequence numbers if enablePacketDebug=true, and throw an
 | |
|       exception if packets received out-of-order.
 | |
| 
 | |
|     - Fixed BUG#4482, ResultSet.getObject() returns wrong type for strings
 | |
|       when using prepared statements.
 | |
| 
 | |
|     - Calling MysqlPooledConnection.close() twice (even though an application
 | |
|       error), caused NPE. Fixed.
 | |
| 
 | |
|     - Fixed BUG#5012 -- ServerPreparedStatements dealing with return of
 | |
| 	  DECIMAL type don't work.
 | |
| 
 | |
| 	- Fixed BUG#5032 -- ResultSet.getObject() doesn't return
 | |
|       type Boolean for pseudo-bit types from prepared statements on 4.1.x
 | |
|       (shortcut for avoiding extra type conversion when using binary-encoded
 | |
|       result sets obscurred test in getObject() for 'pseudo' bit type)
 | |
| 
 | |
|     - You can now use URLs in 'LOAD DATA LOCAL INFILE' statements, and the
 | |
|       driver will use Java's built-in handlers for retreiving the data and
 | |
|       sending it to the server. This feature is not enabled by default,
 | |
|       you must set the 'allowUrlInLocalInfile' connection property to 'true'.
 | |
| 
 | |
|     - The driver is more strict about truncation of numerics on
 | |
|       ResultSet.get*(), and will throw a SQLException when truncation is
 | |
|       detected. You can disable this by setting 'jdbcCompliantTruncation' to
 | |
|       false (it is enabled by default, as this functionality is required
 | |
|       for JDBC compliance).
 | |
| 
 | |
|     - Added three ways to deal with all-zero datetimes when reading them from
 | |
|       a ResultSet, 'exception' (the default), which throws a SQLException
 | |
|       with a SQLState of 'S1009', 'convertToNull', which returns NULL instead of
 | |
|       the date, and 'round', which rounds the date to the nearest closest value
 | |
|       which is '0001-01-01'.
 | |
| 
 | |
|     - Fixed ServerPreparedStatement to read prepared statement metadata off
 | |
|       the wire, even though it's currently a placeholder instead of using
 | |
|       MysqlIO.clearInputStream() which didn't work at various times because
 | |
|       data wasn't available to read from the server yet. This fixes sporadic
 | |
|       errors users were having with ServerPreparedStatements throwing
 | |
|       ArrayIndexOutOfBoundExceptions.
 | |
| 
 | |
|     - Use com.mysql.jdbc.Message's classloader when loading resource bundle,
 | |
|       should fix sporadic issues when the caller's classloader can't locate
 | |
|       the resource bundle.
 | |
| 
 | |
| 07-07-04 - Version 3.1.3-beta
 | |
| 
 | |
| 	- Mangle output parameter names for CallableStatements so they
 | |
| 	  will not clash with user variable names.
 | |
| 
 | |
| 	- Added support for INOUT parameters in CallableStatements.
 | |
| 
 | |
| 	- Fix for BUG#4119, null bitmask sent for server-side prepared
 | |
| 	  statements was incorrect.
 | |
| 
 | |
| 	- Use SQL Standard SQL states by default, unless 'useSqlStateCodes'
 | |
| 	  property is set to 'false'.
 | |
| 
 | |
| 	- Added packet debuging code (see the 'enablePacketDebug' property
 | |
| 	  documentation).
 | |
| 
 | |
| 	- Added constants for MySQL error numbers (publicly-accessible,
 | |
| 	  see com.mysql.jdbc.MysqlErrorNumbers), and the ability to
 | |
| 	  generate the mappings of vendor error codes to SQLStates
 | |
| 	  that the driver uses (for documentation purposes).
 | |
| 
 | |
| 	- Externalized more messages (on-going effort).
 | |
| 
 | |
| 	- Fix for BUG#4311 - Error in retrieval of mediumint column with
 | |
| 	  prepared statements and binary protocol.
 | |
| 
 | |
| 	- Support new timezone variables in MySQL-4.1.3 when
 | |
| 	  'useTimezone=true'
 | |
| 
 | |
| 	- Support for unsigned numerics as return types from prepared statements.
 | |
| 	  This also causes a change in ResultSet.getObject() for the 'bigint unsigned'
 | |
| 	  type, which used to return BigDecimal instances, it now returns instances
 | |
| 	  of java.lang.BigInteger.
 | |
| 
 | |
| 06-09-04 - Version 3.1.2-alpha
 | |
| 
 | |
| 	- Fixed stored procedure parameter parsing info when size was
 | |
| 	  specified for a parameter (i.e. char(), varchar()).
 | |
| 
 | |
| 	- Enabled callable statement caching via 'cacheCallableStmts'
 | |
| 	  property.
 | |
| 
 | |
| 	- Fixed case when no output parameters specified for a
 | |
| 	  stored procedure caused a bogus query to be issued
 | |
| 	  to retrieve out parameters, leading to a syntax error
 | |
| 	  from the server.
 | |
| 
 | |
| 	- Fixed case when no parameters could cause a NullPointerException
 | |
| 	  in CallableStatement.setOutputParameters().
 | |
| 
 | |
| 	- Removed wrapping of exceptions in MysqlIO.changeUser().
 | |
| 
 | |
| 	- Fixed sending of split packets for large queries, enabled nio
 | |
| 	  ability to send large packets as well.
 | |
| 
 | |
| 	- Added .toString() functionality to ServerPreparedStatement,
 | |
| 	  which should help if you're trying to debug a query that is
 | |
| 	  a prepared statement (it shows SQL as the server would process).
 | |
| 
 | |
| 	- Added 'gatherPerformanceMetrics' property, along with properties
 | |
| 	  to control when/where this info gets logged (see docs for more
 | |
| 	  info).
 | |
| 
 | |
| 	- ServerPreparedStatements weren't actually de-allocating
 | |
| 	  server-side resources when .close() was called.
 | |
| 
 | |
| 	- Added 'logSlowQueries' property, along with property
 | |
| 	  'slowQueriesThresholdMillis' to control when a query should
 | |
| 	  be considered 'slow'.
 | |
| 
 | |
| 	- Correctly map output parameters to position given in
 | |
| 	  prepareCall() vs. order implied during registerOutParameter() -
 | |
| 	  fixes BUG#3146.
 | |
| 
 | |
| 	- Correctly detect initial character set for servers >= 4.1.0
 | |
| 
 | |
| 	- Cleaned up detection of server properties.
 | |
| 
 | |
| 	- Support placeholder for parameter metadata for server >= 4.1.2
 | |
| 
 | |
| 	- Fix for BUG#3539 getProcedures() does not return any procedures in
 | |
| 	  result set
 | |
| 
 | |
| 	- Fix for BUG#3540 getProcedureColumns() doesn't work with wildcards
 | |
| 	  for procedure name
 | |
| 
 | |
| 	- Fixed BUG#3520 -- DBMD.getSQLStateType() returns incorrect value.
 | |
| 
 | |
| 	- Added 'connectionCollation' property to cause driver to issue
 | |
| 	  'set collation_connection=...' query on connection init if default
 | |
| 	  collation for given charset is not appropriate.
 | |
| 
 | |
| 	- Fixed DatabaseMetaData.getProcedures() when run on MySQL-5.0.0 (output of
 | |
| 	'show procedure status' changed between 5.0.1 and 5.0.0.
 | |
| 
 | |
| 	- Fixed BUG#3804 -- getWarnings() returns SQLWarning instead of DataTruncation
 | |
| 
 | |
| 	- Don't enable server-side prepared statements for server version 5.0.0 or 5.0.1,
 | |
| 	as they aren't compatible with the '4.1.2+' style that the driver uses (the driver
 | |
| 	expects information to come back that isn't there, so it hangs).
 | |
| 
 | |
| 
 | |
| 02-14-04 - Version 3.1.1-alpha
 | |
| 
 | |
|     - Fixed bug with UpdatableResultSets not using client-side
 | |
| 	  prepared statements.
 | |
| 
 | |
| 	- Fixed character encoding issues when converting bytes to
 | |
| 	  ASCII when MySQL doesn't provide the character set, and
 | |
| 	  the JVM is set to a multibyte encoding (usually affecting
 | |
| 	  retrieval of numeric values).
 | |
| 
 | |
| 	- Unpack 'unknown' data types from server prepared statements
 | |
| 	  as Strings.
 | |
| 
 | |
| 	- Implemented long data (Blobs, Clobs, InputStreams, Readers)
 | |
| 	  for server prepared statements.
 | |
| 
 | |
| 	- Implemented Statement.getWarnings() for MySQL-4.1 and newer
 | |
| 	  (using 'SHOW WARNINGS').
 | |
| 
 | |
| 	- Default result set type changed to TYPE_FORWARD_ONLY
 | |
| 	  (JDBC compliance).
 | |
| 
 | |
| 	- Centralized setting of result set type and concurrency.
 | |
| 
 | |
| 	- Re-factored how connection properties are set and exposed
 | |
| 	  as DriverPropertyInfo as well as Connection and DataSource
 | |
| 	  properties.
 | |
| 
 | |
| 	- Support for NIO. Use 'useNIO=true' on platforms that support
 | |
| 	  NIO.
 | |
| 
 | |
| 	- Support for SAVEPOINTs (MySQL >= 4.0.14 or 4.1.1).
 | |
| 
 | |
| 	- Support for mysql_change_user()...See the changeUser() method
 | |
| 	  in com.mysql.jdbc.Connection.
 | |
| 
 | |
| 	- Reduced number of methods called in average query to be more
 | |
| 	  efficient.
 | |
| 
 | |
| 	- Prepared Statements will be re-prepared on auto-reconnect. Any errors
 | |
| 	  encountered are postponed until first attempt to re-execute the
 | |
| 	  re-prepared statement.
 | |
| 
 | |
| 	- Ensure that warnings are cleared before executing queries
 | |
| 	  on prepared statements, as-per JDBC spec (now that we support
 | |
| 	  warnings).
 | |
| 
 | |
| 	- Support 'old' profileSql capitalization in ConnectionProperties.
 | |
| 	  This property is deprecated, you should use 'profileSQL' if possible.
 | |
| 
 | |
| 	- Optimized Buffer.readLenByteArray() to return shared empty byte array
 | |
| 	  when length is 0.
 | |
| 
 | |
| 	- Allow contents of PreparedStatement.setBlob() to be retained
 | |
| 	  between calls to .execute*().
 | |
| 
 | |
| 	- Deal with 0-length tokens in EscapeProcessor (caused by callable
 | |
| 	  statement escape syntax).
 | |
| 
 | |
| 	- Check for closed connection on delete/update/insert row operations in
 | |
| 	  UpdatableResultSet.
 | |
| 
 | |
| 	- Fix support for table aliases when checking for all primary keys in
 | |
| 	  UpdatableResultSet.
 | |
| 
 | |
| 	- Removed useFastDates connection property.
 | |
| 
 | |
| 	- Correctly initialize datasource properties from JNDI Refs, including
 | |
| 	  explicitly specified URLs.
 | |
| 
 | |
| 	- DatabaseMetaData now reports supportsStoredProcedures() for
 | |
| 	  MySQL versions >= 5.0.0
 | |
| 
 | |
| 	- Fixed stack overflow in Connection.prepareCall() (bad merge).
 | |
| 
 | |
| 	- Fixed IllegalAccessError to Calendar.getTimeInMillis() in DateTimeValue
 | |
| 	  (for JDK < 1.4).
 | |
| 
 | |
| 	- Fix for BUG#1673, where DatabaseMetaData.getColumns() is not
 | |
|       returning correct column ordinal info for non '%' column name patterns.
 | |
| 
 | |
|     - Merged fix of datatype mapping from MySQL type 'FLOAT' to
 | |
|       java.sql.Types.REAL from 3.0 branch.
 | |
| 
 | |
|     - Detect collation of column for RSMD.isCaseSensitive().
 | |
| 
 | |
|     - Fixed sending of queries > 16M.
 | |
| 
 | |
|     - Added named and indexed input/output parameter support to CallableStatement.
 | |
|       MySQL-5.0.x or newer.
 | |
| 
 | |
|     - Fixed NullPointerException in ServerPreparedStatement.setTimestamp(),
 | |
|       as well as year and month descrepencies in
 | |
|       ServerPreparedStatement.setTimestamp(), setDate().
 | |
| 
 | |
|     - Added ability to have multiple database/JVM targets for compliance
 | |
|       and regression/unit tests in build.xml.
 | |
| 
 | |
|     - Fixed NPE and year/month bad conversions when accessing some
 | |
|       datetime functionality in ServerPreparedStatements and their
 | |
|       resultant result sets.
 | |
| 
 | |
|     - Display where/why a connection was implicitly closed (to
 | |
|       aid debugging).
 | |
| 
 | |
|     - CommunicationsException implemented, that tries to determine
 | |
|       why communications was lost with a server, and displays
 | |
|       possible reasons when .getMessage() is called.
 | |
| 
 | |
|     - Fixed BUG#2359, NULL values for numeric types in binary
 | |
|       encoded result sets causing NullPointerExceptions.
 | |
| 
 | |
|     - Implemented Connection.prepareCall(), and DatabaseMetaData.
 | |
|       getProcedures() and getProcedureColumns().
 | |
| 
 | |
|     - Reset 'long binary' parameters in ServerPreparedStatement when
 | |
|       clearParameters() is called, by sending COM_RESET_STMT to the
 | |
|       server.
 | |
| 
 | |
|     - Merged prepared statement caching, and .getMetaData() support
 | |
|       from 3.0 branch.
 | |
| 
 | |
|     - Fixed off-by-1900 error in some cases for
 | |
|       years in TimeUtil.fastDate/TimeCreate() when unpacking results
 | |
|       from server-side prepared statements.
 | |
| 
 | |
|     - Fixed BUG#2502 -- charset conversion issue in getTables().
 | |
| 
 | |
|     - Implemented multiple result sets returned from a statement
 | |
|       or stored procedure.
 | |
| 
 | |
|     - Fixed BUG#2606 -- Server side prepared statements not returning
 | |
|       datatype 'YEAR' correctly.
 | |
| 
 | |
|     - Enabled streaming of result sets from server-side prepared
 | |
|       statements.
 | |
| 
 | |
|     - Fixed BUG#2623 -- Class-cast exception when using
 | |
|       scrolling result sets and server-side prepared statements.
 | |
| 
 | |
| 	- Merged unbuffered input code from 3.0.
 | |
| 
 | |
| 	- Fixed ConnectionProperties that weren't properly exposed
 | |
| 	  via accessors, cleaned up ConnectionProperties code.
 | |
| 
 | |
| 	- Fixed BUG#2671, NULL fields not being encoded correctly in
 | |
| 	  all cases in server side prepared statements.
 | |
| 
 | |
| 	- Fixed rare buffer underflow when writing numbers into buffers
 | |
| 	  for sending prepared statement execution requests.
 | |
| 
 | |
| 	- Use DocBook version of docs for shipped versions of drivers.
 | |
| 
 | |
| 
 | |
| 02-18-03 - Version 3.1.0-alpha
 | |
| 
 | |
|     - Added 'requireSSL' property.
 | |
| 
 | |
|     - Added 'useServerPrepStmts' property (default 'false'). The
 | |
|       driver will use server-side prepared statements when the
 | |
|       server version supports them (4.1 and newer) when this
 | |
|       property is set to 'true'. It is currently set to 'false'
 | |
|       by default until all bind/fetch functionality has been
 | |
|       implemented. Currently only DML prepared statements are
 | |
|       implemented for 4.1 server-side prepared statements.
 | |
| 
 | |
|     - Track open Statements, close all when Connection.close()
 | |
|       is called (JDBC compliance).
 | |
| 
 | |
| 06-22-05 - Version 3.0.17-ga
 | |
| 
 | |
|     - Fixed BUG#5874, Timestamp/Time conversion goes in the wrong 'direction'
 | |
|       when useTimeZone='true' and server timezone differs from client timezone.
 | |
| 
 | |
| 	- Fixed BUG#7081, DatabaseMetaData.getIndexInfo() ignoring 'unique'
 | |
| 	  parameter.
 | |
| 
 | |
| 	- Support new protocol type 'MYSQL_TYPE_VARCHAR'.
 | |
| 
 | |
| 	- Added 'useOldUTF8Behavoior' configuration property, which causes
 | |
| 	  JDBC driver to act like it did with MySQL-4.0.x and earlier when
 | |
| 	  the character encoding is 'utf-8' when connected to MySQL-4.1 or
 | |
| 	  newer.
 | |
| 
 | |
| 	- Fixed BUG#7316 - Statements created from a pooled connection were
 | |
| 	  returning physical connection instead of logical connection when
 | |
| 	  getConnection() was called.
 | |
| 
 | |
| 	- Fixed BUG#7033 - PreparedStatements don't encode Big5 (and other
 | |
| 	  multibyte) character sets correctly in static SQL strings.
 | |
| 
 | |
| 	- Fixed BUG#6966, connections starting up failed-over (due to down master)
 | |
|       never retry master.
 | |
| 
 | |
|     - Fixed BUG#7061, PreparedStatement.fixDecimalExponent() adding extra
 | |
|       '+', making number unparseable by MySQL server.
 | |
| 
 | |
|     - Fixed BUG#7686, Timestamp key column data needed "_binary'" stripped for
 | |
|       UpdatableResultSet.refreshRow().
 | |
| 
 | |
|     - Backported SQLState codes mapping from Connector/J 3.1, enable with
 | |
|       'useSqlStateCodes=true' as a connection property, it defaults to
 | |
|       'false' in this release, so that we don't break legacy applications (it
 | |
|       defaults to 'true' starting with Connector/J 3.1).
 | |
| 
 | |
|     - Fixed BUG#7601, PreparedStatement.fixDecimalExponent() adding extra
 | |
|       '+', making number unparseable by MySQL server.
 | |
| 
 | |
|     - Escape sequence {fn convert(..., type)} now supports ODBC-style types
 | |
|       that are prepended by 'SQL_'.
 | |
| 
 | |
|     - Fixed duplicated code in configureClientCharset() that prevented
 | |
|       useOldUTF8Behavior=true from working properly.
 | |
| 
 | |
|     - Handle streaming result sets with > 2 billion rows properly by fixing
 | |
|       wraparound of row number counter.
 | |
| 
 | |
|     - Fixed BUG#7607 - MS932, SHIFT_JIS and Windows_31J not recog. as
 | |
|       aliases for sjis.
 | |
| 
 | |
|     - Fixed BUG#6549 (while fixing #7607), adding 'CP943' to aliases for
 | |
|       sjis.
 | |
| 
 | |
|     - Fixed BUG#8064, which requires hex escaping of binary data when using
 | |
|       multibyte charsets with prepared statements.
 | |
| 
 | |
|     - Fixed BUG#8812, NON_UNIQUE column from DBMD.getIndexInfo() returned
 | |
|       inverted value.
 | |
| 
 | |
|     - Workaround for server BUG#9098 - default values of CURRENT_* for
 | |
|       DATE/TIME/TIMESTAMP/TIMESTAMP columns can't be distinguished from
 | |
|       'string' values, so UpdatableResultSet.moveToInsertRow() generates
 | |
|       bad SQL for inserting default values.
 | |
| 
 | |
|     - Fixed BUG#8629 - 'EUCKR' charset is sent as 'SET NAMES euc_kr' which
 | |
|       MySQL-4.1 and newer doesn't understand.
 | |
| 
 | |
|     - DatabaseMetaData.supportsSelectForUpdate() returns correct value based
 | |
|       on server version.
 | |
| 
 | |
|     - Use hex escapes for PreparedStatement.setBytes() for double-byte charsets
 | |
|       including 'aliases' Windows-31J, CP934, MS932.
 | |
| 
 | |
|     - Added support for the "EUC_JP_Solaris" character encoding, which maps
 | |
|       to a MySQL encoding of "eucjpms" (backported from 3.1 branch). This only
 | |
|       works on servers that support eucjpms, namely 5.0.3 or later.
 | |
| 
 | |
| 11-15-04 - Version 3.0.16-ga
 | |
| 
 | |
| 	- Re-issue character set configuration commands when re-using pooled
 | |
| 	  connections and/or Connection.changeUser() when connected to MySQL-4.1
 | |
| 	  or newer.
 | |
| 
 | |
| 	- Fixed ResultSetMetaData.isReadOnly() to detect non-writable columns
 | |
| 	  when connected to MySQL-4.1 or newer, based on existence of 'original'
 | |
| 	  table and column names.
 | |
| 
 | |
| 	- Fixed BUG#5664, ResultSet.updateByte() when on insert row
 | |
|       throws ArrayOutOfBoundsException.
 | |
| 
 | |
|     - Fixed DatabaseMetaData.getTypes() returning incorrect (i.e. non-negative)
 | |
|       scale for the 'NUMERIC' type.
 | |
| 
 | |
|     - Fixed BUG#6198, off-by-one bug in Buffer.readString(string).
 | |
| 
 | |
|     - Made TINYINT(1) -> BIT/Boolean conversion configurable via 'tinyInt1isBit'
 | |
|       property (default 'true' to be JDBC compliant out of the box).
 | |
| 
 | |
|     - Only set 'character_set_results' during connection establishment if
 | |
|       server version >= 4.1.1.
 | |
| 
 | |
|     - Fixed regression where useUnbufferedInput was defaulting to 'false'.
 | |
| 
 | |
|     - Fixed BUG#6231, ResultSet.getTimestamp() on a column with TIME in it
 | |
|       fails.
 | |
| 
 | |
| 09-04-04 - Version 3.0.15-ga
 | |
| 
 | |
| 	- Fixed BUG#4010 - StringUtils.escapeEasternUnicodeByteStream is still
 | |
| 	  broken for GBK
 | |
| 
 | |
| 	- Fixed BUG#4334 - Failover for autoReconnect not using port #'s for any
 | |
| 	  hosts, and not retrying all hosts. (WARN: This required a change to
 | |
| 	  the SocketFactory connect() method signature, which is now
 | |
| 
 | |
| 	    public Socket connect(String host, int portNumber, Properties props),
 | |
| 
 | |
| 	  therefore any third-party socket factories will have to be changed
 | |
| 	  to support this signature.
 | |
| 
 | |
| 	- Logical connections created by MysqlConnectionPoolDataSource will
 | |
| 	  now issue a rollback() when they are closed and sent back to the pool.
 | |
| 	  If your application server/connection pool already does this for you, you
 | |
| 	  can set the 'rollbackOnPooledClose' property to false to avoid the
 | |
| 	  overhead of an extra rollback().
 | |
| 
 | |
| 	- Removed redundant calls to checkRowPos() in ResultSet.
 | |
| 
 | |
| 	- Fixed BUG#4742, 'DOUBLE' mapped twice in DBMD.getTypeInfo().
 | |
| 
 | |
| 	- Added FLOSS license exemption.
 | |
| 
 | |
| 	- Fixed BUG#4808, calling .close() twice on a PooledConnection causes NPE.
 | |
| 
 | |
| 	- Fixed BUG#4138 and BUG#4860, DBMD.getColumns() returns incorrect JDBC
 | |
| 	  type for unsigned columns. This affects type mappings for all numeric
 | |
| 	  types in the RSMD.getColumnType() and RSMD.getColumnTypeNames() methods
 | |
| 	  as well, to ensure that 'like' types from DBMD.getColumns() match up
 | |
| 	  with what RSMD.getColumnType() and getColumnTypeNames() return.
 | |
| 
 | |
| 	- 'Production' - 'GA' in naming scheme of distributions.
 | |
| 
 | |
| 	- Fix for BUG#4880, RSMD.getPrecision() returning 0 for non-numeric types
 | |
| 	  (should return max length in chars for non-binary types, max length
 | |
| 	  in bytes for binary types). This fix also fixes mapping of
 | |
| 	  RSMD.getColumnType() and RSMD.getColumnTypeName() for the BLOB types based
 | |
| 	  on the length sent from the server (the server doesn't distinguish between
 | |
| 	  TINYBLOB, BLOB, MEDIUMBLOB or LONGBLOB at the network protocol level).
 | |
| 
 | |
| 	- Fixed BUG#5022 - ResultSet should release Field[] instance in .close().
 | |
| 
 | |
|     - Fixed BUG#5069 -- ResultSet.getMetaData() should not return
 | |
| 	  incorrectly-initialized metadata if the result set has been closed, but
 | |
| 	  should instead throw a SQLException. Also fixed for getRow() and
 | |
| 	  getWarnings() and traversal methods by calling checkClosed() before
 | |
| 	  operating on instance-level fields that are nullified during .close().
 | |
| 
 | |
| 	- Parse new timezone variables from 4.1.x servers.
 | |
| 
 | |
| 	- Use _binary introducer for PreparedStatement.setBytes() and
 | |
| 	  set*Stream() when connected to MySQL-4.1.x or newer to avoid
 | |
| 	  misinterpretation during character conversion.
 | |
| 
 | |
| 05-28-04 - Version 3.0.14-production
 | |
| 
 | |
| 	- Fixed URL parsing error
 | |
| 
 | |
| 05-27-04 - Version 3.0.13-production
 | |
| 
 | |
| 	- Fixed BUG#3848 - Using a MySQLDatasource without server name fails
 | |
| 
 | |
| 	- Fixed BUG#3920 - "No Database Selected" when using
 | |
| 	  MysqlConnectionPoolDataSource.
 | |
| 
 | |
| 	- Fixed BUG#3873 - PreparedStatement.getGeneratedKeys() method returns only
 | |
| 	  1 result for batched insertions
 | |
| 
 | |
| 05-18-04 - Version 3.0.12-production
 | |
| 
 | |
| 	- Add unsigned attribute to DatabaseMetaData.getColumns() output
 | |
| 	  in the TYPE_NAME column.
 | |
| 
 | |
| 	- Added 'failOverReadOnly' property, to allow end-user to configure
 | |
| 	  state of connection (read-only/writable) when failed over.
 | |
| 
 | |
| 	- Backported 'change user' and 'reset server state' functionality
 | |
|       from 3.1 branch, to allow clients of MysqlConnectionPoolDataSource
 | |
|       to reset server state on getConnection() on a pooled connection.
 | |
| 
 | |
|     - Don't escape SJIS/GBK/BIG5 when using MySQL-4.1 or newer.
 | |
| 
 | |
|     - Allow 'url' parameter for MysqlDataSource and MysqlConnectionPool
 | |
|       DataSource so that passing of other properties is possible from
 | |
|       inside appservers.
 | |
| 
 | |
|     - Map duplicate key and foreign key errors to SQLState of
 | |
|       '23000'.
 | |
| 
 | |
|     - Backport documentation tooling from 3.1 branch.
 | |
| 
 | |
|     - Return creating statement for ResultSets created by
 | |
|       getGeneratedKeys() (BUG#2957)
 | |
| 
 | |
|     - Allow java.util.Date to be sent in as parameter to
 | |
|       PreparedStatement.setObject(), converting it to a Timestamp
 | |
|       to maintain full precision (BUG#3103).
 | |
| 
 | |
|     - Don't truncate BLOBs/CLOBs when using setBytes() and/or
 | |
|       setBinary/CharacterStream() (BUG#2670).
 | |
| 
 | |
|     - Dynamically configure character set mappings for field-level
 | |
|       character sets on MySQL-4.1.0 and newer using 'SHOW COLLATION'
 | |
|       when connecting.
 | |
| 
 | |
|     - Map 'binary' character set to 'US-ASCII' to support DATETIME
 | |
|       charset recognition for servers >= 4.1.2
 | |
| 
 | |
|     - Use 'SET character_set_results" during initialization to allow any
 | |
|       charset to be returned to the driver for result sets.
 | |
| 
 | |
|     - Use charsetnr returned during connect to encode queries before
 | |
|       issuing 'SET NAMES' on MySQL >= 4.1.0.
 | |
| 
 | |
|     - Add helper methods to ResultSetMetaData (getColumnCharacterEncoding()
 | |
|       and getColumnCharacterSet()) to allow end-users to see what charset
 | |
|       the driver thinks it should be using for the column.
 | |
| 
 | |
|     - Only set character_set_results for MySQL >= 4.1.0.
 | |
| 
 | |
|     - Fixed BUG#3511, StringUtils.escapeSJISByteStream() not covering all
 | |
|       eastern double-byte charsets correctly.
 | |
| 
 | |
|     - Renamed StringUtils.escapeSJISByteStream() to more appropriate
 | |
|       escapeEasternUnicodeByteStream().
 | |
| 
 | |
|     - Fixed BUG#3554 - Not specifying database in URL caused MalformedURL
 | |
|       exception.
 | |
| 
 | |
|     - Auto-convert MySQL encoding names to Java encoding names if used
 | |
|       for characterEncoding property.
 | |
| 
 | |
|     - Added encoding names that are recognized on some JVMs to fix case
 | |
|       where they were reverse-mapped to MySQL encoding names incorrectly.
 | |
| 
 | |
|     - Use junit.textui.TestRunner for all unit tests (to allow them to be
 | |
|       run from the command line outside of Ant or Eclipse).
 | |
| 
 | |
|     - Fixed BUG#3557 - UpdatableResultSet not picking up default values
 | |
|       for moveToInsertRow().
 | |
| 
 | |
|     - Fixed BUG#3570 - inconsistent reporting of column type. The server
 | |
|       still doesn't return all types for *BLOBs *TEXT correctly, so the
 | |
|       driver won't return those correctly.
 | |
| 
 | |
|     - Fixed BUG#3520 -- DBMD.getSQLStateType() returns incorrect value.
 | |
| 
 | |
|     - Fixed regression in PreparedStatement.setString() and eastern character
 | |
|       encodings.
 | |
| 
 | |
|     - Made StringRegressionTest 4.1-unicode aware.
 | |
| 
 | |
| 02-19-04 - Version 3.0.11-stable
 | |
| 
 | |
| 	- Trigger a 'SET NAMES utf8' when encoding is forced to 'utf8' _or_
 | |
| 	  'utf-8' via the 'characterEncoding' property. Previously, only the
 | |
| 	  Java-style encoding name of 'utf-8' would trigger this.
 | |
| 
 | |
| 	- AutoReconnect time was growing faster than exponentially (BUG#2447).
 | |
| 
 | |
| 	- Fixed failover always going to last host in list (BUG#2578)
 | |
| 
 | |
| 	- Added 'useUnbufferedInput' parameter, and now use it by default
 | |
| 	  (due to JVM issue
 | |
| 	  http://developer.java.sun.com/developer/bugParade/bugs/4401235.html)
 | |
| 
 | |
| 	- Detect 'on/off' or '1','2','3' form of lower_case_table_names on
 | |
| 	  server.
 | |
| 
 | |
| 	- Return 'java.lang.Integer' for TINYINT and SMALLINT types from
 | |
| 	  ResultSetMetaData.getColumnClassName() (fix for BUG#2852).
 | |
| 
 | |
| 	- Return 'java.lang.Double' for FLOAT type from ResultSetMetaData.
 | |
| 	  getColumnClassName() (fix for BUG#2855).
 | |
| 
 | |
| 	- Return '[B' instead of java.lang.Object for BINARY, VARBINARY and
 | |
| 	  LONGVARBINARY types from ResultSetMetaData.getColumnClassName()
 | |
| 	  (JDBC compliance).
 | |
| 
 | |
| 01-13-04 - Version 3.0.10-stable
 | |
| 
 | |
|     - Don't count quoted id's when inside a 'string' in PreparedStatement
 | |
|       parsing (fix for BUG#1511).
 | |
| 
 | |
|     - 'Friendlier' exception message for PacketTooLargeException
 | |
|        (BUG#1534).
 | |
| 
 | |
|     - Backported fix for aliased tables and UpdatableResultSets in
 | |
|       checkUpdatability() method from 3.1 branch.
 | |
| 
 | |
|     - Fix for ArrayIndexOutOfBounds exception when using Statement.setMaxRows()
 | |
|       (BUG#1695).
 | |
| 
 | |
|     - Fixed BUG#1576, dealing with large blobs and split packets not being
 | |
|       read correctly.
 | |
| 
 | |
|     - Fixed regression of Statement.getGeneratedKeys() and REPLACE statements.
 | |
| 
 | |
|     - Fixed BUG#1630, subsequent call to ResultSet.updateFoo() causes NPE if
 | |
|       result set is not updatable.
 | |
| 
 | |
|     - Fix for 4.1.1-style auth with no password.
 | |
| 
 | |
|     - Fix for BUG#1731, Foreign Keys column sequence is not consistent in
 | |
|       DatabaseMetaData.getImported/Exported/CrossReference().
 | |
| 
 | |
|     - Fix for BUG#1775 - DatabaseMetaData.getSystemFunction() returning
 | |
|       bad function 'VResultsSion'.
 | |
| 
 | |
|     - Fix for BUG#1592 -- cross-database updatable result sets
 | |
|       are not checked for updatability correctly.
 | |
| 
 | |
|     - DatabaseMetaData.getColumns() should return Types.LONGVARCHAR for
 | |
|       MySQL LONGTEXT type.
 | |
| 
 | |
|     - ResultSet.getObject() on TINYINT and SMALLINT columns should return
 | |
|       Java type 'Integer' (BUG#1913)
 | |
| 
 | |
|     - Added 'alwaysClearStream' connection property, which causes the driver
 | |
|       to always empty any remaining data on the input stream before
 | |
|       each query.
 | |
| 
 | |
|     - Added more descriptive error message 'Server Configuration Denies
 | |
|       Access to DataSource', as well as retrieval of message from server.
 | |
| 
 | |
|     - Autoreconnect code didn't set catalog upon reconnect if it had been
 | |
|       changed.
 | |
| 
 | |
|     - Implement ResultSet.updateClob().
 | |
| 
 | |
|     - ResultSetMetaData.isCaseSensitive() returned wrong value for CHAR/VARCHAR
 | |
|       columns.
 | |
| 
 | |
|     - Fix for BUG#1933 -- Connection property "maxRows" not honored.
 | |
| 
 | |
|     - Fix for BUG#1925 -- Statements being created too many times in
 | |
|       DBMD.extractForeignKeyFromCreateTable().
 | |
| 
 | |
|     - Fix for BUG#1914 -- Support escape sequence {fn convert ... }
 | |
| 
 | |
|     - Fix for BUG#1958 -- ArrayIndexOutOfBounds when parameter number ==
 | |
|       number of parameters + 1.
 | |
| 
 | |
|     - Fix for BUG#2006 -- ResultSet.findColumn() should use first matching
 | |
|       column name when there are duplicate column names in SELECT query
 | |
|       (JDBC-compliance).
 | |
| 
 | |
|     - Removed static synchronization bottleneck from
 | |
|       PreparedStatement.setTimestamp().
 | |
| 
 | |
|     - Removed static synchronization bottleneck from instance factory
 | |
|       method of SingleByteCharsetConverter.
 | |
| 
 | |
|     - Enable caching of the parsing stage of prepared statements via
 | |
|       the 'cachePrepStmts', 'prepStmtCacheSize' and 'prepStmtCacheSqlLimit'
 | |
|       properties (disabled by default).
 | |
| 
 | |
|     - Speed up parsing of PreparedStatements, try to use one-pass whenever
 | |
|       possible.
 | |
| 
 | |
|     - Fixed security exception when used in Applets (applets can't
 | |
|       read the system property 'file.encoding' which is needed
 | |
|       for LOAD DATA LOCAL INFILE).
 | |
| 
 | |
|     - Use constants for SQLStates.
 | |
| 
 | |
|     - Map charset 'ko18_ru' to 'ko18r' when connected to MySQL-4.1.0 or
 | |
|       newer.
 | |
| 
 | |
|     - Ensure that Buffer.writeString() saves room for the \0.
 | |
| 
 | |
|     - Fixed exception 'Unknown character set 'danish' on connect w/ JDK-1.4.0
 | |
| 
 | |
|     - Fixed mappings in SQLError to report deadlocks with SQLStates of '41000'.
 | |
| 
 | |
|     - 'maxRows' property would affect internal statements, so check it for all
 | |
|       statement creation internal to the driver, and set to 0 when it is not.
 | |
| 
 | |
| 10-07-03 - Version 3.0.9-stable
 | |
| 
 | |
| 	- Faster date handling code in ResultSet and PreparedStatement (no longer
 | |
| 	  uses Date methods that synchronize on static calendars).
 | |
| 
 | |
| 	- Fixed test for end of buffer in Buffer.readString().
 | |
| 
 | |
| 	- Fixed ResultSet.previous() behavior to move current
 | |
| 	  position to before result set when on first row
 | |
| 	  of result set (bugs.mysql.com BUG#496)
 | |
| 
 | |
| 	- Fixed Statement and PreparedStatement issuing bogus queries
 | |
| 	  when setMaxRows() had been used and a LIMIT clause was present
 | |
| 	  in the query.
 | |
| 
 | |
| 	- Fixed BUG#661 - refreshRow didn't work when primary key values
 | |
| 	  contained values that needed to be escaped (they ended up being
 | |
| 	  doubly-escaped).
 | |
| 
 | |
| 	- Support InnoDB contraint names when extracting foreign key info
 | |
| 	  in DatabaseMetaData BUG#517 and BUG#664
 | |
| 	  (impl. ideas from Parwinder Sekhon)
 | |
| 
 | |
| 	- Backported 4.1 protocol changes from 3.1 branch (server-side SQL
 | |
| 	  states, new field info, larger client capability flags,
 | |
| 	  connect-with-database, etc).
 | |
| 
 | |
| 	- Fix UpdatableResultSet to return values for getXXX() when on
 | |
| 	  insert row (BUG#675).
 | |
| 
 | |
| 	- The insertRow in an UpdatableResultSet is now loaded with
 | |
| 	  the default column values when moveToInsertRow() is called
 | |
| 	  (BUG#688)
 | |
| 
 | |
| 	- DatabaseMetaData.getColumns() wasn't returning NULL for
 | |
| 	  default values that are specified as NULL.
 | |
| 
 | |
| 	- Change default statement type/concurrency to TYPE_FORWARD_ONLY
 | |
| 	  and CONCUR_READ_ONLY (spec compliance).
 | |
| 
 | |
| 	- Don't try and reset isolation level on reconnect if MySQL doesn't
 | |
| 	  support them.
 | |
| 
 | |
| 	- Don't wrap SQLExceptions in RowDataDynamic.
 | |
| 
 | |
| 	- Don't change timestamp TZ twice if useTimezone==true (BUG#774)
 | |
| 
 | |
| 	- Fixed regression in large split-packet handling (BUG#848).
 | |
| 
 | |
| 	- Better diagnostic error messages in exceptions for 'streaming'
 | |
| 	  result sets.
 | |
| 
 | |
| 	- Issue exception on ResultSet.getXXX() on empty result set (wasn't
 | |
| 	  caught in some cases).
 | |
| 
 | |
| 	- Don't hide messages from exceptions thrown in I/O layers.
 | |
| 
 | |
| 	- Don't fire connection closed events when closing pooled connections, or
 | |
| 	  on PooledConnection.getConnection() with already open connections (BUG#884).
 | |
| 
 | |
| 	- Clip +/- INF (to smallest and largest representative values for the type in
 | |
| 	  MySQL) and NaN (to 0) for setDouble/setFloat(), and issue a warning on the
 | |
| 	  statement when the server does not support +/- INF or NaN.
 | |
| 
 | |
| 	- Fix for BUG#879, double-escaping of '\' when charset is SJIS or GBK and '\'
 | |
| 	  appears in non-escaped input.
 | |
| 
 | |
| 	- When emptying input stream of unused rows for 'streaming' result sets,
 | |
| 	  have the current thread yield() every 100 rows in order to not monopolize
 | |
| 	  CPU time.
 | |
| 
 | |
| 	- Fixed BUG#1099, DatabaseMetaData.getColumns() getting confused about the
 | |
| 	  keyword 'set' in character columns.
 | |
| 
 | |
| 	- Fixed deadlock issue with Statement.setMaxRows().
 | |
| 
 | |
| 	- Fixed CLOB.truncate(), BUG#1130
 | |
| 
 | |
| 	- Optimized CLOB.setChracterStream(), BUG#1131
 | |
| 
 | |
| 	- Made databaseName, portNumber and serverName optional parameters
 | |
| 	  for MysqlDataSourceFactory (BUG#1246)
 | |
| 
 | |
| 	- Fix for BUG#1247 -- ResultSet.get/setString mashing char 127
 | |
| 
 | |
| 	- Backported auth. changes for 4.1.1 and newer from 3.1 branch.
 | |
| 
 | |
| 	- Added com.mysql.jdbc.util.BaseBugReport to help creation of testcases
 | |
| 	  for bug reports.
 | |
| 
 | |
| 	- Added property to 'clobber' streaming results, by setting the
 | |
| 	  'clobberStreamingResults' property to 'true' (the default is 'false').
 | |
| 	  This will cause a 'streaming' ResultSet to be automatically
 | |
| 	  closed, and any oustanding data still streaming from the server to
 | |
| 	  be discarded if another query is executed before all the data has been
 | |
| 	  read from the server.
 | |
| 
 | |
| 05-23-03 - Version 3.0.8-stable
 | |
| 
 | |
| 	- Allow bogus URLs in Driver.getPropertyInfo().
 | |
| 
 | |
| 	- Return list of generated keys when using multi-value INSERTS
 | |
| 	  with Statement.getGeneratedKeys().
 | |
| 
 | |
| 	- Use JVM charset with filenames and 'LOAD DATA [LOCAL] INFILE'
 | |
| 
 | |
| 	- Fix infinite loop with Connection.cleanup().
 | |
| 
 | |
| 	- Changed Ant target 'compile-core' to 'compile-driver', and
 | |
| 	  made testsuite compilation a separate target.
 | |
| 
 | |
| 	- Fixed result set not getting set for Statement.executeUpdate(),
 | |
| 	  which affected getGeneratedKeys() and getUpdateCount() in
 | |
| 	  some cases.
 | |
| 
 | |
| 	- Unicode character 0xFFFF in a string would cause the driver to
 | |
| 	  throw an ArrayOutOfBoundsException (Bug #378)
 | |
| 
 | |
| 	- Return correct amount of generated keys when using 'REPLACE'
 | |
| 	  statements.
 | |
| 
 | |
| 	- Fix problem detecting server character set in some cases.
 | |
| 
 | |
| 	- Fix row data decoding error when using _very_ large packets.
 | |
| 
 | |
| 	- Optimized row data decoding.
 | |
| 
 | |
| 	- Issue exception when operating on an already-closed
 | |
| 	  prepared statement.
 | |
| 
 | |
| 	- Fixed SJIS encoding bug, thanks to Naoto Sato.
 | |
| 
 | |
|     - Optimized usage of EscapeProcessor.
 | |
| 
 | |
|     - Allow multiple calls to Statement.close()
 | |
| 
 | |
| 04-08-03 - Version 3.0.7-stable
 | |
| 
 | |
|     - Fixed MysqlPooledConnection.close() calling wrong event type.
 | |
| 
 | |
|     - Fixed StringIndexOutOfBoundsException in PreparedStatement.
 | |
|       setClob().
 | |
| 
 | |
|     - 4.1 Column Metadata fixes
 | |
| 
 | |
|     - Remove synchronization from Driver.connect() and
 | |
|       Driver.acceptsUrl().
 | |
| 
 | |
|     - IOExceptions during a transaction now cause the Connection to
 | |
|       be closed.
 | |
| 
 | |
|     - Fixed missing conversion for 'YEAR' type in ResultSetMetaData.
 | |
|       getColumnTypeName().
 | |
| 
 | |
|     - Don't pick up indexes that start with 'pri' as primary keys
 | |
|       for DBMD.getPrimaryKeys().
 | |
| 
 | |
|     - Throw SQLExceptions when trying to do operations on a forcefully
 | |
|       closed Connection (i.e. when a communication link failure occurs).
 | |
| 
 | |
|     - You can now toggle profiling on/off using
 | |
|       Connection.setProfileSql(boolean).
 | |
| 
 | |
|     - Fixed charset issues with database metadata (charset was not
 | |
|       getting set correctly).
 | |
| 
 | |
|     - Updatable ResultSets can now be created for aliased tables/columns
 | |
|       when connected to MySQL-4.1 or newer.
 | |
| 
 | |
|     - Fixed 'LOAD DATA LOCAL INFILE' bug when file > max_allowed_packet.
 | |
| 
 | |
|     - Fixed escaping of 0x5c ('\') character for GBK and Big5 charsets.
 | |
| 
 | |
|     - Fixed ResultSet.getTimestamp() when underlying field is of type DATE.
 | |
| 
 | |
|     - Ensure that packet size from alignPacketSize() does not
 | |
|       exceed MAX_ALLOWED_PACKET (JVM bug)
 | |
| 
 | |
|     - Don't reset Connection.isReadOnly() when autoReconnecting.
 | |
| 
 | |
| 02-18-03 - Version 3.0.6-stable
 | |
| 
 | |
|     - Fixed ResultSetMetaData to return "" when catalog not known.
 | |
|       Fixes NullPointerExceptions with Sun's CachedRowSet.
 | |
| 
 | |
|     - Fixed DBMD.getTypeInfo() and DBMD.getColumns() returning
 | |
|       different value for precision in TEXT/BLOB types.
 | |
| 
 | |
|     - Allow ignoring of warning for 'non transactional tables' during
 | |
|       rollback (compliance/usability) by setting 'ignoreNonTxTables'
 | |
|       property to 'true'.
 | |
| 
 | |
|     - Fixed SQLExceptions getting swallowed on initial connect.
 | |
| 
 | |
|     - Fixed Statement.setMaxRows() to stop sending 'LIMIT' type queries
 | |
|       when not needed (performance)
 | |
| 
 | |
|     - Clean up Statement query/method mismatch tests (i.e. INSERT not
 | |
|       allowed with .executeQuery()).
 | |
| 
 | |
|     - More checks added in ResultSet traversal method to catch
 | |
|       when in closed state.
 | |
| 
 | |
|     - Fixed ResultSetMetaData.isWritable() to return correct value.
 | |
| 
 | |
|     - Add 'window' of different NULL sorting behavior to
 | |
|       DBMD.nullsAreSortedAtStart (4.0.2 to 4.0.10, true, otherwise,
 | |
|       no).
 | |
| 
 | |
|     - Implemented Blob.setBytes(). You still need to pass the
 | |
|       resultant Blob back into an updatable ResultSet or
 | |
|       PreparedStatement to persist the changes, as MySQL does
 | |
|       not support 'locators'.
 | |
| 
 | |
|     - Backported 4.1 charset field info changes from Connector/J 3.1
 | |
| 
 | |
| 01-22-03 - Version 3.0.5-gamma
 | |
| 
 | |
|     - Fixed Buffer.fastSkipLenString() causing ArrayIndexOutOfBounds
 | |
|       exceptions with some queries when unpacking fields.
 | |
| 
 | |
|     - Implemented an empty TypeMap for Connection.getTypeMap() so that
 | |
|       some third-party apps work with MySQL (IBM WebSphere 5.0 Connection
 | |
|       pool).
 | |
| 
 | |
|     - Added missing LONGTEXT type to DBMD.getColumns().
 | |
| 
 | |
|     - Retrieve TX_ISOLATION from database for
 | |
|       Connection.getTransactionIsolation() when the MySQL version
 | |
|       supports it, instead of an instance variable.
 | |
| 
 | |
|     - Quote table names in DatabaseMetaData.getColumns(),
 | |
|       getPrimaryKeys(), getIndexInfo(), getBestRowIdentifier()
 | |
| 
 | |
|     - Greatly reduce memory required for setBinaryStream() in
 | |
|       PreparedStatements.
 | |
| 
 | |
|     - Fixed ResultSet.isBeforeFirst() for empty result sets.
 | |
| 
 | |
|     - Added update options for foreign key metadata.
 | |
| 
 | |
| 
 | |
| 01-06-03 - Version 3.0.4-gamma
 | |
| 
 | |
|     - Added quoted identifiers to database names for
 | |
|       Connection.setCatalog.
 | |
| 
 | |
|     - Added support for quoted identifiers in PreparedStatement
 | |
|       parser.
 | |
| 
 | |
|     - Streamlined character conversion and byte[] handling in
 | |
|       PreparedStatements for setByte().
 | |
| 
 | |
|     - Reduce memory footprint of PreparedStatements by sharing
 | |
|       outbound packet with MysqlIO.
 | |
| 
 | |
|     - Added 'strictUpdates' property to allow control of amount
 | |
|       of checking for 'correctness' of updatable result sets. Set this
 | |
|       to 'false' if you want faster updatable result sets and you know
 | |
|       that you create them from SELECTs on tables with primary keys and
 | |
|       that you have selected all primary keys in your query.
 | |
| 
 | |
|     - Added support for 4.0.8-style large packets.
 | |
| 
 | |
|     - Fixed PreparedStatement.executeBatch() parameter overwriting.
 | |
| 
 | |
| 12-17-02 - Version 3.0.3-dev
 | |
| 
 | |
|     - Changed charsToByte in SingleByteCharConverter to be non-static
 | |
| 
 | |
|     - Changed SingleByteCharConverter to use lazy initialization of each
 | |
|       converter.
 | |
| 
 | |
|     - Fixed charset handling in Fields.java
 | |
| 
 | |
|     - Implemented Connection.nativeSQL()
 | |
| 
 | |
|     - More robust escape tokenizer -- recognize '--' comments, and allow
 | |
|       nested escape sequences (see testsuite.EscapeProcessingTest)
 | |
| 
 | |
|     - DBMD.getImported/ExportedKeys() now handles multiple foreign keys
 | |
|       per table.
 | |
| 
 | |
|     - Fixed ResultSetMetaData.getPrecision() returning incorrect values
 | |
|       for some floating point types.
 | |
| 
 | |
|     - Fixed ResultSetMetaData.getColumnTypeName() returning BLOB for
 | |
|       TEXT and TEXT for BLOB types.
 | |
| 
 | |
|     - Fixed Buffer.isLastDataPacket() for 4.1 and newer servers.
 | |
| 
 | |
|     - Added CLIENT_LONG_FLAG to be able to get more column flags
 | |
|       (isAutoIncrement() being the most important)
 | |
| 
 | |
|     - Because of above, implemented ResultSetMetaData.isAutoIncrement()
 | |
|       to use Field.isAutoIncrement().
 | |
| 
 | |
|     - Honor 'lower_case_table_names' when enabled in the server when
 | |
|       doing table name comparisons in DatabaseMetaData methods.
 | |
| 
 | |
|     - Some MySQL-4.1 protocol support (extended field info from selects)
 | |
| 
 | |
|     - Use non-aliased table/column names and database names to fullly
 | |
|       qualify tables and columns in UpdatableResultSet (requires
 | |
|       MySQL-4.1 or newer)
 | |
| 
 | |
|     - Allow user to alter behavior of Statement/
 | |
|       PreparedStatement.executeBatch() via 'continueBatchOnError' property
 | |
|       (defaults to 'true').
 | |
| 
 | |
|     - Check for connection closed in more Connection methods
 | |
|       (createStatement, prepareStatement, setTransactionIsolation,
 | |
|       setAutoCommit).
 | |
| 
 | |
|     - More robust implementation of updatable result sets. Checks that
 | |
|       _all_ primary keys of the table have been selected.
 | |
| 
 | |
|     - 'LOAD DATA LOCAL INFILE ...' now works, if your server is configured
 | |
|       to allow it. Can be turned off with the 'allowLoadLocalInfile'
 | |
|       property (see the README).
 | |
| 
 | |
|     - Substitute '?' for unknown character conversions in single-byte
 | |
|       character sets instead of '\0'.
 | |
| 
 | |
|     - NamedPipeSocketFactory now works (only intended for Windows), see
 | |
|       README for instructions.
 | |
| 
 | |
| 11-08-02 - Version 3.0.2-dev
 | |
| 
 | |
|     - Fixed issue with updatable result sets and PreparedStatements not
 | |
|       working
 | |
| 
 | |
|     - Fixed ResultSet.setFetchDirection(FETCH_UNKNOWN)
 | |
| 
 | |
|     - Fixed issue when calling Statement.setFetchSize() when using
 | |
|       arbitrary values
 | |
| 
 | |
|     - Fixed incorrect conversion in ResultSet.getLong()
 | |
| 
 | |
|     - Implemented ResultSet.updateBlob().
 | |
| 
 | |
|     - Removed duplicate code from UpdatableResultSet (it can be inherited
 | |
|       from ResultSet, the extra code for each method to handle updatability
 | |
|       I thought might someday be necessary has not been needed).
 | |
| 
 | |
|     - Fixed "UnsupportedEncodingException" thrown when "forcing" a
 | |
|       character encoding via properties.
 | |
| 
 | |
|     - Fixed various non-ASCII character encoding issues.
 | |
| 
 | |
|     - Added driver property 'useHostsInPrivileges'. Defaults to true.
 | |
|       Affects whether or not '@hostname' will be used in
 | |
|       DBMD.getColumn/TablePrivileges.
 | |
| 
 | |
|     - All DBMD result set columns describing schemas now return NULL
 | |
|       to be more compliant with the behavior of other JDBC drivers
 | |
|       for other databases (MySQL does not support schemas).
 | |
| 
 | |
|     - Added SSL support. See README for information on how to use it.
 | |
| 
 | |
|     - Properly restore connection properties when autoReconnecting
 | |
|       or failing-over, including autoCommit state, and isolation level.
 | |
| 
 | |
|     - Use 'SHOW CREATE TABLE' when possible for determining foreign key
 | |
|       information for DatabaseMetaData...also allows cascade options for
 | |
|       DELETE information to be returned
 | |
| 
 | |
|     - Escape 0x5c character in strings for the SJIS charset.
 | |
| 
 | |
|     - Fixed start position off-by-1 error in Clob.getSubString()
 | |
| 
 | |
|     - Implemented Clob.truncate()
 | |
| 
 | |
|     - Implemented Clob.setString()
 | |
| 
 | |
|     - Implemented Clob.setAsciiStream()
 | |
| 
 | |
|     - Implemented Clob.setCharacterStream()
 | |
| 
 | |
|     - Added com.mysql.jdbc.MiniAdmin class, which allows you to send
 | |
|       'shutdown' command to MySQL server...Intended to be used when 'embedding'
 | |
|       Java and MySQL server together in an end-user application.
 | |
| 
 | |
|     - Added 'connectTimeout' parameter that allows users of JDK-1.4 and newer
 | |
|       to specify a maxium time to wait to establish a connection.
 | |
| 
 | |
|     - Failover and autoReconnect only work when the connection is in a
 | |
|       autoCommit(false) state, in order to stay transaction safe
 | |
| 
 | |
|     - Added 'queriesBeforeRetryMaster' property that specifies how many
 | |
|       queries to issue when failed over before attempting to reconnect
 | |
|       to the master (defaults to 50)
 | |
| 
 | |
|     - Fixed DBMD.supportsResultSetConcurrency() so that it returns true
 | |
|       for ResultSet.TYPE_SCROLL_INSENSITIVE and ResultSet.CONCUR_READ_ONLY or
 | |
|       ResultSet.CONCUR_UPDATABLE
 | |
| 
 | |
|     - Fixed ResultSet.isLast() for empty result sets (should return false).
 | |
| 
 | |
|     - PreparedStatement now honors stream lengths in setBinary/Ascii/Character
 | |
|       Stream() unless you set the connection property
 | |
|       'useStreamLengthsInPrepStmts' to 'false'.
 | |
| 
 | |
|     - Removed some not-needed temporary object creation by using Strings
 | |
|       smarter in EscapeProcessor, Connection and DatabaseMetaData classes.
 | |
| 
 | |
| 09-21-02 - Version 3.0.1-dev
 | |
| 
 | |
|     - Fixed ResultSet.getRow() off-by-one bug.
 | |
| 
 | |
|     - Fixed RowDataStatic.getAt() off-by-one bug.
 | |
| 
 | |
|     - Added limited Clob functionality (ResultSet.getClob(),
 | |
|       PreparedStatemtent.setClob(),
 | |
|       PreparedStatement.setObject(Clob).
 | |
| 
 | |
|     - Added socketTimeout parameter to URL.
 | |
| 
 | |
|     - Connection.isClosed() no longer "pings" the server.
 | |
| 
 | |
|     - Connection.close() issues rollback() when getAutoCommit() == false
 | |
| 
 | |
|     - Added "paranoid" parameter...sanitizes error messages removing
 | |
|       "sensitive" information from them (i.e. hostnames, ports,
 | |
|       usernames, etc.), as well as clearing "sensitive" data structures
 | |
|       when possible.
 | |
| 
 | |
|     - Fixed ResultSetMetaData.isSigned() for TINYINT and BIGINT.
 | |
| 
 | |
|     - Charsets now automatically detected. Optimized code for single-byte
 | |
|       character set conversion.
 | |
| 
 | |
|     - Implemented ResultSet.getCharacterStream()
 | |
| 
 | |
|     - Added "LOCAL TEMPORARY" to table types in DatabaseMetaData.getTableTypes()
 | |
| 
 | |
|     - Massive code clean-up to follow Java coding conventions (the time had come)
 | |
| 
 | |
| 
 | |
| 07-31-02 - Version 3.0.0-dev
 | |
| 
 | |
|     - !!! LICENSE CHANGE !!! The driver is now GPL. If you need
 | |
|       non-GPL licenses, please contact me <mark@mysql.com>
 | |
| 
 | |
|     - JDBC-3.0 functionality including
 | |
|       Statement/PreparedStatement.getGeneratedKeys() and
 | |
|       ResultSet.getURL()
 | |
| 
 | |
|     - Performance enchancements - driver is now 50-100% faster
 | |
|       in most situations, and creates fewer temporary objects
 | |
| 
 | |
|     - Repackaging...new driver name is "com.mysql.jdbc.Driver",
 | |
|       old name still works, though (the driver is now provided
 | |
|       by MySQL-AB)
 | |
| 
 | |
|     - Better checking for closed connections in Statement
 | |
|       and PreparedStatement.
 | |
| 
 | |
|     - Support for streaming (row-by-row) result sets (see README)
 | |
|       Thanks to Doron.
 | |
| 
 | |
|     - Support for large packets (new addition to MySQL-4.0 protocol),
 | |
|       see README for more information.
 | |
| 
 | |
|     - JDBC Compliance -- Passes all tests besides stored procedure tests
 | |
| 
 | |
| 
 | |
|     - Fix and sort primary key names in DBMetaData (SF bugs 582086 and 582086)
 | |
| 
 | |
|     - Float types now reported as java.sql.Types.FLOAT (SF bug 579573)
 | |
| 
 | |
|     - ResultSet.getTimestamp() now works for DATE types (SF bug 559134)
 | |
| 
 | |
|     - ResultSet.getDate/Time/Timestamp now recognizes all forms of invalid
 | |
|       values that have been set to all zeroes by MySQL (SF bug 586058)
 | |
| 
 | |
|     - Testsuite now uses Junit (which you can get from www.junit.org)
 | |
| 
 | |
|     - The driver now only works with JDK-1.2 or newer.
 | |
| 
 | |
|     - Added multi-host failover support (see README)
 | |
| 
 | |
|     - General source-code cleanup.
 | |
| 
 | |
|     - Overall speed improvements via controlling transient object
 | |
|       creation in MysqlIO class when reading packets
 | |
| 
 | |
|     - Performance improvements in  string handling and field
 | |
|       metadata creation (lazily instantiated) contributed by
 | |
|       Alex Twisleton-Wykeham-Fiennes
 | |
| 
 | |
| 
 | |
| 05-16-02 - Version 2.0.14
 | |
| 
 | |
|     - More code cleanup
 | |
| 
 | |
|     - PreparedStatement now releases resources on .close() (SF bug 553268)
 | |
| 
 | |
|     - Quoted identifiers not used if server version does not support them. Also,
 | |
|       if server started with --ansi or --sql-mode=ANSI_QUOTES then '"' will be
 | |
|       used as an identifier quote, otherwise '`' will be used.
 | |
| 
 | |
|     - ResultSet.getDouble() now uses code built into JDK to be more precise (but slower)
 | |
| 
 | |
|     - LogicalHandle.isClosed() calls through to physical connection
 | |
| 
 | |
|     - Added SQL profiling (to STDERR). Set "profileSql=true" in your JDBC url.
 | |
|       See README for more information.
 | |
| 
 | |
|     - Fixed typo for relaxAutoCommit parameter.
 | |
| 
 | |
| 04-24-02 - Version 2.0.13
 | |
| 
 | |
|     - More code cleanup.
 | |
| 
 | |
|     - Fixed unicode chars being read incorrectly (SF bug 541088)
 | |
| 
 | |
|     - Faster blob escaping for PrepStmt
 | |
| 
 | |
|     - Added set/getPortNumber() to DataSource(s) (SF bug 548167)
 | |
| 
 | |
|     - Added setURL() to MySQLXADataSource (SF bug 546019)
 | |
| 
 | |
|     - PreparedStatement.toString() fixed (SF bug 534026)
 | |
| 
 | |
|     - ResultSetMetaData.getColumnClassName() now implemented
 | |
| 
 | |
|     - Rudimentary version of Statement.getGeneratedKeys() from JDBC-3.0
 | |
|       now implemented (you need to be using JDK-1.4 for this to work, I
 | |
|       believe)
 | |
| 
 | |
|     - DBMetaData.getIndexInfo() - bad PAGES fixed (SF BUG 542201)
 | |
| 
 | |
| 04-07-02 - Version 2.0.12
 | |
| 
 | |
|     - General code cleanup.
 | |
| 
 | |
|     - Added getIdleFor() method to Connection and MysqlLogicalHandle.
 | |
| 
 | |
|     - Relaxed synchronization in all classes, should fix 520615 and 520393.
 | |
| 
 | |
|     - Added getTable/ColumnPrivileges() to DBMD (fixes 484502).
 | |
| 
 | |
|     - Added new types to getTypeInfo(), fixed existing types thanks to
 | |
|       Al Davis and Kid Kalanon.
 | |
| 
 | |
|     - Added support for BIT types (51870) to PreparedStatement.
 | |
| 
 | |
|     - Fixed getRow() bug (527165) in ResultSet
 | |
| 
 | |
|     - Fixes for ResultSet updatability in PreparedStatement.
 | |
|     - Fixed timezone off by 1-hour bug in PreparedStatement (538286, 528785).
 | |
| 
 | |
|     - ResultSet: Fixed updatability (values being set to null
 | |
|       if not updated).
 | |
| 
 | |
|     - DataSources - fixed setUrl bug (511614, 525565),
 | |
|       wrong datasource class name (532816, 528767)
 | |
| 
 | |
|     - Added identifier quoting to all DatabaseMetaData methods
 | |
|       that need them (should fix 518108)
 | |
| 
 | |
|     - Added support for YEAR type (533556)
 | |
| 
 | |
|     - ResultSet.insertRow() should now detect auto_increment fields
 | |
|       in most cases and use that value in the new row. This detection
 | |
|       will not work in multi-valued keys, however, due to the fact that
 | |
|       the MySQL protocol does not return this information.
 | |
| 
 | |
|     - ResultSet.refreshRow() implemented.
 | |
| 
 | |
|     - Fixed testsuite.Traversal afterLast() bug, thanks to Igor Lastric.
 | |
| 
 | |
| 01-27-02 - Version 2.0.11
 | |
| 
 | |
|     - Fixed missing DELETE_RULE value in
 | |
|       DBMD.getImported/ExportedKeys() and getCrossReference().
 | |
| 
 | |
|     - Full synchronization of Statement.java.
 | |
| 
 | |
|     - More changes to fix "Unexpected end of input stream"
 | |
|       errors when reading BLOBs. This should be the last fix.
 | |
| 
 | |
| 01-24-02 - Version 2.0.10
 | |
| 
 | |
|      - Fixed spurious "Unexpected end of input stream" errors in
 | |
|        MysqlIO (bug 507456).
 | |
| 
 | |
|      - Fixed null-pointer-exceptions when using
 | |
|        MysqlConnectionPoolDataSource with Websphere 4 (bug 505839).
 | |
| 
 | |
| 01-13-02 - Version 2.0.9
 | |
| 
 | |
|      - Ant build was corrupting included jar files, fixed
 | |
|        (bug 487669).
 | |
| 
 | |
|      - Fixed extra memory allocation in MysqlIO.readPacket()
 | |
|        (bug 488663).
 | |
| 
 | |
|      - Implementation of DatabaseMetaData.getExported/ImportedKeys() and
 | |
|        getCrossReference().
 | |
| 
 | |
|      - Full synchronization on methods modifying instance and class-shared
 | |
|        references, driver should be entirely thread-safe now (please
 | |
|        let me know if you have problems)
 | |
| 
 | |
|      - DataSource implementations moved to org.gjt.mm.mysql.jdbc2.optional
 | |
|        package, and (initial) implementations of PooledConnectionDataSource
 | |
|        and XADataSource are in place (thanks to Todd Wolff for the
 | |
|        implementation and testing of PooledConnectionDataSource with
 | |
|        IBM WebSphere 4).
 | |
| 
 | |
|      - Added detection of network connection being closed when reading packets
 | |
|        (thanks to Todd Lizambri).
 | |
| 
 | |
|      - Fixed quoting error with escape processor (bug 486265).
 | |
| 
 | |
|      - Report batch update support through DatabaseMetaData (bug 495101).
 | |
| 
 | |
|      - Fixed off-by-one-hour error in PreparedStatement.setTimestamp()
 | |
|        (bug 491577).
 | |
| 
 | |
|      - Removed concatenation support from driver (the '||' operator),
 | |
|        as older versions of VisualAge seem to be the only thing that
 | |
|        use it, and it conflicts with the logical '||' operator. You will
 | |
|        need to start mysqld with the "--ansi" flag to use the '||'
 | |
|        operator as concatenation (bug 491680)
 | |
| 
 | |
|      - Fixed casting bug in PreparedStatement (bug 488663).
 | |
| 
 | |
| 11-25-01 - Version 2.0.8
 | |
| 
 | |
|      - Batch updates now supported (thanks to some inspiration
 | |
|        from Daniel Rall).
 | |
| 
 | |
|      - XADataSource/ConnectionPoolDataSource code (experimental)
 | |
| 
 | |
|      - PreparedStatement.setAnyNumericType() now handles positive
 | |
|        exponents correctly (adds "+" so MySQL can understand it).
 | |
| 
 | |
|      - DatabaseMetaData.getPrimaryKeys() and getBestRowIdentifier()
 | |
|        are now more robust in identifying primary keys (matches
 | |
|        regardless of case or abbreviation/full spelling of Primary Key
 | |
|        in Key_type column).
 | |
| 
 | |
| 10-24-01 - Version 2.0.7
 | |
| 
 | |
|      - PreparedStatement.setCharacterStream() now implemented
 | |
| 
 | |
|      - Fixed dangling socket problem when in high availability
 | |
|        (autoReconnect=true) mode, and finalizer for Connection will
 | |
|        close any dangling sockets on GC.
 | |
| 
 | |
|      - Fixed ResultSetMetaData.getPrecision() returning one
 | |
|        less than actual on newer versions of MySQL.
 | |
| 
 | |
|      - ResultSet.getBlob() now returns null if column value
 | |
|        was null.
 | |
| 
 | |
|      - Character sets read from database if useUnicode=true
 | |
|        and characterEncoding is not set. (thanks to
 | |
|        Dmitry Vereshchagin)
 | |
| 
 | |
|      - Initial transaction isolation level read from
 | |
|        database (if avaialable) (thanks to Dmitry Vereshchagin)
 | |
| 
 | |
|      - Fixed DatabaseMetaData.supportsTransactions(), and
 | |
|        supportsTransactionIsolationLevel() and getTypeInfo()
 | |
|        SQL_DATETIME_SUB and SQL_DATA_TYPE fields not being
 | |
|        readable.
 | |
| 
 | |
|      - Fixed PreparedStatement generating SQL that would end
 | |
|        up with syntax errors for some queries.
 | |
| 
 | |
|      - Fixed ResultSet.isAfterLast() always returning false.
 | |
| 
 | |
|      - Fixed timezone issue in PreparedStatement.setTimestamp()
 | |
|        (thanks to Erik Olofsson)
 | |
| 
 | |
|      - Captialize type names when "captializeTypeNames=true"
 | |
|        is passed in URL or properties (for WebObjects, thanks
 | |
|        to Anjo Krank)
 | |
| 
 | |
|      - Updatable result sets now correctly handle NULL
 | |
|        values in fields.
 | |
| 
 | |
|      - PreparedStatement.setDouble() now uses full-precision
 | |
|        doubles (reverting a fix made earlier to truncate them).
 | |
| 
 | |
|      - PreparedStatement.setBoolean() will use 1/0 for values
 | |
|        if your MySQL Version >= 3.21.23.
 | |
| 
 | |
| 06-16-01 - Version 2.0.6
 | |
| 
 | |
| Fixed PreparedStatement parameter checking
 | |
| 
 | |
|      - Fixed case-sensitive column names in ResultSet.java
 | |
| 
 | |
| 06-13-01 - Version 2.0.5
 | |
| 
 | |
|      - Fixed ResultSet.getBlob() ArrayIndex out-of-bounds
 | |
| 
 | |
|      - Fixed ResultSetMetaData.getColumnTypeName for TEXT/BLOB
 | |
| 
 | |
|      - Fixed ArrayIndexOutOfBounds when sending large BLOB queries
 | |
|        (Max size packet was not being set)
 | |
| 
 | |
|      - Added ISOLATION level support to Connection.setIsolationLevel()
 | |
| 
 | |
|      - Fixed NPE on PreparedStatement.executeUpdate() when all columns
 | |
|        have not been set.
 | |
| 
 | |
|      - Fixed data parsing of TIMESTAMPs with 2-digit years
 | |
| 
 | |
|      - Added Byte to PreparedStatement.setObject()
 | |
| 
 | |
|      - ResultSet.getBoolean() now recognizes '-1' as 'true'
 | |
| 
 | |
|      - ResultSet has +/-Inf/inf support
 | |
| 
 | |
|      - ResultSet.insertRow() works now, even if not all columns are
 | |
|        set (they will be set to "NULL")
 | |
| 
 | |
|      - DataBaseMetaData.getCrossReference() no longer ArrayIndexOOB
 | |
| 
 | |
|      - getObject() on ResultSet correctly does TINYINT->Byte and
 | |
|        SMALLINT->Short
 | |
| 
 | |
| 12-03-00 - Version 2.0.3
 | |
| 
 | |
|      - Implemented getBigDecimal() without scale component
 | |
|        for JDBC2.
 | |
| 
 | |
|      - Fixed composite key problem with updateable result sets.
 | |
| 
 | |
|      - Added detection of -/+INF for doubles.
 | |
| 
 | |
|      - Faster ASCII string operations.
 | |
| 
 | |
|      - Fixed incorrect detection of MAX_ALLOWED_PACKET, so sending
 | |
|        large blobs should work now.
 | |
| 
 | |
|      - Fixed off-by-one error in java.sql.Blob implementation code.
 | |
| 
 | |
|      - Added "ultraDevHack" URL parameter, set to "true" to allow
 | |
|        (broken) Macromedia UltraDev to use the driver.
 | |
| 
 | |
| 04-06-00 - Version 2.0.1
 | |
| 
 | |
|      - Fixed RSMD.isWritable() returning wrong value.
 | |
|        Thanks to Moritz Maass.
 | |
| 
 | |
|      - Cleaned up exception handling when driver connects
 | |
| 
 | |
|      - Columns that are of type TEXT now return as Strings
 | |
|        when you use getObject()
 | |
| 
 | |
|      - DatabaseMetaData.getPrimaryKeys() now works correctly wrt
 | |
|        to key_seq. Thanks to Brian Slesinsky.
 | |
| 
 | |
|      - No escape processing is done on PreparedStatements anymore
 | |
|        per JDBC spec.
 | |
| 
 | |
|      - Fixed many JDBC-2.0 traversal, positioning bugs, especially
 | |
|        wrt to empty result sets. Thanks to Ron Smits, Nick Brook,
 | |
|        Cessar Garcia and Carlos Martinez.
 | |
| 
 | |
|      - Fixed some issues with updatability support in ResultSet when
 | |
|        using multiple primary keys.
 | |
| 
 | |
| 02-21-00 - Version 2.0pre5
 | |
| 
 | |
|      - Fixed Bad Handshake problem.
 | |
| 
 | |
| 01-10-00 - Version 2.0pre4
 | |
| 
 | |
|      - Fixes to ResultSet for insertRow() - Thanks to
 | |
|        Cesar Garcia
 | |
| 
 | |
|      - Fix to Driver to recognize JDBC-2.0 by loading a JDBC-2.0
 | |
|        class, instead of relying on JDK version numbers. Thanks
 | |
|        to John Baker.
 | |
| 
 | |
|      - Fixed ResultSet to return correct row numbers
 | |
| 
 | |
|      - Statement.getUpdateCount() now returns rows matched,
 | |
|        instead of rows actually updated, which is more SQL-92
 | |
|        like.
 | |
| 
 | |
| 10-29-99
 | |
| 
 | |
|      - Statement/PreparedStatement.getMoreResults() bug fixed.
 | |
|        Thanks to Noel J. Bergman.
 | |
| 
 | |
|      - Added Short as a type to PreparedStatement.setObject().
 | |
|        Thanks to Jeff Crowder
 | |
| 
 | |
|      - Driver now automagically configures maximum/preferred packet
 | |
|        sizes by querying server.
 | |
| 
 | |
|      - Autoreconnect code uses fast ping command if server supports
 | |
|        it.
 | |
| 
 | |
|      - Fixed various bugs wrt. to packet sizing when reading from
 | |
|        the server and when alloc'ing to write to the server.
 | |
| 
 | |
| 08-17-99 - Version 2.0pre
 | |
| 
 | |
|      - Now compiles under JDK-1.2. The driver supports both JDK-1.1
 | |
|        and JDK-1.2 at the same time through a core set of classes.
 | |
|        The driver will load the appropriate interface classes at
 | |
|        runtime by figuring out which JVM version you are using.
 | |
| 
 | |
|      - Fixes for result sets with all nulls in the first row.
 | |
|        (Pointed out by Tim Endres)
 | |
| 
 | |
|      - Fixes to column numbers in SQLExceptions in ResultSet
 | |
|        (Thanks to Blas Rodriguez Somoza)
 | |
| 
 | |
|      - The database no longer needs to specified to connect.
 | |
|        (Thanks to Christian Motschke)
 | |
| 
 | |
| 07-04-99 - Version 1.2b
 | |
| 
 | |
|      - Better Documentation (in progress), in doc/mm.doc/book1.html
 | |
| 
 | |
|      - DBMD now allows null for a column name pattern (not in
 | |
|        spec), which it changes to '%'.
 | |
| 
 | |
|      - DBMD now has correct types/lengths for getXXX().
 | |
| 
 | |
|      - ResultSet.getDate(), getTime(), and getTimestamp() fixes.
 | |
|        (contributed by Alan Wilken)
 | |
| 
 | |
|      - EscapeProcessor now handles \{ \} and { or } inside quotes
 | |
|        correctly. (thanks to Alik for some ideas on how to fix it)
 | |
| 
 | |
|      - Fixes to properties handling in Connection.
 | |
|        (contributed by Juho Tikkala)
 | |
| 
 | |
|      - ResultSet.getObject() now returns null for NULL columns
 | |
|        in the table, rather than bombing out.
 | |
|        (thanks to Ben Grosman)
 | |
| 
 | |
|      - ResultSet.getObject() now returns Strings for types
 | |
|        from MySQL that it doesn't know about. (Suggested by
 | |
|        Chris Perdue)
 | |
| 
 | |
|      - Removed DataInput/Output streams, not needed, 1/2 number
 | |
|        of method calls per IO operation.
 | |
| 
 | |
|      - Use default character encoding if one is not specified. This
 | |
|        is a work-around for broken JVMs, because according to spec,
 | |
|        EVERY JVM must support "ISO8859_1", but they don't.
 | |
| 
 | |
|      - Fixed Connection to use the platform character encoding
 | |
|        instead of "ISO8859_1" if one isn't explicitly set. This
 | |
|        fixes problems people were having loading the character-
 | |
|        converter classes that didn't always exist (JVM bug).
 | |
|        (thanks to Fritz Elfert for pointing out this problem)
 | |
| 
 | |
|      - Changed MysqlIO to re-use packets where possible to reduce
 | |
|        memory usage.
 | |
| 
 | |
|      - Fixed escape-processor bugs pertaining to {} inside
 | |
|        quotes.
 | |
| 
 | |
| 04-14-99 - Version 1.2a
 | |
| 
 | |
|      - Fixed character-set support for non-Javasoft JVMs
 | |
|        (thanks to many people for pointing it out)
 | |
| 
 | |
|      - Fixed ResultSet.getBoolean() to recognize 'y' & 'n'
 | |
|        as well as '1' & '0' as boolean flags.
 | |
|        (thanks to Tim Pizey)
 | |
| 
 | |
|      - Fixed ResultSet.getTimestamp() to give better performance.
 | |
|        (thanks to Richard Swift)
 | |
| 
 | |
|      - Fixed getByte() for numeric types.
 | |
|        (thanks to Ray Bellis)
 | |
| 
 | |
|      - Fixed DatabaseMetaData.getTypeInfo() for DATE type.
 | |
|        (thanks to Paul Johnston)
 | |
| 
 | |
|      - Fixed EscapeProcessor for "fn" calls.
 | |
|        (thanks to Piyush Shah at locomotive.org)
 | |
| 
 | |
|      - Fixed EscapeProcessor to not do extraneous work if there
 | |
|        are no escape codes.
 | |
|        (thanks to Ryan Gustafson)
 | |
| 
 | |
|      - Fixed Driver to parse URLs of the form "jdbc:mysql://host:port"
 | |
|        (thanks to Richard Lobb)
 | |
| 
 | |
| 03-24-99 - Version 1.1i
 | |
| 
 | |
|      - Fixed Timestamps for PreparedStatements
 | |
| 
 | |
|      - Fixed null pointer exceptions in RSMD and RS
 | |
| 
 | |
|      - Re-compiled with jikes for valid class files (thanks ms!)
 | |
| 
 | |
| 03-08-99 - Version 1.1h
 | |
| 
 | |
|      - Fixed escape processor to deal with un-matched { and }
 | |
|        (thanks to Craig Coles)
 | |
| 
 | |
|      - Fixed escape processor to create more portable (between
 | |
|        DATETIME and TIMESTAMP types) representations so that
 | |
|        it will work with BETWEEN clauses.
 | |
|        (thanks to Craig Longman)
 | |
| 
 | |
|      - MysqlIO.quit() now closes the socket connection. Before,
 | |
|        after many failed connections some OS's would run out
 | |
|        of file descriptors. (thanks to Michael Brinkman)
 | |
| 
 | |
|      - Fixed NullPointerException in Driver.getPropertyInfo.
 | |
|        (thanks to Dave Potts)
 | |
| 
 | |
|      - Fixes to MysqlDefs to allow all *text fields to be
 | |
|        retrieved as Strings.
 | |
|        (thanks to Chris at Leverage)
 | |
| 
 | |
|      - Fixed setDouble in PreparedStatement for large numbers
 | |
|        to avoid sending scientific notation to the database.
 | |
|        (thanks to J.S. Ferguson)
 | |
| 
 | |
|      - Fixed getScale() and getPrecision() in RSMD.
 | |
|        (contrib'd by James Klicman)
 | |
| 
 | |
|      - Fixed getObject() when field was DECIMAL or NUMERIC
 | |
|        (thanks to Bert Hobbs)
 | |
| 
 | |
|      - DBMD.getTables() bombed when passed a null table-name
 | |
|        pattern. Fixed. (thanks to Richard Lobb)
 | |
| 
 | |
|      - Added check for "client not authorized" errors during
 | |
|        connect. (thanks to Hannes Wallnoefer)
 | |
| 
 | |
| 02-19-99 - Version 1.1g
 | |
| 
 | |
|      - Result set rows are now byte arrays. Blobs and Unicode
 | |
|        work bidriectonally now. The useUnicode and encoding
 | |
|        options are implemented now.
 | |
| 
 | |
|      - Fixes to PreparedStatement to send binary set by
 | |
|        setXXXStream to be sent un-touched to the MySQL server.
 | |
| 
 | |
|      - Fixes to getDriverPropertyInfo().
 | |
| 
 | |
| 12-31-98 - Version 1.1f
 | |
| 
 | |
|      - Changed all ResultSet fields to Strings, this should allow
 | |
|        Unicode to work, but your JVM must be able to convert
 | |
|        between the character sets. This should also make reading
 | |
|        data from the server be a bit quicker, because there is now
 | |
|        no conversion from StringBuffer to String.
 | |
| 
 | |
|      - Changed PreparedStatement.streamToString() to be more
 | |
|        efficient (code from Uwe Schaefer).
 | |
| 
 | |
|      - URL parsing is more robust (throws SQL exceptions on errors
 | |
|        rather than NullPointerExceptions)
 | |
| 
 | |
|      - PreparedStatement now can convert Strings to Time/Date values
 | |
|        via setObject() (code from Robert Currey).
 | |
| 
 | |
|      - IO no longer hangs in Buffer.readInt(), that bug was
 | |
|        introduced in 1.1d when changing to all byte-arrays for
 | |
|        result sets. (Pointed out by Samo Login)
 | |
| 
 | |
| 11-03-98 - Version 1.1b
 | |
| 
 | |
|      - Fixes to DatabaseMetaData to allow both IBM VA and J-Builder
 | |
|        to work. Let me know how it goes. (thanks to Jac Kersing)
 | |
| 
 | |
|      - Fix to ResultSet.getBoolean() for NULL strings
 | |
|        (thanks to Barry Lagerweij)
 | |
| 
 | |
|      - Beginning of code cleanup, and formatting. Getting ready
 | |
|        to branch this off to a parallel JDBC-2.0 source tree.
 | |
| 
 | |
|      - Added "final" modifier to critical sections in MysqlIO and
 | |
|        Buffer to allow compiler to inline methods for speed.
 | |
| 
 | |
| 9-29-98
 | |
| 
 | |
|      - If object references passed to setXXX() in PreparedStatement are
 | |
|        null, setNull() is automatically called for you. (Thanks for the
 | |
|        suggestion goes to Erik Ostrom)
 | |
| 
 | |
|      - setObject() in PreparedStatement will now attempt to write a
 | |
|        serialized  representation of the object to the database for
 | |
|        objects of Types.OTHER and objects of unknown type.
 | |
| 
 | |
|      - Util now has a static method readObject() which given a ResultSet
 | |
|        and a column index will re-instantiate an object serialized in
 | |
|        the above manner.
 | |
| 
 | |
| 9-02-98 - Vesion 1.1
 | |
| 
 | |
|      - Got rid of "ugly hack" in MysqlIO.nextRow(). Rather than
 | |
|        catch an exception, Buffer.isLastDataPacket() was fixed.
 | |
| 
 | |
|      - Connection.getCatalog() and Connection.setCatalog()
 | |
|        should work now.
 | |
| 
 | |
|      - Statement.setMaxRows() works, as well as setting
 | |
|        by property maxRows. Statement.setMaxRows() overrides
 | |
|        maxRows set via properties or url parameters.
 | |
| 
 | |
|      - Automatic re-connection is available. Because it has
 | |
|        to "ping" the database before each query, it is
 | |
|        turned off by default. To use it, pass in "autoReconnect=true"
 | |
|        in the connection URL. You may also change the number of
 | |
|        reconnect tries, and the initial timeout value via
 | |
|        "maxReconnects=n" (default 3) and "initialTimeout=n"
 | |
|        (seconds, default 2) parameters. The timeout is an
 | |
|        exponential backoff type of timeout, e.g. if you have initial
 | |
|        timeout of 2 seconds, and maxReconnects of 3, then the driver
 | |
|        will timeout 2 seconds, 4 seconds, then 16 seconds between each
 | |
|        re-connection attempt.
 | |
| 
 | |
| 8-24-98 - Version 1.0
 | |
| 
 | |
|      - Fixed handling of blob data in Buffer.java
 | |
| 
 | |
|      - Fixed bug with authentication packet being
 | |
|        sized too small.
 | |
| 
 | |
|      - The JDBC Driver is now under the LPGL
 | |
| 
 | |
| 8-14-98 -
 | |
| 
 | |
|      - Fixed Buffer.readLenString() to correctly
 | |
|           read data for BLOBS.
 | |
| 
 | |
|      - Fixed PreparedStatement.stringToStream to
 | |
|           correctly read data for BLOBS.
 | |
| 
 | |
|      - Fixed PreparedStatement.setDate() to not
 | |
|        add a day.
 | |
|        (above fixes thanks to Vincent Partington)
 | |
| 
 | |
|      - Added URL parameter parsing (?user=... etc).
 | |
| 
 | |
| 
 | |
| 8-04-98 - Version 0.9d
 | |
| 
 | |
|      - Big news! New package name. Tim Endres from ICE
 | |
|        Engineering is starting a new source tree for
 | |
|        GNU GPL'd Java software. He's graciously given
 | |
|        me the org.gjt.mm package directory to use, so now
 | |
|        the driver is in the org.gjt.mm.mysql package scheme.
 | |
|        I'm "legal" now. Look for more information on Tim's
 | |
|        project soon.
 | |
| 
 | |
|      - Now using dynamically sized packets to reduce
 | |
|        memory usage when sending commands to the DB.
 | |
| 
 | |
|      - Small fixes to getTypeInfo() for parameters, etc.
 | |
| 
 | |
|      - DatabaseMetaData is now fully implemented. Let me
 | |
|        know if these drivers work with the various IDEs
 | |
|        out there. I've heard that they're working with
 | |
|        JBuilder right now.
 | |
| 
 | |
|      - Added JavaDoc documentation to the package.
 | |
| 
 | |
|      - Package now available in .zip or .tar.gz.
 | |
| 
 | |
| 7-28-98 - Version 0.9
 | |
| 
 | |
|      - Implemented getTypeInfo().
 | |
|        Connection.rollback() now throws an SQLException
 | |
|        per the JDBC spec.
 | |
| 
 | |
|      - Added PreparedStatement that supports all JDBC API
 | |
|        methods for PreparedStatement including InputStreams.
 | |
|        Please check this out and let me know if anything is
 | |
|        broken.
 | |
| 
 | |
|      - Fixed a bug in ResultSet that would break some
 | |
|        queries that only returned 1 row.
 | |
| 
 | |
|      - Fixed bugs in DatabaseMetaData.getTables(),
 | |
|        DatabaseMetaData.getColumns() and
 | |
|        DatabaseMetaData.getCatalogs().
 | |
| 
 | |
|      - Added functionality to Statement that allows
 | |
|        executeUpdate() to store values for IDs that are
 | |
|        automatically generated for AUTO_INCREMENT fields.
 | |
|        Basically, after an executeUpdate(), look at the
 | |
|        SQLWarnings for warnings like "LAST_INSERTED_ID =
 | |
|        'some number', COMMAND = 'your SQL query'".
 | |
| 
 | |
|        If you are using AUTO_INCREMENT fields in your
 | |
|        tables and are executing a lot of executeUpdate()s
 | |
|        on one Statement, be sure to clearWarnings() every
 | |
|        so often to save memory.
 | |
| 
 | |
| 7-06-98 - Version 0.8
 | |
| 
 | |
|      - Split MysqlIO and Buffer to separate classes. Some
 | |
|        ClassLoaders gave an IllegalAccess error for some
 | |
|        fields in those two classes. Now mm.mysql works in
 | |
|        applets and all classloaders.
 | |
| 
 | |
|        Thanks to Joe Ennis <jce@mail.boone.com> for pointing
 | |
|        out the problem and working on a fix with me.
 | |
| 
 | |
| 7-01-98 - Version 0.7
 | |
| 
 | |
|      - Fixed DatabaseMetadata problems in getColumns() and
 | |
|        bug in switch statement in the Field constructor.
 | |
| 
 | |
|        Thanks to Costin Manolache <costin@tdiinc.com> for
 | |
|        pointing these out.
 | |
| 
 | |
| 5-21-98 - Version 0.6
 | |
| 
 | |
|      - Incorporated efficiency changes from
 | |
|        Richard Swift <Richard.Swift@kanatek.ca> in
 | |
|        MysqlIO.java and ResultSet.java
 | |
| 
 | |
|      - We're now 15% faster than gwe's driver.
 | |
| 
 | |
|      - Started working on DatabaseMetaData.
 | |
| 
 | |
|        The following methods are implemented:
 | |
|         * getTables()
 | |
|         * getTableTypes()
 | |
|         * getColumns
 | |
|         * getCatalogs()
 |