Release Notes

for

IBM Informix JDBC Driver 2.21.JC2

Date: 12/19/2001

Table of Contents

  1. Overview of Release Notes
  2. IBM Informix Dynamic Server Compatibility
  3. Configuration
  4. Uninstallation on Windows
  5. Quoting the URL String in Demo Programs
  6. New Features
  7. JDBC FLOAT Data Type Mapping
  8. JDBC Behavior with JDK 1.4
  9. WHERE Clause Behavior Change
  10. Transaction Behavior
  11. Database Connections in the Demo Programs
  12. General IBM Informix JDBC Driver Limitations
  13. Fixed Problems
  14. Known Problems
  15. XML Parser
  16. Acknowledgements

I. Overview of Release Notes

The purpose of these release notes is to make you aware of any special actions required to configure and use the IBM Informix JDBC Driver on your computer. This file also describes new features and feature differences from earlier versions of this product and other IBM Informix products, and how these differences affect current products. In addition, this file contains information about known bugs and their workarounds. This release notes document is not intended to be all-inclusive; it should be used as an addendum to the IBM Informix JDBC Driver Programmer's Guide, Version 2.21, which provides thorough information about product features and behavior. These release notes are written for Java programmers who use the JDBC API to connect to IBM Informix databases via the IBM Informix JDBC Driver.

II. IBM Informix Dynamic Server Compatibility

IBM Informix JDBC Driver 2.21 is compatible with the following server versions:

III. Configuration

To use the IBM Informix JDBC Driver directly, you must have a JDK 1.2 (or later) package on your platform. Please refer to http://splash.javasoft.com/jdbc/ for details.

IV. Uninstallation on Windows

If JDK 1.2.2 is installed and you uninstall IBM Informix JDBC Driver on Windows NT, InstallShield displays the following message:
ifxjdbc.jar has changed since it was created. Delete anyway?
The same message appears for ifxjdbc-g.jar. Even if your response is 'yes' to remove the files, the lib directory remains with the JAR files under it. You must manually remove the lib directory.

V. Quoting the URL String in Demo Programs

When running demo programs on a UNIX machine, you can quote the URL string using single quotes, double quotes, or no quotes. The following example shows single quotes (a URL must be on one line):
java demo1 'jdbc:informix-sqli://mymachine:1526:INFORMIXSERVER=myserver; user=myname;password=mypasswd'
When running demo programs on an NT machine, you can use double quotes or no quotes, as in the following example (a URL must be on one line):
Java demo1 jdbc:informix-sqli://mymachine:1526:INFORMIXSERVER=myserver; user=myname;password=mypasswd
If you quote the URL string using single quotes on an NT machine, you see the following messages:
ERROR: failed to connect!
MSG: No suitable driver

VI. New Features

IBM Informix JDBC Driver Version 2.21 includes the following new features, each of which is fully documented in the IBM Informix JDBC Driver Programmer's Guide:

VII. JDBC FLOAT Data Type Mapping

IBM Informix JDBC Driver now conforms to the JDBC specification for JDBC FLOAT data type mapping, which specifies that the java.sql.Types.FLOAT data type maps to the Java double data type via the Informix IFX_TYPE_FLOAT data type. The previous behavior was to map java.sql.Types.FLOAT to the Java float data type via the Informix IFX_TYPE_SMFLOAT data type. The Java float type has a seven-digit mantissa, while the Java double type has a 15-digit mantissa. Consequently, the new mapping can affect existing applications that have been written to expect a float value that uses a seven-digit mantissa.

The following new Informix environment variables allow you to retain the old behavior (the default value of these variables is 0, which provides the new, JDBC specification-compliant mappings):

The following table summarizes the previous and the current data type mappings.
 
Environment Variable Setting JDBC Data Type Informix Data Type Java Data Type
IFX_SET_FLOAT_AS_SMFLOAT = 0 (new behavior) FLOAT FLOAT double
IFX_SET_FLOAT_AS_SMFLOAT = 1 (old behavior) FLOAT SMALLFLOAT float
IFX_GET_SMFLOAT_AS_FLOAT = 0 (new behavior) REAL SMALLFLOAT float
IFX_GET_SMFLOAT_AS_FLOAT = 1 (old behavior) FLOAT SMALLFLOAT double

VIII. JDBC Behavior with JDK 1.4

JDK 1.4 has new methods in the BLOB and CLOB interfaces. If you are using IBM Informix JDBC Driver 2.21.JC2 with JDK 1.4 and your applications have their own implementation of the java.sql.blob and java.sql.clob interfaces, you must implement those new methods. For the signature of these new methods, see the JDK1.4 API documentation.

IX. WHERE Clause Behavior Change

You may see some differences in the behavior of WHERE clauses that used to work with IBM Informix JDBC Driver Versions 1.x and 2.0 but fail with Version 2.2x. The server does not send WHERE column type data back to the driver for WHERE clauses, so in cases of ambiguity (BOOLEAN, LVARCHAR, TEXT, BYTE, BLOB and CLOB types) the driver cannot determine what type of data to send to the server. For example, suppose you use the following statement:
select a, b from tab where a = ? and b = ?
The 1.x or 2.0 driver would incorrectly assume that the first '?' matched the 1st column (a) in the project list and the second '?' matched the 2nd column (b) in the project list. This was an incorrect assumption, because the statement could have been as follows:
select a, b from tab where c = ? and d = ?
This bug has been fixed in Version 2.2x. In cases of ambiguity, use the PreparedStatement extensions to explicitly tell the driver what the WHERE column data types is. These extensions are described in Chapter 3 of the IBM Informix JDBC Driver Programmer's Guide, Version 2.21.

