2011-04-20 Version 3.9.0 Vincent Rogier vince.rogier@ocilib.net * Added support Oracle XA - Oracle XA integration in OCLIB is transparent by using OCI_ConnectionCreate() and requires just : - an XA db name for parameter 'db' - an extra flag OCI_SESSION_XA for parametrer 'mode' - no user or password - See the OCI_ConnectionCreate() documentation for the XA open string needed by OCILIB to pass to the TMP * Added support for statement cache - Statement cache is now automatically enabled when using an Oracle client >= 9iR2 - Added statement cache size customization when using an Oracle client >= 10gR1 : - Added OCI_SetStatementCacheSize() - Added OCI_GetStatementCacheSize() - Added OCI_PoolSetStatementCacheSize() - Added OCI_PoolGetStatementCacheSize() * Added support for TAF (Transparent Application Failover) and HA (High availabality) - The following handler has been added when using an Oracle client >= 10gR2 - Added OCI_IsTAFCapable() - Added OCI_SetTAFHandler() - Added OCI_SetHAHandler() * Added support for Connection attributes introduced in Oracle 10gR2 - Added OCI_GetDBName() - Added OCI_GetInstanceName() - Added OCI_GetServiceName() - Added OCI_GetServerName() - Added OCI_GetDomainName() - Added OCI_GetInstanceStartTime() * Improved bind tuning. Now it's possible to set the bind direction mode (in, out, in/out) for slightly better performance - Added OCI_BindSetDirection() - Added OCI_BindGetDirection() * Miscellaneous new calls : - Added OCI_Describe() and OCI_DescribeFmt() to enable the retrieving of an OCI_Resultset object for 'select' statement wihtout exectuing the SQL * Miscellaneous changes : - Reenforced checks on OCI_Statement handle related methods that checks the statement state (prepared, executed, parsed,...) that now can throw more exceptions - Updated layout of some internal structure to supress unnecessary padding - Manual update of source code formatted with Uncrustify (wrong indentation of preprocessor directives) - User callbacks were not correctly documented - Updated Doxygen version used to generate the documentation (update in the output html style) * Miscellaneous fixes : - Fixed Binding call using the binding mode OCI_BAM_INTERNAL : - arrays of Lobs, Files, Intervals and timestamps : internal objects were not properly initialized - big_int : single bind and array bind were incorrectly implemented (allocation size wrongly computed that lead to a segfault for arrays) - strings : - single binds : if the length parameter was set to 0, a segfault happened - Wide strings : if the native Oracle Unicode used a different size than the C runtime for wchar_t (like unix like system) translation were not performed by OCILIB - Fixed 11Gr2 compile time detection when using OCI_IMPORT_LINKAGE (default on Unix platform) - Fixed OCI_ImmediateFmt() : the method returned FALSE even on success - Fixed OCI_PoolGetConnection() : OCILIB tried to set the driver name attribute (appeared in 10gR2) on the session that is not allowed anymore in 11g - Fixed OCI_SetFormatDate() macro : fixed macros parameters declaration - Fixed OCI_ColumnGetNullable() returned value - Fixed OCI_ConnectionCreate() : 2 OCI handles not freed if connection failed - Fixed OCI_SetPrefetchSize(), OCI_SetPrefetchMemory() : the given value was not really passed to Oracle - Fixed OCI_TypeInfoGet() called internally when fetching object owned by a different schema - Fixed OCI_Parse() : the method was internally doing a describe operation instead of just a parse (which gave same results from an end user view) - Fixed OCI_LobAssign() that was not handling correclty Lob arrays created with OCI_LobArrayCreate() - Fixed OCI_BindDouble() and OCI_BindArrayOfDoubles() : internal sub numeric type OCI_NUM_DOUBLE was not set on the bind handle - Fixed OCI_StringGetFromAttrHandle() allocation of insuffucient buffer in unicode mode - Fixed OCI_ObjectSetxxx() could return true if attribute not found - Fixed Queues function in OCI_CHARSET_MIXED mode