READ ME FIRST
                               FOR
                INFORMIX CLIENT PRODUCTS VERSION 2.20
                 FOR MICROSOFT WINDOWS ENVIRONMENTS
                         DATE: 12/18/1998


OVERVIEW

This file provides important information that arrived too late to include
in the "Informix Client Products Installation Guide for Microsoft Windows
Environments."

This information includes the following:

-  Notes on ODBC drivers supported by Informix

-  Notes on manual removal of Informix Windows NT Registry entries

-  Notes on new installation program version-checking behavior

-  Notes on installing a Microsoft ODBC Driver Manager for INFORMIX-CLI

-  Notes on message file name changes in Client SDK 2.01 and later


INFORMIX ODBC DRIVER SUPPORT

In the 2nd Quarter of 1999, Informix will be introducing Informix ODBC
Driver version 3.30.  This Informix-developed driver will be compliant with
the ODBC 3.0 level 1+ specification and will be the upgrade and maintenance
path from the INFORMIX-CLI 2.8/2.9 driver, which currently supports UDO
server extensions and Microsoft Transaction Service (MTS).

Once the Informix ODBC driver is available, Informix will phase in this
driver as the primary ODBC driver product.  Informix will continue to
redistribute and support the Intersolv Data Direct ODBC Driver version 3.1
as long as Intersolv supports and maintains it.  Informix will continue to
redistribute the Intersolv Driver Manager on UNIX, and the Microsoft Driver
Manager on Windows.


MANUAL REMOVAL OF INFORMIX WINDOWS NT REGISTRY ENTRIES

When uninstalling Informix products from a Windows 95 computer, the
Uninstall program can corrupt the Registry by leaving Informix
database-related entries. Installing Client SDK 2.20 on a computer with a
corrupted Registry can cause an unhandled exception/access violation in
isqlt09a.dll using the ILOGIN demo program.

To avoid this problem, restore the Registry by using Regedit to manually
remove all Informix-related Registry entries after uninstalling Informix
products. Install Client SDK 2.20 only after you have restored the
Registry.


NEW INSTALLATION PROGRAM VERSION-CHECKING BEHAVIOR

In Informix Client Products Version 2.02 and later, Setup avoids copying
files over newer versions of the files that are already on your computer.
Setup compares file versions using either the file system's file date or,
for .exe and .dll files, a version number stored within the file. It
installs only files that are newer than existing files. In previous
versions some files were checked by date, while others were overwritten
without any version checking.


INSTALLING A MICROSOFT ODBC DRIVER MANAGER

This section contains information about the compatibility of Microsoft
Driver Manager versions and the ODBC drivers included with this Informix
sofware release.

This Informix software release includes two 32-bit ODBC drivers:

-  INFORMIX-CLI Version 2.80.0008 complies with ODBC 2.5 and supports
   extended data types provided by Informix Dynamic Server with Universal
   Data Option and Microsoft Transaction Server (MTS). With this ODBC
   driver, you can use Microsoft Driver Manager Version 2.5 or higher.

-  INTERSOLV DataDirect ODBC Driver Version 3.11 complies with ODBC 3.0.
   You must use Microsoft Driver Manager Version 3.0 or 3.5 with this
   ODBC driver.

Determining the Driver Manager Version Installed on Your Computer

If ODBC is already installed on your computer, you can determine which
version of the Microsoft ODBC Driver Manager you have by following the
instructions in this section.

NOTE: Windows NT 4.0 Service Pack 3 installs ODBC Driver Manager Version
3.0.

1.  Double-click the ODBC icon in the Control Panel. If your Driver Manager
    is 3.0 or higher, you will see an About tab. Otherwise, go to step 2.
    Click the About tab to see the Driver Manager version.

2.  If there is no About tab, you have a version of Driver Manager lower
    than version 3.0. In this case, use Windows Explorer to locate the
    driver file in your Windows SYSTEM directory:

    -  If you have Windows NT, go to the SYSTEM32 subdirectory of your
       Windows installation directory.

    -  If you have Windows 95 or Windows 98, go to the SYSTEM subdirectory
	   of your Windows installation directory.

4.  Select the odbc32.dll file.

5.  Choose File-> Properties.

6.  Click the Version tab to see the Driver Manager version.

Installing an ODBC Driver Manager

Informix Client SDK Version 2.20 includes Microsoft Driver Manager version
3.5. To install Driver Manager from Setup, choose Custom on the
Installation Options dialog box, and then check ODBC DM 3.5 on the Select
Installation Components dialog box.

You can also download Driver Manager from the Microsoft web site at
http://www.microsoft.com.


MESSAGE FILE NAME CHANGES IN CLIENT SDK 2.01 AND LATER

Note: The term "old client APIs" in the text below refers to pre-2.01
versions of Client SDK and Connect and all versions of the separate ESQL/C,
ESQL/COBOL and CLI products; the term "new client APIs" refers to 2.01 and
later versions of Client SDK and Connect.

After the installation of versions 2.01 or greater of Client SDK or Connect
on either Win32 or UNIX platforms, some already-compiled applications may
exhibit an error.

The shared and static libraries in both the old and new client APIs refer
to message files in the directory %INFORMIXDIR%\msg. As a result of fixing
another bug, the names of several message files were changed in the new
client APIs to avoid conflict with the server versions of those files.  For
example, old client APIs distributed the message file sqli.iem and the
libraries in the old client APIs referred to sqli.iem. Now the new client
APIs distribute that same message file under the name of csqli.iem
and the libraries in the new client APIs refer to csqli.iem.

All of the following circumstances must occur in order for
this error to occur:

*  An application must have been linked with the static libraries of an
   old client API

*  A new client API must have been installed in a different directory than
   the one containing the old client API

*  The INFORMIXDIR used by the application must have been changed to point
   to the directory containing the new client API only

If all of these conditions apply, then the application will
continue to look for message files by their old name, for example,
sqli.iem. However, the directory containing the new client API only will
have those files with their new names, for example, csqli.iem. Therefore,
an error message will be returned.

You can use any one of the following workarounds to avoid the error:

*  Link the application with the shared libraries from the old
   client API

*  Install the new client API in the same directory that you
   installed the old client API and do not change INFORMIXDIR

*  Install the old client API in the same directory that you
   will install the new client API and install the old client API first

*  Re-link your application with the static libraries from the
   new client API

*  For all message sub-directories within the directory that contains
   just the new client APIs, make copies of each of the following files
   and give the copies new names as indicated below. Do this in each
   message sub-directory. This includes, at minimum, the US English
   sub-directory: %INFORMIXDIR%\msg\en_us\04e4. If there are message
   sub-directories for other languages, copy files in each language
   directory, for example, %INFORMIXDIR%\msg\fr_fr\04e4.

	als.iem -> cals.iem
	cals.iem -> ccals.iem
	csm.iem -> ccsm.iem
	css.iem -> ccss.iem
	eami.iem -> ceami.iem
	isam.iem -> cisam.iem
	miapi.iem -> cmiapi.iem
	nals.iem -> cnals.iem
	nerm.iem -> cnerm.iem
	net.iem -> cnet.iem
	netsrv.iem -> cnetsrv.iem
	rds.iem -> crds.iem
	security.iem -> csecure.iem
	shell.iem -> cshell.iem
	sql.iem -> csql.iem
	sqli.iem -> csqli.iem
	util.iem -> cutil.iem
	xopen.iem -> cxopen.iem
	xps.iem -> cxps.iem
	itoxmsg.pam -> citoxmsg.pam
	optical.iem -> coptical.iem
    errnmsg.txt -> cerrmsg.txt


Versions 2.30 and later of the Client SDK and Connect on both Win32
and UNIX platforms will fix this problem. The install process of these
products will first look to see if the message files already exist by
their "old" name in the target installation directory. If they already
exist, nothing will be done. If they do not already exist, a link (on UNIX)
or a copy (on Win32) of each message file whose name changed will be made
so that both files, like sqli.iem and csqli.iem, will always be guaranteed
to exist. This fix will remain in the installation of Client SDK and
Connect in all future releases of those products.

======================================================================



		      =====================================
				   RELEASE NOTES
					FOR
		INFORMIX-ESQL/C 9.20.TC1 PRODUCT RELEASE
				DATE: 11 Dec 1998
		      =====================================


