JTurbo 2005 Final (11/8/2005) ----------------------------- Changes: - The PoolManagerDataSource can now be configured to test a pooled connection to verify it is still good before returning it. This feature is disabled by default. To enable it you must set the testConnection property to true. If you are creating the PoolManagerDataSource directly then this is done by calling the method setTestConnection( true ). - Improved PreparedStatements. To revert to the JTurbo 3.0 default method of invoking prepared statements, set the connection string property "prepareInline" to true. - Support for Windows Authentication using NTLM. This feature can be used by: 1. Downloading gnu-crypto.jar from http://www.gnu.org/software/gnu-crypto/ and placing it in your classpath. 2. Setting the new JTurbo property "authentication" to "Windows". 3. Setting the new JTurbo property "clientDomain" to the domain JTurbo is running in. 4. Setting the JTurbo property "clientHost" to the host JTurbo is running on. Bug Fixes: - Update counts are not returned properly for stored procedures (bug #619) - ConcurrentModificationException when closing a JTXADataSource connection (bug #622) - Statement.execute() ignores ResultSet settings (bug #641) - JTurbo sometimes hangs when using a server-side cursor (bug #656) - The setQueryTimeout() value is sometimes not honored (bug #704) - The JTXADataSource fails with WebSphere (bug #733) - Strings with single quotes are not inserted properly (bug #752) - Ending a distributed transaction with TMFAIL causes rollback (bug #772) - Connection methods createStatement, prepareStatement, prepareCall may leak memory (bug #808) - Prepared statements with varchars perform badly (bug #809) - Sometimes JTurbo prints a stack trace when it shouldn't (bug #810) - Statement.close() & ResultSet.close() leak memory in very specific cases, until con closed (bug #819) - Memory leak when calling ResultSet cursor movement methods, until con closed (bug #820) - CallableStatement leaks memory when methods that take parameter name are used, until con closed (bug #821) - DatabaseMetaData methods that return a ResultSet leak statements/memory, until con closed (bug #843) - ResultSetMetaData.isSigned() method sometimes returns wrong value (bug #916) - rs.isBeforeFirst() & rs.isAfterLast() return true for an empty ResultSet (bug #982) - setFetchSize does not allow the value of 0 (bug #1235) - JTurbo returns some undefined values when accessing DATA_TYPE column of DatabaseMetaData.getColumns() (bug #1518) - ResultSet.getBigDecimal() losing decimal places (bug #1578) - DBMD.getMaxColumnNameLength() returns incorrect value for SQL Server 2000 (bug #1579) - uniqueidentifier fields are returned with curly braces (bug #1632) - Calling Statement.cancel() causes JTurbo to hang (bug #1673) - With JDK 1.3, timestamps are inserted without milliseconds (bug #1700) - JTurbo rounds timestamp values differently from SQL Server (bug #1701) - java.sql.Date types are inserted with time components (bug #1731) - java.sql.Time types are not inserted properly (bug #1732) - problems with setting prepareInline with a DataSource - added property dataSourceName to JTurbo datasources since it is needed by Sybase EAS 5.2 - With JDK 1.3, ResultSet.getTimestamp().getTime() returns wrong value (bug #1958) JTurbo 3.0.2 Final (11/12/2002) ------------------------------ Changes: - J2EE 1.3.1 certified Bug Fixes (Misc): - fixed bug #586 - getWarnings() only returns last warning - fixed bug #587 - Driver.parseAltUrl() can throw exception for non-JTurbo URL - fixed bug #588 - JTurbo fails to find LicenseKey.properties with J2EE RI app server - fixed bug #600 - getClob and getBlob don't return null when they should - fixed bug #601 - Sometimes JTurbo outputs debug messages Bug Fixes (Statement): - fixed bug #596 - Statement.setMaxRows() doesn't throw exception when passed negative value Bug Fixes (PreparedStatement): - fixed bug #546 - Memory Leak when PreparedStatement.close() is called while sp=false - fixed bug #566 - Failure to create a temp stored procedure is not reported by JTurbo - fixed bug #582 - SQL Server BigInt type fails when sp=true - fixed bug #593 - PreparedStatement.setObject() sometimes fails - fixed bug #599 - PreparedStatement.getMetaData() fails sometimes Bug Fixes (DataSource): - fixed bug #578 - Setting clientHost on a DataSource fails Bug Fixes (CallableStatement): - fixed bug #583 - Calling a stored procedure with a string parameter that's longer than 65534 fails - fixed bug #597 - Stored Procedure with numeric/decimal with precision > 28 fails Bug Fixes (RowSet): - fixed bug #585 - WebRowSet requires crimson.jar to be used as XML parser Bug Fixes (ResultSet): - fixed bug #592 - ResultSet.getTime() and getDate() sometimes fail Bug Fixes (Escape Syntax): - fixed bug #594 - Scalar function CONCAT is not supported - fixed bug #595 - Scalar function LOCATE fails when passed 3 arguments Bug Fixes (Connection Pooling): - fixed bug #602 - PoolManagerDataSource.setInitialPoolSize() sometimes throws exceptions JTurbo 3.0.1 Final (6/25/2002) ------------------------------ Changes: - performance improvements Bug Fixes (Misc): - fixed bug #454 - sql_variant type is not supported Bug Fixes (DatabaseMetaData): - fixed bug #321 - DBMD.supportsResultSetConcurrency returns wrong value Bug Fixes (ResultSet): - fixed bug #343 - Method getTableName only works sometimes - fixed bug #423 - With SQL Server 2000, calling ResultSet.insertRow to insert default values fails Bug Fixes (RowSet): - fixed bug #422 - Connection used to update a CachedRowSet is not closed Bug Fixes (PreparedStatement): - fixed bug #424 - When sp flag is true, PreparedStatement.setString fails Bug Fixes (CallableStatement): - fixed bug #439 - Failure getting return value from CallableStatement - fixed bug #462 - CallableStatement.setLong() causes loss of precision with very large numbers JTurbo 3.0 Final (3/7/2002) ---------------------------- Changes: - added support for JTurbo URL parameter "clientHost" Bug Fixes (Misc): - fixed bug where UPDATETEXT results can sometimes cause an exception JTurbo 3.0b6 (1/23/2002) ------------------------- Changes: - made versions for JDBC 1.2 and JDBC 2.1 - made installers - added check for correct JVM version in Driver static initializer - updated to use New Atlanta's licensing scheme - changed name of JTConnectionPoolDataSource to PoolManagerDataSource - changed name of JTurboRowSet to CachedRowSet Bug Fixes (Misc): - removed code from Connection.isClosed() which tried to determine if a connection was lost since this caused a performance hit - removed code from Connection class which tried to make a new connection if a connection was lost since this could cause problems with transactions - fixed bug which stopped ResultSet.refreshRow() from working - fixed cursor movement bugs with ResultSet of type TYPE_SCROLL_SENSITIVE+1 - fixed logging for connections created using a DataSource - fixed bug in Statement.setMaxRows() - fixed bug in Statement.setMaxFieldSize() - fixed bugs in ResultSet with getting empty or null char, varchar, text, nchar, nvarchar and ntext values - fixed bug with JTurbo URLs that contain a parameter assigned to nothing - fixed bug in DatabaseMetaData.getCrossReference() Bug Fixes (PoolManagerDataSource): - made changes to allow only one username/password to be associated with a PoolManagerDataSource - modified PoolManagerDataSource.close() method to stop evictor thread - modified PoolManagerDataSource methods to throw an exception if it is closed Bug Fixes (CachedRowSet): - fixed ClassCastException bug in CachedRowSet.getString() - fixed bug when trying to serialize CachedRowSet Bug Fixes (SQL Server 6.5): - made changes to support Statement.getGeneratedKeys() with SQL Server 6.5 - made changes to support DatabaseMetaData.getTableTypes() with SQL Server 6.5 - made changes to support DatabaseMetaData.getUDTs() with SQL Server 6.5 - made changes to support functions LEFT(), LENGTH(), REPLACE() and CONVERT() with SQL Server 6.5 - made changes to support PreparedStatment.setClob() and setBlob() with SQL Server 6.5 - made changes to support setting and updating non-String types in a WebRowSet with SQL Server 6.5 JTurbo 3.0b5 (12/3/2001) ------------------------ New Features: - added support for named parameters with CallableStatements - added support for method PreparedStatement.getParameterMetaData() - added support for Blob's and Clob's - added support for JDBC RowSet - added support for Web RowSet - added support for distributed transactions - added support for auto-generated keys - added support for statement pooling - added support for fetchSize URL param Bug Fixes (Misc): - Fixed bug where JTurbo sent configuration requests to SQL Server 7.0 and 2000 in one-byte format instead of two-byte format - changed the sql70 flag to default to true - Fixed bug where calling Connection.setTransactionIsolation() would set auto-commit to false - Fixed bug where charset flag was ignored if sql70 flag was set to true Bug Fixes (ResultSet): - Fixed bug where ResultSet.getBytes() would throw an exception for char type columns - Fixed bug with ResultSet cursor movement methods when a server cursor is not used Bug Fixes (PreparedStatement): - Fixed bug where prepared statements would fail if SP flag was set to true Bug Fixes (DatabaseMetaData): - modified DatabaseMetaData.getUDTs() to return a ResultSet for DISTINCT types - added method DatabaseMetaData.locatorsUpdateCopy() Bug Fixes (ResultSetMetaData): - Fixed bug where ResultsSetMetaData.getColumnType() returned invalid values for columns with SQL Server type NCHAR, NVARCHAR, NTEXT and UNIQUE - Fixed bug where ResultSetMetaData.getColumnType() returned VARCHAR for CHAR and VARBINARY for BiNARY with SQL Server 6.5 JTurbo 3.0b4 (10/31/2001) ------------------------ Bug Fixes (Misc): - Fixed bug where escape syntax in statements used in a batch were not processed - added support for outer joins escape syntax - executeQuery() now throws an exception if a statement doesn't generate a result set - executeUpdate() now throws an exception if a statement doesn't generate an update count - closing a connection now automatically closes the statements created by it - added support for JDBC 3.0 method getMoreResults( int current ) - CallableStatement getter methods now properly perform conversions between different data types - Data truncation on write now throws DataTruncation exception instead of SQLException - Driver.getPropertyInfo() now returns correct values Bug Fixes (PreparedStatement): - Fixed bug where PreparedStatement ignored value passed to setFetchSize() - Fixed bug in PreparedStatement.setObject() which caused an exception when it was passed java.sql.Types.NULL - Fixed bug in PreparedStatement.getMetaData() which caused it to throw an exception Bug Fixes (DataSource): - added sql70, description and portNumber getter/setter methods - added password and appName getter methods - DataSource.setLoginTimeout() call was being ignored Bug Fixes (DatabaseMetaData): - DatabaseMetaData.getMaxRowSize() now returns 8060 instead of 1962 - DatabaseMetaData.getMaxColumnsInTable() now returns 1024 instead of 250 - DatabaseMetaData.supportsConvert(from,to) now returns correct values - DatabaseMetaData methods ownInsertsAreVisible(), supportsPositionedDelete() and supportsPositionedUpdate() now return true instead of false - DatabaseMetaData methods updatesAreDetected() and deletesAreDetected() now return false instead of true - DatabaseMetaData.othersUpdatesAreVisible() now returns false instead of true for TYPE_SCROLL_SENSITIVE Bug Fixes (Cached RowSet): - added support for listeners - calling a RowSet getter method while not on a valid row now throws an SQLException instead of a null pointer exception - the current contents of a row set are now cleared when RowSet.execute() is called - RowSet.absolute() and relative() now work properly - a more descriptive exception is now thrown when RowSet.insertRow() is called before RowSet.moveToInsertRow() - a more descriptive exception is now thrown when RowSet.insertRow() is called with a null value for a non-null column - a more descriptive exception is now thrown when RowSet.acceptChanges() is called while on the insert row - RowSet.insertRow() now works properly - RowSet.deleteRow() now works properly - RowSetMetaData methods isReadOnly(), isWriteable(), isDefinitelyWriteable() and getColumnClassName() now return correct values Bug Fixes (ResultSet): - improved error message when an action is performed on a closed cursor - Fixed bugs in ResultSet cursor movement methods (absolute, isAfterLast, getRow, etc.) - ResultSet updater methods now throw an SQLException when concurrency is CONCUR_READ_ONLY - calling ResultSet.getBinaryStream() for an invalid type now throws an SQLException instead of a ClassCastException - calling ResultSet.getAsciiStream() for an invalid type now throws an SQLException instead of returning null - calling ResultSet.getBigDecimal() for a binary now throws an SQLException instead of returning null - ResultSet.getAsciiStream() now works for a binary instead of throwing an exception - ResultSet.getFloat() and getDouble() now work for a smallint instead of throwing an exception - ResultSet getter methods now return correct values for bigint columns - ResultSet.getByte(), getFloat(), getDouble() and getBigDecimal() now work for a bit instead of throwing an exception - ResultSet.getDouble(), getBigDecimal(), getDate(), getTime() and getTimestamp() now work for a char instead of throwing an exception - ResultSet.Byte(), getFloat(), getDouble(), getLong() and getBoolean() now work for nchar, nvarchar and ntext instead of throwing an exception Bug Fixes (Batches): - Fixed bug where CallableStatement.executeBatch() and PreparedStatement.executeBatch() would send the last parameters added to the batch for every statement in the batch - Fixed bug which caused protocol confusion exception with some responses - batch is now cleared after call to Statement.executeBatch() - Fixed bug where executeBatch() would not clear batch if it threw an exception - an exception is now thrown if the batch is empty and executeBatch() is called - Fixed bug where executeBatch() was setting auto-commit to true - if a batch statement fails, update count is now set to EXECUTE_FAILED instead of 0 - if a batch statement returns a result set an exception is now thrown Bug Fixes (Connection Pooling): - Fixed bug where pooled connections that are retrieved using the default user/password will be evicted immediately if the evictor thread is running - calling getConnection() instead of getPooledConnection() on a JTConnectionPoolDataSource will result in a new connection instead of a pooled connection - added ConnectionPoolDataSource which can be used in application servers to provide connection pooling - added support for new JDBC 3.0 properties: maxStatement, initialPoolSize, minPoolSize, maxIdleTime and propertyCycle - fixed bug in evictor thread algorithm which caused some connections to not be checked with each cycle when connections are evicted Bug Fixes (Scalar Functions): - Database methods getNumericFunctions(), getStringFunctions(), getTimeDateFunctions() and getSystemFunctions() now return correct values - numeric function ATAN2 was not mapped properly ATN2 - added support for string, system and convert functions JTurbo 3.0b3 (10/1/2001) ------------------------ Bug Fixes: - Fixed bugs in ResultSet cursor movement methods (absolute, isAfterLast, getRow, etc.) - Fixed setting of charset value - Client address is now sent to SQL Server in logon request - Fixed bug where ResultSet.getString() returned an empty string instead of null for a text field with a null value - Fixed bug where CallableStatement.getBigDecimal() lost the precision digits when it was called for a decimal, numeric, smallmoney or money output parameter - Fixed bug where the reading/writing of a datetime field could be off by one second - Fixed bug where ResultSet.getDouble() would sometimes not return the exact value stored in SQL Server for a float field JTurbo 3.0b2 (9/4/2001) ----------------------- Bug Fixes: - Fixed bug with Statement and ResultSet methods get/setFetchDirection() - Statement.getMoreResults() now implicitly closes the current ResultSet - Connection.setHoldability() now checks for valid value before storing value - DatabaseMetaData.supportsResultSetConcurrency() now returns true when passed TYPE_SCROLL_INSENSITIVE and not CONCUR_READ_ONLY - Fixed bug with executing batches using PreparedStatement object - Fixed bug where CallableStatement.getObject() throws exception for some java.sql.Types if they value from the server is an array with a length of 0 - uniqueidentifier fileds are now returned properly - PreparedStatement and CallableStatement now throw an exception if addBatch( String sql ), execute( String sql ), executeQuery( String sql ) or executeUpdate( String sql ) are called - Fixed bug with executing batches using CallableStatement object - if ResultSet type is TYPE_FORWARD_ONLY then the following methods now throw an exception: previous, first, last, beforeFirst, afterLast, relative, absolute JTurbo 3.0b1 (8/13/2001) ------------------------ Branded as a New Atlanta product. Optimized the rowset implementation. Bug Fixes: - Added support for alternate url for supporting cluster env where servernames have "/" in their names. - Fixed bug with SP flag not being set and always treated as FALSE. JTurbo 3.0 version 0.91 Beta ---------------------------- NONE JTurbo 3.0 version 0.9 Beta --------------------------- Bug Fixes: - Fixed problems with inserting Strings into SQL Server 2000 - Fixed bug with return values from CallableStatements - Improved performance of CallableStmt execution. - Fixed getMoreResults() and getUpdateCount() - support getDatabaseProductVersion() - support getColumnClassName(int) - Fixed bug with executing CallableStatement with no parameters - Fixed bug with inserting Strings with double backslash("//") using PreparedStmt - Added support for BigInt - Fixed bug with null return values for Strings when using CallableStatements. - Fixed Bad State problem in FSM when using '//' in the string selection pattern - Fixed executeQuery to return the first resultset available in the list. - Fixed bug with retrieving UniqueIdentifier columns. JTurbo 3.0 version 0.3 Beta --------------------------- Bug Fixes: - Fixed few bugs with PreparedStatement and Stored Procedures. - Fixed bug with SQL Server 6.5 and Stored Procedure - Fixed bug with execute() always returning false.