     JDBCREADME.TXT
     DataDirect Technologies
     DataDirect Connect for JDBC
     Release 3.5 (Build 0023)
     January 2006

***********************************************************************
Copyright (c) 2006 DataDirect Technologies Corp.  
All rights reserved. 
 
The DataDirect Connect(R) for JDBC(TM) drivers include certain software 
products made available for distribution by Sun Microsystems, Inc. and 
are subject to the following limitation:
 
Java(R) Technology Restrictions. You may not modify the Java(TM) 
Platform Interface ("JPI", identified as classes contained within the 
"java" package or any subpackages of the "java" package), by creating 
additional classes within the JPI or otherwise causing the addition to 
or modification of the classes in the JPI. In the event that you 
create an additional class and associated API(s) which (i) extends 
the functionality of the Java Platform, and (ii) is exposed to third 
party software developers for the purpose of developing additional 
software which invokes such additional API, you must promptly publish 
broadly an accurate specification for such API for free use by all 
developers. You may not create, or authorize your licensees to create 
additional classes, interfaces, or subpackages that are in any way 
identified as "java", "javax", "sun" or similar convention as specified 
by Sun in any naming convention designation.
 
DataDirect Connect is a registered trademark of DataDirect Technologies 
Corp. in the U.S. JDBC, Java and all Java-based marks are trademarks or 
registered trademarks of Sun Microsystems, Inc. in the U.S. and other 
countries. Any other trademarks or service marks contained herein are 
the property of their respective owners.
***********************************************************************

This README file contains additional database driver information not 
included in the DataDirect Connect for JDBC documentation or the online 
help.

CONTENTS

Changes Since 3.5 SP2 (Build 0017)
Changes Since 3.5 GA (Build 0000)
Release 3.5 Features
Installation
Available DataDirect Connect for JDBC Drivers
Notes, Known Problems, and Restrictions
Using the Online Documents
DataDirect Connect for JDBC Files


     Changes Since 3.5 SP2 (Build 0017)

See FIXES.TXT for a detailed list of issues that have been addressed 
since Release 3.5 SP2 (Build 0017).

All Drivers
-----------

* A String connection option, InitializationString, was added to allow 
  specifying one or multiple SQL commands that the driver executes 
  after it has established the connection to the database and has 
  performed all initialization for the connection. For example, the 
  DataDirect Connect for Sybase driver sets the Sybase database 
  ansinull option to on by default. To restore the default Sybase 
  behavior for a connection, you can use the InitializationString 
  connection option to specify the command, set ANSINULL off. Valid 
  values for this option include any SQL command that is valid for the 
  database to which the driver is connecting. Multiple commands must be 
  separated by semicolons. In addition, if the InitializationString 
  option is specified in a connection URL, the entire value must be 
  enclosed in parentheses when multiple commands are specified. For 
  example:

  jdbc:datadirect:sybase://myhost:4100;InitializationString= 
  (set ANSINULL off;set QUOTED_IDENTIFIER on);DatabaseName=test


     Changes Since 3.5 SP1 (Build 0011)

See FIXES.TXT for a detailed list of issues that have been addressed 
since Release 3.5 SP1 (Build 0011).

SQL Server
---------
* A string connection option, TransactionMode, was added to control how 
  the driver delimits the start of a local transaction. The value of 
  the TransactionMode option can be implicit or explicit.

  When TransactionMode is set to implicit, the driver uses 
  implicit transaction mode. This means that SQL Server, not the 
  driver, automatically starts a transaction when a transactionable 
  statement is executed.  

  When TransactionMode is set to explicit, the driver uses explicit 
  transaction mode. This means that the driver, not SQL server, starts 
  a new transaction if the previous transaction was committed or rolled 
  back.

  Typically, implicit transaction mode is more efficient than explicit
  transaction mode because the driver does not have to send commands to 
  start a transaction and a transaction is not started until it is 
  needed. Our testing has revealed that when TRUNCATE TABLE statements 
  are used with implicit transaction mode, SQL Server may rollback the 
  transaction if an error occurs. If this occurs, using explicit 
  transaction mode resolves this issue.

  The default value for the TransactionMode connection option is 
  implicit.
 
* The DataDirect Connect for JDBC SQL Server driver supports 
  Microsoft SQL Server 2005, including support for the new Snapshot 
  isolation levels and new varchar(max), nvarchar(max), and 
  varbinary(max) data types.

* To use the Read Committed with Snapshots isolation level:

  1. The READ_COMMITTED_SNAPSHOT option on the database must be set to 
     ON. Contact your database administrator to verify this setting.

  2. Set the isolation level using the Connection constant 
     TRANSACTION_READ_COMMITTED. For example:
 
     conn.setTransactionIsolation 
        (Connection.TRANSACTION_READ_COMMITTED);

  When the READ_COMMITTED_SNAPSHOT database option is set to ON and 
  the application sets the transaction isolation level using the 
  TRANSACTION_READ_COMMITTED constant, SQL Server uses 
  the Read Committed with Snapshots isolation level. When the 
  READ_COMMITTED_SNAPSHOT database option is set to OFF and the 
  application sets the transaction isolation level using the 
  TRANSACTION_READ_COMMITTED constant, SQL Server uses the Read 
  Committed with Locks isolation level.