TABLE OF CONTENTS

I.    FIXED CUSTOMER-REPORTED PROBLEMS

II.     RUNNING SETNET32 WITH SILENT OPTION


I.     FIXED CUSTOMER-REPORTED PROBLEMS

	PTS #   Description
	-----   -----------

Windows Only*Windows Only*Windows Only*Windows Only*Windows Only*Windows Only

	96033    CAN'T LINK CLIENT PROGRAM FOR TIMESERIES ON
		NT. GLS_ENV IS NOT RESOLVED.

	97244    ESQL/C FAILED TO COMPILE
		/VOBS/QA_TRISTAR/NETWORK/DML/BUG19101.JOB
		WITH ERROR C2026: STRING TOO BIG, TRAILING CHARACTERS TRUNCATED.

	97450   LONGID NAMES DO NOT WORK FOR SERVERNAME, HOSTNAME,
		SERVICENAME,PROTOCOLNAME ETC

	98588   /VOBS/TRISTARM/SQLI/IQDIAG.C : COMPILATION FAILS. PROTOTYPE IS
		REQUIRED. PLEASE SEE THE LONG DESCRIPTION.

	99883   IF YOU ATTEMP TO CONNECT TO A SERVER WITH DB LOCALE JA_JP.03A4,
		YOU GET A -406 ERROR, WHEREAS PROBLEM IS MISSING
		LOCALE/CONVERSION FILES.

	97450   LONGID NAMES DO NOT WORK FOR SERVERNAME, HOSTNAME,
                  	SERVICENAME,PROTOCOLNAME ETC

	98459	SQLVAR_STRUCT.SQLLEN IS DEFINED AS A LONG. USED TO
                  	BE A SHORT. MANUAL SAYS IT SHOULD BE A SHORT.

	98620	DATA CORRUPTION OCCURS ON TABLE WITH BLOB FIELD ON
                  	USING SDK 2.01

End Windows Only*End Windows Only*End Windows Only*End Windows Only*End Windows Only*


II.     RUNNING SETNET32 WITH SILENT OPTION

       SETNET32 program can be run silently in the background without
       bringing up it's Windows graphical interface. This is done by
       loading the configuration file from a previously stored .nfx file.
       The format to load from a DOS command line is as follows:
	   setnet32 -l savedcfg.nfx

       To create a .nfx file, run setnet32 and make changes required to configuration file.
       From the main environment tab, choose the "Save to File" option. This will create/ allow
       you to save the configuration information to a file at a location of your choice with the
       extension *.nfx. One can of course choose the filename for the configuration to be saved.
       Later, it is this same .nfx file that can be loaded silently through the setnet32 silent
       interface.




			   =================================
                               RELEASE NOTES
                                    FOR
                       INFORMIX-CLI 2.80.0008.TC1 PRODUCT RELEASE
                               DATE: 18 Dec 1998
                      =================================

TABLE OF CONTENTS

I.      Database Servers Tested
II.    	System Requirements
III.    Driver Managers
IV.     Files Installed
V.      Major Features in INFORMIX-CLI 2.8
VI.	Changes to infxcli.h file
VII.    Troubleshooting INFORMIX-CLI for Windows
VIII.   Known Product Deficiencies
IX.	8.3 SELECT with UPDATE not yet supported by CLI driver
X.	Client Functions Not Support  ***UD ONLY ***
XI.   	CLI 2.8 and CLI 2.5 Differences
XII.    MTS *** WINDOWS-ONLY ***
XIII.   Fixed Customer Reported Problems
XIV.	Set and Get default UDT (User Defined Type) fetch type.
XV.	Arrays of Parameter support and Insert Cursor support



            ===============================


I.      DATABASE SERVERS TESTED

        INFORMIX-CLI 2.8 has been tested for the following Informix
	database servers:

    - Informix Dynamic Server, Version 7.3x

    - Informix Dynamic Server, Workgroup Edition, Version 7.3x

    - Informix Dynamic Server with Advanced Decision Support and Extended
      Parallel Options, Version 8.2x

    - Informix Dynamic Server with Universal Data Option, Version
      9.14.


            ===============================


II.     SYSTEM REQUIREMENTS

        Windows Requirements
        --------------------
        The system requirements for running INFORMIX-CLI in a Windows NT or
        Windows 95 environment are the following:

            * Windows NT version 3.51 or later, Windows 95, or Windows 98.

            * 16 megabytes of available RAM, more is preferable.

            * 8.5 megabytes of hard-disk space available before installation.

            * Any TCP/IP protocol that is Windows Sockets 1.1-compliant.

            * Microsoft Visual C++ compiler version 2.0 or later. INFORMIX-CLI
              does not support any other C compiler.

            ===============================


III.    DRIVER MANAGERS

        Windows Driver Managers
        -----------------------

            Version Shipped
            ---------------
            INFORMIX-CLI for Windows ships with the Microsoft Driver Manager
            Version 3.5.

            Problems when Using Version 3.0
            -------------------------------
            If other programs that you are using require
            you to use Microsoft Driver Manager Version 3.0, a buffer-size
            problem might occur with some of your INFORMIX-CLI applications.
            The problem can occur when Microsoft Driver Manager Version 3.0
            doubles the total number of bytes available to return. The following
            steps provide an example of this problem:

            1.  A column name that you are retrieving consists of 15 characters
                (but you do not know this).

            2.  You call SQLDescribeCol() with cbColNameMax set to 10.

            3.  SQLDescribeCol() returns a value of 30 for pcbColName.

                SQLDescribeCol() should have returned a value of 15 for pcbColName.
                However, Microsoft Driver Manager Version 3.0 doubled pcbColName
                because it doubles the total number of bytes available to return
                when the output buffer is not large enough to hold all the data.

            4.  You reallocate the szColName buffer for 30 bytes.

            5.  You call SQLDescribeCol() with cbColNameMax set to 30.

            6.  SQLDescribeCol() returns a value of 15 for pcbColName.

                Microsoft Driver Manager 3.0 does not double the total number of
                bytes available to return when the output buffer is large enough
                to hold all the data.

            7.  If you do not compare the first pcbColName value to the second
                pcbColName value, then you do not have a problem. However, if you
                compare the two values and expect them to be the same, you will
                conclude that an error has occurred when, in fact, an error has not
                occurred.

            For information about how to install the correct version of Microsoft
            Driver Manager, see the README file for the Windows version of
            INFORMIX-CLI.

        UNIX Driver Manager
        -------------------
        INFORMIX-CLI for UNIX ships with the INTERSOLV Driver Manager
        Version 3.0.


            ===============================


IV.     FILES INSTALLED

        Files on Windows
        ----------------
        In the Windows environment, the installation procedure installs files
        into the following directories:

            Directory                        Description
            ---------                        -----------
            INFORMIXDIR\bin                  finderr.exe and DLLs
            INFORMIXDIR\demo\clidemo         Samples
            INFOMRIXDIR\gls\cm3              GLS charmap files and registry
                                                 files
            INFORMIXDIR\gls\cv9              GLS code set conversion files
            INFORMIXDIR\gls\lc11             GLS locale files
            INFORMIXDIR\incl\cli             Header files: infxcli.h, sql.h,
                                                 sqlext.h
            INFORMIXDIR\lib                  Libraries
            INFORMIXDIR\msg                  clixmsg.pam
            INFORMIXDIR\msg\en_us\04e4       Message files and errmess.hlp
            INFORMIXDIR\release\en_us\04e4   Document notes and release notes
            WINDOWSSYSTEMDIR                 Common DLLs and files for the
                                                 Microsoft Driver Manager

        Files on UNIX
        -------------
        On UNIX, in addition to common ClientSDK distribution, the installation
        procedure installs files into the following directories:

            Directory                        Description
            ---------                        -----------
            INFORMIXDIR/demo/cli             Demos
            INFORMIXDIR/incl/cli             Header files: infxcli.h,
                                                 infxsql.h
            INFORMIXDIR/lib/cli              Libraries for INFORMIX-CLI and
                                                 for the INTERSOLV Driver
                                                 Manager
            INFORMIXDIR/lib/esql             Libraries for INFORMIX-CLI and
                                                 INFORMIX-ESQL/C
            INFORMIXDIR/msg                  clixmsg.pam
            INFORMIXDIR/msg/en_us/0333       Message files for INFORMIX-CLI
            INFORMIXDIR/release/en_us/0333   Document notes, release notes, and
                                                 machine notes

        Library Names on Windows
        ------------------------
        On Windows, the installation procedure installs the following libraries
        into INFORMIXDIR\lib:

            iclit09a.lib
            iregt07b.lib

        Library Names on UNIX
        ---------------------
        On UNIX, the installation procedure installs the following libraries into
        INFORMIXDIR/lib/cli. In each Data Source specification section in the
        .odbc.ini file, set the Driver value to one of these library filenames:

            Filename                     Description
            --------                     -----------
            libifcli.a or libcli.a       Static version for single threaded
                                           library (non-threaded)
            libifcli.so or iclis09a.so   Shared version for single (non-threaded)
                                            library
            libthcli.a                   Static version for multi-threaded library
            libthcli.so or iclit09a.so   Shared version for multi-threaded library


            ===============================


