[pkg-java] r14476 - in trunk/mysql-connector-java: . debian
Torsten Werner
twerner at alioth.debian.org
Thu Aug 25 06:58:32 UTC 2011
Author: twerner
Date: 2011-08-25 06:58:31 +0000 (Thu, 25 Aug 2011)
New Revision: 14476
Removed:
trunk/mysql-connector-java/CHANGES
trunk/mysql-connector-java/COPYING
trunk/mysql-connector-java/EXCEPTIONS-CONNECTOR-J
trunk/mysql-connector-java/README
trunk/mysql-connector-java/README.txt
trunk/mysql-connector-java/build.xml
trunk/mysql-connector-java/debug/
trunk/mysql-connector-java/docs/
trunk/mysql-connector-java/src/
Modified:
trunk/mysql-connector-java/debian/
trunk/mysql-connector-java/debian/rules
Log:
switch to mergeWithUpstream mode
Deleted: trunk/mysql-connector-java/CHANGES
===================================================================
--- trunk/mysql-connector-java/CHANGES 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/CHANGES 2011-08-25 06:58:31 UTC (rev 14476)
@@ -1,3753 +0,0 @@
-# Changelog
-# $Id: CHANGES 6622 2007-10-05 19:05:36Z mmatthews $
-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.
-
-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 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 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 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 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 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 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 logging,
- Then fallback to our STDERR 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 at 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 at 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 at tdiinc.com> for
- pointing these out.
-
-5-21-98 - Version 0.6
-
- - Incorporated efficiency changes from
- Richard Swift <Richard.Swift at 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()
Deleted: trunk/mysql-connector-java/COPYING
===================================================================
--- trunk/mysql-connector-java/COPYING 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/COPYING 2011-08-25 06:58:31 UTC (rev 14476)
@@ -1,343 +0,0 @@
-GNU General Public License
-**************************
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
- freedom to share and change it. By contrast, the GNU General Public
- License is intended to guarantee your freedom to share and change free
- software--to make sure the software is free for all its users. This
- General Public License applies to most of the Free Software
- Foundation's software and to any other program whose authors commit to
- using it. (Some other Free Software Foundation software is covered by
- the GNU Library General Public License instead.) You can apply it to
- your programs, too.
-
- When we speak of free software, we are referring to freedom, not
- price. Our General Public Licenses are designed to make sure that you
- have the freedom to distribute copies of free software (and charge for
- this service if you wish), that you receive source code or can get it
- if you want it, that you can change the software or use pieces of it
- in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if you
- distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
- gratis or for a fee, you must give the recipients all the rights that
- you have. You must make sure that they, too, receive or can get the
- source code. And you must show them these terms so they know their
- rights.
-
- We protect your rights with two steps: (1) copyright the software, and
- (2) offer you this license which gives you legal permission to copy,
- distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
- that everyone understands that there is no warranty for this free
- software. If the software is modified by someone else and passed on, we
- want its recipients to know that what they have is not the original, so
- that any problems introduced by others will not reflect on the original
- authors' reputations.
-
- Finally, any free program is threatened constantly by software
- patents. We wish to avoid the danger that redistributors of a free
- program will individually obtain patent licenses, in effect making the
- program proprietary. To prevent this, we have made it clear that any
- patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
- modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
- a notice placed by the copyright holder saying it may be distributed
- under the terms of this General Public License. The "Program", below,
- refers to any such program or work, and a "work based on the Program"
- means either the Program or any derivative work under copyright law:
- that is to say, a work containing the Program or a portion of it,
- either verbatim or with modifications and/or translated into another
- language. (Hereinafter, translation is included without limitation in
- the term "modification".) Each licensee is addressed as "you".
-
- Activities other than copying, distribution and modification are not
- covered by this License; they are outside its scope. The act of
- running the Program is not restricted, and the output from the Program
- is covered only if its contents constitute a work based on the
- Program (independent of having been made by running the Program).
- Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an appropriate
- copyright notice and disclaimer of warranty; keep intact all the
- notices that refer to this License and to the absence of any warranty;
- and give any other recipients of the Program a copy of this License
- along with the Program.
-
- You may charge a fee for the physical act of transferring a copy, and
- you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the Program,
- and can be reasonably considered independent and separate works in
- themselves, then this License, and its terms, do not apply to those
- sections when you distribute them as separate works. But when you
- distribute the same sections as part of a whole which is a work based
- on the Program, the distribution of the whole must be on the terms of
- this License, whose permissions for other licensees extend to the
- entire whole, and thus to each and every part regardless of who wrote it.
-
- Thus, it is not the intent of this section to claim rights or contest
- your rights to work written entirely by you; rather, the intent is to
- exercise the right to control the distribution of derivative or
- collective works based on the Program.
-
- In addition, mere aggregation of another work not based on the Program
- with the Program (or with a work based on the Program) on a volume of
- a storage or distribution medium does not bring the other work under
- the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms of
- Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
- The source code for a work means the preferred form of the work for
- making modifications to it. For an executable work, complete source
- code means all the source code for all modules it contains, plus any
- associated interface definition files, plus the scripts used to
- control compilation and installation of the executable. However, as a
- special exception, the source code distributed need not include
- anything that is normally distributed (in either source or binary
- form) with the major components (compiler, kernel, and so on) of the
- operating system on which the executable runs, unless that component
- itself accompanies the executable.
-
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this License.
- However, parties who have received copies, or rights, from you under
- this License will not have their licenses terminated so long as such
- parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify or
- distribute the Program or its derivative works. These actions are
- prohibited by law if you do not accept this License. Therefore, by
- modifying or distributing the Program (or any work based on the
- Program), you indicate your acceptance of this License to do so, and
- all its terms and conditions for copying, distributing or modifying
- the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program subject to
- these terms and conditions. You may not impose any further
- restrictions on the recipients' exercise of the rights granted herein.
- You are not responsible for enforcing compliance by third parties to
- this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent issues),
- conditions are imposed on you (whether by court order, agreement or
- otherwise) that contradict the conditions of this License, they do not
- excuse you from the conditions of this License. If you cannot
- distribute so as to satisfy simultaneously your obligations under this
- License and any other pertinent obligations, then as a consequence you
- may not distribute the Program at all. For example, if a patent
- license would not permit royalty-free redistribution of the Program by
- all those who receive copies directly or indirectly through you, then
- the only way you could satisfy both it and this License would be to
- refrain entirely from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable under
- any particular circumstance, the balance of the section is intended to
- apply and the section as a whole is intended to apply in other
- circumstances.
-
- It is not the purpose of this section to induce you to infringe any
- patents or other property right claims or to contest validity of any
- such claims; this section has the sole purpose of protecting the
- integrity of the free software distribution system, which is
- implemented by public license practices. Many people have made
- generous contributions to the wide range of software distributed
- through that system in reliance on consistent application of that
- system; it is up to the author/donor to decide if he or she is willing
- to distribute software through any other system and a licensee cannot
- impose that choice.
-
- This section is intended to make thoroughly clear what is believed to
- be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces, the
- original copyright holder who places the Program under this License
- may add an explicit geographical distribution limitation excluding
- those countries, so that distribution is permitted only in or among
- countries not thus excluded. In such case, this License incorporates
- the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
- of the General Public License from time to time. Such new versions will
- be similar in spirit to the present version, but may differ in detail to
- address new problems or concerns.
-
- Each version is given a distinguishing version number. If the Program
- specifies a version number of this License which applies to it and "any
- later version", you have the option of following the terms and conditions
- either of that version or of any later version published by the Free
- Software Foundation. If the Program does not specify a version number of
- this License, you may choose any version ever published by the Free Software
- Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the author
- to ask for permission. For software which is copyrighted by the Free
- Software Foundation, write to the Free Software Foundation; we sometimes
- make exceptions for this. Our decision will be guided by the two goals
- of preserving the free status of all derivatives of our free software and
- of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
- REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
- possible use to the public, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
- to attach them to the start of each source file to most effectively
- convey the exclusion of warranty; and each file should have at least
- the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Also add information on how to contact you by electronic and paper mail.
-
- If the program is interactive, make it output a short notice like this
- when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
- The hypothetical commands `show w' and `show c' should show the appropriate
- parts of the General Public License. Of course, the commands you use may
- be called something other than `show w' and `show c'; they could even be
- mouse-clicks or menu items--whatever suits your program.
-
- You should also get your employer (if you work as a programmer) or your
- school, if any, to sign a "copyright disclaimer" for the program, if
- necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
- This General Public License does not permit incorporating your program into
- proprietary programs. If your program is a subroutine library, you may
- consider it more useful to permit linking proprietary applications with the
- library. If this is what you want to do, use the GNU Library General
- Public License instead of this License.
-
Deleted: trunk/mysql-connector-java/EXCEPTIONS-CONNECTOR-J
===================================================================
--- trunk/mysql-connector-java/EXCEPTIONS-CONNECTOR-J 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/EXCEPTIONS-CONNECTOR-J 2011-08-25 06:58:31 UTC (rev 14476)
@@ -1,119 +0,0 @@
-MySQL FLOSS License Exception
-
-The MySQL AB Exception for Free/Libre and Open Source
-Software-only Applications Using MySQL Client Libraries (the
-"FLOSS Exception").
-
-Version 0.6, 7 March 2007
-
-Exception Intent
-
-We want specified Free/Libre and Open Source Software (``FLOSS'')
-applications to be able to use specified GPL-licensed MySQL client
-libraries (the ``Program'') despite the fact that not all FLOSS
-licenses are compatible with version 2 of the GNU General Public
-License (the ``GPL'').
-
-Legal Terms and Conditions
-
-As a special exception to the terms and conditions of version 2.0
-of the GPL:
-
- 1. You are free to distribute a Derivative Work that is formed
- entirely from the Program and one or more works (each, a
- "FLOSS Work") licensed under one or more of the licenses
- listed below in section 1, as long as:
- a. You obey the GPL in all respects for the Program and the
- Derivative Work, except for identifiable sections of the
- Derivative Work which are not derived from the Program,
- and which can reasonably be considered independent and
- separate works in themselves,
- b. all identifiable sections of the Derivative Work which
- are not derived from the Program, and which can
- reasonably be considered independent and separate works
- in themselves,
- i. are distributed subject to one of the FLOSS licenses
- listed below, and
- ii. the object code or executable form of those sections
- are accompanied by the complete corresponding
- machine-readable source code for those sections on
- the same medium and under the same FLOSS license as
- the corresponding object code or executable forms of
- those sections, and
- c. any works which are aggregated with the Program or with a
- Derivative Work on a volume of a storage or distribution
- medium in accordance with the GPL, can reasonably be
- considered independent and separate works in themselves
- which are not derivatives of either the Program, a
- Derivative Work or a FLOSS Work.
- If the above conditions are not met, then the Program may only
- be copied, modified, distributed or used under the terms and
- conditions of the GPL or another valid licensing option from
- MySQL AB.
-
- 2. FLOSS License List
-
-License name Version(s)/Copyright Date
-Academic Free License 2.0
-Apache Software License 1.0/1.1/2.0
-Apple Public Source License 2.0
-Artistic license From Perl 5.8.0
-BSD license "July 22 1999"
-Common Development and Distribution License (CDDL) 1.0
-Common Public License 1.0
-Eclipse Public License 1.0
-GNU Library or "Lesser" General Public License (LGPL) 2.0/2.1
-Jabber Open Source License 1.0
-MIT license (As listed in file MIT-License.txt) ---
-Mozilla Public License (MPL) 1.0/1.1
-Open Software License 2.0
-OpenSSL license (with original SSLeay license) "2003" ("1998")
-PHP License 3.0
-Python license (CNRI Python License) ---
-Python Software Foundation License 2.1.1
-Sleepycat License "1999"
-University of Illinois/NCSA Open Source License ---
-W3C License "2001"
-X11 License "2001"
-Zlib/libpng License ---
-Zope Public License 2.0
-
- Due to the many variants of some of the above licenses, we
- require that any version follow the 2003 version of the Free
- Software Foundation's Free Software Definition
- (http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of
- the Open Source Definition by the Open Source Initiative
- (http://www.opensource.org/docs/definition.php).
-
- 3. Definitions
-
- a. Terms used, but not defined, herein shall have the
- meaning provided in the GPL.
- b. Derivative Work means a derivative work under copyright
- law.
-
- 4. Applicability: This FLOSS Exception applies to all Programs
- that contain a notice placed by MySQL AB saying that the
- Program may be distributed under the terms of this FLOSS
- Exception. If you create or distribute a work which is a
- Derivative Work of both the Program and any other work
- licensed under the GPL, then this FLOSS Exception is not
- available for that work; thus, you must remove the FLOSS
- Exception notice from that work and comply with the GPL in all
- respects, including by retaining all GPL notices. You may
- choose to redistribute a copy of the Program exclusively under
- the terms of the GPL by removing the FLOSS Exception notice
- from that copy of the Program, provided that the copy has
- never been modified by you or any third party.
-
-Appendix A. Qualified Libraries and Packages
-
-The following is a non-exhaustive list of libraries and packages
-which are covered by the FLOSS License Exception. Please note that
-this appendix is provided merely as an additional service to
-specific FLOSS projects wishing to simplify licensing information
-for their users. Compliance with one of the licenses noted under
-the "FLOSS license list" section remains a prerequisite.
-
-Package Name Qualifying License and Version
-Apache Portable Runtime (APR) Apache Software License 2.0
\ No newline at end of file
Deleted: trunk/mysql-connector-java/README
===================================================================
--- trunk/mysql-connector-java/README 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/README 2011-08-25 06:58:31 UTC (rev 14476)
@@ -1,45 +0,0 @@
-MySQL Connector/J @MYSQL_CJ_VERSION@ (formerly MM.MySQL)
-MySQL AB's JDBC Driver for MySQL
-Copyright (c) 2003 MySQL AB
-
-CONTENTS
-
-* License
-* Documentation Location
-
-
-LICENSE
-
-MySQL Connector/J is licensed under the GPL or a commercial license
-from MySQL AB.
-
-If you have licensed this product under the GPL, please see the COPYING
-file for more information.
-
-There are special exceptions to the terms and conditions of the GPL
-as it is applied to this software. View the full text of the
-exception in file EXCEPTIONS-CONNECTOR-J in the directory of this
-software distribution.
-
-If you have licensed this product under a commercial license from
-MySQL AB, please see the file "MySQLEULA.txt" that comes with this
-distribution for the terms of the license.
-
-If you need non-GPL licenses for commercial distribution please contact
-me <mark at mysql.com> or <sales at mysql.com>.
-
-
-DOCUMENTATION LOCATION
-
-The documentation formerly contained in this file has moved into the
-'doc' directory, where it is available in HTML, PDF and plaintext
-forms.
-
-You may also find the latest copy of the documentation on the MySQL
-website at http://dev.mysql.com/doc/refman/5.0/en/connector-j.html
-
---
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-
Deleted: trunk/mysql-connector-java/README.txt
===================================================================
--- trunk/mysql-connector-java/README.txt 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/README.txt 2011-08-25 06:58:31 UTC (rev 14476)
@@ -1,45 +0,0 @@
-MySQL Connector/J @MYSQL_CJ_VERSION@ (formerly MM.MySQL)
-MySQL AB's JDBC Driver for MySQL
-Copyright (c) 2003 MySQL AB
-
-CONTENTS
-
-* License
-* Documentation Location
-
-
-LICENSE
-
-MySQL Connector/J is licensed under the GPL or a commercial license
-from MySQL AB.
-
-If you have licensed this product under the GPL, please see the COPYING
-file for more information.
-
-There are special exceptions to the terms and conditions of the GPL
-as it is applied to this software. View the full text of the
-exception in file EXCEPTIONS-CONNECTOR-J in the directory of this
-software distribution.
-
-If you have licensed this product under a commercial license from
-MySQL AB, please see the file "MySQLEULA.txt" that comes with this
-distribution for the terms of the license.
-
-If you need non-GPL licenses for commercial distribution please contact
-me <mark at mysql.com> or <sales at mysql.com>.
-
-
-DOCUMENTATION LOCATION
-
-The documentation formerly contained in this file has moved into the
-'doc' directory, where it is available in HTML, PDF and plaintext
-forms.
-
-You may also find the latest copy of the documentation on the MySQL
-website at http://dev.mysql.com/doc/refman/5.0/en/connector-j.html
-
---
-This software is OSI Certified Open Source Software.
-OSI Certified is a certification mark of the Open Source Initiative.
-
-
Deleted: trunk/mysql-connector-java/build.xml
===================================================================
--- trunk/mysql-connector-java/build.xml 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/build.xml 2011-08-25 06:58:31 UTC (rev 14476)
@@ -1,1148 +0,0 @@
-<?xml version='1.0'?>
-<!--
- Copyright (C) 2002-2005 MySQL AB
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License as
- published by the Free Software Foundation.
-
- There are special exceptions to the terms and conditions of the GPL
- as it is applied to this software. View the full text of the
- exception in file EXCEPTIONS-CONNECTOR-J in the directory of this
- software distribution.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--->
-
-<!-- version $Id: build.xml 6622 2007-10-05 19:05:36Z mmatthews $ -->
-
-<project name="MySQL Connector/J" default="dist" basedir=".">
- <property name="major_version" value="5"/>
- <property name="minor_version" value="1"/>
- <property name="subminor_version" value="5"/>
- <property name="version_status" value=""/>
-
- <property name="version" value="${major_version}.${minor_version}.${subminor_version}${version_status}"/>
- <property name="prodName" value="mysql-connector-java"/>
- <property name="extra.version" value=""/>
- <property name="full.version" value="${version}${extra.version}"/>
- <property name="fullProdName" value="${prodName}-${version}${extra.version}"/>
- <property name="sourceDir" value="./src"/>
- <property name="buildDir" value="./build"/>
- <property name="distDir" value="./dist"/>
- <property name="junit.results" value="${buildDir}/junit"/>
- <property name="debug.enable" value="on" />
-
- <!-- Send class files to correct location if running in eclipse -->
-
- <condition property="compiler.output" value="bin" else="${buildDir}/${fullProdName}">
- <isset property="eclipse.pdebuild.home" />
- </condition>
-
- <!--
- The following property is needed for building the docs. It's
- set to the defaults for my development environment, but can be passed
- on the command line to ant via -D switches.
- -->
-
- <property name="com.mysql.jdbc.docs.sourceDir" value="/home/mmatthew/work/docs/prebuilt"/>
-
- <!--
- The following properties are needed for finding JDK6, set to the defaults
- for my development environment, but can be passed on the command line
- to ant via -D switches
- -->
-
- <property name="com.mysql.jdbc.java6.javac" value="C:\jvms\jdk1.6.0\bin\javac.exe" />
- <property name="com.mysql.jdbc.java6.rtjar" value="C:\jvms\jdk1.6.0\jre\lib\rt.jar" />
-
- <taskdef resource="net/sf/antcontrib/antlib.xml">
- <classpath>
- <pathelement location="${sourceDir}/lib/ant-contrib.jar"/>
- </classpath>
- </taskdef>
-
- <path id="built.driver.only.classpath">
- <pathelement location="${buildDir}/${fullProdName}" />
- </path>
-
- <path id="project.build.classpath">
- <fileset dir="${buildDir}/${fullProdName}/lib-nodist">
- <include name="**/*.jar"/>
- </fileset>
-
- <fileset dir="${buildDir}/${fullProdName}/lib">
- <include name="**/*.jar"/>
- </fileset>
-
- <pathelement location="${buildDir}/${fullProdName}" />
- </path>
-
- <target name="init" depends="-init-copy, -init-no-crypto">
- <!-- If we're building under cruise control, update ourself -->
-
- <!--
- <if>
- <isset property="cctimestamp"/>
- <then>
- <exec executable="svn">
- <arg line="up"/>
- </exec>
- </then>
- </if>
- -->
-
- <!-- We need the following for source distributions as there we
- can't dynamically alter the classpath, and not having this
- directory present causes the build to fail -->
-
- <mkdir dir="${buildDir}/${fullProdName}/lib-nodist" />
-
- <available file="${com.mysql.jdbc.docs.sourceDir}" property="com.mysql.jdbc.docs.sourcesPresent" />
-
- <available classname="com.mchange.v2.c3p0.QueryConnectionTester"
- classpathref="project.build.classpath"
- property="com.mysql.jdbc.c3p0Present" />
-
- <available classname="org.apache.log4j.Logger"
- classpathref="project.build.classpath"
- property="com.mysql.jdbc.log4jPresent" />
-
- <available classname="org.jboss.resource.adapter.jdbc.ValidConnectionChecker"
- classpathref="project.build.classpath"
- property="com.mysql.jdbc.jbossPresent" />
- </target>
-
- <target name="-init-copy" depends="clean">
- <tstamp/>
-
- <filter token="VERSION" value="${version}"/>
-
- <mkdir dir="${buildDir}" />
-
- <exec executable="svn"
- output="${buildDir}/svn.properties"
- failifexecutionfails="false"
- failonerror="false">
- <arg value="info" />
- </exec>
-
- <property prefix="svn" file="${buildDir}/svn.properties"/>
-
- <copy todir="${buildDir}/${fullProdName}" filtering="true">
- <fileset dir="${sourceDir}/" excludes="**/CVS">
- <patternset id="classjar" >
- <exclude name="**/*.class*"/>
- <exclude name="**/*.jar"/>
- </patternset>
- </fileset>
-
- <filterset>
- <filter token="MYSQL_CJ_MAJOR_VERSION" value="${major_version}"/>
- <filter token="MYSQL_CJ_MINOR_VERSION" value="${minor_version}"/>
- <filter token="MYSQL_CJ_SUBMINOR_VERSION" value="${subminor_version}"/>
- <filter token="MYSQL_CJ_VERSION_STATUS" value="${version_status}"/>
- <filter token="MYSQL_CJ_VERSION" value="${version}"/>
- <filter token="MYSQL_CJ_REVISION" value="${svn.Revision}" />
- <filter token="MYSQL_CJ_FULL_PROD_NAME" value="${fullProdName}"/>
- </filterset>
- </copy>
-
- <copy todir="${buildDir}/${fullProdName}" filtering="false">
- <fileset dir="${sourceDir}" excludes="**/CVS">
- <patternset id="dojar" >
- <include name="**/*.jar*"/>
- </patternset>
- </fileset>
- </copy>
- </target>
-
- <target name="-init-no-crypto" depends="-init-copy" if="com.mysql.jdbc.noCryptoBuild">
- <copy file="${sourceDir}//lib-nodist/ExportControlledNoCrypto.notjava"
- toFile="${buildDir}/${fullProdName}/com/mysql/jdbc/ExportControlled.java"
- overwrite="true"/>
- </target>
-
- <!--
- This is the target we use to make MySQL AB GPL-licensed and binaries
- as well as commercially-licensed binaries that include source files.
- -->
-
- <target name="full-package" description="Builds driver, binary .jar file, docs and packages (.zip, .tar.gz) suitable for distribution that _do_ contain sources"
- depends="full-dist, -make-packages, -create-archives"/>
-
- <!-- This is the target we use to make MySQL AB Commercially-licensed binaries -->
-
- <target name="full-package-no-sources" description="Builds driver, binary .jar file, docs and packages (.zip, .tar.gz) suitable for distribution that do _not_ contain sources"
- depends="full-dist, -make-packages, -remove-sources, -create-archives"/>
-
- <!-- No trace build until we figure out what's going on with iajc on our
- production build box
- <target name="full-dist" description="Builds driver, binary .jar file and docs, basically a distribution 'image'"
- depends="-dist-trace, dist, -bundle-docs"/>
- -->
-
-
- <target name="full-dist" description="Builds driver, binary .jar file and docs, basically a distribution 'image'"
- depends="dist, -bundle-docs"/>
-
- <target name="package" depends="dist, -make-packages, -create-archives"/>
-
- <target name="-remove-sources">
- <echo>Removing sources from ${distDir}/toArchive</echo>
- <delete>
- <fileset dir="${distDir}/toArchive">
- <include name="**/*.java"/>
- </fileset>
- </delete>
-
- <delete dir="${distDir}/toArchive/${fullProdName}/src"/>
- </target>
-
- <target name="-create-archives" depends="-make-packages">
- <tar destfile="${distDir}/${fullProdName}.tar.gz"
- compression="gzip" longfile="gnu">
- <tarfileset dir="${toPackage}">
- <patternset refid="non.test.sources" />
- </tarfileset>
- </tar>
-
- <checksum file="${distDir}/${fullProdName}.tar.gz" forceOverwrite="yes" fileext=".md5"/>
-
- <delete file="${distDir}/${fullProdName}.zip"/>
-
- <zip zipfile="${distDir}/${fullProdName}.zip">
- <fileset dir="${toPackage}">
- <patternset refid="non.test.sources" />
- </fileset>
- </zip>
-
- <checksum file="${distDir}/${fullProdName}.zip" forceOverwrite="yes" fileext=".md5"/>
-
- <if>
- <isset property="com.mysql.jdbc.commercialBuild"/>
- <then>
- <echo message="Not building maven bundle for commercial build" />
- </then>
- <else>
- <!-- Build a Maven bundle for upload to their repository -->
-
- <checksum file="${distDir}/${fullProdName}.zip" forceOverwrite="yes" fileext=".md5"/>
-
- <tempfile destdir="${buildDir}" prefix="maven-bundle-" property="mavenUploadDir" />
-
- <mkdir dir="${mavenUploadDir}" />
-
- <copy file="${buildDir}/${fullProdName}/${fullProdName}-bin.jar"
- toFile="${mavenUploadDir}/${fullProdName}.jar" />
-
- <copy file="${buildDir}/${fullProdName}/doc/sources/pom.xml"
- toDir="${mavenUploadDir}" filtering="true">
- </copy>
-
- <copy file="./COPYING"
- toDir="${mavenUploadDir}" />
-
- <copy file="./EXCEPTIONS-CONNECTOR-J"
- toDir="${mavenUploadDir}" />
-
- <jar jarfile="${distDir}/${fullProdName}.bundle.jar"
- basedir="${mavenUploadDir}" />
- </else>
- </if>
- </target>
-
- <target name="-make-packages" depends="dist">
- <property name="toPackage" value="${distDir}/toArchive"/>
- <property name="packageDest" value = "${toPackage}/${fullProdName}"/>
-
- <delete dir="${toPackage}" />
- <mkdir dir="${toPackage}"/>
- <mkdir dir="${packageDest}"/>
-
- <delete file="${distDir}/${fullProdName}.tar.gz"/>
-
- <patternset id="non.test.sources" >
- <exclude name="**/*.nb*"/>
- <exclude name="**/*.bak"/>
- <exclude name="**/*.*~"/>
- <exclude name="**/lib-nodist/*"/>
- <exclude name="**/lib-coverage/*"/>
- <exclude name="**/clover/*"/>
- <exclude name="**/checkstyle/*"/>
- <exclude name="**/.*"/>
- </patternset>
-
- <copy todir="${packageDest}">
- <fileset dir="${buildDir}/${fullProdName}"
- includes="debug/*, docs/**, *.jar" excludes="docs/sources">
- <patternset refid="non.test.sources"/>
- </fileset>
-
- <fileset dir="." includes="src/com/**, src/doc/**, src/lib/*, src/org/**, src/testsuite/**, build.xml, CHANGES, COPYING, EXCEPTIONS-CONNECTOR-J, README">
- <patternset refid="non.test.sources"/>
- </fileset>
- </copy>
-
- <!-- Fix CRLF for various platforms -->
- <copy file="${packageDest}/README" tofile="${packageDest}/README.txt"/>
- <copy file="${packageDest}/docs/README.txt" tofile="${packageDest}/docs/README"/>
-
- <!-- For Windows-y platforms -->
-
- <fixcrlf srcdir="${packageDest}"
- tab="remove" tablength="8"
- eol="crlf" includes="**/README.txt"/>
-
- <!-- For Unix-y platforms -->
-
- <fixcrlf srcdir="${packageDest}"
- tab="remove" tablength="8"
- eol="lf" includes="**/README"/>
-
- <if>
- <isset property="com.mysql.jdbc.commercialBuild"/>
- <then>
- <!-- These are the GPL and FLOSS exceptions. They don't get shipped with
- commercial builds -->
-
- <delete file="${packageDest}/COPYING"/>
- <delete file="${packageDest}/EXCEPTIONS-CONNECTOR-J"/>
-
- <!-- Pull in the commercial license itself -->
-
- <copy file="${sourceDir}/lib-nodist/LICENSE.mysql" toDir="${packageDest}"/>
-
- <loadfile property="commercialLicenseText"
- srcFile="${sourceDir}/lib-nodist/commercialLicense.txt"/>
- <replaceregexp
- match="Copyright.*1307.[^replaceregexp]*USA"
- replace="${commercialLicenseText}"
- flags="s">
- <fileset dir="${packageDest}" includes="**/*"/>
- </replaceregexp>
- </then>
- </if>
- </target>
-
- <target name="dist" depends="init, compile">
-
- <delete file="${buildDir}/${fullProdName}-bin.jar" />
- <delete file="${distDir}/${fullProdName}.jar" />
-
- <mkdir dir="${distDir}" />
- <mkdir dir="${buildDir}/META-INF" />
-
- <!-- JDBC-4.0 support of service provider mechanism -->
-
- <mkdir dir="${buildDir}/META-INF/services/" />
- <echo file="${buildDir}/META-INF/services/java.sql.Driver"
- message="com.mysql.jdbc.Driver" />
-
- <manifest file="${buildDir}/META-INF/MANIFEST.MF">
- <attribute name="Built-By" value="${user.name}" />
-
- <section name="common">
- <attribute name="Specification-Title" value="JDBC" />
- <!--
- <attribute name="Specification-Version" value="4.0" />
- -->
- <attribute name="Specification-Version" value="3.0" />
- <attribute name="Specification-Vendor" value="Sun Microsystems Inc." />
- <attribute name="Implementation-Title" value="MySQL Connector/J" />
- <attribute name="Implementation-Version" value="${full.version}" />
- <attribute name="Implementation-Vendor-Id" value="com.mysql" />
- <attribute name="Implementation-Vendor" value="MySQL AB" />
- </section>
- </manifest>
-
- <jar jarfile="${buildDir}/${fullProdName}/${fullProdName}-bin.jar"
- basedir="${buildDir}/${fullProdName}"
- includes="**/*.class,**/*.properties*,COPYING,README"
- excludes="testsuite/**"
- index="true"
- manifest="${buildDir}/META-INF/MANIFEST.MF"/>
- </target>
-
- <target name="-dist-trace" depends="init, compile-driver-trace">
-
- <delete file="${buildDir}/${fullProdName}-bin-g.jar"/>
-
- <mkdir dir="${distDir}" />
- <mkdir dir="${buildDir}/${fullProdName}/debug"/>
-
- <manifest file="${buildDir}/MANIFEST.MF">
- <attribute name="Built-By" value="${user.name}" />
-
- <section name="common">
- <attribute name="Specification-Title" value="JDBC" />
- <attribute name="Specification-Version" value="3.0" />
- <attribute name="Specification-Vendor" value="Sun Microsystems Inc." />
- <attribute name="Implementation-Title" value="MySQL Connector/J (trace/debug enabled)" />
- <attribute name="Implementation-Version" value="${full-version} (trace/debug-enabled)" />
- <attribute name="Implementation-Vendor" value="MySQL AB" />
- </section>
- </manifest>
-
- <jar jarfile="${buildDir}/${fullProdName}/debug/${fullProdName}-bin-g.jar"
- basedir="${buildDir}/${fullProdName}"
- includes="**/*.class,**/*.properties*,COPYING,README"
- excludes="testsuite/**"
- index="true"
- manifest="${buildDir}/MANIFEST.MF"
- />
- </target>
-
- <target name="-bundle-docs" depends="init">
- <copy file="${com.mysql.jdbc.docs.sourceDir}/en/html/connector-j.html"
- todir="${buildDir}/${fullProdName}/docs"
- failonerror="true"/>
- <copy file="${com.mysql.jdbc.docs.sourceDir}/en/pdf/connector-j.pdf"
- todir="${buildDir}/${fullProdName}/docs"
- failonerror="true"/>
- <copy file="${com.mysql.jdbc.docs.sourceDir}/en/txt/connector-j.txt"
- tofile="${buildDir}/${fullProdName}/docs/README.txt"
- failonerror="true"/>
- <copy todir="${buildDir}/${fullProdName}/docs/release-test-output" failonerror="false">
- <fileset dir="${com.mysql.jdbc.docs.sourceDir}/release-test-output" excludes="**/CVS">
- </fileset>
- </copy>
- </target>
-
- <target name="test-all-multi" depends="compile">
- <delete dir="${buildDir}/junit" />
- <antcall target="test-multijvm" />
- <antcall target="test-compliance-multijvm" />
-
- <fail message="Tests failed. Check logs and/or reports in ${buildDir}/junit."
- if="tests.compliance.failed"/>
- </target>
-
- <!-- Runs compliance testsuite against multiple JVMs and server configs -->
-
- <target name="test-multijvm" depends="compile">
- <for list="1,2,3,4,5,6,7,8" param="jvm.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
- <then>
- <for list="1,2,3,4,5,6,7,8" param="url.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.testsuite.url.@{url.number}"/>
- <then>
- <make-output-hier
- jdbcUrl="${com.mysql.jdbc.testsuite.url.@{url.number}}"
- junitOutput="${junit.results}"
- jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"
- unitOrCompliance="unit" />
-
- <property name="test.multi.junitOut.@{url.number}" value="eraseMe" />
- <var name="test.multi.junitOut.@{url.number}" unset="true" />
-
- <loadfile srcfile="${junit.results}/hier"
- property="test.multi.junitOut.@{url.number}" />
-
- <antcall target="test">
- <param name="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url.@{url.number}}" />
- <param name="test.result.prefix" value="/${test.multi.junitOut.@{url.number}}" />
- <param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
- </antcall>
- </then>
- </if>
- </sequential>
- </for>
- </then>
- </if>
- </sequential>
- </for>
- </target>
-
- <target name="-set-test-result-prefix" unless="${test.result.prefix}">
- <property name="test.result.prefix" value=""/>
- </target>
-
- <target name="test" depends="compile, -set-test-result-prefix">
- <property name="com.mysql.jdbc.testsuite.jvm" value="java"/>
- <mkdir dir="${junit.results}"/>
- <echo message="Running unit tests against ${com.mysql.jdbc.testsuite.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>
-
- <property name="junit.unitregress.results" value="${junit.results}/${test.result.prefix}/unitregress" />
-
- <mkdir dir="${junit.results}/${test.result.prefix}"/>
- <mkdir dir="${junit.unitregress.results}"/>
-
- <mkdir dir="${junit.unitregress.results}/report"/>
-
- <junit printSummary="yes"
- fork="on"
- forkmode="once"
- jvm="${com.mysql.jdbc.testsuite.jvm}"
- errorProperty="tests.failed"
- failureProperty="tests.failed">
- <jvmarg value="-Xmx128m" />
-
- <!-- For java.sql.SavePoint on old JVMs -->
-
- <jvmarg value="-Xverify:none" />
-
- <sysproperty key="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url}"/>
-
- <classpath>
- <fileset dir="${sourceDir}/lib-nodist">
- <include name="**/*.jar"/>
- </fileset>
- <fileset dir="${buildDir}/${fullProdName}/lib">
- <include name="**/*.jar"/>
- </fileset>
- <pathelement location="${buildDir}/${fullProdName}" />
- <pathelement path="${java.class.path}" />
- </classpath>
-
- <formatter type="xml"/>
-
- <batchtest todir="${junit.unitregress.results}" >
- <fileset dir="${buildDir}/${fullProdName}">
- <include name="**/*Test.java" />
- <exclude name="**/perf/*.java"/>
- </fileset>
- </batchtest>
- </junit>
-
- <junitreport todir="${junit.unitregress.results}/report">
- <fileset dir="${junit.unitregress.results}">
- <include name="**/TEST-*.xml"/>
- </fileset>
- <report format="frames" todir="${junit.unitregress.results}/report"/>
- </junitreport>
-
- <!-- Don't fail the build if we're doing multi-tests -->
- <if>
- <equals arg1="${test.result.prefix}" arg2="" />
- <then>
- <fail message="Tests failed. Check logs and/or reports in ${junit.results}." if="tests.failed"/>
- </then>
- <else>
- <echo message="Not checking test failures because we're doing a multi-test..." />
- </else>
- </if>
-
- </target>
-
- <!-- Runs compliance testsuite against multiple JVMs and server configs -->
-
- <target name="test-compliance-multijvm" depends="compile">
- <for list="1,2,3,4,5,6,7,8" param="jvm.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
- <then>
- <for list="1,2,3,4,5,6,7,8" param="url.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.compliance.url.@{url.number}"/>
- <then>
- <make-output-hier
- jdbcUrl="${com.mysql.jdbc.compliance.url.@{url.number}}"
- junitOutput="${junit.results}"
- jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"
- unitOrCompliance="compliance"/>
-
- <property name="test.compliance.multi.junitOut.@{url.number}" value="eraseMe" />
- <var name="test.compliance.multi.junitOut.@{url.number}" unset="true" />
-
- <loadfile srcfile="${junit.results}/hier" property="test.compliance.multi.junitOut.@{url.number}" />
-
- <antcall target="test-compliance">
- <param name="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url.@{url.number}}"/>
- <param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
- <param name="test.result.prefix" value="/${test.compliance.multi.junitOut.@{url.number}}"/>
- </antcall>
- </then>
- </if>
- </sequential>
- </for>
- </then>
- </if>
- </sequential>
- </for>
- </target>
-
- <!--
-
- Tests for JDBC compliance. The JDBC compliance testsuite
- is not shipped with MySQL Connector/J as it is not licensible
- except from Sun.
-
- The properties com.mysql.jdbc.compliance.url and
- jdbc-compliance-location must be set
- prior to running this test.
-
- -->
-
- <target name="test-compliance" depends="compile">
- <property name="com.mysql.jdbc.test.jvm" value="java"/>
- <mkdir dir="${junit.results}"/>
- <echo message="Running compliance tests against ${com.mysql.jdbc.compliance.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>
-
- <property name="junit.compliance.results"
- value="${junit.results}/${test.result.prefix}/compliance"/>
-
- <mkdir dir="${junit.results}/${test.result.prefix}"/>
- <mkdir dir="${junit.compliance.results}"/>
- <mkdir dir="${junit.compliance.results}/report"/>
-
- <junit fork="on" forkmode="once"
- printsummary="yes" jvm="${com.mysql.jdbc.testsuite.jvm}"
- errorProperty="tests.compliance.failed"
- failureProperty="tests.compliance.failed">
- <jvmarg value="-Xmx128m"/>
-
- <!-- For java.sql.SavePoint on old JVMs -->
-
- <jvmarg value="-Xverify:none"/>
-
- <sysproperty key="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url}"/>
-
- <classpath>
- <pathelement location="${buildDir}/${fullProdName}"/>
- <fileset dir="${sourceDir}/lib-nodist">
- <include name="**/*.jar"/>
- </fileset>
- <fileset dir="${buildDir}/${fullProdName}/lib">
- <include name="**/*.jar"/>
- </fileset>
- <pathelement path="${java.class.path}" />
- <pathelement location="${jdbc-compliance-location}"/>
- </classpath>
-
- <formatter type="xml"/>
-
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.BatchUpdateTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.ConnectionTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.DatabaseMetaDataTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.EscapeSyntaxTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.PreparedStatementTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.ResultSetMetadataTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.ResultSetTest"/>
- <test todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.StatementTest"/>
- </junit>
-
- <junitreport todir="${junit.compliance.results}/report">
- <fileset dir="${junit.compliance.results}">
- <include name="**/TEST-*.xml"/>
- </fileset>
- <report format="frames" todir="${junit.compliance.results}/report"/>
- </junitreport>
-
- <!-- Don't fail the build if we're doing multi-tests -->
- <if>
- <equals arg1="${test.result.prefix}" arg2="" />
- <then>
- <fail message="Tests failed. Check logs and/or reports in ${junit.compliance.results}." if="tests.compliance.failed"/>
- </then>
- <else>
- <echo message="Not checking test failures because we're doing a multi-test..." />
- </else>
- </if>
-
- </target>
-
-
- <target name="compile" depends="init, compile-driver, compile.integration">
- </target>
-
- <target name="compile-trace" depends="init, compile-driver-trace">
- </target>
-
- <!-- Compiles the driver itself -->
-
- <target name="compile-driver" depends="compile-driver-jdbc3" />
-
- <target name="compile-driver-jdbc3" depends="init, -clean-output">
- <javac sourcepath="" srcdir="${buildDir}/${fullProdName}"
- destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}">
- <include name="**/*.java" />
- <exclude name="testsuite/**" />
- <exclude name="com/mysql/jdbc/integration/**" />
- <exclude name="com/mysql/jdbc/log/Log4JLogger.java" />
- <exclude name="**/JDBC4*.java" />
- <exclude name="com/mysql/jdbc/exceptions/jdbc4/*" />
-
- <classpath refid="project.build.classpath" />
- </javac>
- </target>
-
- <target name="compile-driver-jdbc4" depends="compile-driver-jdbc3">
-
- <javac destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}"
- fork="yes"
- executable="${com.mysql.jdbc.java6.javac}"
- compiler="modern"
- source="1.5"
- target="1.5"
- sourcepath="" srcdir="${buildDir}/${fullProdName}"
- bootclasspath="${com.mysql.jdbc.java6.rtjar}">
- <include name="**/JDBC4*.java" />
- <include name="com/mysql/jdbc/exceptions/jdbc4/*" />
-
- <classpath refid="project.build.classpath" />
- </javac>
-
- </target>
-
- <!-- Compiles a version of the driver with AspectJ tracing -->
-
- <target name="compile-driver-trace" depends="init">
- <taskdef
- resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
- <classpath>
- <pathelement location="${sourceDir}/lib/aspectjtools.jar"/>
- </classpath>
- </taskdef>
-
-
- <iajc destdir="${compiler.output}">
- <sourceroots>
- <pathelement location="${buildDir}/${fullProdName}/org"/>
- <pathelement location="${buildDir}/${fullProdName}/com"/>
- </sourceroots>
- <classpath refid="project.build.classpath"/>
- <classpath>
- <pathelement location="${sourceDir}/lib/aspectjtools.jar"/>
- </classpath>
- </iajc>
- </target>
-
- <!-- Compiles integration 'helpers' for third-party software -->
- <target name="compile.integration"
- depends="compile-driver,
- compile-integration-c3p0,
- compile-integration-jboss,
- compile-integration-log4j"/>
-
- <target name="compile-integration-c3p0"
- depends="compile-driver"
- if="com.mysql.jdbc.c3p0Present">
- <javac srcdir="${buildDir}/${fullProdName}"
- destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}"
- includes="com/mysql/jdbc/integration/c3p0/**">
- <classpath refid="project.build.classpath" />
- </javac>
- </target>
-
- <target name="compile-integration-jboss"
- depends="compile-driver"
- if="com.mysql.jdbc.jbossPresent">
- <javac srcdir="${buildDir}/${fullProdName}"
- destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}"
- includes="com/mysql/jdbc/integration/jboss/**">
- <classpath refid="project.build.classpath" />
- </javac>
- </target>
-
- <target name="compile-integration-log4j"
- depends="compile-driver"
- if="com.mysql.jdbc.log4jPresent">
- <javac srcdir="${buildDir}/${fullProdName}"
- destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}"
- includes="com/mysql/jdbc/log/Log4JLogger.java">
- <classpath refid="project.build.classpath" />
- </javac>
- </target>
-
- <!-- Compiles the JUnit testsuite -->
-
- <target name="compile-testsuite" depends="init, compile-driver">
- <javac
- srcdir="${buildDir}/${fullProdName}"
- destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}"
- includes="testsuite/**"
- excludes="testsuite/requiresNonRedists/**, testsuite/**/jdbc4/**">
- <classpath refid="project.build.classpath"/>
- </javac>
-
- <javac destdir="${compiler.output}"
- deprecation="off"
- debug="${debug.enable}"
- fork="yes"
- executable="${com.mysql.jdbc.java6.javac}"
- compiler="modern"
- sourcepath="" srcdir="${buildDir}/${fullProdName}"
- bootclasspath="${com.mysql.jdbc.java6.rtjar}">
- <include name="testsuite/**/jdbc4/**" />
-
- <classpath refid="project.build.classpath" />
- </javac>
- </target>
-
- <target name="real-clean">
- <delete dir="${buildDir}"/>
- <delete>
- <fileset dir="${distDir}"
- includes="${fullProdName}.zip,${fullProdName}.tar.gz"/>
- </delete>
- </target>
-
- <target name="clean" unless="com.mysql.jdbc.noCleanBetweenCompiles">
- <delete dir="${buildDir}"/>
- </target>
-
- <target name="-clean-output" unless="com.mysql.jdbc.noCleanBetweenCompiles">
- <delete>
- <fileset dir="${buildDir}"
- includes="**/*.class"/>
- </delete>
- </target>
-
- <target name="docs-generate-dynamic-docs"
- depends="docs-generate-properties-table, docs-generate-error-mapping-table"/>
-
- <target name="docs-generate-properties-table" depends="compile-driver">
- <tempfile property="properties-xml" suffix=".xml" />
-
- <java classname="com.mysql.jdbc.util.PropertiesDocGenerator"
- output="${properties-xml}" classpath="${buildDir}/${fullProdName}"/>
- <tempfile property="docsPropXslTempfile" suffix="xsl"/>
- <copy file="${buildDir}/${fullProdName}/doc/sources/connPropsToDocbook.xsl" tofile="${docsPropXslTempfile}"/>
-
- <style in="${properties-xml}" style="${docsPropXslTempfile}"
- out="${buildDir}/${fullProdName}/docs/sources/connPropsDocBook.xml"/>
- <delete file="${properties-xml}"/>
- <delete file="${docsPropXslTempfile}"/>
- </target>
-
- <target name="docs-generate-error-mapping-table" depends="compile-driver">
- <tempfile property="errorsMapping-xml" suffix=".xml" />
-
- <java classname="com.mysql.jdbc.util.ErrorMappingsDocGenerator"
- output="${errorsMapping-xml}" classpath="${buildDir}/${fullProdName}"/>
- <tempfile property="docsErrorXslTempfile" suffix="xsl"/>
- <copy file="${buildDir}/${fullProdName}/doc/sources/errorMapToDocbook.xsl" tofile="${docsErrorXslTempfile}"/>
-
- <style in="${errorsMapping-xml}" style="${docsErrorXslTempfile}"
- out="${buildDir}/${fullProdName}/docs/sources/errorMappingDocBook.xml"/>
- <delete file="${docsErrorXslTempfile}"/>
- </target>
-
- <!--
- Targets below this point are for code coverage and depend on
- the 'Emma' project which you can download from
- http://emma.sourceforge.net/
- -->
-
- <target name="emma" description="turns on EMMA instrumentation/reporting" >
- <!-- directory that contains emma.jar and emma_ant.jar: -->
- <property name="emma.dir" value="${sourceDir}/lib-coverage" />
-
- <path id="emma.lib" >
- <pathelement location="${emma.dir}/emma.jar" />
- <pathelement location="${emma.dir}/emma_ant.jar" />
- </path>
-
- <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
-
- <property name="emma.enabled" value="true" />
- <property name="emma.coverage.dir" value="${buildDir}/${fullProdName}-coverage" />
- </target>
-
- <target name="instrument" depends="init, compile"
- description="runs the examples" >
-
- <emma enabled="${emma.enabled}" >
- <instr instrpathref="built.driver.only.classpath"
- destdir="${compiler.output}"
- metadatafile="${emma.coverage.dir}/metadata.emma"
- merge="true"
- mode="overwrite">
- <filter excludes="*Test*" />
- <filter excludes="org.junit.*" />
- </instr>
- </emma>
-
- </target>
-
- <target name="test-emma-report" depends="test-coverage, test-coverage-compliance">
- <emma enabled="${emma.enabled}" >
- <report sourcepath="${buildDir}/${fullProdName}" >
- <fileset dir="${emma.coverage.dir}" >
- <include name="*.emma" />
- </fileset>
-
- <txt outfile="${emma.coverage.dir}/coverage.txt" />
- <html outfile="${emma.coverage.dir}/coverage.html" />
- </report>
- </emma>
- </target>
-
- <target name="test-coverage-all-report" depends="test-coverage-multijvm, test-coverage-compliance-multijvm">
- <emma enabled="${emma.enabled}" >
- <report sourcepath="${buildDir}/${fullProdName}" >
- <fileset dir="${emma.coverage.dir}" >
- <include name="*.emma" />
- </fileset>
-
- <txt outfile="${emma.coverage.dir}/coverage.txt" />
- <html outfile="${emma.coverage.dir}/coverage.html" />
- </report>
- </emma>
- </target>
-
-
- <target name="test-coverage" depends="instrument">
- <property name="com.mysql.jdbc.testsuite.jvm" value="java"/>
- <mkdir dir="${junit.results}"/>
- <echo message="Running unit tests against ${com.mysql.jdbc.testsuite.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>
-
- <property name="junit.unitregress.results" value="${junit.results}/${test.result.prefix}/unitregress" />
-
- <mkdir dir="${junit.results}/${test.result.prefix}"/>
- <mkdir dir="${junit.unitregress.results}"/>
-
- <mkdir dir="${junit.unitregress.results}/report"/>
-
- <junit printSummary="yes" fork="on" jvm="${com.mysql.jdbc.testsuite.jvm}">
- <jvmarg value="-Xmx128m" />
- <jvmarg value="-Xverify:none" />
- <!-- For java.sql.SavePoint on old JVMs -->
- <jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
- <jvmarg value="-Demma.coverage.out.merge=true" />
- <sysproperty key="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url}"/>
- <classpath>
- <fileset dir="${sourceDir}/lib-nodist">
- <include name="**/*.jar"/>
- </fileset>
- <fileset dir="${buildDir}/${fullProdName}/lib">
- <include name="**/*.jar"/>
- </fileset>
- <pathelement location="${buildDir}/${fullProdName}" />
- <pathelement path="${java.class.path}" />
- <pathelement location="${emma.dir}/emma.jar" />
- <pathelement location="${emma.dir}/emma_ant.jar" />
- </classpath>
-
- <formatter type="xml"/>
-
- <batchtest fork="yes" todir="${junit.unitregress.results}">
- <fileset dir="${buildDir}/${fullProdName}">
- <include name="**/*Test.java" />
- <exclude name="**/perf/*.java"/>
- </fileset>
- </batchtest>
- </junit>
-
-
- <junitreport todir="${junit.unitregress.results}/report">
- <fileset dir="${junit.unitregress.results}">
- <include name="**/TEST-*.xml"/>
- </fileset>
- <report format="frames" todir="${junit.unitregress.results}/report"/>
- </junitreport>
- </target>
-
- <target name="test-coverage-compliance" depends="instrument">
- <property name="com.mysql.jdbc.test.jvm" value="java"/>
- <mkdir dir="${junit.results}"/>
- <echo message="Running compliance tests against ${com.mysql.jdbc.compliance.url} with jvm ${com.mysql.jdbc.testsuite.jvm}"/>
-
- <property name="junit.compliance.results"
- value="${junit.results}/${test.result.prefix}/compliance"/>
-
- <mkdir dir="${junit.results}/${test.result.prefix}"/>
- <mkdir dir="${junit.compliance.results}"/>
- <mkdir dir="${junit.compliance.results}/report"/>
-
- <junit printsummary="yes" jvm="${com.mysql.jdbc.testsuite.jvm}">
- <jvmarg value="-Xmx128m"/>
- <jvmarg value="-Xverify:none"/>
- <!-- For java.sql.SavePoint on old JVMs -->
- <jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
- <jvmarg value="-Demma.coverage.out.merge=true" />
- <sysproperty key="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url}"/>
- <classpath>
- <pathelement location="${buildDir}/${fullProdName}"/>
- <fileset dir="${sourceDir}/lib-nodist">
- <include name="**/*.jar"/>
- </fileset>
- <fileset dir="${buildDir}/${fullProdName}/lib">
- <include name="**/*.jar"/>
- </fileset>
- <pathelement path="${java.class.path}" />
- <pathelement location="${jdbc-compliance-location}"/>
- <pathelement location="${emma.dir}/emma.jar" />
- <pathelement location="${emma.dir}/emma_ant.jar" />
- </classpath>
-
- <formatter type="xml"/>
-
-
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.BatchUpdateTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.ConnectionTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.DatabaseMetaDataTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.EscapeSyntaxTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.PreparedStatementTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.ResultSetMetadataTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.ResultSetTest"/>
- <test fork="yes" todir="${junit.compliance.results}"
- name="com.mysql.jdbc.compliance.tests.StatementTest"/>
- </junit>
-
- <junitreport todir="${junit.compliance.results}/report">
- <fileset dir="${junit.compliance.results}">
- <include name="**/TEST-*.xml"/>
- </fileset>
- <report format="frames" todir="${junit.compliance.results}/report"/>
- </junitreport>
- </target>
-
- <!-- Makes output directory hierarchy based on MySQL server version,
- os information and jvm version -->
-
- <macrodef name="make-output-hier">
- <attribute name="jvm" />
- <attribute name="jdbcUrl" />
- <attribute name="unitOrCompliance" />
- <attribute name="junitOutput" />
- <sequential>
- <java fork="true" jvm="@{jvm}" classname="com.mysql.jdbc.util.VersionFSHierarchyMaker">
-
- <jvmarg value="-Xmx128m" />
- <jvmarg value="-Xverify:none" />
- <!-- For java.sql.SavePoint on old JVMs -->
- <jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
- <jvmarg value="-Demma.coverage.out.merge=true" />
-
- <sysproperty key="com.mysql.jdbc.testsuite.url" value="@{jdbcUrl}" />
-
- <classpath>
- <fileset dir="${sourceDir}/lib-nodist">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${buildDir}/${fullProdName}/lib">
- <include name="**/*.jar" />
- </fileset>
- <pathelement location="${buildDir}/${fullProdName}" />
- <pathelement path="${java.class.path}" />
- <pathelement location="${emma.dir}/emma.jar" />
- <pathelement location="${emma.dir}/emma_ant.jar" />
- </classpath>
- <arg line="@{unitOrCompliance} @{junitOutput} @{junitOutput}/hier" />
- </java>
- </sequential>
- </macrodef>
-
- <!-- Runs compliance testsuite against multiple JVMs and
- server configs, and produces coverage reports -->
-
- <target name="test-coverage-multijvm" depends="instrument">
- <for list="1,2,3,4,5,6,7,8" param="jvm.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
- <then>
- <for list="1,2,3,4,5,6,7,8" param="url.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.testsuite.url.@{url.number}"/>
- <then>
- <make-output-hier
- jdbcUrl="${com.mysql.jdbc.testsuite.url.@{url.number}}"
- junitOutput="${junit.results}"
- jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"
- unitOrCompliance="unit" />
-
- <property name="test.coverage.multi.junitOut.@{url.number}" value="eraseMe" />
- <var name="test.coverage.multi.junitOut.@{url.number}" unset="true" />
-
- <loadfile srcfile="${junit.results}/hier"
- property="test.coverage.multi.junitOut.@{url.number}" />
-
- <antcall target="test-coverage">
- <param name="com.mysql.jdbc.testsuite.url" value="${com.mysql.jdbc.testsuite.url.@{url.number}}" />
- <param name="test.result.prefix" value="/${test.coverage.multi.junitOut.@{url.number}}" />
- <param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
- </antcall>
- </then>
- </if>
- </sequential>
- </for>
- </then>
- </if>
- </sequential>
- </for>
- </target>
-
- <!-- Runs compliance testsuite against multiple JVMs and server configs, collecting
- coverage data -->
-
- <target name="test-coverage-compliance-multijvm" depends="instrument">
- <for list="1,2,3,4,5,6,7,8" param="jvm.number" xmlns:ac="antlib:net.sf.antcontrib">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.testsuite.jvm.@{jvm.number}"/>
- <then>
- <for list="1,2,3,4,5,6,7,8" param="url.number">
- <sequential>
- <if>
- <isset property="com.mysql.jdbc.compliance.url.@{url.number}"/>
- <then>
- <make-output-hier
- jdbcUrl="${com.mysql.jdbc.compliance.url.@{url.number}}"
- junitOutput="${junit.results}"
- jvm="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"
- unitOrCompliance="compliance"/>
-
- <property name="test.coverage.compliance.multi.junitOut.@{url.number}" value="eraseMe" />
- <var name="test.coverage.compliance.multi.junitOut.@{url.number}" unset="true" />
-
- <loadfile srcfile="${junit.results}/hier" property="test.coverage.compliance.multi.junitOut.@{url.number}" />
-
- <antcall target="test-coverage-compliance">
- <param name="com.mysql.jdbc.compliance.url" value="${com.mysql.jdbc.compliance.url.@{url.number}}"/>
- <param name="com.mysql.jdbc.testsuite.jvm" value="${com.mysql.jdbc.testsuite.jvm.@{jvm.number}}"/>
- <param name="test.result.prefix" value="/${test.coverage.compliance.multi.junitOut.@{url.number}}"/>
- </antcall>
- </then>
- </if>
- </sequential>
- </for>
- </then>
- </if>
- </sequential>
- </for>
- </target>
-</project>
Property changes on: trunk/mysql-connector-java/debian
___________________________________________________________________
Added: mergeWithUpstream
+ 1
Modified: trunk/mysql-connector-java/debian/rules
===================================================================
--- trunk/mysql-connector-java/debian/rules 2011-08-25 05:27:05 UTC (rev 14475)
+++ trunk/mysql-connector-java/debian/rules 2011-08-25 06:58:31 UTC (rev 14476)
@@ -21,3 +21,6 @@
clean::
rm -rf dist
rm -f build-stamp
+
+get-orig-source:
+ uscan --download-version $(DEB_UPSTREAM_VERSION) --force-download
More information about the pkg-java-commits
mailing list