2008-03-19 Version 2.2.0 Vincent Rogier vince.rogier@gmail.com * Public interface - Added OCI_SetPrefetchMemory() (see documentation) - Added OCI_GetPrefetchMemory() - Added OCI_SetPassword() - Added OCI_Break() - See new section in the documentation (page , section ) - Modified few functions prototypes with no parameters -> from f() to f(void) for strict ansi C support - Added 'const' qualifier to nearly all string parameter and string return values * Extended OCI_GetString() : - Modified : Implicit conversion from double uses now '%f' instead of '%g'. - Added support for OCI_Timestamp, OCI_Interval and implicit conversion * Fixes - Memory leak : If a statement that has returned a resulset is re-executed directly with OCI_Execute() (without any parse step), the previous resultset was not freed - Some statmements attributes (fetch size, prefetched size, bind mode, long mode, long size) where reinitialized at every SQL parsing. Now they are persistent. - Constants OCI_FETCH_SIZE, OCI_PREFETCH_SIZE values were set to Oracle default values and were not assigned at statement creation time. So, if the library was rebuilt with different values, the modified values where not applied ! Now, thoses attributes are internally set internally when a statement is created - Now server version is initialized when the conneciton object is created (some tests for some features support could failed) * Modifications - Added support for OS authentification by passing NULL user and NULL password to OCI_CreateConnection() - Modified default date format for implicit conversion (DD/MM/YYYY -> YYYY-MM-DD) - Modified OCI_BindXX() calls : if bind mode is OCI_BIND_POS, the position used is now the given bind name (:1, :2, ...) instead of the internal bind object index - Modified OCI_CreateConnection() : it returns now NULL id OCI_Initialize() has not been called - Reintroduced support for native C++ compilation of OCILIB * Miscelleanous - Validation of LabWindow/LabView compilers - change email -> vince.rogier@gmail.com - Modified demo application : tests are now grouped in series of functions - Object support in Unicode bulids : Oracle confirmed the bug when setting objects attributes (bug #6885036 on Metalink) 2008-03-04 Version 2.1.0 Vincent Rogier vince_rogier@yahoo.fr * Added public retrieval of internal OCI handles : - See new section in the documentation (page , section ) - OCI_HandleGetEnvironment() - OCI_HandleGetContext() - OCI_HandleGetServer() - OCI_HandleGetError() - OCI_HandleGetSession() - OCI_HandleGetTransaction() - OCI_HandleGetStatement() - OCI_HandleGetLob() - OCI_HandleGetFile() - OCI_HandleGetDate() - OCI_HandleGetTimestamp() - OCI_HandleGetInterval() - OCI_HandleGetObject() * Extended Hash Tables support : - See updated example in the documentation (page , section ) - Added OCI_HashGetEntry() to browse an OCILIB Hash Tables - Added OCI_HashGetType() - Added OCI_HashGetSize() * Added support for Lobs larger > 4 Go (Oracle 10g) - See updated section in the documentation (page , section ) - Added type lobsize_t (unsigned int or unsigned long long depending plaform and compiler) - Modified OCI_Lob and OCI_File APIs to change lob size and offset type from unsigned int to lobsize_t * Extended Oracle versions support - Added OCI_GetVersionConnection() - Building OCILIB with versions of Oracle < 10g and OCI_IMPORT_LINKAGE option could fail because : * BINARY FLOAT and BINARY DOUBLE (introduced in 10g) type references were not excluded from 8i and 9i builds * Some Timestamp and Interval (introduced in 9i) code portions were not excluded from 8i builds - Modified Oracle version detection - Rewritten conditional code compilation directives for handling correctly all versions of Oracle (8i -> 11g) - The library has been through series of tests on the following environments : * Servers : 10.2.0.1.0, 8.1.7.0.0 * Clients : 11.1.0.6.0, 10.2.0.1.0, 9.2.0.1.0, 9.0.1.0.1 - few errors were encountered but always linked to Oracle known bugs identified on Metalink : nclobs on 8i, intervals on 9i, Full Unicode handling on 9i - Known issues that are currently being investigated : * Oracle 8i only + "mixed charset" build : read/write on a CLOB fetched from a "return into" inserts '\0' between characters (looks like double unicode expansion..) * Modified Error handling - Added OCI_ErrorGetType() - Removed error messages prefixes "(OCI_xxx) - " * Fixed : - OCI_RegisterDate() caused OCI_Execute() to crash with Oracle < 10g. It's a known Oracle bug (metalink id #3269146 : OCIBindDynamic() with SQL_ODT). - OCI_RegisterDate() works nows on version < 10g (using SQLT_ODT for 10g and SQLT_DAT for 8i and 9i) - OCI_LobAppendLob() caused an ORA-24805 on Oracle 8.1.x only - OCI_xxxxToText() functions now initialize output buffers even on failure