Date: 06/2003
Version: 9.53
IMPORTANT:
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.
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. Additional information not covered in this manual or modified since publication can be found in the documentation notes for the ESQL/C Programmer's Guide.
These release notes are written for the following audience:
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 of the IBM Informix ESQL/C Programmer's Manual.
The following additional changes to the IBM Informix Structured Query Language(SQL) have been implemented in Version 9.40 of Dynamic Server. IBM Informix ESQL/C Version 9.53 supports all these features. (For additional information about SQL and SPL syntax, see the 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. These views could not be updated in earlier releases of Dynamic Server.
The syntax rules for the SELECT statement have been enhanced in the following ways:
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 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.
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 16.
In Version 9.40, 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." It will work only for IDS version 9.4 or above.
In previous releases of ClientSDK, the DESCRIBE statement 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).
The client system that executed a dynamic SQL application can use the DESCRIBE OUTPUT statement (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 IBM Informix 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. In other cases, 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 where 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.
Prior to IBM Informix Dynamic Server, Version 9.40, the SET TABLE and SET INDEX statements could specify whether one or more fragments of a table or an index remain in a shared memory buffer, rather than be written to disk. These statements are no longer supported, because this functionality is provided automatically by the database server. However, no error is issued 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 only 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 2048 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:
If you are migrating from a Dynamic Server release earlier than Version 9.30, see the Version 9.30 release notes to 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.
This release introduces new Syntax to support union operation wherever a query expression can be used. The union operator is used to combine two or more SELECT statements and output all unique rows. The current release of ESQL/C supports the following union operator clauses:
Starting with ESQL/C 9.53.UC2, shipped with CSDK2.81.UC2, the ESQL/C client would support the Pluggable Authentication Module (PAM) feature for better authentication. Using the PAM capabilities of ESQL/C the user can now write application that would allow a challenge-response mechanism for client-server authentication using any third party module.
A new demo by the name of pamdemo.ec has been added to the product to provide the users with a framework for writing an ESQL/C application using PAM, and the necessary callback function.
IDS 9.4 UC2 supports another way configure Encryption CSM (ENCCSM). This will make it easier for DBAs to configuring and managing ENCCSM. The older way of configuration is also supported for backward compatibility.
The original supported format for csm-global-option in concsm.cfg is:
"cipher[options],mac[options], switch[options]"
In the newly supported format, this string is replaced with the following:
"config=<location of the config file>"
In the config file, the above string is broken down in a logical form :
"PARAM_NAME VALUE"
Here is the list and description of parameters:
ENCCSM_DEBUG : Location of debug file along with flags value ENCCSM_CIPHERS : Ciphers to be used ENCCSM_MAC : MAC level ENCCSM_MACFILES : MAC file location ENCCSM_SWITCH : CIPHER and KEY change frequency comma separated
Example:
ENCRYPT_DEBUG file:/tmp/csm.out,flags:0x0774 ENCCSM_CIPHERS allbut ENCRYPT_SWITCH 120,60 ENCRYPT_MAC medium ENCRYPT_MACFILE /usr/informix/etc/MacKey.dat
The following restrictions apply to the parameter values :
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'.