Added:
branches/branch_5_1/connector-j/src/com/mysql/jdbc/PingTarget.java
Modified:
branches/branch_5_1/
branches/branch_5_1/connector-j/CHANGES
branches/branch_5_1/connector-j/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java
branches/branch_5_1/connector-j/src/com/mysql/jdbc/PreparedStatement.java
branches/branch_5_1/connector-j/src/com/mysql/jdbc/ReplicationConnection.java
branches/branch_5_1/connector-j/src/com/mysql/jdbc/Statement.java
branches/branch_5_1/connector-j/src/com/mysql/jdbc/StatementImpl.java
branches/branch_5_1/connector-j/src/testsuite/regression/ConnectionRegressionTest.java
branches/branch_5_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java
Log:
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6537,6539-6540,6543-6545,6547,6549-6550,6552-6555,6557-6564,6566-6571
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
...............
r6567 | mmatthews | 2007-09-06 10:12:14 -0500 (Thu, 06 Sep 2007) | 1032 lines
Merged revisions 6518-6543,6545-6566 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
................
r6518 | mmatthews | 2007-08-29 11:21:16 -0500 (Wed, 29 Aug 2007) | 1 line
Updated changelogs for bug 30550.
................
r6524 | mmatthews | 2007-08-29 12:01:19 -0500 (Wed, 29 Aug 2007) | 1 line
Updated/added copyright headers.
................
r6526 | mmatthews | 2007-08-29 12:49:17 -0500 (Wed, 29 Aug 2007) | 45 lines
Merged revisions 6523-6525 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6523 | mmatthews | 2007-08-29 12:00:31 -0500 (Wed, 29 Aug 2007) | 27 lines
Merged revisions 6512-6521 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6521 | mmatthews | 2007-08-29 11:36:56 -0500 (Wed, 29 Aug 2007) | 10 lines
- 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?
........
................
r6525 | mmatthews | 2007-08-29 12:08:25 -0500 (Wed, 29 Aug 2007) | 9 lines
Merged revisions 6522-6524 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6522 | mmatthews | 2007-08-29 11:59:18 -0500 (Wed, 29 Aug 2007) | 1 line
Make functionsNeverReturnBlobs accessors public.
........
................
................
r6527 | mmatthews | 2007-08-29 12:54:37 -0500 (Wed, 29 Aug 2007) | 683 lines
Blocked revisions
6397,6403-6404,6408-6413,6474,6476,6478-6479,6481-6482,6487-6488,6493-6495,6501-6508,6512,6514-6516,6519-6520
via svnmerge
................
r6397 | mmatthews | 2007-04-11 00:11:41 -0500 (Wed, 11 Apr 2007) | 1 line
Bumped version #.
................
r6403 | mmatthews | 2007-04-20 16:02:26 -0500 (Fri, 20 Apr 2007) | 1 line
Share project 'jdbc-4-0-examples' into
'svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j'
................
r6404 | mmatthews | 2007-04-20 16:03:18 -0500 (Fri, 20 Apr 2007) | 1 line
Imported into SVN.
................
r6408 | mmatthews | 2007-04-23 16:54:31 -0500 (Mon, 23 Apr 2007) | 1 line
Added copyright notices, more comments.
................
r6409 | mmatthews | 2007-04-23 18:38:32 -0500 (Mon, 23 Apr 2007) | 1 line
Write out the "planet" as an HTML page, added BareBonesBrowserLaunch to
automatically launch the resultant page in a browser.
................
r6410 | mmatthews | 2007-04-23 18:41:29 -0500 (Mon, 23 Apr 2007) | 1 line
Changed formatting for display on projection screens.
................
r6411 | mmatthews | 2007-04-24 13:32:36 -0500 (Tue, 24 Apr 2007) | 1 line
Removed tests (not examples) that didn't belong in this project.
................
r6412 | mmatthews | 2007-04-24 13:35:02 -0500 (Tue, 24 Apr 2007) | 1 line
Removed empty directory.
................
r6413 | mmatthews | 2007-04-24 16:03:27 -0500 (Tue, 24 Apr 2007) | 1 line
(should've switched to resource view in Eclipse to delete the parent directory)
................
r6474 | mmatthews | 2007-07-03 20:18:25 -0500 (Tue, 03 Jul 2007) | 1 line
Merged 5.1 back into trunk, new development for 6.0 starts here.
................
r6476 | mmatthews | 2007-07-03 20:28:06 -0500 (Tue, 03 Jul 2007) | 1 line
Setup svnmerge properties
................
r6478 | mmatthews | 2007-07-03 20:58:07 -0500 (Tue, 03 Jul 2007) | 1 line
svnmerge init for merge-back from 5.1 branch
................
r6479 | mmatthews | 2007-07-03 20:59:06 -0500 (Tue, 03 Jul 2007) | 1 line
svnmerge init for merge-back from 5.0 branch
................
r6481 | mmatthews | 2007-07-04 01:05:29 -0500 (Wed, 04 Jul 2007) | 1 line
Syncing pre-merge data
................
r6482 | mmatthews | 2007-07-05 14:01:07 -0500 (Thu, 05 Jul 2007) | 1 line
Merged from 5.1.
................
r6487 | mmatthews | 2007-07-17 22:34:57 -0500 (Tue, 17 Jul 2007) | 1 line
Merges from 5.0.
................
r6488 | mmatthews | 2007-07-17 22:40:05 -0500 (Tue, 17 Jul 2007) | 1 line
Fixed typo in bug#.
................
r6493 | mmatthews | 2007-07-18 16:17:46 -0500 (Wed, 18 Jul 2007) | 1 line
Don't create Maven bundles for commercial builds. They're not needed.
................
r6494 | mmatthews | 2007-08-08 20:59:55 -0500 (Wed, 08 Aug 2007) | 23 lines
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().
................
r6495 | mmatthews | 2007-08-13 15:22:27 -0500 (Mon, 13 Aug 2007) | 4 lines
- 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.
................
r6501 | mmatthews | 2007-08-29 09:51:56 -0500 (Wed, 29 Aug 2007) | 3 lines
Initialized merge tracking via "svnmerge" with revisions "1-6500" from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1/connector-j
................
r6502 | mmatthews | 2007-08-29 09:52:40 -0500 (Wed, 29 Aug 2007) | 1 line
Shouldn't check-in svnmerge-commit-message.txt.
................
r6503 | mmatthews | 2007-08-29 09:56:14 -0500 (Wed, 29 Aug 2007) | 3 lines
Initialized merge tracking via "svnmerge" with revisions "1-6392" from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
................
r6504 | mmatthews | 2007-08-29 09:56:48 -0500 (Wed, 29 Aug 2007) | 3 lines
Initialized merge tracking via "svnmerge" with revisions "1-6503" from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
................
r6505 | mmatthews | 2007-08-29 10:02:40 -0500 (Wed, 29 Aug 2007) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
................
r6506 | mmatthews | 2007-08-29 10:03:00 -0500 (Wed, 29 Aug 2007) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
................
r6507 | mmatthews | 2007-08-29 10:03:25 -0500 (Wed, 29 Aug 2007) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1/connector-j
................
r6508 | mmatthews | 2007-08-29 10:03:56 -0500 (Wed, 29 Aug 2007) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0/connector-j
................
r6512 | mmatthews | 2007-08-29 10:15:22 -0500 (Wed, 29 Aug 2007) | 3 lines
Initialized merge tracking via "svnmerge" with revisions "1-6511" from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
................
r6514 | mmatthews | 2007-08-29 10:25:22 -0500 (Wed, 29 Aug 2007) | 3 lines
Initialized merge tracking via "svnmerge" with revisions "1-6393" from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
................
r6515 | mmatthews | 2007-08-29 10:55:57 -0500 (Wed, 29 Aug 2007) | 501 lines
Merged revisions 6394-6514 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
........
r6394 | mmatthews | 2007-04-10 15:45:03 -0500 (Tue, 10 Apr 2007) | 3 lines
- Fixed issue where calling getGeneratedKeys() on a prepared statement after
calling execute() didn't always return the generated keys (executeUpdate()
worked fine however).
........
r6396 | mmatthews | 2007-04-11 00:10:44 -0500 (Wed, 11 Apr 2007) | 1 line
Bumped version #.
........
r6398 | mmatthews | 2007-04-17 14:28:20 -0500 (Tue, 17 Apr 2007) | 16 lines
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.
........
r6399 | mmatthews | 2007-04-17 14:31:27 -0500 (Tue, 17 Apr 2007) | 1 line
Sync'd up with repository.
........
r6400 | mmatthews | 2007-04-17 15:40:31 -0500 (Tue, 17 Apr 2007) | 1 line
Switch to ConnectionImpl in a couple of places. Character sets for some DBMD is
busted in 5.0 too, so put the check for server > 5.2.
........
r6401 | mmatthews | 2007-04-18 14:23:16 -0500 (Wed, 18 Apr 2007) | 4 lines
- 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".
........
r6402 | mmatthews | 2007-04-18 14:38:48 -0500 (Wed, 18 Apr 2007) | 7 lines
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.
........
r6406 | mmatthews | 2007-04-21 21:14:34 -0500 (Sat, 21 Apr 2007) | 1 line
Support for unwrapping on statements, prepared statements.
........
r6407 | mmatthews | 2007-04-23 16:40:24 -0500 (Mon, 23 Apr 2007) | 1 line
Refactored wrapper.unwrap() and some various isWrapperFor() classes for clarity.
........
r6414 | mmatthews | 2007-05-02 13:55:06 -0500 (Wed, 02 May 2007) | 16 lines
- 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 -- contributed under CLA#43).
- 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.
........
r6415 | mmatthews | 2007-05-03 21:18:33 -0500 (Thu, 03 May 2007) | 37 lines
- 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.
- 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.
........
r6416 | mmatthews | 2007-05-04 12:38:32 -0500 (Fri, 04 May 2007) | 1 line
"beginningOfSlashes" used to mean "end", now it really means "beginning", so we
have to adjust where we look for the hostname.
........
r6417 | mmatthews | 2007-05-04 13:41:42 -0500 (Fri, 04 May 2007) | 8 lines
- 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.
........
r6418 | mmatthews | 2007-05-09 18:12:08 -0500 (Wed, 09 May 2007) | 1 line
Remove JDK-1.5+-only constructs.
........
r6420 | mmatthews | 2007-05-09 19:53:29 -0500 (Wed, 09 May 2007) | 1 line
Remove auto-added import (by Eclipse), removed JDK-1.5+-only constructs.
........
r6422 | mmatthews | 2007-05-10 15:32:52 -0500 (Thu, 10 May 2007) | 1 line
Updated release date for 5.0.6.
........
r6424 | mmatthews | 2007-05-11 16:20:14 -0500 (Fri, 11 May 2007) | 1 line
Implement some missing JDBC-4.0 functionality, push non-Java-6-specific code back
into DatabaseMetadata.
........
r6425 | mmatthews | 2007-05-11 18:23:05 -0500 (Fri, 11 May 2007) | 1 line
Fleshed out serializeAsCharacterStream() and serializeAsString() methods to
support all result implementations (SAX, StAX, DOM and Stream)
........
r6426 | mmatthews | 2007-05-14 14:08:11 -0500 (Mon, 14 May 2007) | 1 line
Use testsuite statement instance for "KILL"s, makes testFailoverReadonly more
robust, less influence by timing factors.
........
r6427 | mmatthews | 2007-05-14 14:33:48 -0500 (Mon, 14 May 2007) | 1 line
JDK-1.3.1 doesn't have DST patches, so don't try testBug3620() in that
environment.
........
r6429 | mmatthews | 2007-05-15 22:31:15 -0500 (Tue, 15 May 2007) | 9 lines
nn-nn-07 - Version 5.0.7
- The configuration "useCursorFetch" (for MySQL-5.0+, which enables
the use of cursors that allow Connector/J to save memory by fetching
result set rows in chunks, set by Statement.setFetchSize() by using
fully-materialized cursors on the server) will now automatically
set "useServerPrepStmts" to "true" when it has been set to "true",
since it requires server-side prepared statements in order to
function correctly.
........
r6430 | mmatthews | 2007-05-16 16:33:00 -0500 (Wed, 16 May 2007) | 4 lines
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.
........
r6431 | mmatthews | 2007-05-16 16:40:02 -0500 (Wed, 16 May 2007) | 1 line
Implemented free().
........
r6433 | mmatthews | 2007-05-18 13:38:56 -0500 (Fri, 18 May 2007) | 17 lines
- 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).
........
r6434 | mmatthews | 2007-05-18 13:48:07 -0500 (Fri, 18 May 2007) | 19 lines
- 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.
........
r6435 | mmatthews | 2007-05-18 13:56:46 -0500 (Fri, 18 May 2007) | 1 line
First cut at statement interceptors, need to make them pluggable, and provide
something other than a "null" example (caching, "SHOW profile" or "SHOW STATUS" diffs
perhaps?)
........
r6436 | mmatthews | 2007-05-23 17:43:02 -0500 (Wed, 23 May 2007) | 1 line
Append space after table name if whereClause is specified or non-null in
getSingleValue().
........
r6437 | mmatthews | 2007-05-24 15:17:01 -0500 (Thu, 24 May 2007) | 7 lines
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, the API is still open to being modified).
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.
........
r6438 | mmatthews | 2007-05-25 15:16:06 -0500 (Fri, 25 May 2007) | 1 line
Fix issue with parsing /* ... */ comments that occur at end-of-line.
........
r6439 | mmatthews | 2007-05-25 15:39:18 -0500 (Fri, 25 May 2007) | 4 lines
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).
Removed a couple of extra byte[] allocations when reading the packet header for
split packets (we can reuse the existing buffer for these).
........
r6440 | mmatthews | 2007-05-30 12:27:36 -0500 (Wed, 30 May 2007) | 1 line
Pickup the thread ID immediately after successful handshake, rather than waiting
for initialization of server variables (to make debugging/tracing more correct).
........
r6441 | mmatthews | 2007-06-04 14:18:23 -0500 (Mon, 04 Jun 2007) | 5 lines
- 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).
........
r6442 | mmatthews | 2007-06-05 12:56:41 -0500 (Tue, 05 Jun 2007) | 1 line
Externalized the descriptions of connection properties.
........
r6443 | mmatthews | 2007-06-06 11:23:46 -0500 (Wed, 06 Jun 2007) | 1 line
Added target to generate error mapping and connection properties docs in one go.
........
r6444 | mmatthews | 2007-06-06 14:16:30 -0500 (Wed, 06 Jun 2007) | 4 lines
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.
........
r6445 | mmatthews | 2007-06-07 10:25:59 -0500 (Thu, 07 Jun 2007) | 5 lines
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.
(tbd: deal with dates/times efficiently, timestamps already covered).
........
r6446 | mmatthews | 2007-06-07 10:30:07 -0500 (Thu, 07 Jun 2007) | 1 line
Made it possible to retrieve prepared statement parameter bindings (to be used in
StatementInterceptors, primarily).
........
r6447 | mmatthews | 2007-06-07 10:37:52 -0500 (Thu, 07 Jun 2007) | 1 line
Tests for PreparedStatementBindings
........
r6448 | mmatthews | 2007-06-07 10:40:36 -0500 (Thu, 07 Jun 2007) | 1 line
Updated changelog to reflect RowHolder refactoring, and PreparedStatementBindings
implementation.
........
r6449 | mmatthews | 2007-06-14 11:11:19 -0500 (Thu, 14 Jun 2007) | 3 lines
Implementations of all "complex" types for result sets now represented in
RowHolders.
Added "direct" row unpack (bypassing packet code) in MysqlIO.nextRow(), 2x speedup
for this method (doesn't equate to 2x speedup in the driver, but there is a performance
increase of around 5-10% for most use cases).
........
r6450 | mmatthews | 2007-06-14 20:10:23 -0500 (Thu, 14 Jun 2007) | 3 lines
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.
........
r6451 | mmatthews | 2007-06-14 20:24:27 -0500 (Thu, 14 Jun 2007) | 5 lines
Some renames around the Row(Holder) classes.
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.
........
r6452 | mmatthews | 2007-06-14 20:25:41 -0500 (Thu, 14 Jun 2007) | 1 line
Updated to reflect streams and row navigation, and notice of rewriteBatch for
CallableStatement.
........
r6453 | mmatthews | 2007-06-21 11:56:08 -0500 (Thu, 21 Jun 2007) | 4 lines
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".
........
r6454 | mmatthews | 2007-06-21 12:03:53 -0500 (Thu, 21 Jun 2007) | 7 lines
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.
........
r6455 | mmatthews | 2007-06-21 12:06:17 -0500 (Thu, 21 Jun 2007) | 1 line
Removed spurious printStackTrace().
........
r6456 | mmatthews | 2007-06-21 12:07:10 -0500 (Thu, 21 Jun 2007) | 1 line
Added "alpha" flag to version.
........
r6457 | mmatthews | 2007-06-21 13:47:21 -0500 (Thu, 21 Jun 2007) | 1 line
5.0 server required for this test.
........
r6458 | mmatthews | 2007-06-21 14:09:42 -0500 (Thu, 21 Jun 2007) | 1 line
Removed non-bug test.
........
r6459 | mmatthews | 2007-06-22 08:53:18 -0500 (Fri, 22 Jun 2007) | 1 line
Added 5.1.1 release date. Updated changelog notes.
........
r6464 | mmatthews | 2007-06-22 09:41:18 -0500 (Fri, 22 Jun 2007) | 1 line
Fixed up substitutions in connection properties messages.
........
r6466 | mmatthews | 2007-06-22 10:53:55 -0500 (Fri, 22 Jun 2007) | 1 line
Fixed alpha specifier.
........
r6469 | mmatthews | 2007-06-24 20:39:41 -0500 (Sun, 24 Jun 2007) | 1 line
bumped version # and release status.
........
r6471 | mmatthews | 2007-06-28 11:18:10 -0500 (Thu, 28 Jun 2007) | 7 lines
- Fixed BUG#28851 - parser in client-side prepared statements
eats character following '/' if it's not a multi-line comment.
- Fixed BUG#28596 - 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.
........
r6472 | mmatthews | 2007-06-28 15:01:19 -0500 (Thu, 28 Jun 2007) | 6 lines
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.
........
r6475 | mmatthews | 2007-07-03 20:21:38 -0500 (Tue, 03 Jul 2007) | 1 line
Bumped version # for next release.
........
r6477 | mmatthews | 2007-07-03 20:37:38 -0500 (Tue, 03 Jul 2007) | 1 line
Set properties for svnmerge
........
r6480 | mmatthews | 2007-07-04 00:47:23 -0500 (Wed, 04 Jul 2007) | 15 lines
- Setting "useBlobToStoreUTF8OutsideBMP" to "true" tells the
driver to treat [MEDIUM/LONG]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.
........
r6487 | mmatthews | 2007-07-17 22:34:57 -0500 (Tue, 17 Jul 2007) | 1 line
Merges from 5.0.
........
r6488 | mmatthews | 2007-07-17 22:40:05 -0500 (Tue, 17 Jul 2007) | 1 line
Fixed typo in bug#.
........
r6492 | mmatthews | 2007-07-18 15:51:25 -0500 (Wed, 18 Jul 2007) | 1 line
Fix broken import...Eclipse didn't complain about compiling it or running tests
earlier!?
........
r6493 | mmatthews | 2007-07-18 16:17:46 -0500 (Wed, 18 Jul 2007) | 1 line
Don't create Maven bundles for commercial builds. They're not needed.
........
r6494 | mmatthews | 2007-08-08 20:59:55 -0500 (Wed, 08 Aug 2007) | 23 lines
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().
........
r6496 | mmatthews | 2007-08-13 15:22:33 -0500 (Mon, 13 Aug 2007) | 4 lines
- 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.
........
r6497 | mmatthews | 2007-08-20 16:27:49 -0500 (Mon, 20 Aug 2007) | 1 line
Some work to support multiple table updatable result sets. None of this is exposed
to the enduser (yet), just the scaffolding to hold it up.
........
r6499 | mcbrown | 2007-08-29 09:11:48 -0500 (Wed, 29 Aug 2007) | 3 lines
Correcting some typos in descriptions
........
r6509 | mmatthews | 2007-08-29 10:04:49 -0500 (Wed, 29 Aug 2007) | 3 lines
Removed merge tracking for "svnmerge" for
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk/connector-j
........
r6510 | mmatthews | 2007-08-29 10:05:32 -0500 (Wed, 29 Aug 2007) | 3 lines
Initialized merge tracking via "svnmerge" with revisions "1-6392" from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
........
r6513 | mmatthews | 2007-08-29 10:23:58 -0500 (Wed, 29 Aug 2007) | 1 line
Merges from 5.0.
........
................
r6516 | mmatthews | 2007-08-29 11:05:32 -0500 (Wed, 29 Aug 2007) | 1 line
Post-merge fixups.
................
r6519 | mmatthews | 2007-08-29 11:21:21 -0500 (Wed, 29 Aug 2007) | 1 line
Updated changelogs for bug 30550.
................
r6520 | mmatthews | 2007-08-29 11:27:40 -0500 (Wed, 29 Aug 2007) | 9 lines
Merged revisions 6515-6517 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
........
r6517 | mmatthews | 2007-08-29 11:14:04 -0500 (Wed, 29 Aug 2007) | 1 line
Merge of fix for Bug 30550.
........
................
................
r6530 | mmatthews | 2007-08-29 14:42:13 -0500 (Wed, 29 Aug 2007) | 18 lines
Merged revisions
6393-6396,6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6529
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6529 | mmatthews | 2007-08-29 14:31:44 -0500 (Wed, 29 Aug 2007) | 11 lines
Merged revisions 6525-6528 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6528 | mmatthews | 2007-08-29 14:27:12 -0500 (Wed, 29 Aug 2007) | 2 lines
Fixed BUG#29106 - Connection checker for JBoss didn't use same method parameters
via reflection, causing connections to always seem "bad".
........
................
................
r6533 | mmatthews | 2007-08-30 10:52:01 -0500 (Thu, 30 Aug 2007) | 24 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6532
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6532 | mmatthews | 2007-08-30 10:32:10 -0500 (Thu, 30 Aug 2007) | 17 lines
Merged revisions 6531 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6531 | mmatthews | 2007-08-30 10:21:06 -0500 (Thu, 30 Aug 2007) | 5 lines
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.
........
................
................
r6536 | mmatthews | 2007-08-30 15:56:36 -0500 (Thu, 30 Aug 2007) | 20 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6535
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6535 | mmatthews | 2007-08-30 15:52:15 -0500 (Thu, 30 Aug 2007) | 13 lines
Merged revisions 6529-6530,6532-6534 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6534 | mmatthews | 2007-08-30 15:46:47 -0500 (Thu, 30 Aug 2007) | 3 lines
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.
........
................
................
r6539 | mmatthews | 2007-08-30 16:49:56 -0500 (Thu, 30 Aug 2007) | 20 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6538
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6538 | mmatthews | 2007-08-30 16:39:03 -0500 (Thu, 30 Aug 2007) | 13 lines
Merged revisions 6535-6537 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6537 | mmatthews | 2007-08-30 16:26:34 -0500 (Thu, 30 Aug 2007) | 3 lines
Fixed BUG#29852 - Closing a load-balanced connection would cause a
ClassCastException.
........
................
................
r6543 | mmatthews | 2007-08-30 20:22:50 -0500 (Thu, 30 Aug 2007) | 24 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6537,6539-6542
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6541 | mmatthews | 2007-08-30 20:15:59 -0500 (Thu, 30 Aug 2007) | 13 lines
Merged revisions 6538-6540 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6540 | mmatthews | 2007-08-30 19:50:39 -0500 (Thu, 30 Aug 2007) | 3 lines
Fixed BUG#27867 - Schema objects with identifiers other than
the connection character aren't retrieved correctly in
ResultSetMetadata.
........
................
r6542 | mmatthews | 2007-08-30 20:17:04 -0500 (Thu, 30 Aug 2007) | 1 line
Post-merge fixups.
................
................
r6547 | mmatthews | 2007-09-04 12:34:45 -0500 (Tue, 04 Sep 2007) | 28 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6537,6539-6540,6543-6546
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6546 | mmatthews | 2007-09-04 12:31:26 -0500 (Tue, 04 Sep 2007) | 21 lines
Merged revisions 6545 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6545 | mmatthews | 2007-09-04 11:54:36 -0500 (Tue, 04 Sep 2007) | 7 lines
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.
........
................
................
r6552 | mmatthews | 2007-09-04 13:40:35 -0500 (Tue, 04 Sep 2007) | 35 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6537,6539-6540,6543-6545,6547-6551
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6548 | mmatthews | 2007-09-04 12:41:10 -0500 (Tue, 04 Sep 2007) | 9 lines
Merged revisions 6544 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_1
........
r6544 | mcbrown | 2007-08-31 01:14:57 -0500 (Fri, 31 Aug 2007) | 3 lines
Updating the XSL transform for the errors table
........
................
r6551 | mmatthews | 2007-09-04 13:36:20 -0500 (Tue, 04 Sep 2007) | 17 lines
Merged revisions 6541-6544,6546-6550 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6549 | mmatthews | 2007-09-04 12:48:14 -0500 (Tue, 04 Sep 2007) | 2 lines
Fixed BUG#27182 - Connection.getServerCharacterEncoding() doesn't work
for servers with version >= 4.1.
........
r6550 | mmatthews | 2007-09-04 13:28:45 -0500 (Tue, 04 Sep 2007) | 2 lines
Fixed BUG#27915 - DatabaseMetaData.getColumns() doesn't
contain SCOPE_* or IS_AUTOINCREMENT columns.
........
................
................
r6553 | mmatthews | 2007-09-04 13:48:51 -0500 (Tue, 04 Sep 2007) | 1 line
Preparing for release of 5.1.3 RC.
................
r6557 | mmatthews | 2007-09-04 16:50:39 -0500 (Tue, 04 Sep 2007) | 20 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6537,6539-6540,6543-6545,6547,6549-6550,6552-6556
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6556 | mmatthews | 2007-09-04 16:39:47 -0500 (Tue, 04 Sep 2007) | 13 lines
Merged revisions 6551-6555 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6554 | mmatthews | 2007-09-04 16:17:57 -0500 (Tue, 04 Sep 2007) | 1 line
Fixed BUG#21116, revision not updated in DBMD.getDriverVersion() when released (we
now stuff in the svn revision of the directory).
........
r6555 | mmatthews | 2007-09-04 16:19:51 -0500 (Tue, 04 Sep 2007) | 1 line
Allow source builds to work, even if not checked out from SVN.
........
................
................
r6558 | mmatthews | 2007-09-04 18:27:09 -0500 (Tue, 04 Sep 2007) | 1 line
Post-merge fixups.
................
r6559 | mmatthews | 2007-09-04 18:27:34 -0500 (Tue, 04 Sep 2007) | 1 line
Fixups for 5.1.
................
r6560 | mmatthews | 2007-09-04 18:31:01 -0500 (Tue, 04 Sep 2007) | 1 line
A nicer toString().
................
r6561 | mmatthews | 2007-09-05 10:59:46 -0500 (Wed, 05 Sep 2007) | 19 lines
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.
................
r6562 | mmatthews | 2007-09-05 11:02:17 -0500 (Wed, 05 Sep 2007) | 1 line
After some refactorings of the character set handling code, changeUser() wasn't
resetting the character set after the server cleared it.
................
r6566 | mmatthews | 2007-09-06 09:14:17 -0500 (Thu, 06 Sep 2007) | 20 lines
Merged revisions
6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6522,6524,6526-6528,6530-6531,6533-6534,6536-6537,6539-6540,6543-6545,6547,6549-6550,6552-6555,6557-6565
via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/trunk
................
r6565 | mmatthews | 2007-09-06 09:07:15 -0500 (Thu, 06 Sep 2007) | 13 lines
Merged revisions 6556-6564 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6563 | mmatthews | 2007-09-06 09:02:01 -0500 (Thu, 06 Sep 2007) | 1 line
Fixed BUG#30851, NPE with null column values when "padCharsWithSpace" is set to
"true".
........
r6564 | mmatthews | 2007-09-06 09:03:59 -0500 (Thu, 06 Sep 2007) | 1 line
Tags for inserting revision created.
........
................
................
...............
r6568 | mmatthews | 2007-09-06 10:42:38 -0500 (Thu, 06 Sep 2007) | 1 line
Post-merge fixups (don't trust tortoise merge again!)
...............
r6570 | mmatthews | 2007-09-06 14:01:57 -0500 (Thu, 06 Sep 2007) | 17 lines
Merged revisions 6565-6569 via svnmerge from
svn+ssh://mmatthews@stripped/connectors-svnroot/connector-j/branches/branch_5_0
........
r6569 | mmatthews | 2007-09-06 13:42:19 -0500 (Thu, 06 Sep 2007) | 5 lines
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.
........
...............
r6571 | mmatthews | 2007-09-06 14:28:31 -0500 (Thu, 06 Sep 2007) | 1 line
Post-merge fixups. Too bad svnmerge requires pristine trees, doesn't play well with an
Eclipse workspace :(
...............
Property changes on: branches/branch_5_1
___________________________________________________________________
Name: svnmerge-integrated
-
/trunk:1-6396,6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6565
+
/trunk:1-6396,6398-6402,6405-6407,6414-6473,6475,6477,6480,6483-6486,6489-6492,6496-6500,6509-6511,6513,6517-6518,6521-6571
Modified: branches/branch_5_1/connector-j/CHANGES
===================================================================
--- branches/branch_5_1/connector-j/CHANGES 2007-09-07 14:01:45 UTC (rev 6573)
+++ branches/branch_5_1/connector-j/CHANGES 2007-09-07 14:03:45 UTC (rev 6574)
@@ -252,6 +252,12 @@
- 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.
07-19-07 - Version 5.0.7
Modified:
branches/branch_5_1/connector-j/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java
===================================================================
---
branches/branch_5_1/connector-j/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java 2007-09-07
14:01:45 UTC (rev 6573)
+++
branches/branch_5_1/connector-j/src/com/mysql/jdbc/LoadBalancingConnectionProxy.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -54,7 +54,7 @@
* @version $Id: $
*
*/
-public class LoadBalancingConnectionProxy implements InvocationHandler {
+public class LoadBalancingConnectionProxy implements InvocationHandler, PingTarget {
private static Method getLocalTimeMethod;
@@ -353,6 +353,10 @@
result = method.invoke(this.currentConn, args);
if (result != null) {
+ if (result instanceof com.mysql.jdbc.Statement) {
+ ((com.mysql.jdbc.Statement)result).setPingTarget(this);
+ }
+
result = proxyIfInterfaceIsJdbc(result, result.getClass());
}
} catch (InvocationTargetException e) {
@@ -445,4 +449,12 @@
return System.currentTimeMillis();
}
+
+ public synchronized void doPing() throws SQLException {
+ Iterator allConns = this.liveConnections.values().iterator();
+
+ while (allConns.hasNext()) {
+ ((Connection)allConns.next()).ping();
+ }
+ }
}
\ No newline at end of file
Copied: branches/branch_5_1/connector-j/src/com/mysql/jdbc/PingTarget.java (from rev 6571,
trunk/connector-j/src/com/mysql/jdbc/PingTarget.java)
Modified: branches/branch_5_1/connector-j/src/com/mysql/jdbc/PreparedStatement.java
===================================================================
--- branches/branch_5_1/connector-j/src/com/mysql/jdbc/PreparedStatement.java 2007-09-07
14:01:45 UTC (rev 6573)
+++ branches/branch_5_1/connector-j/src/com/mysql/jdbc/PreparedStatement.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -520,6 +520,8 @@
/** Can we actually rewrite this statement as a multi-value insert? */
private boolean canRewrite = false;
+
+ private boolean doPingInstead;
/**
* Creates a prepared statement instance -- We need to provide factory-style
@@ -613,6 +615,12 @@
this.originalSql = sql;
+ if (this.originalSql.startsWith(PING_MARKER)) {
+ this.doPingInstead = true;
+ } else {
+ this.doPingInstead = false;
+ }
+
this.dbmd = this.connection.getMetaData();
this.useTrueBoolean = this.connection.versionMeetsMinimum(3, 21, 23);
@@ -1707,6 +1715,12 @@
this.numberOfExecutions++;
+ if (this.doPingInstead) {
+ doPingInstead();
+
+ return this.results;
+ }
+
ResultSetInternalMethods rs;
CancelTask timeoutTask = null;
@@ -5024,4 +5038,4 @@
return this.parameterIsNull[parameterIndex -1];
}
}
-}
\ No newline at end of file
+}
Modified: branches/branch_5_1/connector-j/src/com/mysql/jdbc/ReplicationConnection.java
===================================================================
---
branches/branch_5_1/connector-j/src/com/mysql/jdbc/ReplicationConnection.java 2007-09-07
14:01:45 UTC (rev 6573)
+++
branches/branch_5_1/connector-j/src/com/mysql/jdbc/ReplicationConnection.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -43,7 +43,7 @@
* @version $Id: ReplicationConnection.java,v 1.1.2.1 2005/05/13 18:58:38
* mmatthews Exp $
*/
-public class ReplicationConnection implements java.sql.Connection {
+public class ReplicationConnection implements java.sql.Connection, PingTarget {
protected Connection currentConnection;
protected Connection masterConnection;
@@ -131,7 +131,10 @@
* @see java.sql.Connection#createStatement()
*/
public Statement createStatement() throws SQLException {
- return this.currentConnection.createStatement();
+ Statement stmt = this.currentConnection.createStatement();
+ ((com.mysql.jdbc.Statement) stmt).setPingTarget(this);
+
+ return stmt;
}
/*
@@ -141,8 +144,12 @@
*/
public synchronized Statement createStatement(int resultSetType,
int resultSetConcurrency) throws SQLException {
- return this.currentConnection.createStatement(resultSetType,
+ Statement stmt = this.currentConnection.createStatement(resultSetType,
resultSetConcurrency);
+
+ ((com.mysql.jdbc.Statement) stmt).setPingTarget(this);
+
+ return stmt;
}
/*
@@ -153,8 +160,12 @@
public synchronized Statement createStatement(int resultSetType,
int resultSetConcurrency, int resultSetHoldability)
throws SQLException {
- return this.currentConnection.createStatement(resultSetType,
+ Statement stmt = this.currentConnection.createStatement(resultSetType,
resultSetConcurrency, resultSetHoldability);
+
+ ((com.mysql.jdbc.Statement) stmt).setPingTarget(this);
+
+ return stmt;
}
/*
@@ -297,7 +308,11 @@
* @see java.sql.Connection#prepareStatement(java.lang.String)
*/
public PreparedStatement prepareStatement(String sql) throws SQLException {
- return this.currentConnection.prepareStatement(sql);
+ PreparedStatement pstmt = this.currentConnection.prepareStatement(sql);
+
+ ((com.mysql.jdbc.Statement) pstmt).setPingTarget(this);
+
+ return pstmt;
}
/*
@@ -307,7 +322,11 @@
*/
public synchronized PreparedStatement prepareStatement(String sql,
int autoGeneratedKeys) throws SQLException {
- return this.currentConnection.prepareStatement(sql, autoGeneratedKeys);
+ PreparedStatement pstmt = this.currentConnection.prepareStatement(sql,
autoGeneratedKeys);
+
+ ((com.mysql.jdbc.Statement) pstmt).setPingTarget(this);
+
+ return pstmt;
}
/*
@@ -317,8 +336,12 @@
*/
public synchronized PreparedStatement prepareStatement(String sql,
int resultSetType, int resultSetConcurrency) throws SQLException {
- return this.currentConnection.prepareStatement(sql, resultSetType,
+ PreparedStatement pstmt = this.currentConnection.prepareStatement(sql, resultSetType,
resultSetConcurrency);
+
+ ((com.mysql.jdbc.Statement) pstmt).setPingTarget(this);
+
+ return pstmt;
}
/*
@@ -330,8 +353,12 @@
public synchronized PreparedStatement prepareStatement(String sql,
int resultSetType, int resultSetConcurrency,
int resultSetHoldability) throws SQLException {
- return this.currentConnection.prepareStatement(sql, resultSetType,
+ PreparedStatement pstmt = this.currentConnection.prepareStatement(sql, resultSetType,
resultSetConcurrency, resultSetHoldability);
+
+ ((com.mysql.jdbc.Statement) pstmt).setPingTarget(this);
+
+ return pstmt;
}
/*
@@ -341,7 +368,11 @@
*/
public synchronized PreparedStatement prepareStatement(String sql,
int[] columnIndexes) throws SQLException {
- return this.currentConnection.prepareStatement(sql, columnIndexes);
+ PreparedStatement pstmt = this.currentConnection.prepareStatement(sql, columnIndexes);
+
+ ((com.mysql.jdbc.Statement) pstmt).setPingTarget(this);
+
+ return pstmt;
}
/*
@@ -352,7 +383,11 @@
*/
public synchronized PreparedStatement prepareStatement(String sql,
String[] columnNames) throws SQLException {
- return this.currentConnection.prepareStatement(sql, columnNames);
+ PreparedStatement pstmt = this.currentConnection.prepareStatement(sql, columnNames);
+
+ ((com.mysql.jdbc.Statement) pstmt).setPingTarget(this);
+
+ return pstmt;
}
/*
@@ -517,5 +552,13 @@
this.currentConnection = switchToConnection;
}
-
+ public synchronized void doPing() throws SQLException {
+ if (this.masterConnection != null) {
+ this.masterConnection.ping();
+ }
+
+ if (this.slavesConnection != null) {
+ this.slavesConnection.ping();
+ }
+ }
}
Modified: branches/branch_5_1/connector-j/src/com/mysql/jdbc/Statement.java
===================================================================
--- branches/branch_5_1/connector-j/src/com/mysql/jdbc/Statement.java 2007-09-07 14:01:45
UTC (rev 6573)
+++ branches/branch_5_1/connector-j/src/com/mysql/jdbc/Statement.java 2007-09-07 14:03:45
UTC (rev 6574)
@@ -83,4 +83,6 @@
* via setLocalInfileInputStream().
*/
public abstract InputStream getLocalInfileInputStream();
+
+ public void setPingTarget(PingTarget pingTarget);
}
\ No newline at end of file
Modified: branches/branch_5_1/connector-j/src/com/mysql/jdbc/StatementImpl.java
===================================================================
--- branches/branch_5_1/connector-j/src/com/mysql/jdbc/StatementImpl.java 2007-09-07
14:01:45 UTC (rev 6573)
+++ branches/branch_5_1/connector-j/src/com/mysql/jdbc/StatementImpl.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -66,6 +66,7 @@
* @see ResultSetInternalMethods
*/
public class StatementImpl implements Statement {
+ protected static final String PING_MARKER = "/* ping */";
/**
* Thread used to implement query timeouts...Eventually we could be more
* efficient and have one thread with timers, but this is a straightforward
@@ -243,6 +244,9 @@
protected boolean continueBatchOnError = false;
+ protected PingTarget pingTarget = null;
+
+
/**
* Constructor for a Statement.
*
@@ -639,6 +643,14 @@
}
}
+ if (firstNonWsChar == '/') {
+ if (sql.startsWith(PING_MARKER)) {
+ doPingInstead();
+
+ return true;
+ }
+ }
+
CachedResultSetMetaData cachedMetaData = null;
ResultSetInternalMethods rs = null;
@@ -1274,6 +1286,14 @@
char firstStatementChar = StringUtils.firstNonWsCharUc(sql,
findStartOfStatement(sql));
+ if (sql.charAt(0) == '/') {
+ if (sql.startsWith(PING_MARKER)) {
+ doPingInstead();
+
+ return this.results;
+ }
+ }
+
checkForDml(sql, firstStatementChar);
if (this.results != null) {
@@ -1416,6 +1436,28 @@
}
}
+ protected void doPingInstead() throws SQLException {
+ if (this.pingTarget != null) {
+ this.pingTarget.doPing();
+ } else {
+ this.connection.ping();
+ }
+
+ ResultSetInternalMethods fakeSelectOneResultSet = generatePingResultSet();
+ this.results = fakeSelectOneResultSet;
+ }
+
+ protected ResultSetInternalMethods generatePingResultSet() throws SQLException {
+ Field[] fields = { new Field(null, "1", Types.BIGINT, 1) };
+ ArrayList rows = new ArrayList();
+ byte[] colVal = new byte[] { (byte) '1' };
+
+ rows.add(new ByteArrayRow(new byte[][] { colVal }));
+
+ return (ResultSetInternalMethods) DatabaseMetaData.buildResultSet(fields, rows,
+ this.connection);
+ }
+
protected void executeSimpleNonQuery(ConnectionImpl c, String nonQuery)
throws SQLException {
c.execSQL(this, nonQuery,
@@ -2210,6 +2252,7 @@
this.batchedGeneratedKeys = null;
this.cancelTimeoutMutex = null;
this.localInfileInputStream = null;
+ this.pingTarget = null;
}
/**
@@ -2559,4 +2602,8 @@
public synchronized void setLocalInfileInputStream(InputStream stream) {
this.localInfileInputStream = stream;
}
+
+ public synchronized void setPingTarget(PingTarget pingTarget) {
+ this.pingTarget = pingTarget;
+ }
}
Modified:
branches/branch_5_1/connector-j/src/testsuite/regression/ConnectionRegressionTest.java
===================================================================
---
branches/branch_5_1/connector-j/src/testsuite/regression/ConnectionRegressionTest.java 2007-09-07
14:01:45 UTC (rev 6573)
+++
branches/branch_5_1/connector-j/src/testsuite/regression/ConnectionRegressionTest.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -32,6 +32,7 @@
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DriverPropertyInfo;
+import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@@ -2161,7 +2162,13 @@
}
public void testBug29852() throws Exception {
- int indexOfHostStart = dbUrl.indexOf("://") + 3;
+ Connection lbConn = getLoadBalancedConnection();
+ assertTrue(!lbConn.getClass().getName().startsWith("com.mysql.jdbc"));
+ lbConn.close();
+ }
+
+ private Connection getLoadBalancedConnection() throws SQLException {
+ int indexOfHostStart = dbUrl.indexOf("://") + 3;
int indexOfHostEnd = dbUrl.indexOf("/", indexOfHostStart);
String backHalf = dbUrl.substring(indexOfHostStart, indexOfHostEnd);
@@ -2173,7 +2180,73 @@
String dbAndConfigs = dbUrl.substring(indexOfHostEnd);
Connection lbConn = DriverManager.getConnection("jdbc:mysql:loadbalance://" +
backHalf + "," + backHalf + dbAndConfigs);
- assertTrue(!lbConn.getClass().getName().startsWith("com.mysql.jdbc"));
- lbConn.close();
- }
+ return lbConn;
+ }
+
+ /**
+ * Test of a new feature to fix BUG 22643, specifying a
+ * "validation query" in your connection pool that starts
+ * with "slash-star ping slash-star" _exactly_ will cause the driver to " +
+ * instead send a ping to the server (much lighter weight), and when using
+ * a ReplicationConnection or a LoadBalancedConnection, will send
+ * the ping across all active connections.
+ *
+ * @throws Exception
+ */
+ public void testBug22643() throws Exception {
+ checkPingQuery(this.conn);
+
+ Connection replConnection = getMasterSlaveReplicationConnection();
+
+ try {
+ checkPingQuery(replConnection);
+ } finally {
+ if (replConnection != null) {
+ replConnection.close();
+ }
+ }
+
+ Connection lbConn = getLoadBalancedConnection();
+
+ try {
+ checkPingQuery(lbConn);
+ } finally {
+ if (lbConn != null) {
+ lbConn.close();
+ }
+ }
+ }
+
+ private void checkPingQuery(Connection c) throws SQLException {
+ // Yes, I know we're sending 2, and looking for 1
+ // that's part of the test, since we don't _really_
+ // send the query to the server!
+ String aPingQuery = "/* ping */ SELECT 2";
+ Statement pingStmt = c.createStatement();
+ PreparedStatement pingPStmt = null;
+
+ try {
+ this.rs = pingStmt.executeQuery(aPingQuery);
+ assertTrue(this.rs.next());
+ assertEquals(this.rs.getInt(1), 1);
+
+ assertTrue(pingStmt.execute(aPingQuery));
+ this.rs = pingStmt.getResultSet();
+ assertTrue(this.rs.next());
+ assertEquals(this.rs.getInt(1), 1);
+
+ pingPStmt = c.prepareStatement(aPingQuery);
+
+ assertTrue(pingPStmt.execute());
+ this.rs = pingPStmt.getResultSet();
+ assertTrue(this.rs.next());
+ assertEquals(this.rs.getInt(1), 1);
+
+ this.rs = pingPStmt.executeQuery();
+ assertTrue(this.rs.next());
+ assertEquals(this.rs.getInt(1), 1);
+ } finally {
+ closeMemberJDBCResources();
+ }
+ }
}
Modified:
branches/branch_5_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java
===================================================================
---
branches/branch_5_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java 2007-09-07
14:01:45 UTC (rev 6573)
+++
branches/branch_5_1/connector-j/src/testsuite/regression/MetaDataRegressionTest.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -1952,6 +1952,7 @@
this.conn.prepareCall("{call testBug25624(?,?)}").close();
}
+
/**
* Tests fix for BUG#27867 - Schema objects with identifiers other than
Modified:
branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java
===================================================================
---
branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2007-09-07
14:01:45 UTC (rev 6573)
+++
branches/branch_5_1/connector-j/src/testsuite/regression/ResultSetRegressionTest.java 2007-09-07
14:03:45 UTC (rev 6574)
@@ -4403,6 +4403,7 @@
this.rs.next();
assertEquals("java.lang.String", this.rs.getObject(1).getClass().getName());
}
+
/**
* Tests fix for BUG#30664. Note that this fix only works
| Thread |
|---|
| • Connector/J commit: r6574 - in branches/branch_5_1: . connector-j connector-j/src/com/mysql/jdbc connector-j/src/testsuite/regression | mmatthews | 7 Sep |