Informix Online Documentation
Licensed Materials - Property of IBM
"Restricted Materials of IBM"
IBM Informix Client SDK 2.81
(c) Copyright IBM Corporation 2003
rights reserved.
RELEASE NOTES FOR
IBM Informix ESQL/C
Date: 3/2003
Version: 9.53
Table of Contents
Please note that product names and
documentation that include the word "Informix" are now "IBM
Informix." Except for pathnames, configuration parameters, environment
variables. and user informix, the "IBM" should be prefixed for any
reference to "Informix" in any context of the product, documentation,
and other "Informix" items.
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 IBM Informix ESQL/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 IBM Informix ESQL/C Programmer's Manual, which provides thorough information about product features and behavior. These release notes are written for the following audience:
II. IBM
Informix Database Server Compatibility
Version 9.53 of IBM Informix ESQL/C has been tested with the following database server configurations:
Informix ESQL/C includes source code files for many of the examples in the IBM
Informix ESQL/C Programmer's Manual. The installation process copies these
source code files into the following directory: $INFORMIXDIR/demo/esql. For
more information about the example files for IBM Informix ESQL/C, see the
Introduction Chapter in the IBM Informix ESQL/C Programmer's Manual.
The following additional changes to the IBM Informix dialect of the Structured Query Language (SQL) have been implemented in Version 9.40 of Dynamic
Server and IBM Informix ESQL/C Version 9.53 supports all these features.
(For additional information about SQL and SPL
syntax, see IBM Informix Guide to SQL Syntax.)
The CREATE TRIGGER
statement has been enhanced to support INSTEAD
OF triggers on views. You can define an INSERT, UPDATE,
or DELETE event on a specified view that activates the
trigger. Rather than directly performing the triggering DML event, the database server executes the Action clause
of the INSTEAD OF
trigger. This feature provides a mechanism for updating the underlying tables
of views that include columns from more than one table; such views were not
updatable in earlier releases of Dynamic Server.
The syntax rules for the SELECT statement have been enhanced in the following ways:
a.
Ordering by Columns or Expressions Not in Projection List
The ORDER BY clause now can include column names or expressions
that do not appear in the Select list of the Projection clause. The following
query, for example, is now valid:
SELECT
stock_num, manu_code FROM stock ORDER BY unit_price
Earlier releases had required that unit_price
also appear in the Projection clause.
b.
Iterator UDRs in the FROM Clause
The iterator functions are now valid in the FROM clause of the SELECT statement.
Functional indexes are UDRs that accept column names as arguments, and whose
return values are specified as index keys in the CREATE INDEX
statement. In previous Dynamic Server releases, the number of columns was
restricted to no more than 16.
In Version 9.40, however, the number of
columns that can be arguments to a functional index is language-dependent. For UDRs written in the C
language, a functional index can have up to 102 columns. A functional index
defined in the SPL or Java languages can have up to 341 columns.
The DESCRIBE statement now recognizes the OUTPUT keyword. The new dynamic SQL statement, DESCRIBE
INPUT, can provide information about the retrieved columns
and dynamic parameters of prepared DML
statements. This feature requires IDS server side support for "Dynamic
Query Extension", hence it will work only for IDS version 9.4 or above.
a. The
DESCRIBE INPUT Statement
The DESCRIBE
statement in previous releases of Clientsdk could not provide information about
input parameters of the WHERE clause of
prepared INSERT or SELECT
statements. It could provide limited support for UPDATE parameters if the IFX_UPDDESC environment variable were set. In this release, you
can specify the INPUT keyword in the DESCRIBE statement to return information about each input parameter of a
prepared DML statement, including the data type, identifier, and
length (in bytes).
b. The
DESCRIBE OUTPUT Statement
The client system that executed a dynamic SQL application can use the DESCRIBE OUTPUT
statement (or simply DESCRIBE, because
the OUTPUT keyword is optional) to obtain information about the
output parameters of a prepared DML statement. (This is a CSDK feature, but it requires information that the
database server did not make available to the client application in releases
earlier than Version 9.40.)
In previous Dynamic
Server releases, the database server sorted NCHAR and NVARCHAR values according to the localized collating sequence
of the locale that the DB_LOCALE
environment variable specified, if that locale defined a COLLATION; otherwise, all sorting operations followed the code
set order.
In this release, the new SET COLLATION
statement can specify the localized collation of another locale. For the rest
of the session (or until the next SET COLLATION statement in the same session), sorting of NCHAR and NVARCHAR
values ignores the DB_LOCALE
setting. You can restore the default collating order by issuing the SET NO COLLATION statement. This feature enables the database server
to use different localized collating orders on NCHAR and NVARCHAR
data sets within a single database, if both collating orders can operate on the
same character set.
Database objects (such as indexes, check
constraints, and triggers) that perform collation use the collating order that
was in effect when the object was created, rather than the order that is in
effect at runtime, if these two collating orders are not the same.
In Dynamic Server
releases earlier than Version 9.40, the SET TABLE and SET INDEX statements could specify whether one or more
fragments of a table or of an index remain in a shared memory buffer, rather
than be written to disk. These statements are no longer supported, because this
functionality is now provided automatically by the database server. No error is
issued, however, when applications include a SET Residency statement; the SET TABLE
or SET INDEX
statement is simply ignored.
In a user-defined routine
(UDR), an OUT
parameter corresponds to a value returned through a pointer. Earlier releases
of Dynamic Server supported no more than one OUT parameter in UDRs, and any OUT parameter was required to appear as the last item in
the parameter list. Version 9.40 drops these restrictions, supporting multiple OUT parameters anywhere in the parameter list of the UDR. This feature provides greater flexibility in
defining UDRs, and removes the need to return collection
variables in contexts where multiple returned values are required. Applications can use this feature to create multiple
statement-local variables (SVLs)
in the WHERE clause of a DML
statement that invokes the UDR.
This release introduces
new DML statements (CREATE SEQUENCE, ALTER
SEQUENCE, RENAME SEQUENCE, DROP SEQUENCE) for sequence generators, database objects that multiple users can
access concurrently to generate unique integers in the INT8 range.
The GRANT
and REVOKE statements have been enhanced to support access
privileges on sequence objects, and the CREATE SYNONYM and DROP SYNONYM statements can now reference synonyms for sequence objects in the local
database. Two new operators, CURRVAL
and NEXTVAL, can read or increment the value of an existing
synonym. The system catalog includes a new syssequences table for
information about sequence objects. Sequences are an efficient was to generate
primary key values.
The syntax of the SELECT statement has been enhanced to support the ANSI/ISO syntax for cross joins and right outer joins. The
keywords CROSS and RIGHT are
now supported in the context of queries that join two or more tables. This
feature provides greater compliance with the ANSI standard for SQL.
In previous releases,
database columns of the LVARCHAR built-in
opaque data type had an upper limit of 2048 bytes. Dynamic Server Version 9.4
supports a size parameter in
the declarations of LVARCHAR columns (or LVARCHAR
variables of SPL), where size can be up to
32,739 bytes.
For backward compatibility, LVARCHAR objects declared with no size parameter can store up
to 1024 bytes. This feature increases the storage capacity of the
varying-length data types of Dynamic Server.
IBM Informix Dynamic
Server, Version 9.40, recognizes new SQL keywords
that might affect migration of your applications. Although you can use almost
any word as an SQL identifier, syntactic ambiguities can occur in
contexts where the keyword is also valid. An ambiguous statement might not
produce the desired results. For information about workarounds for such
ambiguities, see the "IBM Informix Guide to SQL: Syntax."
The following SQL keywords are new in Dynamic Server 9.40:
COLLATION
FULL RESTART
CROSS
INSTEAD RIGHT
If you are migrating from a Dynamic Server
release earlier than Version 9.30, see the release notes to Version 9.30 for
words that have been added to the list of SQL keywords since Version 9.21. For a complete list of SQL keywords, see
Appendix A of the "IBM Informix Guide to SQL: Syntax," Version 9.40.
The new file size limit
is 4TB. Now Smart Large Objects
can be load and copied into files up to 4TB. The following SQL functions
support the 4TB files on BLOB column.
The previous file size
limit was 2GB
IV. Problems Fixed in this Release
A comprehensive list of the problems fixed in this release can be found in the defects
document .
A list of the problems known in this release can be found in the defects
document . Some issues with workarounds or additional information are
described below:
CSDK provides a library named 'libgen.a'. On many platforms, however, there is a system library with the same name. For reasons of backward compatibility, the library is still distributed with the product, but users are encouraged to use libifgen.a' to avoid conflicts with the system library. Libifgen.a is a link to 'libgen.a'.
IBM Informix ESQL/C
(c) Copyright IBM Corporation 2003 All rights reserved.