V.      MAJOR FEATURES IN INFORMIX-CLI 2.8

        Multithreading Support
        ----------------------
        For a multithreaded application, INFORMIX-CLI latches an external handle
        (such as ENV, DBC, and STMT) while a thread is using the handle. If a
        concurrent thread tries to access an external handle that is already in
        use, the concurrent thread waits until the owning thread releases the
        handle. INFORMIX-CLI latches an external handle at the lowest possible
        level in the handle tree to achieve the greatest concurrency.

        Multiple Connection Support in Threads
        --------------------------------------
        INFORMIX-CLI supports multiple database connections in the same or
        different threads. Connections are always explicit and are
        simultaneously active. Each connection operates within its own scope
        and does not interact with any other connection. Any thread can access
        handles that any other thread created. Any thread can support multiple
        connections simultaneously.

        SQLCancel() Support
        -------------------
        INFORMIX-CLI supports SQLCancel() for multithreaded applications. For
        example, if you are executing a statement with hstmt1 in thread one,
        you can call SQLCancel() for hstmt1 from thread two to cancel the
        statement execution.

        Server-Only Connection
        ----------------------
        INFORMIX-CLI supports a server-only connection option which lets you
        create a new database or drop an existing database.

        Named Pipes
        -----------
        INFORMIX-CLI supports named pipes.

        Exclusive Use of a Database
        ---------------------------
        INFORMIX-CLI supports a connection option that lets you use a database
        exclusively. By default, INFORMIX-CLI allows shared use of a database.

        Row ID of the Last Inserted Row as a Statement Option
        -----------------------------------------------------
        The row ID of the last inserted row is visible and retrievable as a
        statement option.

        DBCENTURY Environment Variable Support
        --------------------------------------
        INFORMIX-CLI supports the DBCENTURY environment variable, which
        controls the setting of year values. DBCENTURY affects a CLI program
        only when a user issues a statement that contains a date or datetime
        string like the following one:

           insert into datetable ( datecol ) values ("01/01/01");

        Depending on the value to which DBCENTURY is set on the client, the
        database server stores the date specified in this statement as either
        01-01-1901 or 01-01-2001.

        On a Windows NT platform, you can set DBCENTURY directly
        into the registry under the following key:

            \HKEY_CURRENT_USER\Software\Informix\Environment\DBCENTURY

        Or a Windows NT, Windows 95, or Windows 98, you can set the value of
	the DBCENTURY environment variable through Setnet32, which Informix
	ships as part of the product.

        On a UNIX platform, you can simply set the DBCENTURY environment
        variable.

        For information on how to set DBCENTURY, see the Informix Guide to
        SQL: Reference.


            ===============================


VI.	  CHANGES TO infxcli.h

            The following defines were added to infxcli.h:

                * New SQL data types

                * New InfoType values for SQLGetInfo()

                * Access mode flags to use when creating or opening a smart
                  large object

                * Create-time flags to use in the smart large object
                  specification structure

                * Values for the whence argument that identifies the position
                  from which to start a seek

		===============================



VII.    TROUBLESHOOTING INFORMIX-CLI for Windows

        Buy Microsoft ODBC SDK version 2.5 (or 3.0) or Dr. Deebee ODBC Tool
        kits to help you troubleshoot your application.


            ===============================


VIII.    KNOWN PRODUCT DEFICIENCIES

        The following defects are known to exist in the current release of
        INFORMIX-CLI 2.8. The defects are listed by PTS (Problem Tracking
        System) number followed by a brief description. Technical support
        will be provided with patches and maintenance releases to fix these
        defects.

        PTS #    Description
        -----    -----------
        82205    When it receives a PROCESS_DETACH message, CLI should clean
                 up all active threads, but it does not because CLI may not get a
                 THREAD_DETACH message for each active thread.

        84697    CLI 2.8 crashes an Access client when it tries to fetch data from
                 a row data type, whereas CLI 2.7 fails with error -11064. CLI 2.8
                 either cannot determine the return types of a query or the return
                 types are inconsistent.

        88735    When using the GLS QA_QA locale, a client can't fetch from table
                 names with embedded spaces.

        92681    PowerBuilder 4x applications may not run properly outside
                 the PowerBuilder environment with CLI 2.80.
                 PowerBuilder 4x applications may not run properly outside the
                 PB because of different msvcrt40.dll used from the path. The
                 msvcrt40.dll that comes along with MSVC5.x is not redistributable.
                 Since Informix-CLI is compiled with MSVC 5.x and uses msvcrt.dll,
                 the PB 4 applications running outside the PowerBuilder may pickup
                 MSVC 4.x version of msvcrt40.dll which is not the same.
                 If MSVC 5.0 is installed, the PowerBuilder application will run
                 fine inside as well as outside the PowerBuilder.

        94633   Columns created as decimal(8) and decimal(16) gets described as
                real and double respectively instead of decimal.

                This happens when client and server are running on dissimilar
                hardware platforms - this can cause different floating point
                formats to be used (IEEI and IEEM) on two platforms. In such
                case float and smallfloat data will be transferred in decimal
                format. Decimal(8) columns gets descscibed in the same way as
                a smallfloat column does. and Decimal(16) columns gets described
                the same way as float column does. If possible create columns
                with explicit scale - like decimal(8,5) or decimal(8,2).

        95281    SQLCancel() does not work correctly with ODS 7.3 for Windows NT 4.0.
                 A protocol error occurs. To work around this problem, install
                 NT Service Pack 3 and then install the Tear Patch 2 from Microsoft.
                 Tear Patch 2 is available at:
                     ftp://ftp.microsoft.com/bussys/winnt/winnt-public
                     /fixes/usa/nt40/hotfixes-postSP3/teardrop2-fix

        98950    The SQL_LEN_DATA_AT_EXEC(length) macro wraps around to a positive
                 value if the length specified is the maximum size of the data type.
                 This problem occurs due to overflow.

        99509    CLOBs do not get null-terminated when they are retrieved. Therefore,
                 any attempt to display the CLOB causes junk characters to be displayed
                 at the end. To work around this problem, determine the size of the
                 CLOB and add the null-termination character.

	100570   CLI 2.8 does not allow the user to do an insertion of a literal string
		into a text column with SQLEXECDIRECT.


	  ===============================

----------- IDS-AD/XP ONLY -------------------

IX.	8.3 SELECT with UPDATE not yet supported by CLI driver

	The 8.3 syntax SELECT with UPDATE clause is not supported by the CLI driver
	yet.
	Workaround:
	Set the SQL_ATTR_NOSCAN statement attribute to SQL_NOSCAN_OFF prior to
	executing these statements.  Note that due to this there cannot be any
	native escape sequences in the statement.

----------- IDS-AD/XP ONLY -------------------

            ===============================


----------- UD-ONLY -------------------

X.	Client Functions Not Support
        INFORMIX-CLI does not support the following client functions:

               * ifx_lo_copy_to_file()
               * ifx_lo_copy_to_lo()
               * ifx_lo_filename()
               * ifx_lo_spec_free()
               * ifx_lo_stat_free()

----------- UD-ONLY -------------------



            ===============================


