=================================
RELEASE NOTES
FOR
Informix JDBC Driver 2.0
DATE: 3/8/99
=================================
TABLE OF CONTENTS
I.NEW FEATURES
II.NEW FEATURES
III.INFORMIX-UNIVERSAL SERVER COMPATIBILITY
IV.CONFIGURATION
V.GENERAL INFORMIX JDBC DRIVER LIMITATIONS
VI.ERROR MESSAGES
VII.KNOWN PROBLEMS
VIII.FIXED PROBLEMS
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 Informix JDBC Driver on your
computer. This file also describes new features and feature differences
from earlier versions of this product and other 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 "Informix JDBC Driver Programmer's Guide,
Version 2.0," 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 Informix databases via the Informix JDBC Driver.
II. NEW FEATURES
=================
The new features for release 2.0 of the Informix JDBC Driver are as follows:
o UDT Support: Support for Informix opaque types, including distinct,
boolean, and lvarchar. (Opaque and lvarchar are Informix extensions;
distinct and boolean are Javasoft JDBC 2.0.)
o BLOB/CLOB Types (Javasoft JDBC 2.0): Support for the Informix smart
BLOB mechanism through JDBC 2.0 BLOB/CLOB types.
o Scrollable Cursors (Javasoft JDBC 2.0): Support for scroll-
insensitive, non-updatable cursors.
o Batch Updates (Javasoft JDBC 2.0): Support for batched processing of
multiple insert/update/delete statements.
o Collections (Informix Extension) and Arrays (Javasoft JDBC 2.0):
Support for Informix collection types, including set, multiset, and
list, and for the Javasoft JDBC 2.0 array interface.
o Structs/Rows (Javasoft JDBC 2.0): Support for Informix unnamed and
named rows.
o JNDI for Informix sqlhosts file (Informix Extension): Support for
using an LDAP server to store sqlhosts files so a JDBC connection can
automatically retrieve the information at connection time.
o Password Encryption (Informix Extension): Support for password
encryption on 7.31, 8.3, and 9.2 servers (or later versions).
o HTTP Tunneling Proxy (Informix Extension): Support for applets to
access Informix database servers that do not reside on the same
machine as the Web server.
o Internationalization (Informix Extension): Internationalization
support that bridges between JDK Internationalization and Informix GLS.
o Class Generator Utility (Informix Extension): A utility that
generates one Java class for a named row type defined in the system
catalog.
o Miscellaneous Methods (Informix Extension): Support for AutoFree,
IfxInterval, and PreparedStatement extension methods.
o Extended Data Type Mapping (Informix Extension): A convenient table
of mappings between the extended data types supported in the IDS/UDO
server and the corresponding Java and JDBC types.
======================
III. INFORMIX-UNIVERSAL SERVER COMPATIBILITY
=============================================
Informix JDBC Driver 2.0 is compatible with the following server versions:
o Informix Dynamic Server, Version 7.x
o Informix Dynamic Server, Workgroup and Developer Editions, Version 7.x
o Informix Dynamic Server with Advanced Decision Support and Extended
parallel Options, Version 8.x
o Informix Dynamic Server with Universal Data Option, Version 9.x
o INFORMIX-OnLine, Version 5.x
o INFORMIX-SE, Version 5.x
o INFORMIX-SE, Version 7.x
==============
IV. CONFIGURATION
==================
To use the 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.
=====================
V. GENERAL INFORMIX JDBC DRIVER LIMITATIONS
============================================
Please refer to the "Informix JDBC Driver Programmer's Guide, Version 2.0"
for a complete list of unsupported methods in Informix JDBC driver.
Additional general limitations are as follows:
o The Ref type is not supported.
o The same Statement or ResultSet instance cannot be accessed
concurrently across threads. You can, however, share a Connection
object between multiple threads.
For example, if one thread executes the "Statement.executeQuery()"
method on a Statement object, and another thread executes the
"Statement.executeUpdate()" method on the same Statement object, the
results of both methods are unexpected and depend on which method was
executed last.
Similarly, if one thread executes the method ResultSet.next() and
another thread executes the same method on the same ResultSet object,
the results of both methods are unexpected and depend on which method
was executed last.
o All FLOAT and DOUBLE data types are transported as decimals if run
against Informix database servers, Versions 9.1 and below, on Windows
NT.
o The JDBC driver maps java.sql.Timestamp to the Informix type
"datetime year to fraction(5)" and java.sql.Time to the Informix type
"datetime hour to second". Informix datetime types are very
restrictive and are not interchangeable. If you attempt to bind
java.sql.Time to "datetime year to fraction(5)" or java.sql.Timestamp
to "datetime hour to second", you might get an error from the
Informix database server. Any other datetime qualifiers are NOT
supported.
o The applet viewer utility in the JDK 1.2 Beta 4 version has a bug
that causes the class loader not to consider the default (generic)
resource bundle after a localized resource bundle cannot be located.
This bug prevents an applet from running in the applet viewer if it
downloads the Informix JDBC driver.
o For best results, always call resultset.close() and statement.close()
methods to indicate to the driver that you are done with the
statement/resultset. Otherwise, your program might not release all
its resources on the database server.
o If you use an expression within an SQL statement, for example,
"select mytype lvarchar from mytab", you might not be able to use
ResultSet.getXXX(columnName) to retrieve the value. You can use
ResultSet.getXXX(columnIndex) to retrieve the value instead.
o The following code sets have not been verified: eucJP, cp949, KS5601,
ksc, gb, GB2312-80 and cp936. If a character mismatch occurs, please
report it to Informix Technical Support.
o GL_DATE conversion modifier "O", which indicates use of alternative
digits for alternative date formats, is not currently supported.
o GL_DATE optional date format qualifiers for field specifications (for
example, %4m to display a month as a decimal number with a maximum
field width of 4) are not currently supported.
o The JDBC 2.0 Driver does not support ALS 6.0, 5.0, or 4.0 era-based
formats in the DBDATE environment variable.
o DB_LOCALE, CLIENT_LOCALE, and GL_DATE are supported only if the
server supports the Informix GLS feature. If these environment
variables are set and your application connects to a non-GLS server
(server versions earlier than 7.2), a connection exception occurs.
o If you connect to a non-GLS server, the behavior is the same as the
JDBC driver 1.22 version.
o When using the syntax "database dbname@newserver", the new server
must have the same locale as the locale of the server in the current
connection. If a new locale needs to be established, the connection
must be closed and reopened with the correct locale information.
=============
VI. ERROR MESSAGES
===================
-79700 Method not supported
Informix's driver does not support this JDBC method. See the "Informix
JDBC Driver Programmer's Guide, Version 2.0" for further information.
-79702 Can't create new object
The software could not allocate memory for a new String object.
-79703 Row/column index out of range
The row/column index is out of range. Please compare the index to the
number of rows/columns expected from the query to ensure that it is within
range.
-79704 Can't load driver
The Informix driver could not create an instance of itself and register it
with the DriverManager. The rest of the SQLException text describes what
failed.
-79705 Incorrect URL format
The URL you have submitted is invalid. The Informix Driver does not
recognize the syntax. Please check the syntax and try again.
-79706 Incomplete input
An invalid character was found during conversion of a String value to an
IfxIntervalDF or IfxIntervalYF. Check the "Informix JDBC Driver
Programmer's Guide, Version 2.0" for correct values.
-79707 Invalid qualifier
An error was found during construction of an IfxInterval qualifier from
atomic elements: length, start or end values. Check the length, start and
end values to verify that they are correct. See the "Informix JDBC Driver
Programmer's Guide, Version 2.0" for correct values.
-79708 Can't take null input
The string you have provided is NULL. The Driver does not understand NULL
input in this case. Please check the input string to ensure that it has
the proper value.
-79709 Error in date format
The expected input is a valid date string in the following format: yyyy-mm-
dd. Check the date and verify that it has a 4-digit year, followed by a
valid 2-digit month and 2-digit day. The delimiter must be a dash (-).
-79710 Syntax error in SQL escape clause
Invalid syntax was passed to a jdbc escape clause. Valid JDBC escape
clause syntax is demarcated by curly braces and a key word as follows:
{keyword syntax}. Check the "Informix JDBC Driver Programmer's Guide,
Version 2.0" for a list of valid escape clause keywords and syntax.
-79711 Error in time format
An invalid time format was passed to a JDBC escape clause. The escape
clause syntax for time literals is as follows: {t `hh:mm:ss'}.
-79712 Error in timestamp format
An invalid timestamp format was passed to a JDBC escape clause. The escape
clause syntax for timestamp literals is as follows: {ts `yyyy-mm-dd
hh:mm:ss.f...'}.
-79713 Incorrect number of arguments
An incorrect number of arguments was passed to the scalar function escape
syntax. The correct syntax is as follows: {fn function(arguments)}. Verify
that the correct number of arguments were passed to the function.
-79714 Type not supported
You have specified a data type that is not supported by the driver. Check
your program to make sure the data type used is among those supported by
the driver.
-79715 Syntax error
Invalid syntax was passed to a jdbc escape clause. Valid JDBC escape
clause syntax is demarcated by curly braces and a key word as follows:
{keyword syntax}. Check the "Informix JDBC Driver Programmer's Guide,
Version 2.0" for a list of valid escape clause keywords and syntax.
-79716 System or internal error
An operating or runtime system error or a driver internal error occurred.
The accompanying message describes the problem.
-79717 Invalid qualifier length
The length value for an IfxInterval object is incorrect. See the "Informix
JDBC Driver Programmer's Guide, Version 2.0" for correct values.
-79718 Invalid qualifier start code
The start value for an IfxInterval object is incorrect. See the "Informix
JDBC Driver Programmer's Guide, Version 2.0" for correct values.
-79719 Invalid qualifier end code
The end value for an IfxInterval object is incorrect. See the "Informix
JDBC Driver Programmer's Guide, Version 2.0" for correct values.
-79720 Invalid qualifier start or end code
The start or end value for an IfxInterval object is incorrect. See the
"Informix JDBC Driver Programmer's Guide, Version 2.0" for correct values.
-79721 Invalid interval string
An error occurred during conversion of a String value to an IfxIntervalDF
or IfxIntervalYF. Check the "Informix JDBC Driver Programmer's Guide,
Version 2.0" for the correct format.
-79722 Numeric character(s) expected
An error occurred during conversion of a String value to an IfxIntervalDF
or IfxIntervalYF. A numeric value was expected and not found. Check the
"Informix JDBC Driver Programmer's Guide, Version 2.0" for the correct
format.
-79723 Delimiter character(s) expected
An error occurred during conversion of a String value to an IfxIntervalDF
or IfxIntervalYF. A delimiter was expected and not found. Check the
"Informix JDBC Driver Programmer's Guide, Version 2.0" for the correct
format.
-79724 Character(s) expected
An error occurred during conversion of a String value to an IfxIntervalDF
or IfxIntervalYF. "End of string" was encountered before conversion was
complete. Check the "Informix JDBC Driver Programmer's Guide, Version 2.0"
for the correct format.
-79725 Extra character(s) found
An error occurred during conversion of a String value to an IfxIntervalDF
or IfxIntervalYF. "End of string" was expected, but there were additional
characters in the string. Check the "Informix JDBC Driver Programmer's
Guide, Version 2.0" for the correct format.
-79726 Null SQL statement
The SQL statement passed in was NULL. Check the SQL statement string of
your program to make sure it contains a valid statement.
-79727 Statement was not prepared
The SQL statement was not prepared properly. If you use host variables
(for example, "insert into mytab values (?, ?);") in your SQL statement,
you must use connection.prepareStatement() to prepare the SQL statement
before you can execute it.
-79728 Unknown object type
If this is a null opapue type then the type if unknown and can not be
processed. f this is a complex type then the data in the collection or
array are of an unknown type and can not be mapped to an Informix type. If
this is a row then one of the elements in a row can not be mapped to a
Informix type. Verify the customized type mapping or data type of the
object.
-79729 Method cannot take argument
The method does not take an argument. Please refer to your Java API
specification or the "Informix JDBC Driver Programmer's Guide, Version
2.0" to make sure you are using the method properly.
-79730 Connection not established
A connection was not established. You must obtain the connection by
calling DriverManager.getConnection() first.
-79731 MaxRows out of range
You have specified an out of range maxRow value. Make sure you specify a
value between 0 and Integer.MAX_VALUE.
-79732 Illegal cursor name
The cursor name specified is illegal. Make sure the string passed in is
not NULL or empty.
-79733 No active result
The statement does not contain an active result. Check your program logic
to make sure you have called the executeXXX() method before attempting to
refer to the result.
-79734 INFORMIXSERVER has to be specified
INFORMIXSERVER is a property required for connecting to an Informix
database. You can specify it in the URL or as part of a Properties object
that is passed to the connect() method.
-79735 Can't instantiate protocol
An internal error occurred during a connection attempt. Call Informix
Technical Support.
-79736 No connection/statement establish yet
There is no current connection or statement. Check your program to make
sure a connection was properly established and/or a statement was created.
-79737 No meta data
There is no metadata available for this SQL statement. Make sure the
statement generates a resultset before you attempt to use it.
-79738 No such column name
The column name specified does not exist. Make sure the column name is
correct.
-79739 No current row
The cursor is not properly positioned yet. You must first position the
cursor within the resultset by using a method such as resultset.next(),
resultset.beforefirst(), resultset.first(), or resultset.absolute().
-79740 No statement created
There is no current statement. Make sure the statement was properly created.
-79741 Can't convert to
There is no data conversion possible from the column data type to the one
specified. The actual data type will be appended to the end of this
message. Please review your program logic to make sure that the conversion
you have asked for is supported. You can refer to the user guide for the
data mapping matrix.
-79742 Can't convert from
No data conversion is possible from the data type you specified to the
column data type. The actual data type is appended to the end of this
message. Check your program logic to make sure that the conversion you
have asked for is supported. Refer to the "Informix JDBC Driver
Programmer's Guide, Version 2.0" for the data mapping matrix.
-79743 Cannot load the specified IfxProtocol class
This message occurs when the Informix Driver cannot create a new instance
of the connection class when connecting to the Informix server. Check the
SQLException message for more details.
-79744 Transactions not supported
The user has tried to call commit() or rollback() on a database that does
not support transactions, or has tried to set autoCommit to false on a non-
logging database. Verify that the current database has the correct logging
mode and review the program logic.
-79745 Read only mode not supported
Informix does not support readOnly mode.
-79746 No Transaction Isolation on non-logging db's
Informix does not support setting the transaction isolation level on non-
logging databases.
-79747 Invalid transaction isolation level
If the server could not complete the rollback, this error occurs. See the
rest of the SQLException for more details about why the rollback failed.
This error also occurs if an invalid transaction level is passed to
setTransactionIsolation(). The valid values are
TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED,
TRANSACTION_REPEATABLE_READ, and TRANSACTION_SERIALIZABLE.
-79748 Can't lock the connection
The driver normally locks the connection object just before beginning the
data exchange with the server. The driver could not obtain the lock. Only
one thread at a time should use the connection object.
-79749 Number of input values does not match number of question marks
The number of bind variables that you set using the
PreparedStatement.setXXX() methods in this statement does not match the
number of "?" place holders that you wrote into the statement. Locate the
text of the statement and verify the number of place holders, then check
the calls to PreparedStatement.setXXX().
-79750 Method only for queries
Statement.executeQuery(String) and PreparedStatement.executeQuery() should
only be used if the statement is a SELECT statement. For other statements
use Statement.execute(String), Statement.executeBatch(),
Statement.executeUpdate(String), Statement.getUpdateCount(),
Statement.getResultSet() or PreparedStatement.executeUpdate().
-79751 Forward fetch only. (in JDBC 1.2)
The resultSet is not set to FETCH_FORWARD. Call
Resultset.setFetchDirection(ResultSet.FETCH_FORWARD) to reset the direction.
-79755 Object is null.
The object passed in is NULL. Check your program logic to make sure your
object reference is valid.
-79756 must start with `jdbc'
The first token of the URL must be the keyword `jdbc' (case insensitive).
For example:
URL: jdbc:informix-sqli://mymachine:1234/
mydatabase:user=me:password=secret
-79757 Invalid sub-protocol
The current valid sub-protocol supported by Informix is informix-sqli.
-79758 Invalid ip address
When you connect to an Informix server via an ip address, the ip address
must be a valid address. A valid ip address is set of four numbers between
0 and 255 separated by periods (.), for example: 127.0.0.1.
-79759 Invalid port number
The port number must be a valid 4-digit number, for example:
URL: jdbc:informix-sqli://mymachine:1234/
mydatabase:user=me:password=secret
In this example, `1234' is the port number.
-79760 Invalid database name
This statement contains the name of a database in some invalid format.
The maximum length for database names and cursor names depends on the
version of the database server. In 7.x, 8.x, and 9.1x versions, the
maximum length is 18 characters. In 9.2 and later versions, the maximum
length is 128 characters.
For INFORMIX-SE, database names should be no longer than 10 characters
(fewer in some host operating systems).
Both database and cursor names must begin with a letter and contain only
letters, numbers, and underscore characters. In the 6.0 and later versions
of the database server, database and cursor names can begin with an
underscore. In 9.2 and later versions, these names can include dollar sign
characters.
In MS-DOS systems, filenames can be a maximum of 8 characters plus a 3-
character extension.
-79761 Invalid Property format
The URL accepts property values in `key=value' pairs. For example,
`user=informix:password=informix' adds the key/value pairs to the list of
properties that are passed to the connection object. Check the syntax of
the key/value pair for syntax errors. Make sure there is only one `='
sign; \that there are no spaces separating the key, value, or `='; and
that key/value pairs are separated by one colon(:), again with no spaces.
-79762 Attempt to connect to a non 5.x server
When connecting to a version 5.x server, the user must set the URL
property USE5SERVER to any non-null value. If a connection is then made to
a version 6 or later server, this exception is thrown. Verify that the
version of the server is correct and modify the URL as needed.
-79763 Only CONCUR_READ_ONLY is supported
The driver supports only ResultSet.CONCUR_READ_ONLY. You can only call
Connection.createStatement(int, int), Connection.prepareStatement(String,
int, int), or Connection.CallableStatement(String, int, int) with a result
set concurrency value of CONCUR_READ_ONLY.
-79764 Invalid Fetch Direction value
An invalid fetch direction was passed as an argument to
Statement.setFetchDirection() or ResultSet.setFetchDirection(). Valid
values are FETCH_FORWARD, FETCH_REVERSE, and FETCH_UNKNOWN.
-79765 ResultSet Type is TYPE_FETCH_FORWARD, direction can only be
FETCH_FORWARD
The result set type has been set to TYPE_FORWARD_ONLY, but
setFetchDirection() has been called with a value other than FETCH_FORWARD.
The direction specified must be consistent with the result type specified.
-79766 Incorrect Fetch Size value
Statement.setFetchSize() has been called with an illegal value. Verify
that the value passed in is greater than 0. If setMaxRows has been called,
the fetch size must not exceed that value.
-79767 ResultSet Type is TYPE_FORWARD_ONLY
A method such as ResultSet.beforFirst(), ResultSet.afterLast(),
ResultSet.first(), ResultSet.last(), ResultSet.absolute(),
ResultSet.relative(), ResultSet.current(), or ResultSet.previous() has
been called, but result set type is TYPE_FORWARD_ONLY. Call only
ResultSet.next() if the result set type is TYPE_FORWARD_ONLY.
-79768 Incorrect row value
IfxResultSet.absolute(int) has been called with a value of 0. The
parameter must be 0.
-79769 A customized type map is required for this data type
You must register a customized type map to use any opaque types.
-79770 Cannot find the SQLTypeName specified in the SQLData or Struct
The SQLTypename you specified in the SQLData or Struct class does not
exist in the database. Make sure that the type name is valid.
-79771 Input value is not valid
The input value is not accepted for this data type. Make sure this is a
valid input for this data type.
-79772 No more data to read. Verify your SQLdata class or getSQLTypeName()
You have asked for more data than what is available. Check your SQLData
class to make sure it matches what is in the database schema. The
SQLTypeName may also be incorrect.
-79774 Unable to create local file
Large Object data read from the server can be stored either in memory or
in a local file. If the LOBCACHE value is 0 or the large object size is
greater than the LOBCACHE value, the large object data from the server is
always stored in a file. In this case, if a Security Exception occurs, the
JDBC driver makes no attempt to store the large object into memory and
throws this exception.
-79775 Only TYPE_SCROLL_INSENSITIVE and TYPE_FORWARD_ONLY are supported.
The driver currently only supports a result set type of
TYPE_SCROLL_INSENSITIVE and TYPE_FORWARD_ONLY. Only these values should be
used.
-79776 Type requested (%s) does not match row type information (%s) type
Row type information was acquired either through the system catalogs or
through the supplied row definition. The row data provided does not match
this row element type. The type information must be modified or the data
must be provided.
-79777 readObject/writeObject() only supports UDT's, Distincts and complex
types
SQLData.writeObject() was called for an object that is not a user-defined,
distinct, or complex type. Verify that you have provided customized type
mapping information.
-79778 Type mapping class must be a java.util.Collection implementation
You provided a type mapping to override the default for a set, list, or
multiset, but the class does not implement the java.util.Collection
interface.
-79780 Data within a collection must all be the same Java class and length.
Verify that all the objects in the collection are of the same class.
-79781 Index/Count out of range
Array.getArray() or Array.getResultSet() was called with index and count
values. Either the index is out of range or the count is too big. Verify
that the number of elements in the Array is sufficient for the index and
count values.
-79782 Method can be called only once
Make sure methods like Statement.getUpdateCount() and
Statement.getResultSet() are called only once per result.
-79783 Encoding or code set not supported
The encoding or code set entered in the DB_LOCALE or CLIENT_LOCALE
variable is not valid. Check the "Informix JDBC Driver Programmer's Guide,
Version 2.0" for valid code sets.
-79784 Locale not supported
The locale entered in the DB_LOCALE or CLIENT_LOCALE variable is not
valid. Check the "Informix JDBC Driver Programmer's Guide, Version 2.0"
for valid locales.
-79785 Unable to convert JDBC escape format date string to localized date
string
The JDBC escape format for date values must be specified as follows: {d
`yyyy-mm-dd'}. Verify that the JDBC escape date format specified is
correct. Verify the DBDATE and GL_DATE settings for the correct date
string format if either of these was set to a value in the connection URL
string or property list.
-79786 Unable to build a Date object based on localized date string
representation
The localized date string representation specified in a char, varchar, or
lvarchar column is not correct, and because of this a date object cannot
be built based on the year, month, and day values. Verify that the date
string representation conforms to the DBDATE or GL_DATE date formats if
either one of these is specified in a connection URL string or property
list. If neither DBDATE or GL_DATE is specified, but a CLIENT_LOCALE or
DB_LOCALE is explicitly set in a connection URL string or property list,
verify that the date string representation conforms to the JDK short
default format (DateFormat.SHORT).
-79788 User name must be specified
The user name is required to establish a connection with this JDBC driver.
Please make sure you pass in "user=your_user_name" as part of the URL or
one of the properties.
-79789 Server does not support GLS variables DB_LOCALE, CLIENT_LOCALE or
GL_DATE
These variables can only be used if the server supports GLS. Check the
documentation for your server version and omit these variables if they are
not supported.
-79790 Invalid complex type definition string
The value returned by getSQLtypeName() is either null or invalid. Check
the string to verify that it is either a valid named-row name or a valid
row type definition.
-79792 Row must contain data
Array.getAttributes() or Array.getAttributes(Map) has returned 0 elements.
These methods must return a non-zero number.
-79793 Data in array does not match getBaseType() value
The Array.getArray() or Array.getArray(Map) method returns an array where
the element type does not match the JDBC base type.
-79794 Row length provided (%s) doesn't match row type information (%s)
Data in the row does not match the length in the row type information. You
do not have to pad string lengths to match what is in the row definition,
but lengths for other data types should match.
-79795 Row extended id provided (%s) doesn't match row type information (%s)
The xid of the object in the row does not match the xid as defined in row
type information. Either update the row information (if you are providing
the row definition) or check the type mapping information.
-79796 Cannot find UDT, distinct or named row (%s) in database
getSQLTypeName() has returned a name that can not be found in the
database. Verify that the Struct or SQLData object returns the correct
information.
VII. KNOWN PROBLEMS
====================
This section describes the known problems with this release of the
Informix JDBC Driver and shows how to work around these problems.
Bug #99788
If the client java application has set OPTOFC and the server is XPS, the
server does not notify the client that the cursor has been closed.
Bug #103756
Collections and rows are not supported in opaque types.
Bug #105632
Trying to select a multiset(decimal(15)) element from a row results in a
stringindexoutofboundsexception:string index out of range:-9 error.
Bug #105652
The stores7 demo does not work for all servers.
Bug #104641
SQL code is not shown in the output when an SQLException is thrown.
Bug #103767
The error message is misleading when the setTransactionIsolation method()
is executed on a connection before a database has been selected.
Bug #101735
For the JDBC Version 1.4 release, all messages are only in English
regardless of locale.
Bug #101669
Informix JDBC driver 1.4 does not support code set conversion of CLOB or
TEXT types. A workaround for TEXT types is described in the section, "Code
Set Conversion for TEXT Data Types."
Bug #95082
The ResultsetMetaData.getTableName() method returns an empty string when
called. It should return a table name.
Bug #106210
RMI server database connections fail when you use a JDBC application with
Sun's JDK version 1.2.
Bug #106343
The browse dialog for selecting the target directory does not work
properly for the NT or UNIX installation of Informix JDBC Driver.
Bug #106354
Unsupported methods throw exceptions that cause some applications running
on hetrogenous database servers to prematurely abort.
Bug #106643
When you retrieve values into an IntervaLDF (day-to-fraction) object,
sometimes you get a NegativeArraySizeException error.
Bug #107696
The DatabaseMetaData.getTable() method does not return the correct owner
information.
Bug #107732
Subtracting two DATETIME values within an SQL statement returns an
INTERVAL value, but the driver gives the null ix000 internal error or
error -79716.
==============
VIII. FIXED PROBLEMS
=====================
The following problems have been addressed since the JDBC Version 1.22
release:
Bug #104831
The database server converts row type names to lower case, but Informix
JDBC driver and the map.put() and map.get() methods do not, so map.put()
with a non-lowercase name fails.
Bug #105286
The DatabaseMetaData.getCatalogs() method needs to support selecting
database names even if the server does not have the sysmaster database.
Servers prior to 6.0 do not support the sysmaster database.
Bug #105447
If you use the ResultSet.getstring method on a MONEY column, two trailing
zeros and a decimal place are absent for even dollar amounts (for example,
you get 5 instead of 5.00).
Bug #104640
The server name is missing from the message text when you attempt to
connect to an instance that is down.
Bug #101575
A distinct of an opaque type and a distinct of a complex type are not
supported as complex type elements.
Bug #95375
The executeUpdate() method raises an exception (sq_err=100) for a DELETE
FROM TABLE statement if the table is empty.
Bug #106323
The GLS Japanese codeset ja_jp.EUC_JP is not supported in JDBC.
Bug #106611
The driver does not work with the Netscape browser when applets are not
signed.
Bug #104220
The code set "GB" returns the exception "iso2022cn_gb" when you retrieve
data.
Bug #101172
Clob and Blob types are not supported in complex types.
Bug #103468
A distinct type is sometimes cast to a DATETIME MONTH TO DAY type.
Bug #103620
The com.informix.jdbc.ifxdriver.acceptsURL() method returns true or throws
an exception when the correct result should be false for an invalid URL.
Bug #101948
If Resultset.getDate() calls a char or varchar date string representation
of the DBDATE setting, this causes SQLException -79716 if the string has a
1-digit month or day.
Bug #99333
The DatabaseMetaData.getDatabaseProductVersion() method returns an error
instead of the product version.
Bug #99323
If all the columns of a table have a particular table-level privilege,
such as UPDATE, the DatabaseMetaData.getColumnPrivileges() method returns
no rows when executed on the table. If, however, only some of the columns
have a particular privilege, then those columns are returned by the
method. This is true for all table-level privileges.
Bug #99180
When an SQLException is thrown after a database access error, the
SQLException object contains the error message and error code, but not the
ISAM code.
Bug #98905
The following Informix JDBC Driver error messages do not contain the name
of the method that caused the error:
-79700 Method not supported
-79729 Method can not take argument
-79750 Method only for queries
Bug #105092
On UNIX platforms, Informix JDBC driver installation sets directory
permissions readable by group but not by all.
Bug #104540
If a CHAR column has spaces at the beginning of the string, these spaces
are lost when you select this value into a Java string.
Bug #103963
Temporary tables created by the databaseMetaData class methods are not
dropped when the associated result set object is closed or goes out of
scope.
Bug #103755
ResultSet.getByte() returns 0 and getShort() returns error 23552 on a
decimal value when the value overflows a byte and short value.
Bug #102885
A call to driverManager.getConnection() with a URL that does not include
the user and password gives error 25563.
Bug #102567
The DatabaseMetaData.getImportedKeys() and getExportedKeys() methods
return only the 1st element of a composite foreign key.
Bug #102467
DatabaseMetaData temporary table data types do not take long id servers
into consideration.
Bug #102194
Database warnigs are not propagated up to the Connection object on a 5.x
server.
Bug #101921
Missing keywords in the URL cause the client to crash with
classCastException.
Bug #101881
You cannot connect using a non-password login account.
Bug #101175
Informix JDBC driver always maps a DATETIME column to YEAR TO FRACTION(5)
and TIMESTAMP. If the column is HOUR TO SEC, the driver should map this to
a TIME column.
Bug #100189
Informix JDBC driver memory leak - repeated calls to the Java API
executeQuery() method after calling createStatement() cause the session
size to grow on the server.
Bug #99684
ResultSet becomes null in a large application.
Bug #99513
A Type-4 driver crashes a 7.30.FC4 IDS server while querying a TEXT data
type.
Bug #99442
When multiple threads are executing as a result of a getBestRowIdentifier
call, a single connection error is returned.
Bug #99440
The "Cannot read network user authorization file" error occurs when
multiple threads are sharing a connection.
Bug #102916
If a projection list in a SELECT statement includes an NCHAR column, all
columns after the NCHAR column contain corrupted data.
Bug #102213
In the ResultSet.getBytes() and ResultSet.getBlob() methods, the first
postion of a Blob object starts at 0 instead of 1 as the Javasoft
documentation specifies.
Bug #102221
Interval data is not suported in complex types.
Bug #102285
The ClassGenerator utility always maps a DATETIME column to a Timestamp
object, when it should map to a Time object.
Bug #102292
If you use a SELECT * FROM TAB statement, where TAB is a multibyte
japanese table with mb japanese columns, you get a "system or internal
error" exception.
Bug #102816
If you set SETFETCHSIZE to 10 or any number, an incorrect fetch size
exception is given.
Bug #102817
Calling the ResultSet.previous() method after calling the
ResultSet.afterLast() method does not move the pointer to the previous
record even when the record is present.
Bug #101177
Inserting CHAR or VARCHAR strings in nested collections results in garbled
data if strings are of variable length.
Bug #102028
The ResultSetMetaData.getColumns() method returns 2000 as the column type
for a BLOB or CLOB column instead of 2004 for BLOB and 2005 for CLOB
(types.blob and types.clob).
Bug #103235
It is not possible to create a BLOB or CLOB column in a non-default dbspace.
Bug #103275
An MI_INTERVAL object is not supported for opaque types.
Bug #103288
When the IfxSmartBlob.IfxLoSeek() method is called, an exception is thrown
with a null message and error -7532.
Bug #103491
The Array.getArray(long, int) method behaves as if the index starts with
0. According to the lastest documentation, it is supposed to start with 1.
Bug #103505
The IfxLoRead and IfxLoSeek methods return invalid errors if you seek
within a BLOB object beyond the available size and try to read the data.
Bug #104024
Fetching a distinct of an opaque column returns the java.sql.sqlexception
"can't convert to: int".
Bug #105312
The DatabaseMetaData.getUserName() method should return a username to the
connection instead of null when a trusted client is used.
Bug #106131
The DatabaseMetaData.getColumns() method fails with "(colmin) not found"
when Informix JDBC Driver is connected to an INFORMIX-SE database.
Bug #106209
The ResultSet.getString() method does not fully support INTERVAL data
types when the INTERVAL qualifier is not YEAR TO MONTH or DAY TO SECOND.
For example, YEAR TO YEAR is not supported.
Bug #106344
Performing an uninstall in NT does not clean up the lib directory.
Bug #106348
When you uninstall Informix JDBC Driver in UNIX, the Delete/Confirm dialog
box is not shown proportionately. It is shown as a vertical and narrow box.
Bug #106698
Several DatabaseMetaData methods return the wrong values. The
supportsANSI92IntermediateSQL(), supportsANSI92FullSQL(),
supportsOrderByUnrelated(), and supportsOpenCursorsAcrossCommit() methods
should all return false. The usesLocalFilePerTable() and usesLocalFiles()
methods should return true for an INFORMIX-SE server.
Bug #106750
The ClassGenerator utility does not generate the correct code for nested
rows.
Bug #106904
If the ResultSet.afterLast() method returns ROWID 9, executing the
ResultSet.previous() method should return ROWID 7. It should be ROWID 8.
Bug #106940
The ResultSet.isBeforeFirst() and isAfterLast() methods are not working
correctly.
==============