=================================
RELEASE NOTES FOR

INFORMIX-OBJECT INTERFACE FOR C++ VERSION 2.61

DATE: 5/14/99

Table Of Contents

  1. Overview of Release Notes
  2. Informix Database Server Compatibility
  3. Installing Object Interface for C++
  4. New Features
  5. C++ Compiler Interpretation of Long Doubles
  6. Known Problems
  7. Fixed Problems

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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.

These release notes are not intended to be all-inclusive; they should be read as an addendum to the "INFORMIX-Object Interface for C++ Programmer's Guide," which provides comprehensive information about product features and product behavior.

These release notes are for system administrators who install Object Interface for C++ and for developers who use Object Interface for C++ to create client applications.

Informix Database Server Compatibility

Informix has simplified its product offerings. References for 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 Parallel Server

Informix Dynamic Server with 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.61 of Object Interface for C++ has been tested with the following database server configurations:

Installing Object Interface for C++

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

New Features

There are no new features supported in this release.

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) returns 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 by showing 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)

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)

Known Problems

This section describes the known problems with this release of Object Interface for C++ and where possible shows how to work around these problems.

Bug 83761

Platform: all

Compiler: all

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

Bug 100947

Platform: UNIX: SEQUENT, UNIX: DG-INTEL

Compiler: Edinburgh Portable Compiler (EPC) EC++ 5.0

Test Operation/String/String01 produces a segmentation violation on several platforms. The call to the ifx_gl_lc_errno routine in the Trim() routine does not get initialized for GLS {ifx_gl_init()}.

This bug is believed to be a C++ compiler bug and has been escalated to the compiler vendor.

Bug 101671

Platform: all

Compiler: all

The ITLocale::ConvertDate() method returns incorrect results.

Bug 101676

Platform: all

Compiler: all

The ITLocale::ConvertDatetime() method returns incorrect results.

Bug 103530

Platform: all

Compiler: all

ITValue::FromPrintable("ROW(NULL)::<datatype-cast") with ITCursor::UpdateCurrent fails, raising SQL error -7607: Invalid row literal value.

Bug 108276

Platform: UNIX: DEC-ALPHA

Compiler: DIGITAL C++ Version 6.0

DEC 64-BIT: Calling the Release() function through the ITConversions interface pointer results in a segmentation fault/core dump in ITConversions destructor calls.

Fixed Problems

The following problems have been fixed since the 2.60 release.

Bug 101347, 102334

Platform: all

Compiler: all

ITLargeObject::Seek() now returns the correct result, which is a long value.

Bug 102364

Platform: UNIX

Compiler: all

The /client/c++if/test/makefile no longer causes misleading error messages on some platforms through use of the Time Series library.

Bug 103706

Platform: all

Compiler: all

ITConnection::Close() now properly sets the connection state in the event that the database server connection is lost, and the connection object can continue to be used, for example ITConnection::Open() can be called following ITConnection::Close().

This bug is a duplicate of LIBDMI bug 104570 which has been fixed.

Bug 105172

Platform: Windows NT Version 4.0, Service Pack 3

Compiler: Microsoft Visual C++ 6.0, Service Pack 2

Database names which are 128 bytes in length are now supported when you use Informix database servers 9.2 IUS/UDO and later versions.

Bug 106894

Platform: all

Compiler: all

The Object Interface for C++ demo programs do not run correctly using Informix 7.x database servers. For this release, the demo programs require a 9.x database server.

Bug 106990

Platform: all

Compiler: all

Using the FromPrintable method to set the value of an opaque type no longer causes a segmentation fault.

Bug 107307

Platform: UNIX

Compiler: all

The platform-independent make include file /client/c++if/conf/Makefile.env no longer hard-codes the shared library extension .so, which is not portable. Instead, it uses the macro SOLIBSUFFIX to define the extension.

Bug 107650

Platform: UNIX

Compiler: all

The Object Interface for C++ demo programs can now be built using the makefile in the directory $INFORMIXDIR/demo/c++ of the CSDK distribution.

The bug was due to missing file entries in the CSDK file list, and the missing entries have been added.

Bug 107723

Platform: all

Compiler: all

The ITStatment::Exec() method now returns FALSE if the SQL statement fails to execute.

Bug 108007

Platform: all

Compiler: all

Internal tests of ios::eof() used in stream-to-value data conversions now work correctly.

Bug 108089

Platform: UNIX: DEC-ALPHA

Compiler: DIGITAL C++ Version 6.0

This bug is a compilation error on the UNIX: DEC-ALPHA 64-bit platform. The compilation error has been resolved.

Bug 109628

Platform: all

Compiler: all

Selecting a collection containing ROW(BOOLEAN) or ROW(SMALLINT) columns now returns correct data.

Bug 109632

Platform: all

Compiler: all

Collections of float data are now returned correctly when NT clients and Unix database servers are used, and vice versa.

This bug is a duplicate of ESQL/C - SQLI bug 107380 which has been fixed.