* To use the Snapshot isolation level:

  1. The ALLOW_SNAPSHOT_ISOLATION option on the database must be set 
     to ON. Contact your database administrator to verify this setting.

  2. Choose one of the following methods to implement the Snapshot 
     isolation level:
  
     - Set the new Boolean SnapshotSerializable connection option 
       to true to change the behavior of the TRANSACTION_SERIALIZABLE 
       isolation level to use the Snapshot isolation level. Then, call
       Connection.setTransactionIsolation(TRANSACTION_SERIALIZABLE).

     - Import the ExtConstants class in the 
       com.ddtek.jdbc.extensions package to be able to set the 
       TRANSACTION_SNAPSHOT constant. Then, call 
       Connection.setTransactionIsolation 
       (ExtConstants.TRANSACTION_SNAPSHOT). For example:

       import com.ddtek.jdbc.extensions.ExtConstants;
       Connection.setTransactionIsolation 
          (ExtConstants.TRANSACTION_SNAPSHOT);

     Using the SnapshotSerializable connection option allows an 
     application to use the Snapshot isolation level with no or 
     minimum code changes. Importing the ExtConstants class allows you
     to specify the TRANSACTION_SNAPSHOT or TRANSACTION_SERIALIZABLE 
     isolation levels for an individual statement in the same 
     application.

  Using the SnapshotSerializable connection option:

  The SnapshotSerializable option allows the driver to use the Snapshot
  isolation level by changing the behavior of the 
  TRANSACTION_SERIALIZABLE isolation level. When the 
  SnapshotSerializable option is set to true and the application calls
  Connection.setTransactionIsolation(TRANSACTION_SERIALIZABLE), the 
  driver uses the Snapshot isolation level. When the 
  SnapshotSerializable option is set to false, the driver uses the 
  default behavior of the TRANSACTION_SERIALIZABLE isolation level. 
  The default value is false.

  Using the ExtConstants class:  

  DataDirect provides a class named ExtConstants in the 
  com.ddtek.jdbc.extensions package that defines a new constant named 
  TRANSACTION_SNAPSHOT. This constant can be used to specify the 
  SNAPSHOT isolation level for individual statements. ExtConstants
  is a DataDirect-specific class that provides access to functionality 
  not defined in the JDBC specification. 

* The driver supports the new varchar(max), nvarchar(max), and 
  varbinary(max) data types. The varchar(max) and nvarchar(max) data 
  types are mapped to the LONGVARCHAR data type. In addition, these 
  data types can be retrieved as a Clob. The varbinary(max) data type 
  is mapped to the LONGVARBINARY data type. In addition, this data type 
  can be retrieved as a Blob.