XI.   CLI 2.8 and CLI 2.5 Differences

	The following features are supported by INFORMIX-CLI 2.5 but are not
	supported by INFORMIX-CLI 2.7 and later.

	Support for ODBC SQLSetStmtOption options:

	SQLRESERVED_WORDS
	SQLPSUEDO_COLUMNS
	SQLFROM_RESERVED_WORDS
	SQLWHERE_CLAUSE_TERMINATORS
	SQLCOLUMN_FIRST_CHARS
	SQLTABLE_MIDDLE_CHARS
	SQLFAST_SPECIAL_MIDDLE_COLUMNS
	SQLACCESS_CONFLICTS
	SQLLOCKING_DURATION
	SQLRECORD_OPTIONS
	SQLQUALIFIER_SYNTAX
	SQLLOCKING_SYNTAX

	Support for the INSERT statement for text data:

	With INFORMIX-CLI 2.5, TEXT data can be inserted as a
	string literal.
	INFORMIX-CLI 2.7 and 2.8 do not support this syntax.

	INTERVAL data type

	In INFORMIX-CLI 2.5, an INTERVAL data type is mapped to SQL_CHAR.
	INFORMIX-CLI 2.7 and later does not support the INTERVAL data type.


            ===============================


----------- WINDOWS-ONLY ------------ WINDOWS-ONLY -------------------



XII.     MTS

        System Requirements
        -------------------
        In addition to the Windows system requirements described
	earlier in these Release Notes, the MTS feature has the
	following requirements:

        * MTS 2.0 on Windows NT 4.0, Windows 95, or Windows 98.

        * An Informix server that supports the TP/XA protocol.

        * Windows NT version 4.0 with Service Pack 3 or Windows 95 or Windows 98.

        * Microsoft Visual C++ compiler version 4.2 or later.
	The MTS feature does not support any other C compiler.

        Major Features
        --------------
        The INFORMIX-CLI implementation of MTS provides the
	following major features:

        - Supports distributed transactions in a Distributed
	Database Environment.

        - Supports connection pooling.

        Product Deficiencies
        --------------------
        The INFORMIX-CLI implementation of MTS has the following
	deficiencies:

       - An inherited transaction may have a problem in joining other
	transactions.
        This problem can be represented as follows.
	The two transactions (Inherited and Parent) will get
	two different XIDs from the DTC;  they will not share
        the same lock space. They will be treated as two
	different transactions by the server.
	This may create a dead lock if they want the same resource.
        This will not happen in an XA Transaction because both
	the transactions get the same XID and share the lock space.

	WorkAround: Try to isolate the resources
         as much as possible (by using lock mode (row), indexing etc.).

       - The last thread of a multi-threaded application may
	hang if you are running
         MTS using the library package option.

	WorkAround: If you are running a multi-
         threaded application, select the Server package option.

       - User cannot spawn a thread within  MTS component.

----------- WINDOWS-ONLY ------------ WINDOWS-ONLY -------------------


            ===============================

XIII.   FIXED CUSTOMER-REPORTED PROBLEMS

        The following defects were reported by customers and fixed. The
        defects are listed by PTS (Problem Tracking System) number followed
        by a brief description.

        PTS #    DESCRIPTION
        -----    -----------
	73132    INFORMIX-CLI 2.50.TD2: The ODBC driver IVINF709.DLL is not
                 recognizing the unique index in a table and, therefore, no
                 updates are allowed from VB or MS-Access.

	97613   USING ODBC DRIVERS, A VARCHAR FIELD WILL HAVE
		TRAILING SPACES TRUNCATED.

            	This is still the default beahavior.
		However for the users who wants the trailing
		spaces in a VARCHAR field to be preserved,
            	a connection option SQL_INFX_ATTR_LEAVE_TRAILING_SPACES is
            	added. User can set this option to SQL_TRUE or SQL_FALSE. To
            	set and get this option value use ODBC functions
            	SQLSetConnectOption and SQLGetConnectOption. The default value
            	for this option is SQL_FALSE. This option is defined in
            	infxcli.h file.

	98934   SQLPutData fails to convert data from SQL_C_CHAR to SQL
                types other than SQL_CHAR and SQL_BINARY, i.e. conversion
                of SQL_C_CHAR data provided using SQLPutData call to SQL
                type, say SQL_DECIMAL fails.

                The application sending data (rgbValue) for a
		parameter to the driver at statement execution
		time can send any character or binary data
		values in parts to a column with any SQL data
                type.  The length of character data should be less than or
                equal to 64 for data types other than BYTE, CHAR, VARCHAR,
                TEXT, LVARCHAR, SQLUDTFIXED, SQLUDTCHAR.
		Driver will return  warning for "Data Truncation"
		if the length is greater than 64.

	98947   CLI 2.80 does not support SQL_CURSOR_COMMIT_BEHAVIOUR
                SQL_CB_PRESERVE

                CLI 2.80 now supports cursor commit behavior:
		SQL_CB_PRESERVE.

                On Win32 platforms:
                Application can set cursor behavior using
		CLI 2.80 DSN config
                dialog box. Default cursor behavior is SQL_CB_CLOSE.

                On UNIX platforms:
                User needs to add flag 'CursorBehavior' to the
		appropriate DSN  entry in the .odbc.ini file.
		When the flag is set to 0, i.e.
                entry CursorBehavior=0 is added to the appropriate
		DSN cursor behavior will be SQL_CB_CLOSE.
		when CursorBehavior=1, cursor behavior will
		be SQL_CB_PRESERVE.

                When CursorBehavior flag is not set, or when it
		is set to any value other than 0 or 1 - default
		cursor behavior of Close
                (SQL_CB_CLOSE) will be asumed.


	101112  SYNTAX ERROR ON NESTED SELECT STATMENT WITH
		INFORMIX CLI DRIVER.
            	Example: "select fname, (select customer_num from customer where
            	customer_num=101) from customer where customer_num=101",
            	used to get -201 syntax error

	101327  SQLPREPARE() GIVES SYNTAX ERRORS WHEN THE SQL CREATING A STORED
    	        PROCEDURE INCLUDES A BEGIN WORK STATEMENT
     	        For instance if you try to prepare the following it used to give
      	        a -11060 error (Syntax error)
            		CREATE PROCEDURE tst()
              		  BEGIN WORK;
            		END PROCEDURE;


	101977	CLI 2.8 does not handle DSN LESS connection.
		If you did not create a DSN and tried to connect through the
		SQLDriverConnect with the following syntax,
		you got an error -11060
		insufficient connection information.

		The syntax of the connection string is:
		connection-string ::= empty-string[;] | attribute[;] | attribute;
		connection-string
		empty-string ::=
		attribute ::= attribute-keyword=attribute-value |
		DRIVER=[{]attribute-value[}]
		attribute-keyword ::= DSN | UID | PWD
		| driver-defined-attribute-keyword
		attribute-value ::= character-string
		driver-defined-attribute-keyword ::= identifier

		For Informix CLI Driver User has to use two additional key words
		CLIENT_LOCALE and DB_LOCALE. User has to set it to default
		locale even if he/she does not have a LOCALE set.
		The default is en_US.CP1252.

		The call to SQLDriverConnect looks like
		rc = SQLDriverConnect(hdbc, NULL,"DRIVER=INFORMIX 2.80 32 BIT;
		DATABASE= ovs;HOST=clipper;SERVICE=turbo;SERVER=ol_clipper;PROTOCOL=onsoctcp
		;UID=odbc;PWD=odbc;CLIENT_LOCALE=en_US.CP1252;DB_LOCALE=en_US.CP1252;",
		SQL_NTS, szerrormessage, 256, pcberrormessage, SQL_DRIVER_NOPROMPT);



	102448  LOCALE CONVERSION CHANGES WHEN SPECIFY TRANSLATION LIBRARY WITH
            	IN DATA SOURCE. The default conversion of locales did not use
            	any translation library and used to work with default English
            	locales only. The default translation library is now set to
            	"igo4n304.dll", if no translation library is specified in DSN.


	103715  CLI 2.80 DOES NOT WORK WITH SE VERSION 7.2X COMES BACK WITH 554
            	SYNTAX DISALLOWED. The driver fixes the generation of catalog
            	queries with tablename qualifier like 'database:owner.tablename'
            	which is not allowed per SE syntax.



            ===============================


---------- IDS UDO ONLY --------------


XIV.	Set and Get default UDT (User Defined Type) fetch type.