X. Transaction Behavior

If the Java program sets autocommit mode on during a transaction, IBM Informix JDBC Driver commits the current transaction if the JDK is version 1.4 and later, otherwise the driver rolls back the current transaction before turning on autocommit.

XI. Database Connections in the Demo Programs

Except for the pickaseat demo, the examples listed in the IBM Informix JDBC Driver Programmer's Guide, Version 2.21 use the DriverManager.getConnection() method to get a database connection. Sun Microsystems recommends using a DataSource object instead. For more information, refer to Sun's documentation and to the README.TXT file in the /demo/pickaseat directory.

XII. General IBM Informix JDBC Driver Limitations

Please refer to the IBM Informix JDBC Driver Programmer's Guide, Version 2.21 for a complete list of unsupported methods in IBM Informix JDBC Driver. Additional general limitations are as follows:

XIII. Fixed Problems

Bug # 149327

The executeBatch() method fails when used twice, with the following error:

java.sql.sqlexception: number of input values does not match number of question marks

Bug # 149879

CLOB access is very slow when using the getAsciiStream() method.

Bug# 150063

The DatabaseMetaData.supportsFullOuterJoins() method returns TRUE even though we do not support  right and  full outer joins. 

Bug # 151841

The XAResource start() method gives error if the autocommit flag is set to false.

Bug # 151971

A bulk insert to a logged database with autocommit mode set to true (default) does not work.

Bug # 152377

The executeBatch() method gives a syntax error when used with callable statement.

Bug # 152903

The incorrect date is returned if the database is queried after calling the CallableStatement cstmt.executeBatch() method.

Bug # 153011

The driver fails to report the exact position of the SQL syntax error.

Bug # 153022

The executeBatch() method fails when the target table has foreign key constraint.

Bug # 153465

The setCharacterStream() method does not work with text columns.

Bug # 153673

The column_def field of the result set from a DatabaseMetaData.getColumns() method should return null instead of empty string, even if column has no default.

Bug # 153681

Connections without a database do not work with locales set other than the default.

Bug # 154125

JDBC 2.21.JC1 fails to connect to the server using JDK 1.2.2

Bug # 154126

On HP 11.0 platform JDBC 2.21.JC1 shows incorrect autocommit behavior and raises exception for Statement's SetQueryTimeout and Cancel methods.
 

XIV. Known Problems

This section describes the known problems with this release of IBM Informix JDBC Driver and shows how to work around these problems.

Bug #103756

Collections and rows are not supported in opaque types.

Bug #116246

Silent install requires the DISPLAY environment variable to be set on UNIX machines.

Bug #118048

A core dump occurs when you attempt to install IBM Informix JDBC Driver Version 2.20.JC1A on an HP 11.00 machine that has JDK 1.21 already installed.

Bug# 144650

JDBC DRIVER GIVES WRONG RESULTS WHEN USED WITH DATABASE "EXTEND" FUNCTION. The select statement:

select extend(today, year to year), extend(today, year to month), extend(today, year to day), today from systables where tabid=1

generates:

1999-11-30 00:00:00.0 2000-10-31 00:00:00.0 2000-11-20 00:00:00.0 2000-11-20

It should be:

2000 2000-11 2000-11-20 2000-11-20

Workaround: use database casts like this:

select extend(today, year to year)::varchar(20),
         extend(today, year to month)::varchar(20),
         extend(today, year to day)::varchar(20),
today from systables where tabid=1

Bug# 145992

INCORRECT RESULT DISPLAY FOR CHINESE BIG5 CHARS RANGE (F9D6~F9FE) This bug is caused because the Sun JDK does not support Chinese Big5+ character encoding. On my request to the Sun's engineer has filed this bug against Sun JDK which will get fixed in the new JDK release. For tracking purposes you can check the status of bug# 4426470 at http://java.sun.com/jdc There is another bug#4421440 n Sun's bug database which is an RFE (request for enhancement) for Java to support Big5+.

Bug# 150201

SETCLOB & SETBLOB ON AN INSERT STATEMENT DOES NOT ALWAYS INSERT THE CLOB; WHEN THE OBJECT IS AN IFXCBLOB, ONLY THE LOCATOR IS INSERTED For example, say a user has inserted a clob and then wants to make a copy of that clob. So they select back the first copy and perform an insert passing the clob they got from a rs.getClob. Instead of having two copies of the data, they have two references to the same data. So, when they later update what they think is data specific to one of the rows, they will find that data associated with the other row has changed as will. This is by design and this behavior will be documented. To keep this from happening use the data from the first CLOB / BLOB to instantiate a new CLOB / BLOB. See the server documentation on BLOB / CLOB and Locator support.

Bug # 153843

On Windows 95/98/ME, the InstallShield program for IBM Informix JDBC Driver incorrectly checks for Administrator privileges.

XV. XML Parser

IBM Informix JDBC Driver bundles xerces.jar along with the other driver jar files. This xerces.jar is part of the IBM XML4J version 3.2.1 parser and is developed by Apache Software Foundation (http://www.apache.org).

XVI. Acknowledgements

This product includes software developed by the Apache Software Foundation (http://apache.org/). The Apache software includes xerces.jar. The Apache copyright notice follows in its entirety.

The Apache Software License, Version 1.1 Copyright (c) 1999 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
  4. The names "Xerces" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org.
  5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation and was originally based on software copyright (c) 1999, International Business Machines, Inc., http://www.ibm.com. For more information on the Apache Software Foundation, please see http://www.apache.org..