Informix
--------
* A new connection option, UseDelimitedIdentifier, was added to control 
  how the Informix server interprets double quote (") characters in SQL 
  statements. When UseDelimitedIdentifier is set to true, the driver 
  sets the DELIMIDENT Informix environment variable, causing the 
  Informix server to interpret strings enclosed in double quotes as 
  identifiers, not as string literals. When UseDelimitedIdentifier is 
  set to false, the driver does not set the DELIMIDENT environment 
  variable, and the Informix server interprets strings enclosed in 
  double quotes as string literals, not as identifiers. The default 
  value is true.
 
  NOTE: If the DELIMIDENT environment variable is set outside of the 
  driver, the driver cannot change the setting. In this case, setting 
  the UseDelimitedIdentifier connection option has no effect.

Connection Pool Manager
-----------------------
* Two new setDataSourceName() methods have been added to the 
  PooledConnectionDataSource class in the DataDirect com.ddtek.pool 
  package. This class is used to create pooled connection data sources 
  for use with the DataDirect Connection Pool Manager. The following 
  methods allow an application to specify the JNDI name of the 
  DataDirect Connect for JDBC pooled DataSource object and the pooled 
  DataSource object (ConnectionPoolDataSource) or the Java naming 
  context used to look up the pooled DataSource object. 

  void setDataSourceName                 Sets the DataDirect Connect 
  (String DataSourceName,                for JDBC pooled DataSource 
  ConnectionPoolDataSource dataSource)   referenced by this            
                                         data source and the JNDI name
                                         associated with the 
                                         ConnectionPoolDataSource. 
 
                                         The ConnectionPoolDataSource 
                                         specified in the place of
                                         dataSource is persisted with 
                                         this data source. Changes 
                                         made to the specified 
                                         ConnectionPoolDataSource 
                                         after this data source is 
                                         persisted do not affect this 
                                         data source. 
                                               
  void setDataSourceName                 Sets the JNDI name and context 
  (String dataSourceName,                to be used to look up the
  Context ctx)                           DataDirect Connect for JDBC
                                         pooled DataSource referenced 
                                         by this data source. 
                                         
                                         The JNDI name and context 
                                         specified in the place of 
                                         dataSourceName and ctx are 
                                         used to look up a pooled 
                                         DataSource. The pooled 
                                         DataSource is persisted with 
                                         this data source. Changes made 
                                         to the DataSource bound to
                                         the specified JNDI name after  
                                         this data source is persisted
                                         do not affect this 
                                         data source. 

The method setDataSourceName(String dataSourceName) documented in the 
DATADIRECT CONNECT FOR JDBC USER'S GUIDE AND REFERENCE (JDBCREF.PDF) 
causes the JNDI name specified by dataSourceName to be persisted by the 
PooledConnectionDataSource (connection pool). The 
ConnectionPoolDataSource object bound to the specified dataSourceName 
is not persisted. Changes made to the ConnectionPoolDataSource bound to 
the specified dataSourceName affect the PooledConnectionDataSource.


     Changes Since 3.5 GA (Build 0000)

Connection Pool Manager
-----------------------
The Connection Pool Manager now provides functionality that allows an 
application or development tool to retrieve statistics for the pools 
managed by the Pool Manager. The statistics include values such as the 
minimum pool size, maximum pool size, the number of available 
connections in the pool, and more. Two new methods were added to the 
PooledConnectionDataSource class to allow an application to retrieve a 
ConnectionPoolMonitor or a list of ConnectionPoolMonitors. A 
ConnectionPoolMonitor is a new class that returns statistics data for a 
particular connection pool.  

The following methods were added to the 
com.ddtek.pool.PooledConnectionDataSource class:

* public static ConnectionPoolMonitor[ ] getMonitor( )
  
  Returns an array of ConnectionPoolMonitors, one for each connection 
  pool managed by the Pool Manager.

* public static ConnectionPoolMonitor getMonitor(String name)

  Returns the ConnectionPoolMonitor for the pool with the specified 
  name or null if a pool with the specified name cannot be found. The
  connection pool name has the form <jndi-name>-<user id>, 
  where <jndi-name> is the name used in the JNDI lookup of the pooled 
  DataSource object from which the pooled connection was obtained and 
  <user id> is the user ID used to establish the connections contained 
  in the pool.

  The following example shows how to return the pool monitor for the 
  connection pool that is bound to the JNDI lookup name 
  jdbc/SQLServerPool and connections established by user test04.

  DataSource ds = (DataSource) ctx.lookup("jdbc/SQLServerPool");
  Connection con = ds.getConnection("test04", "test04");
  ConnectionPoolMonitor monitor  
    PooledConnectionDataSource.getMonitor("jdbc/SQLServerPool-test04"); 

The new ConnectionPoolMonitor class provides the following methods.

* public String getName( )

  Returns the name of the connection pool associated with the 
  monitor. The connection pool name has the form 
  <jndi-name>-<user id>, where <jndi-name> is the JNDI lookup name the 
  PooledConnectionDataSource that created the pool is bound to and 
  <user id> is the user ID used to establish the connections contained 
  in the pool.

* public int getPoolSize( ) 
 
  Returns the current size of the connection pool. This is the sum of 
  the number of active connections plus the number of available 
  connections.

* public int getNumActive( )

  Returns the number of connections that have been checked out of the 
  pool and are currently in use.

* public int getNumAvailable( )

  Returns the number of connections that are idle in the pool. These 
  connections are available to be checked out.

* public int getInitialPoolSize( ) 
 
  The initial size of the connection pool, for example, the number of 
  available connections in the pool when the pool was first created.

* public int getMinPoolSize( )

  The minimum number of available connections in the connection pool. 
  If the number of available connections drops below this value, the 
  Pool Manager creates more new connections and makes them available.

* public int getMaxPoolSize( )
  
  The maximum number of available connections in the connection pool. 
  If the number of available connections rises above this value, the 
  Pool Manager destroys one or more of the available connections.


     Release 3.5 Features

All Drivers
-----------
     * New Performance Tuning Wizard applet simplifies driver 
       configuration by recommending optimal performance settings.
     * All drivers have been certified with J2SE 5.0.
     * Enhanced ResultSet metadata support.
     * Connection retry feature enhanced to work in environments with a 
       single server as well as environments with multiple servers 
       (primary and alternate).
     * New JavaDoubleToString connection option allows you to choose 
       the optimal conversion algorithm when converting double or float 
       values to string values.
     * New ResultSetMetaDataOptions connection option allows the driver 
       to return table name information in ResultSet metadata for 
       Select statements.

NOTE: Because of some last minute issues with Rowset test suites, the 
DataDirect Connect for JDBC drivers were not certified for use with the 
JSR-114 Rowset reference implementations in the 3.5 GA release as is 
stated in the DATADIRECT CONNECT FOR JDBC USER'S GUIDE AND REFERENCE 
(JDBCREF.PDF). We are working to resolve the test issues and anticipate 
having the drivers certified with the JSR-114 Rowset reference 
implementation in an upcoming 3.5 patch.

DB2
---
     * Support for the following DB2 database versions:
       - DB2 v8.2 for Linux/UNIX/Windows
       - DB2 v8.1 for z/OS
       - DB2 V5R3 for iSeries
     * Support for new DB2 v8.2 for Linux/UNIX/Windows features, 
       including:
       - Maximum length of SQL statements increased to 2MB
       - Ability to create tables with a Unicode character set in a 
         database with a non-Unicode default character set
       - Nested savepoints
     * Support for new DB2 v8.1 for z/OS features, including:
       - Cancel and query timeout support
       - Extended identifier lengths 
     * Support for new DB2 v5R3 for iSeries features, including: 
       - Support for new UTF-8 and UTF-16 encodings
     * Driver now supports parameter metadata for all supported DB2 
       platforms and versions.
     * New EnableCancelTimeout connection option that provides the 
       ability to time out cancel requests.
     * Performance improvements.

Informix
--------
     * Support existing functionality against Informix 10.
     * Parameter metadata support.
     * New DBDate connection option sets the Informix DBDate server 
       environment variable.
 
Oracle
------
     * Driver has been certified with Oracle 10g, R2.
     * New Windows-specific Type 2 OS authentication method supports 
       NTLM authentication.
     * Parameter metadata support.
     * New EnableCancelTimeout connection option provides the ability 
       to time out cancel requests.
     * New SendFloatParametersAsString connection option allows the 
       driver to send float and double parameters to the server as a 
       string or floating point number.
     * New WireProtocolMode connection option allows the driver to 
       optimize network traffic to the Oracle server for result sets.
     * Improved character set support.
     * Improved LOB performance.

SQL Server
----------
     * New Type 2 OS authentication method supports both Kerberos and 
       NTLM authentication.
     * New PacketSize connection option allows you to fine-tune the 
       size of the packet the driver uses to communicate with the 
       database server.
     * New EnableCancelTimeout connection option that provides the 
       ability to time out cancel requests.
     * Parameter metadata support.
     * Performance improvements.

Sybase
------
     * Support for Sybase 12.5.3.
     * New EnableCancelTimeout connection option that provides the 
       ability to time out cancel requests.
     * New UseAlternateProductInfo connection option allows you to 
       specify whether the driver will perform additional processing to 
       return more accurate information for the 
       DatabaseMetaData.getDatabaseProductName() and 
       DatabaseMetaData.getDatabaseProductVersion() methods. 
     * New ErrorBehavior connection option allows you to fine-tune how 
       errors that are returned from Stored Procedures are handled.

Enhancement Requests and Fixes
------------------------------
The following enhancement requests have been implemented in 
this release:

Issue # | Component Modified | Description of Issue

DEF0000187 | Informix | Added a connection option, DBDate, for setting 
the Informix DBDate server environment variable.

DEF0000199 | Sybase | connection.getMetaData().getDatabaseProductName()  
returned the value "SQL Server" instead of "Sybase".

DEF0000567 | DB2 | Driver generated "No more available statements. 
Please recreate your package with a larger dynamicSections value" 
exception when the number of prepared statement execute calls made 
within a transaction exceeded the number of package sections. The 
original description of this issue was "Driver did not dynamically 
increase dynamic sections".

DEF0000596 | Oracle | Changed CatalogOptions connection property so the 
COLUMN_DEF column in the result set returned from 
DatabaseMetaData.getColumns contains the default value of a column.

DEF0000603 | Oracle | Enhanced driver to support getImportedKeys(), 
getExportedKeys, and getPrimaryKeys() with SYNONYMS.

DEF0000609 | All Drivers | Query timeout did not work correctly with 
non-Oracle drivers.

DEF0000610 | All Drivers | Added ability for the Cancel sent as the 
result of a query timeout to time out and disable the connection.

DEF0000678 | All Drivers | Added ResultSetMetaData.getTableName 
support.

DEF0000782 | Oracle | Enhanced driver to include Type 2 OS 
authentication support.

DEF0000849 | All Drivers | Added ResultSetMetaData.getTableName support 
to drivers that did not have it. (Duplicate of DEF0000678)

DEF0000971 | All Drivers | Modified connection exception to identify 
relevant host and port.

DEF0000978 | All Drivers | Added emulation ability so that all drivers 
can provide ParameterMetaData for ANSI SELECT statements.

DEF0000990 | Oracle | Changed the default behavior of the Oracle driver 
to not substitute question marks for SJIS characters that do not exist 
in MS932.

DEF0001070 | DB2 | Added a connection option named 
AllowImplicitCloseForXA to disable implicit result set closure.

DEF0001071 | DB2 | Error message that was generated when the 
DatabaseName and LocationName properties are both NULL was improved.

DEF0001074 | Pool Manager | Connection failed when the setDescription() 
method on the PooledConnectionDataSource class was not called.

DEF0001110 | SQLServer | Enhanced driver to add a new Windows-specific 
(Type 2) method of Windows authentication.

DEF0001165 | Sybase | connection.getMetaData().getDatabaseProductName()  
returned the value "SQL Server" instead of "Sybase". (Duplicate of 
DEF0000199)

DEF0001241 | Oracle | Attempting to connect to a database with an 
expired password resulted in a failed connection and an incorrect error 
message.

DEF0001243 | All Drivers | The drivers should throw an exception when 
Connection.setHoldability is called with a value of 
ResultSet.CLOSE_CURSOR_AT_COMMIT because the drivers do not support 
that holdability mode. Statement.getResultSetHoldability method 
returned an incorrect value. 

DEF0001259 | Documentation | Documented that the driver sets the Sybase 
ansinull option to "on" when establishing a connection.

DEF0001330 | DB2 | DB2 driver did not return a helpful error message 
when a system temporary tablespace with a larger page size was needed.

DEF0001333 | SQLServer | Driver enhanced to allow applications to 
obtain uniqueidentifier values using the ResultSet.getBytes() and 
ResultSet.getBinaryStream() methods.

DEF0001348 | Pool Manager | Connection pool trace was modified so that 
the database password does not appear in the trace.

DEF0001350 | Oracle | DATA_TYPE returned from getColumns was incorrect 
for Oracle BLOB and TIMESTAMP.

DEF0001352 | Documentation | Documentation was enhanced to include more 
information about Pool Manager tracing.

DEF0001404 | Documentation | Improved documentation to include the Java 
data type used in JDBC data sources for each driver connection option.

DEF0001405 | Oracle | Modified how the driver communicates with the 
Oracle server when character data is sent to the server in the UTF-8 
character encoding to resolve issues previous drivers had with UTF-8.

DEF0001430 | DB2 | Driver was unable to insert to a CHAR(1) column with 
setBoolean().


     Installation

For All Users
--------------
At a minimum, J2SE 1.3 or higher is required to use DataDirect Connect 
for JDBC. Standard installations of J2SE on some platforms do not 
include the jar file containing the extended encoding set that is 
required to support some of the less common database code pages. To 
verify whether your J2SE version provides extended code page support, 
check your J2SE installation for the following files:

- For J2SE 1.3 and 1.3.x, i18n.jar must be installed in the 
  lib subdirectory of your J2SE installation directory.

- For J2SE 1.4 and higher, charsets.jar must be installed 
  in the lib subdirectory of your J2SE installation 
  directory.

If you do not have the required file for your J2SE version, re-install 
J2SE, making sure that you install the international version of J2SE. 

After you have started the installation process, as described in the 
DATADIRECT CONNECT FOR JDBC INSTALLATION GUIDE (JDBCIG.PDF), a progress 
bar is displayed on the screen. If you choose to cancel the 
installation at this stage, files that have already been copied to your 
machine will not be removed. You must delete these files manually from 
the installation directory.

The DataDirect Connect for JDBC installer accepts multiple product 
keys. For details, refer to the DATADIRECT CONNECT FOR JDBC 
INSTALLATION GUIDE (JDBCIG.PDF).

For UNIX Users
--------------
If you receive an error message when executing any DataDirect Connect 
for JDBC shell script (.sh files), including installer.sh, make sure 
that the file has EXECUTE permission. To do this, use the chmod 
command. For example, to grant EXECUTE permission to the installer.sh 
file, change to the directory containing installer.sh and enter:

chmod +x installer.sh


     Available DataDirect Connect for JDBC Drivers

See the DATADIRECT CONNECT FOR JDBC INSTALLATION GUIDE (JDBCIG.PDF) for 
a complete list of supported databases.

Drivers
-------
DB2 (db2.jar) 
Informix (informix.jar) 
Oracle (oracle.jar) 
SQL Server (sqlserver.jar) 
Sybase ASE (sybase.jar)


     Notes, Known Problems, and Restrictions

The following are notes, known problems, or restrictions with 
Release 3.5 of DataDirect Connect for JDBC.

WireProtocolMode Connection Option Description
----------------------------------------------
The description of the WireProtocolMode connection option on page 145 
of the DATADIRECT CONNECT FOR JDBC USER'S GUIDE AND REFERENCE 
(JDBCREF.PDF) and the corresponding text in the online Help is 
incorrect. The description should state:

     "Specifies whether the driver optimizes network traffic to the 
      server for result sets containing repeating data.

      If set to 1 (the default), the driver operates in normal wire 
      protocol mode without optimizing network traffic for result sets 
      containing repeating data.

      If set to 2, the driver optimizes network traffic to the Oracle
      server for result sets containing multiple rows that have
      repeating data in some or all columns. Specifically, if 
      the same column contains identical data across multiple 
      consecutive rows in the result set, setting this property to 2 
      can improve performance. Setting this property to 2 may 
      degrade performance for single row result sets or result sets 
      that do not contain repeating data."

Starting the Performance Tuning Wizard on Windows XP SP2
--------------------------------------------------------
When starting the Performance Tuning Wizard, security features added in 
Windows XP Service Pack 2 cause Internet Explorer by default to block 
all active content such as Java applets. This prevents the Wizard from 
launching even though the page that contains it loads successfully. The 
following message is displayed in the toolbar: 

"To help protect your security, Internet Explorer has restricted this 
file from showing active content that could access your computer."

Click the message and select "Allow Blocked Content." A security 
warning message is displayed. Click Yes to allow the Performance Tuning 
Wizard to run.

Distributed Transactions Using JTA
----------------------------------
If you are using JTA for distributed transactions, you may encounter 
problems when performing certain operations, as shown in the following 
examples:

SQL SERVER 7

1. Problem: SQL Server 7 does not allow resource sharing because it 
cannot release the connection to a transaction until it commits or 
rolls back.

  xaResource.start(xid1, TMNOFLAGS)
  ...
  xaResource.end(xid1, TMSUCCESS)
  xaResource.start(xid2, TMNOFLAGS) ---> fail
 
2. Problem:  Table2 insert rolls back. It should not roll back because 
it is outside of the transaction scope.

  xaResource.start(xid1, TMNOFLAGS)
  stmt.executeUpdate("insert into table1 values (1)");
  xaResource.end(xid1, TMSUCCESS)
 
  stmt.executeUpdate("insert into table2 values (2)");
 
  xaResource.prepare(xid1);
  xaResource.rollback(xid1);
 
SQL SERVER 7 and SQL SERVER 2000

1. Problem: Recover should not return xid1 because it is not yet 
prepared.

  xaResource.start(xid1, TMNOFLAGS)
  xaResource.recover(TMSTARTRSCAN) ---> returns xid1 transaction

This problem has been resolved in DTC patch QFE28, fix number 
winse#47009, "In-doubt transactions are not correct removed from the 
in-doubt transactions list".

This Microsoft issue is documented at 
http://support.microsoft.com/default.aspx?scid=kb;en-us;828748.


All Drivers
-----------
The DataDirect Connect for JDBC drivers no longer accept connection 
URLs in the format: 
       
     jdbc:<database_name>://<servername>:<port>

For example, the following URLs are no longer valid:

     jdbc:db2://myserver:50000
     jdbc:informix://myserver:2003
     jdbc:oracle://myserver:1521
     jdbc:sqlserver://myserver:1433
     jdbc:sybase://myserver:5000
       
Support for URLs in this format has been deprecated for several 
releases, but the drivers have continued to accept URLs in this format 
for backwards compatibility. DataDirect Connect for JDBC drivers cannot 
continue to accept URLs in this format because doing so causes 
conflicts with the JDBC drivers provided by the database vendors.

The supported URL format for DataDirect Connect for JDBC drivers is:

     jdbc:datadirect:<database_name>://<servername>:<port>

See the DATADIRECT CONNECT FOR JDBC USER'S GUIDE AND REFERENCE 
(JDBCREF.PDF) for details on specifying connection URLs.

The DataDirect Connect for JDBC drivers support retrieval of output 
parameters from a stored procedure before all result sets and/or update 
counts have been completely processed. When CallableStatement.getXXX is 
called, result sets and update counts that have not yet been processed 
by the application are discarded to make the output parameter data 
available. Warnings are generated when results are discarded.

The DataDirect Connect for JDBC drivers allow PreparedStatement.setXXX 
methods and ResultSet.getXXX methods on Blob/Clob data types, in 
addition to the functionality described in the JDBC specification. The 
supported conversions typically are the same as those for 
LONGVARBINARY/LONGVARCHAR, except where limited by database support.

Calling CallableStatement.registerOutputParameter(parameterIndex, 
sqlType) with sqlType Types.NUMERIC or Types.DECIMAL sets the scale of 
the output parameter to zero (0). According to the JDBC specification, 
calling CallableStatement.registerOutputParameter(parameterIndex, 
sqlType, scale) is the recommended method for registering NUMERIC or 
DECIMAL output parameters. 

When attempting to create an updatable, scroll-sensitive result set for 
a query that contains an expression as one of the columns, the driver 
cannot satisfy the scroll-sensitive request. The driver downgrades the 
type of the result returned to scroll-insensitive.

The preferred method for executing a stored procedure that generates 
result sets and update counts is using CallableStatement.execute(). If 
multiple results are generated using executeUpdate, the first update 
count is returned. Any result sets prior to the first update count are 
discarded. If multiple results are generated using executeQuery, the 
first result set is returned. Any update counts prior to the first 
result set are discarded. Warnings are generated when result sets or 
update counts are discarded. 

The ResultSet methods getTimestamp, getDate, and getTime return 
references to mutable objects. If the object reference returned from 
any of these methods is modified, re-fetching the column using the same 
method returns the modified value. The value is only modified in 
memory; the database value is not modified.

DB2 (All Platforms)
-------------------
The ResultSetMetaData.getObject method returns a Long object instead of 
a BigDecimal object when called on BIGINT columns. In previous 
versions, the DataDirect Connect for JDBC DB2 driver returned a 
BigDecimal object.

Scroll-sensitive result sets are not supported. Requests for scroll-
sensitive result sets are downgraded to scroll-insensitive result sets 
when possible. When this happens, a warning is generated indicating 
that result set scrollability has been downgraded.

The DataDirect Connect for JDBC DB2 driver must be able to determine 
the data type of the column or stored procedure argument to implicitly 
convert the parameter value. Not all DB2 database versions support 
getting parameter metadata for prepared statements. Implicit 
conversions are not supported for database versions that do not provide 
parameter metadata for prepared statements.

DB2 (Windows/UNIX)
------------------
Except for DB2 v8.1 and v8.2 for Linux/UNIX/Windows, Clob data types 
are limited to a maximum length of 32714 bytes because of DRDA listener 
limitations.

Except for DB2 v8.1 and v8.2 for Linux/UNIX/Windows, Blob data types 
are not supported because of DRDA listener limitations.

DB2 (iSeries)
------------------------
Except for DB2 V5R2 and V5R3 for iSeries, Blob and Clob data types are 
not supported.

Oracle
------
If you install the DataDirect Connect for JDBC Oracle driver and want 
to take advantage of JDBC distributed transactions through JTA, you 
must install Oracle version 8.1.7 or higher.

Because JDBC does not support a cursor data type, the DataDirect 
Connect for JDBC Oracle driver returns REF CURSOR output parameters to 
the application as result sets. For details about using REF CURSOR 
output parameters with the driver, refer to the DATADIRECT CONNECT FOR 
JDBC USER'S GUIDE AND REFERENCE (JDBCREF.PDF).

By default, values for TIMESTAMP WITH TIME ZONE columns cannot be 
retrieved using the ResultSet.getTimestamp method because the time zone 
information would be lost. The DataDirect Connect for JDBC Oracle 
driver returns NULL when the getTimestamp method is called on a 
TIMESTAMP WITH TIME ZONE column and generates a SQLException. For 
details about using the TIMESTAMP WITH TIME ZONE data type with the 
driver, refer to the DATADIRECT CONNECT FOR JDBC USER'S GUIDE AND 
REFERENCE (JDBCREF.PDF). 

The DataDirect Connect for JDBC Oracle driver now describes columns 
defined as FLOAT or FLOAT(n) as a DOUBLE SQL type. The driver 
previously described these columns as a FLOAT SQL type. Both the DOUBLE 
type and the FLOAT type represent a double precision floating point 
number. This change provides consistent functionality with the 
DataDirect Connect for ODBC Oracle driver. The TYPE_NAME field that 
describes the type name on the Oracle database server was changed from 
number to float to better describe how the column was created.

SQL Server
----------
If you install the DataDirect Connect for JDBC SQL Server driver and 
want to take advantage of JDBC distributed transactions through JTA, 
you must install JDBC XA Procedures. See the SQL Server chapter in the 
DATADIRECT CONNECT FOR JDBC USER'S GUIDE AND REFERENCE (JDBCREF.PDF) 
for details.

Type 4 Windows Authentication (Pure Java) is supported from Windows 
clients running Windows 2000, Windows XP, or Windows 2003 Server only. 
Support for UNIX clients is planned for a future release. 

Type 2 Windows authentication (Windows-specific) requires Microsoft SQL 
Server 2000 service pack 3 or higher when connecting to Microsoft SQL 
Server 2000.

In some cases, when using Windows authentication, Windows XP and 
Windows Server 2003 clients appear to use NTLM instead of Kerberos to 
authenticate the user with the domain controller. In these cases, user 
credentials are not stored in the local ticket cache and cannot be 
obtained by the DataDirect Connect for JDBC SQL Server driver, causing 
the Windows Authentication login to fail. This is caused by a known 
problem in the Sun 1.4.x JVM; this problem is planned to be fixed in 
the 1.5 JVM. As a workaround, the "os.name" system property can be set 
to "Windows 2000" when running on a Windows XP or Windows Server 2003 
machine. For example:

  -Dos.name="Windows 2000"

To ensure correct handling of character parameters, install 
Microsoft SQL Server 7 Service Pack 2 or higher.

Because of the way CHAR, VARCHAR, and LONGVARCHAR data types are 
handled internally by the driver, parameters of these data types 
exceeding 4000 characters in length cannot be compared or sorted, 
except when using the IS NULL or LIKE operators.

The SendStringParameterAsUnicode connection option is set to true by 
default. Setting this option to true can negatively impact performance 
if an application does string comparison in SQL and the data stored in 
the database is not Unicode. On the other hand, setting this option to 
false can cause data corruption or unexpected comparison results if the 
data is not stored in the default database character set. Microsoft SQL 
Server allows you to define columns in a table that use a character set 
other than the default database character set. When sending parameter 
data to the server, the driver does not know what the character set is 
for the column that is being compared or modified. Sending parameter 
data as Unicode will always work, but is subject to the conversion and 
performance issues mentioned in the Microsoft document: 
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q271566.


     Using the Online Documents

You can view the Online Documents with Adobe Acrobat Reader version 4.0 
or higher. The books are an installable option for DataDirect Connect 
for JDBC. For instructions on how to use the Online Documents and 
Acrobat Reader, refer to the last chapter in the DATADIRECT CONNECT FOR 
JDBC NSTALLATION GUIDE (JDBCREF.PDF).

NOTE: Adobe Acrobat Reader is no longer distributed on the DataDirect 
Connect Series CD. To download Acrobat Reader from the Web, go to 
Adobes Web site at http://www.adobe.com.


     DataDirect Connect for JDBC Files 

When you extract the contents of the connectjdbc.jar file to your 
installer directory, you will notice the following files that are 
required to install DataDirect Connect for JDBC: 

BuildAdapters.jar          File used to create resource adapters
ddjdbc35.jar               File used to install the  drivers
fixes.txt                  File that lists fixes in this release                           
installer.bat              Batch file to start the GUI installer
installer.sh               Shell script to start the GUI installer
Java Technology Restrictions notice.txt   
                           Copyright notice required by  
                           Sun Microsystems, Inc
JDBCInstaller.jar          File containing the installer                                          
LicenseTool.jar            File required to extend an evaluation 
                           installation
MANIFEST.MF                Manifest file
jdbcreadme.txt             This file 

When you install DataDirect Connect for JDBC, the installer copies all 
the following directories and files to the product installation 
directory (as determined by the user), represented by INSTALL_DIR.

To INSTALL_DIR/books/jdbc:
--------------------------
books.pdf                  Library file for Online Books
INDEX.PDX                  Index file for Adobe Acrobat full-text 
                           search
/INDEX/*.*                 Directory containing additional Adobe 
                           Acrobat index files
/jdbcig/jdbcig.pdf         DataDirect Connect for JDBC Installation 
                           Guide
/jdbcref/jdbcref.pdf       DataDirect Connect for JDBC User's Guide and 
                           Reference
/j2eedesign/j2eedesign.pdf Designing Enterprise Applications with 
                           Java 2 Enterprise Edition 
                           (Sun Microsystems document)

To INSTALL_DIR/examples:
------------------------
JNDI_FILESYSTEM_Example.java  Example Java source files
JNDI_LDAP_Example.java        Example Java source files

To INSTALL_DIR/examples/connector:
----------------------------------
ConnectorSample.ear       J2EE Application Enterprise Archive file 
                          containing the ConnectorSample application. 
connectorsample.pdf       "Using DataDirect Connect for JDBC Resource 
                          Adapters" document

To INSTALL_DIR/examples/connector/src:
--------------------------------------
ConnectorSample.jsp       Source for the JavaServer Page used to access 
                          the ConnectorSample application

To INSTALL_DIR/examples/connector/src/connectorsample:
------------------------------------------------------
ConnectorSample.java      Java source file defining the remote 
                          interface for the ConnectorSample EJB
ConnectorSampleBean.java  Java source file defining the home interface 
                          for the ConnectorSample EJB
ConnectorSampleHome.java  Java source file containing the 
                          implementation for the ConnectorSample EJB

To INSTALL_DIR/help (online help folders/files):
------------------------------------------------
*.css                     Stylesheets for HTML help system
*.html                    HTML help system
/help.htm                 Launch file for HTML help system
/images/*.*               Images for HTML help system
/wwhdata/*.*              Support files for HTML help system
/wwhelp/*.*               Support files for HTML help system

To INSTALL_DIR/testforjdbc:
--------------------------
config.txt                Configuration file for DataDirect Test 
testforjdbc.bat           Batch file to start DataDirect Test
testforjdbc.sh            Shell script to start DataDirect Test
/lib/testforjdbc.jar      DataDirect Test classes

To INSTALL_DIR/lib:
-------------------
db2.jar                   DataDirect Connect for JDBC DB2 Driver 
                          and DataSource classes
informix.jar              DataDirect Connect for JDBC Informix 
                          Driver and DataSource classes
oracle.jar                DataDirect Connect for JDBC Oracle 
                          Driver and DataSource classes
sqlserver.jar             DataDirect Connect for JDBC SQL Server 
                          Driver and DataSource classes
sybase.jar                DataDirect Connect for JDBC Sybase 
                          Driver and DataSource classes
base.jar                  Classes that are used by and required by all 
                          DataDirect Connect for JDBC drivers
util.jar                  Classes that are used by and required by all 
                          DataDirect Connect for JDBC drivers
db2packagemanager.jar     DataDirect DB2 Package Manager jar file 
DDJDBCAuthxx.dll          Windows DLL that provides support for Type 2 
                          OS authentication (32-bit), where xx is the 
                          Build number of the DLL
DDJDBC64Authxx.dll        Windows DLL that provides support for Type 2 
                          OS authentication (64-bit), where xx is the 
                          Build number of the DLL
DB2PackageManager.bat     Batch file to start the DataDirect DB2 
                          Package Manager
DB2PackageManager.sh      Shell script to start the DataDirect DB2 
                          Package Manager
JDBCDriver.policy         Security policy file listing permissions that 
                          must be granted to the driver to use Windows 
                          authentication with a Security Manager
JDBCDriverLogin.conf      Configuration file that instructs the driver 
                          to use the Kerberos login module for 
                          authentication
krb5.conf                 Kerberos configuration file


To INSTALL_DIR/lib/JCA:
-----------------------
resource.jar              J2EE Connector Architecture resource adapter 
                          components 

To INSTALL_DIR/lib/JCA/META-INF:
--------------------------------
db2.xml                   DB2 resource adapter deployment descriptor
informix.xml              Informix resource adapter deployment 
                          descriptor
oracle.xml                Oracle resource adapter deployment descriptor
sqlserver.xml             SQL Server resource adapter deployment 
                          descriptor
sybase.xml                Sybase resource adapter deployment descriptor
MANIFEST.MF               Manifest file

To INSTALL_DIR/pool manager:
----------------------------
pool.jar                  All DataDirect Connection Pool Manager 
                          classes

To INSTALL_DIR/spy:
-------------------
spy.jar                   All DataDirect Spy classes

To INSTALL_DIR/SQLServer JTA/32-bit:
-----------------------------------
instjdbc.sql              File for installing JTA Stored Procedures
sqljdbc.dll               File for use with JTA Stored Procedures 
                          (32-bit version)

To INSTALL_DIR/SQLServer JTA/64-bit:
-----------------------------------
instjdbc.sql              File for installing JTA Stored Procedures
sqljdbc.dll               File for use with JTA Stored Procedures 
                          (64-bit version)

To INSTALL_DIR/wizards
----------------------
index.html                HTML file used for the Performance Tuning 
                          Wizard applet
JDBCPerf.jar              Jar file containing the classes for the 
                          Performance Tuning Wizard applet

To INSTALL_DIR/wizards/logo
---------------------------
ddlogo.gif                DataDirect Technologies logo in the 
                          Performance Tuning Wizard applet

To INSTALL_DIR/sun/lib:
-----------------------
jdbc2_0-stdext.jar        Redistributable Sun Microsystems 
                          components for the JDBC 2.0 Optional Package
jndi.jar                  Redistributable Sun Microsystems components 
                          for JNDI 1.2
jta-spec1_0_1B.jar        Redistributable Sun Microsystems components 
                          for JTA 1.0.1
/fs/*.*                   Redistributable Sun Microsystems components 
                          for the File System JNDI Provider
/ldap/*.*                 Redistributable Sun Microsystems components 
                          for the LDAP JNDI Provider

In addition, installation creates the following files in 
INSTALL_DIR/lib if you choose to install the resource adapters:

db2.rar                   DB2 resource archive file
informix.rar              Informix resource archive file
oracle.rar                Oracle resource archive file
sqlserver.rar             SQL Server resource archive file
sybase.rar                Sybase resource archive file



---------------------
End of JDBCREADME.TXT