When UDTs are fetched by the Informix CLI driver, the CLI driver needs to
inform the server about what format the data should be sent back to the
client. The formats allowed are Character and Binary.

Earlier behavior of the CLI driver was:
. If user bind a UDT column with C type SQL_C_CHAR, CLI will request the
  server to send back the UDT data in character format.
. If user binds the same column with C type SQL_C_BINARY, CLI will request
  server to send back UDT data in Binary format.
. If user does not bind the UDT column - default was taken as SQL_C_BINARY.

User is now allowed to change the default behavior.
User can set a connection option SQL_INFX_ATTR_DEFAULT_UDT_FETCH_TYPE to
either SQL_C_CHAR or SQL_C_BINARY. Default fetch type is SQL_C_BINARY,
this will maintain backward compatibility.  This option is defined in
infxcli.h file.

To set and get this option value use ODBC functions SQLSetConnectOption
and SQLGetConnectOption. Also user can manully add a value for the given
DSN in the Windows registry as:
    SQL_INFX_ATTR_DEFAULT_UDT_FETCH_TYPE=SQL_C_CHAR
or this value can be set to SQL_C_BINARY.
Above is true for WIN32 platforms only, for UNIX platform user will need
to update .odbc.ini.


---------- IDS UDO ONLY --------------


   ===============================


XV.	Arrays of Parameter support and Insert Cursor support


These two features are added to allow user to do fast bulk inserts.

Arrays of Parameter allows user to specify an array of parameter and
execute a statement. The statement will be executed for each row in
the given array of parameters. In its current implementation, the
statement specified by the user can only be an Insert statement.

To specify an array of parameter user will need to use SQLBindParam
calls along with call to function SQLParamOptions. SQLParamOptions
allows user to set the count of the rows in the array of parameters.
An Insert statement executed after the above mentioned calls will
get executed for each row of the array.

Above support speeds up the data insert process considerably and
simplifies the ODBC application for the user.

To further speed up the data insert process - insert cursor support
is added. When user sets statement option SQL_ENABLE_INSERT_CURSOR,
along with the array of parameters specified, CLI does not make a
round trip to the server for each row to be inserted. CLI opens
an insert cursor, buffers up the insert requests on the client end
and when the buffer gets full (size of the buffer is currently
set to 4K and user cannot change it), CLI sends across this buffer
to the server. Depending on the size of the data each insert
reuqest carries with it, number of network round trips between
client and server can reduce manifold with the insert cursors.

Option SQL_ENABLE_INSERT_CURSOR is defined in infxcli.h file.

Support for insert cursors is completely transparent to the user.
User need not make any additional calls to open and close an insert
cursor.

Since insert cursor buffers up the insert requests on the client
side with a limitaion that each set of data must occupy same space
- data types whose size can be variable are not supported by the
insert cursors. These types are TEXT, BYTE, UDTs, CLOB, BLOB and
LVARCHAR.

Attached is a sample program that demonstrates the use of Arrays of
Parameter and Insert Cursors.

#include 
#include 
#include 
#include "infxcli.h"
#include "odbcqa.h"

