IBM Informix

Release Notes for IBM Informix Object Interface for C++

3.00.xC3DE 22 October 2007

Contents

Release Notes
Purpose of these release notes
Database Server Compatibility
Caveats
Known problems and fixed problems
Documentation Corrections and Changes

Release Notes

Purpose of these release notes

The purpose of these release notes for IBM Informix Object Interface for C++ Version 3.00 is to:

These release notes are not intended to be all-inclusive; they should be used as an addendum to the product manuals.

Database Server Compatibility

This version of the Object Interface for C++ is supported with the following IBM Informix database servers:

Database Server Versions
IBM Informix Dynamic Server Enterprise Edition 7.31 and higher; 9.30 and higher; 10.0; 11.10
IBM Informix Dynamic Server Express Edition 10.0, 11.10
IBM Informix Extended Parallel Server 8.30 and higher
IBM Informix OnLine 5.10 and higher

Caveats

This section contains information you should be aware of before using the product.

Possible Recompile and Rebuild Needed

Beginning with CSDK version 2.90, the code for the C++ API have been upgraded to use the latest STL standards for C++. Although it has been tested and verified that most pre-compiled applications might not be required to be recompiled and rebuilt, it is recommended that you do so.

C++ Compiler Interpretation of Long Doubles

Object Interface for C++ 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, Object Interface for C++ 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 evaluates to FALSE, the values are not equal.

Sun C++ compiler versions Evaluation of (dasd == d)
4.0 (Dec 1993) FALSE (values are not equal)
4.0.1 (Jul 1994) FALSE (values are not equal)
4.1 (Oct 1995) TRUE (values are equal)
5.0 (Oct 1999) TRUE (values are equal)
6.01(2001) TRUE (values are equal)

Linking To The Current Compiler on Sun Solaris

Beginning with Version 2.90 Object Interface for C++ is compiled with Sun WorkShop C++ Compiler, Version 6.0. C++ applications using the Version 2.90 Object Interface for C++ should also be compiled with Sun WorkShop C++ Compiler, Version 6.0 or greater.

This means that if you have a Object Interface for C++ legacy application compiled and linked with a pre-6.0 C++ compiler, you must re-compile and re-link it with 6.0 Sun Workshop C++. Otherwise, the application may fail with runtime link errors due to binary incompatibilities between pre-5.0 applications and 5.0-compiled shared libraries.

For more information, see the Sun WorkShop Compiler C++ 6.0 Collection documentation at http://docs.sun.com and the SunOS CC.1 man pages.

Known problems and fixed problems

A comprehensive list of the problems fixed in this release and also a list of known problems that are not yet fixed can be found in the DEFECTS document.

Documentation Corrections and Changes

This section describes the known corrections and changes that need to be made to the IBM Informix Object Interface for C++ Programmer's Guide.

There are no known corrections or changes at this time.

Copyright IBM Corp. 1994, 2007