void main(int argc, char *argv[])
{
	HENV         henv;
	HDBC         hdbc;
	HSTMT        hstmt;
	UCHAR        create[MAX_NAME_LEN + 1];
	UCHAR        insert[MAX_NAME_LEN + 1];
    DWORD        iRow;
    int          i;
    short        c1[5];
    long         c2[5];
    char         c3[5][10];
    char         c4[5][11];
    char         c5[5][10];
    float        c6[5];
    double       c7[5];
    DATE_STRUCT  c8[5];
    TIMESTAMP_STRUCT  c9[5];
    DWORD        c1ind[5];
    DWORD        c2ind[5];
    DWORD        c3ind[5];
    DWORD        c4ind[5];
    DWORD        c5ind[5];
    DWORD        c6ind[5];
    DWORD        c7ind[5];
    DWORD        c8ind[5];
    DWORD        c9ind[5];

	if ( argc != 4 )
	{
		printf("Usage: insert_cursor datasourcename userid passwd\n");
		assert(0);
	}

	rc = SQLAllocEnv(&henv);
	assert(rc!=SQL_ERROR);

	rc = SQLAllocConnect(henv, &hdbc);
	ASSERT(henv, NULL, NULL);

	rc = SQLConnect(hdbc, argv[1], SQL_NTS, argv[2], SQL_NTS, argv[3], SQL_NTS);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLAllocStmt(hdbc, &hstmt);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLExecDirect(hstmt, "DROP TABLE test", SQL_NTS);

    strcpy(create, "CREATE TABLE test (a smallint, b int, c decimal( 6,2 ),                    d char(10), e varchar(10),                     f smallfloat, g float, h date, i datetime year to
fraction(5) )");
    rc = SQLExecDirect(hstmt, create, SQL_NTS);
	ASSERT(NULL, NULL, hstmt);

    /*
    ** remove following call if you just want to use array of parameter,
without
    ** insert cursor feature.
    */
    /* Set the statement option to enable insert cursors */
    rc = SQLSetStmtOption(hstmt,SQL_ENABLE_INSERT_CURSOR,1);
	ASSERT(NULL, NULL, hstmt);

    rc = SQLParamOptions(hstmt, 5, &iRow);
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 1 */
    rc = SQLBindParameter( hstmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT,
SQL_SMALLINT, (SWORD)NULL, 0,
                           c1, 0, c1ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 2 */
    rc = SQLBindParameter( hstmt, 2, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, (SWORD)NULL, 0,
                           c2, 0, c2ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 3 */
    rc = SQLBindParameter( hstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_DECIMAL, 6, 2,
                           c3, 10, c3ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 4 */
    rc = SQLBindParameter( hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
8, 0,
                           c4, 11, c4ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 5 */
    rc = SQLBindParameter( hstmt, 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
10, 0,
                           c5, 10, c5ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 6 */
    rc = SQLBindParameter( hstmt, 6, SQL_PARAM_INPUT, SQL_C_FLOAT,
SQL_REAL, (SWORD)NULL, 0,
                           c6, 0, c6ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 7 */
    rc = SQLBindParameter( hstmt, 7, SQL_PARAM_INPUT, SQL_C_DOUBLE,
SQL_DOUBLE, (SWORD)NULL, 0,
                           c7, 0, c7ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 8 */
    rc = SQLBindParameter( hstmt, 8, SQL_PARAM_INPUT, SQL_C_DATE, SQL_DATE,
(SWORD)NULL, 0,
                           c8, 0, c8ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 9 */
    rc = SQLBindParameter( hstmt, 9, SQL_PARAM_INPUT, SQL_C_TIMESTAMP,
SQL_TIMESTAMP, 24, 4,
                           c9, 0, c9ind );
	ASSERT(NULL, NULL, hstmt);

    /* Fill up the data array */
    for( i = 0; i < 5; i++ )
    {
            c1[i] = i+3;
            c2[i] = 110;
            strcpy( c3[i], "1230.45" );
            strcpy( c4[i], "char" );
            strcpy( c5[i], "varchar" );
            c6[i] = ( float )1.1e+03;
            c7[i] = ( double )1.1e+05;
            c8[i].year = 2000;
            c8[i].month = 2;
            c8[i].day = 29;
            c9[i].year = 1996;
            c9[i].month = 7;
            c9[i].day = 4;
            c9[i].hour = 12;
            c9[i].minute = 30;
            c9[i].second = 30;
            c9[i].fraction = 2000;

            c1ind[i] = 0;
            c2ind[i] = 0;
            c3ind[i] = SQL_NTS;
            c4ind[i] = 8;
            c5ind[i] = SQL_NTS;
            c6ind[i] = 0;
            c7ind[i] = 0;
            c8ind[i] = 0;
            c9ind[i] = 0;
    }

    /* make all columns for third row NULL */
    c1ind[2] = SQL_NULL_DATA;
    c2ind[2] = SQL_NULL_DATA;
    c3ind[2] = SQL_NULL_DATA;
    c4ind[2] = SQL_NULL_DATA;
    c5ind[2] = SQL_NULL_DATA;
    c6ind[2] = SQL_NULL_DATA;
    c7ind[2] = SQL_NULL_DATA;
    c8ind[2] = SQL_NULL_DATA;
    c9ind[2] = SQL_NULL_DATA;

    strcpy(insert, "INSERT INTO test VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
	rc = SQLExecDirect(hstmt, insert, SQL_NTS);
	ASSERT(NULL, NULL, hstmt);

	rc = SQLFreeStmt(hstmt, SQL_DROP);
	ASSERT(NULL, NULL, hstmt);

	rc = SQLDisconnect(hdbc);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLFreeConnect(hdbc);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLFreeEnv(henv);
	ASSERT(henv, NULL, NULL);

    /*
    ** Use tool like Microsoft ODBC Test or another ODBC program to
    ** verify that data has been properly inserted into the table 'test'
    */
}



  ===============================


                  ==============================================
                                 RELEASE NOTES
                                     FOR
                  INFORMIX-OBJECT INTERFACE FOR C++ VERSION 2.60
                                DATE: 12/18/98
                  ==============================================

TABLE OF CONTENTS

  I.  OVERVIEW OF RELEASE NOTES
II.  INFORMIX DATABASE SERVER COMPATIBILITY
III.  INSTALLING OBJECT INTERFACE FOR C++
IV.  NEW FEATURES
  V.  C++ COMPILER INTERPRETATION OF LONG DOUBLES
VI.  KNOWN PROBLEMS
VII.  FIXED PROBLEMS
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

I.  OVERVIEW OF RELEASE NOTES
=============================

The purpose of these release notes is to make you aware of special actions
that are required to install, configure, and use INFORMIX-Object Interface
for C++ 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-Object Interface for C++
Programmer's Guide," which provides comprehensive information about product
features and product behavior.

This release notes document is for system administrators who install Object
Interface for C++ and for developers who use Object Interface for C++ to
create client applications.


II.  INFORMIX DATABASE SERVER COMPATIBILITY
===========================================

Informix has simplified its product offerings. References to previous
product names apply equally to the new configurations, as indicated in the
following table.

--------------------------------------------------------------------------
| Previous Product Offering        | New Product Offering/Configuration   |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Dynamic Server   | Informix Dynamic Server              |
|-------------------------------------------------------------------------|
| INFORMIX-Universal Server        | Informix Dynamic Server with         |
|                                  | Universal Data Option                |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Extended         | Informix Dynamic Server with         |
| Parallel Server                  | Advanced Decision Support and        |
|                                  | Extended Parallel Options            |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Workgroup Server | Informix Dynamic Server, Workgroup   |
|                                  | Edition                              |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Workstation      | Informix Dynamic Server, Developer   |
|                                  | Edition                              |
---------------------------------------------------------------------------

Version 2.60 of Object Interface for C++ has been tested with the following
database server configurations:

    - Informix Dynamic Server, Version 7.3x

    - Informix Dynamic Server, Workgroup Edition, Version 7.3x

    - Informix Dynamic Server with Advanced Decision Support and Extended
      Parallel Options, Version 8.2x

    - Informix Dynamic Server with Universal Data Option, Version
      9.14.UCx (UNIX) and 9.14.TCx (Windows NT)


III.  INSTALLING OBJECT INTERFACE FOR C++
=========================================

Object Interface for C++ is provided as a component of Informix Client
Software Developer's Kit Version 2.20. Refer to the "Informix Client
Products Installation Guide" for instructions for installing the Client
SDK.


IV.  NEW FEATURES
=================

There are no new features supported in this release.


V.  C++ COMPILER INTERPRETATION OF LONG DOUBLES
===============================================

LIBC++ provides data type conversion functions in the value interface
ITConversions to enable conversion of C++ type long double. The intent is
to permit fetching floating point values into C++ long double variables.
However, the Client SDK does not currently allow for conversion of long
double values into Informix decimal or float types.

Thus, LIBC++ applications should always ensure that any floating literal
passed to ITConversions::ConvertFrom(long double val) is within the double
range. Otherwise, ConvertFrom(long double val) will return FALSE for value
objects that contain SQL MONEY, FLOAT and SMALLFLOAT values.

Object Interface for C++ is written with the assumption that a floating
literal without the ANSI C++ specified suffixes l or L (example: 12.988
instead of 12.988L) assigned to a long double variable will be treated by
the C++ compiler as a long double. This assumption agrees with the ANSI C++
Draft Standard (Doc No: X3J16/94-0027, WG21/N0414, 25 January 1994), which
states that the type of a floating literal is double unless explicitly
specified by a suffix. The suffixes f and F specify float; the suffixes l
and L specify long double. Thus, the suffix l or L must be applied to a
floating literal in order for it to be interpreted by the C++ compiler as a
long double value.

Different versions of the Sun C++ compiler applied the ANSI C++
standard as it existed at the time of the compiler development and release.
For example, Sun C++ 4.1 conforms to the ANSI standard described above,
whereas pre-4.1 Sun C++ compilers always treated all floating literals,
with or without the l and L suffixes, as long double values if they were
assigned to a long double variable.

The following C++ code example demonstrates assignment of a floating
literal to a long double variable, casting to a double, and comparison
between the double and long double:

  long double d = 12.988;

  double dasd = (double) d;
  if( dasd == d )
    return 0;
  else return 1;

The following table compares support for the ANSI C++ draft standard
referenced above among several versions of Sun C++ compilers. The table
shows how the different compiler versions evaluated the expression (dasd ==
d). If the expression evaluatates to FALSE, the values are not equal.

   Sun C++ compiler versions    Evaluation of (dasd == d )
   --------------------------------------------------------
   Sun C++ 4.0 (Dec 1993)       FALSE (values are not equal)

   Sun C++ 4.0.1 (Jul 1994)     FALSE (values are not equal)

   Sun C++ 4.1 (Oct 1995)       TRUE (values are equal)


VI.  KNOWN PROBLEMS
===================

This section describes the known problems with this release of Object
Interface for C++.

Bug 83547

Platform: Microsoft Windows NT
Compiler: Microsoft Visual C++ 4.2

Executing ITInt8 may generate ERROR C2593: 'OPERATOR <<'IS AMBIGUOUS.
This results from a known compiler bug in Microsoft Visual C++ 4.2, which
does not support 64-bit I/O.
---------------------------------------------------------------------------
Bug 83761

Platform: all
Compiler: all

The Object Interface for C++ fails to returns a set of UDTs when using
ITRoutineManager. This is a duplicate of bug 95487.
---------------------------------------------------------------------------
Bug 88350

Platform: all
Compiler: all

Running $INFORMIXDIR/DEMO/C++/CURSTST gives error
MY_ERROR_HANDLER: ERRORLEVEL=5 SQLSTATE=IX000 XIX000:-7420:ARGUMENT
(CLIENT LIBRARY ERROR) is invalid.

This is a duplicate of DataBlade API bug 92959.
---------------------------------------------------------------------------
Bug 101347

Platform: all
Compiler: all

For CSDK220 the test Value/LargeObj/LargeObj01 for LIBC++ fails when run
with UNIX as client and UNIX 914 server. Output is not as expected.
---------------------------------------------------------------------------
Bug 101671

Platform: all
Compiler: all

Wrong results are returned by the ConverDate() method.
---------------------------------------------------------------------------
Bug 101676

Platform: all
Compiler: all

Interface call ConvertDatetime() fails, returning incorrect results.
---------------------------------------------------------------------------
Bug 102234

Platform: all
Compiler: all

The ITLargeObject::Seek() returns a wrong result. This method is designed
to return a long value, but the function returns  multiple spaces and a
control character at the end.
---------------------------------------------------------------------------
Bug 102364

Platform: all
Compiler: all

/client/c++if/test/makefile causes misleading error messages on some
platforms through use of timeseries library.
---------------------------------------------------------------------------
Bug 103530

Platform: all
Compiler: all

ITValue::FromPrintable("ROW(NULL)::.
ITDBInfo::CreateDatabase() no longer gives a segment violation error.

This bug is a duplicate of client-side DataBlade API bug 82255
which has been fixed.
---------------------------------------------------------------------------
Bug 83360

Platform: Microsoft Windows NT 4.0
Compiler: all

The LIBCPP component of the Client Software Developer's Kit installation
no longer creates an invalid directory structure. This bug is a duplicate
of the BladePack installation bug 85847, which has been fixed.
---------------------------------------------------------------------------
Bug 91310

Platform: all
Compiler: all

A memory leak in ITLocale was fixed.
---------------------------------------------------------------------------
Bug 91312

Platform: all
Compiler: all

This is a duplicate of bug 91310.
---------------------------------------------------------------------------
Bug 91313

Platform: all
Compiler: all

This is a duplicate of bug 91310.
---------------------------------------------------------------------------
Bug 91443

Platform: all
Compiler: all

If you do not execute ITQuery::NextRow() until all rows have been
retrieved, LIBC++ no longer aborts with an access violation on Win32
platforms and no longer aborts with a segmentation violation and core dump
on Unix platforms.
---------------------------------------------------------------------------
Bug 94854

Platform: all
Compiler: all

Numeric and string value objects can now be converted to C++ integral
type "bool" on those platforms where the C++ compiler supports integral
type "bool".
---------------------------------------------------------------------------
Bug 98489

Platform: UNIX
Compiler: all

LIBC++ platform-independent product makefile now works on porting
platforms. It had failed on some porting platforms because the make utility
on those platforms did not support a specific form of symbol substitution.
---------------------------------------------------------------------------
Bug 95380

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONLAST no longer gives the first row instead of the last
row when called once. The last row is now fetched correctly.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95383

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONNEXT when called after ITPOSITIONLAST no longer gives a
duplicate row if a cursor is created for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95438

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONNEXT, when called in a loop, no longer gives
unpredictable results when a cursor is created for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95442

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONABSOLUTE no longer gives wrong results if a cursor is
opened for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95444

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONPRIOR no longer gives unpredictable results when a
cursor is created for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 100947

Platform: UNIX
Compiler: all

Global instances of LIBC++ classes are not created prior to calling the
main function on UNIX platforms Data General Intel and Sequent. The bug for
the UNIX environment has been closed, but the bug is open for the
environments UNIX: Data General Intel and UNIX: SEQUENT.
---------------------------------------------------------------------------
Bug 100968

Platform: UNIX
Compiler: all

ITRawData::Printable access violation in ITQuery::NextRow loop after
ITQuery::ExecForIteration on SELECT of OPAQUE type without ITValue
interface.
---------------------------------------------------------------------------
Bug 101395

Platform: UNIX
Compiler: all

ITLOCALE::CONVERT[DATE|DATETIME|NUMBER|MONEY] and
FORMAT[DATE|DATETIME|NUMBER|MONEY] now reset GLS error code.
---------------------------------------------------------------------------
Bug 101712

Platform: UNIX
Compiler: all

This bug is a duplicate of bug 101395.
---------------------------------------------------------------------------
Bug 101817

Platform: UNIX
Compiler: all

This bug could not be reproduced.
---------------------------------------------------------------------------
Bug 102234

Platform: all
Compiler: all

In the operation class ITInt8, the overloaded output insertion operator

  ostream& operator<<( ostream &, const ITInt8 &)

now inserts into the output stream a null-terminated string without
trailing white space characters.
---------------------------------------------------------------------------




                      ======================================
                                 RELEASE NOTES
                                      FOR
              INTERSOLV DataDirect ODBC Driver 3.02/3.10 PRODUCT RELEASE
                               DATE: 09 Jun 1998
                      ======================================

TABLE OF CONTENTS

I.      What's New in Version 3.02/3.10
II.     Supported Informix Database Servers
III.    Files Installed
IV.     Migrating
V.      Configuring Data Sources on UNIX
VI.     Driver Options
VII.    Microsoft Access and Visual Basic Users (Windows-only)
VIII.   Notes and Known Problems


            ===============================


I.      What's New in Version 3.02/3.10

        Version Numbers
        ---------------
        On UNIX, the new version number is 3.02. On Windows, the new
        version number is 3.10.

        New Features
        ------------
        Version 3.02/3.10 has the following new features:

        * Provides ODBC 3.5 core components.
        * No longer provides the JDBC-ODBC bridge. You can buy this from
          JDK vendors.
        * Supports new data types: Smart large objects, Distinct, BOOLEAN, INT8,
          SERIAL8, and LVARCHAR.

        Additional Documentation
        ------------------------
        You may want to look at some of the documentation
        notes for manuals that are distributed with your Informix database
        server. These notes include information about the following
        products and features which might affect your client application:

            * DataBlade API
            * Error messages
            * GLS functionality
            * SQL

        To see these documentation notes, look in one of the following
        database server directories. If you need information about these
        directories, contact your DBA.

        Platform    Directory for Documentation Notes
        --------    ---------------------------------
        UNIX        INFORMIXDIR/release/en_us/0333
        Windows     INFORMIXDIR\release\en_us\04e4


            ===============================


II.     Supported Informix Database Servers

        Version 3.02/3.10 supports Informix database server 9.x.


            ===============================


III.    Files Installed

        In addition to the INFORMIX-CLI 2.8 files, the following INTERSOLV
        DataDirect ODBC Driver files are installed.

        Files Installed on UNIX
        -----------------------
        "xx" is "so" on Solaris, "sl" on HP-UX, or "a" on AIX.

        In the Intersolv directory:
            Driver
            Driver Manager
            Installer
            Libraries
            License file

        In INFORMIXDIR/help:
            Help text for the Informix SQLDriverConnect dialog

        In INFORMIXDIR/headers:
            Header files

        In INFORMIXDIR/locale/en_US/LC_MESSAGES:
            GLS message files

        In /messages/default:
            ODBC driver manager message file

        Files Installed on Windows
        --------------------------
        In your system directory (by default, the Windows SYSTEM32 directory
        for Windows NT or SYSTEM for Windows 95):
            Visual C and Microsoft ODBC libraries

        In your system directory for a custom install for which you
        selected the ODBC Driver Manager:
            Microsoft ODBC Driver Manager files

        In the Informix translation directory:
            Translation library

        In your driver directory (by default, the Windows SYSTEM32 directory
        for Windows NT or SYSTEM for Windows 95):
            INTERSOLV drivers
            INTERSOLV help files
            INTERSOLV libraries

        In the Informix headers directory:
            Header files


            ===============================


IV.     Migrating

        Migrating from 3.01 to 3.02/3.10
        --------------------------------
        The Informix installation procedure does not remove the old version when it
        installs the new version. Therefore, you can continue to use the old version
        without making any changes to your DSNs or applications. To use the new
        version, you must update the driver reference for each DSN.

            Migrating from 3.01 to 3.02 on UNIX
            -----------------------------------
            Your DSN configuration should be in the .odbc.ini file or in your
            application code. Find the DSN configuration and change the Driver value
            to ivinf913.dll.

            Migrating from 3.01 to 3.10 on Windows
            --------------------------------------
            * If your DSN configuration is in the registry, or if you used the
              ODBC Administrator to set your DSN configuration, use regedit to change
              the following values:

              - Change the "driver" value of the following key:
                    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"dsn_name"
                From:
                    WINSYSDIR \IVIF7912.DLL
                To:
                    WINSYSDIR \IVINF913.DLL
                Where WINSYSDIR is \WINNT\System 32 on Windows NT and \WINDOWS\System
                on Windows 95.

              - Change the "dsn_name" value of the following key:
                    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
                From:
                    INTERSOLV 3.01 32-BIT INFORMIX
                To:
                    INTERSOLV 3.10 32-BIT INFORMIX 9

            * If your DSN configuration is in your application code, change the
              Driver value to ivinf913.dll.

        Migrating from 2.x to 3.01
        --------------------------
        The TranslationDLL connection string option has been changed to
        TranslationSharedLibrary.

        The ODBC_INI enviroment variable has been replaced by the ODBCINI
        environment variable.

        If you are using an existing 2.5 DSN you must modify the library
        or dll name in either the registry or in the odbc.ini file.
        The name must be changed from ivinif12.xx to ivif7912.xx.

            Migrating from 2.x to 3.01 on HP-UX (UNIX)
            ------------------------------------------
            For HP-UX 10.20 (aCC++), the ODBC driver manager has been rebuilt
            using the HP aC++ compiler.  Because aC++ libraries are not
            backwardly compatible with cfront-compiled libraries, C++
            applications are required to recompile their main with the HP aC++
            compiler, C applications are required to re-link the application
            with the HP aC++ linker.  An error such as the following is a
            symptom of not following these steps:

            /usr/dld.sl: Unresolved Symbol:
            __shlimit from /opt/odbclibodbc.sl

            Migrating from 2.x to 3.01 on Solaris (UNIX)
            --------------------------------------------
            For Solaris, the ODBC Driver Manager is not linked with libnsl.so.
            Most ODBC drivers require that this library be initialized before
            the drivers are invoked.  To insure maximum ODBC compatibility,
            applications should link to libnsl.so.


            ===============================


V.      Configuring Data Sources on UNIX

        Data sources are configured through the .odbc.ini file.  For details on
        configuring this file, see the sample .odbc.ini file that is provided
        with the 2.8 release of the driver.

        A Sample of Data Source Entry section in .odbc.ini is given below.
        Note: the Password entry is different than INFORMIX-CLI 2.8
        specifications.

        [Informix]
        Driver=/opt/informix/lib/ivinf7913.so
        Description=Informix9
        Database=odbc
        HostName=informixhost
        LogonID=odbc01
        Password=odbc01


            ===============================


VI.     Driver Options

        The driver has non-standard options that let you take
        advantage of packaged ODBC-enabled applications requiring
        nonstandard or extended behavior. To use these options, we recommend
        that you create a separate data source for each application.

        On UNIX, use a text editor to open the .odbc.ini file.  In the
        section for the data source you created, add the key WorkArounds with
        a value of n (e.g., WorkArounds=n). The value n is the cumulative
        value of all options added together.

        In the Windows environment, use the registry editor (regedit on Windows
        95 or Windows NT 4.0, or regedt32 on Windows NT 3.5x), to open the
        ODBC.INI section in the registry. In the section for the data source
        you created, add the key WorkArounds with a value of n (e.g.,
        WorkArounds=n). The value n is the cumulative value of all options
        added together.

        Key and Value      Description
        -------------      -----------
        WorkArounds=1      If an ODBC driver reports that its
                           SQL_CURSOR_COMMIT_BEHAVIOR or
                           SQL_CURSOR_ROLLBACK_BEHAVIOR is 0,
                           then return 1 instead and force statements to
                           be prepared again by the driver.

        WorkArounds=2      Some applications cannot handle database
                           qualifiers.  If this option is on, the driver
                           reports that  qualifiers are not supported.

        WorkArounds=4      Some applications require two connections to
                           an Informix database.  Since Informix databases
                           support only one  connection, the second connection
                           attempt fails.  Turning this option on  causes the
                           driver to detect this condition and have the
                           two ODBC connections share a single physical
                           connection to the database.

        WorkArounds=8      If the driver cannot deduce the number of rows
                           affected by an INSERT, UPDATE, or DELETE, it may
                           return -1 in  SQLRowCount.  Some applications may
                           not be able handle this.  Turning this
                           option on causes the driver to return 1 instead.

        WorkArounds=16     For SQLStatistics, if the driver reports
                           an INDEX_QUALIFIER that contains a period, some
                           applications raise a "tablename is not a valid name"
                           error.  Turning this option on causes the driver to
                           return no INDEX_QUALIFIER.

        WorkArounds=64     This option results in a column name of
                           C where  is the ordinal position
                           in the result set.  For example, "SELECT col1,
                           col2+col3 FROM table1" produces the column names "col1"
                           and C2. SQLColAttributes/SQL_COLUMN_NAME returns
                            for result columns that are expressions.
                           Use this option for applications that cannot handle
                            column names.

        WorkArounds=256    Forces SQLGetInfo/SQL_ACTIVE_CONNECTIONS to be
                           returned as 1.

        WorkArounds=512    To prevent ROWID results, this option forces the
                           SQLSpecialColumns function to return a unique index as
                           returned from SQLStatistics.

        WorkArounds=65536  This option strips trailing zeros from decimal results.

        WorkArounds=131072  This option turns all occurrences of the
                           double quote character ("") into the grave
                           character (`).

                           Some applications always quote identifiers with double
                           quotes. Double quoting causes problems for data sources
                           that do not return SQLGetInfo/SQL_IDENTIFIER_QUOTE_CHAR
                           = .

        WorkArounds=1048576  Some applications incorrectly specify a
                           precision of 0 for character types when the value will
                           be SQL_NULL_DATA.  This option overrides the specified
                           precision and sets the precision to 256.

        WorkArounds=2097152  Some applications incorrectly specify a
                           precision of -1 for character types.  This option
                           overrides the specified precision and sets the precision
                           to 2000.

        WorkArounds=4194304  For PowerBuilder users, this option converts all
                           catalog function arguments to upper case unless they are
                           quoted.

        WorkArounds=536870912  This option allows for re-binding
                           parameters after calling SQLExecute for prepared
                           statements.

        WorkArounds2=2     Some applications incorrectly specify the ColumnSize/
                           DecimalDigits when binding timestamp parameters. This
                           workaround causes the driver to ignore the ColumnSize/
                           DecimalDigits specified by the application and use the
                           database defaults instead.



            ===============================


VII.    Microsoft Access and Visual Basic Users (Windows-only)

        We recommend that users of Microsoft Access and Visual Basic
        add the value pair WorkArounds=25 (1+8+16) for each data source
        they use with Access and Visual Basic.  For data sources that
        support a single connection, add the line WorkArounds=29 (1+4+8+16).


            ===============================


VIII.   Notes and Known Problems

        SQLColAttribute(s)
        ------------------
        The column attributes 1001 and 1002, which were assigned as
        INTERSOLV specific attributes, were inadvertently used as system
        attributes by the Microsoft 3.0 ODBC implementation.
        Applications using those attributes should now use 1901 and 1902
        respectively.

        SQL_C_NUMERIC
        -------------
        Because of inconsistencies in the ODBC specification, users
        attempting to use SQL_C_NUMERIC parameters should set the
        precision and scale values of the corresponding structure, and
        the descriptor fields in the APD.

        Error Messages
        ------------------
        Restriction:  Some INFORMIX error messages may contain more than
        one error.  It is unclear whether all errors displayed will be valid.

        Additional Notes and Known Problems on UNIX
        -------------------------------------------
            ODBC Driver Manager (UNIX-only)
            -------------------------------
            The driver requires the 3.0 version of the ODBC Driver Manager
            (libodbc.xx). The user needs to purchase the Driver Manager from
            a third party vendor who develops ODBC Driver Manager for the
            required UNIX platform.

            ODBC Driver Manager On Solaris (UNIX-only)
            ------------------------------------------
            For Solaris, the ODBC Driver Manager is not linked with libnsl.so.
            Most ODBC drivers require that this library be initialized before
            the drivers are invoked.  To insure maximum ODBC compatibility,
            applications should link to libnsl.so.

            SQLDriverConnect (UNIX-only)
            ----------------------------
            SQLDriverConnect using options other than SQL_DRIVER_NOPROMPT is
            supported only on systems that include the Motif library.

        Additional Notes and Known Problems on Windows
        ----------------------------------------------
            ODBC Driver Manager (Windows-only)
            ----------------------------------
            ODBC 3.0 drivers require the 3.0 or 3.5 version of the ODBC Driver
            Manager (ODBC32.DLL and ODBCCP32.DLL). The INFORMIX-Client Software
            Developer's Kit provides Microsoft ODBC Driver Manager 3.5.

            Because the ODBC 3.0 Driver Manager is compatible with 2.x compliant
            drivers, all 2.x versions of the Driver Manager should be removed
            from your access path to ensure application stability.  Failing to
            remove older versions of the Driver Manager may result in application
            errors and abnormal terminations.

            ODBC Driver Manager Bugs (Windows-only)
            ---------------------------------------
            Please review the release notes file included with the Client SDK
            for all known ODBC Driver Manager bugs.  In addition to the bug
            list included in the RELNOTES.WRI file, the following problem
            exists: Calling SQLRowCount after receiving a SQL_NO_DATA return
            from an executed statement results in a HY010 Function Sequence
            Error. This error should not occur.

            Microsoft Query and INTERVAL (Windows-only)
            -------------------------------------------
            Attempting to use Microsoft Query '95 with the Informix
            driver will result in a protection fault from Query.  This is
            because Query does not recognize the INTERVAL data types supplied
            by the driver.  Users will need to obtain Microsoft Query '97 to
            obtain the fix.