Releases: vrogier/ocilib
Releases · vrogier/ocilib
v4.6.1
Fixes (C API)
- Issue #188: Compile error with Oracle client 12.1 and option OCI_IMPORT_LINKAGE
- Issue #196: Warning 4996
- Issue #198: Compile Error with Oracle Client 12.2 and option OCI_ATTR_CALL_TIMEOUT
- Issue #199: Compile warnings on Oracle Client 12.2
Fixes (C++ API)
- Issue #182: Cannot bind a std::vector as a PL/SQL Table (v4.6.0 fixed the issue only for 1st element of the vector)
- Issue #189: In/out binded vector<ostring> not updated after statement execution
- Issue #191: Reassigning SAME C handle to C++ a object leads to loose the content of the C handle
- Issue #192: Vectors of non scalar types binded as pure OUT binds are not updated after execution if vector element do not have their value set
- Issue #200: Compiler warning 4018 with 4.6.0
Miscellaneous:
- Updated compilers for MS Windows prebuilt binaries
* VS2017 15.9.7 for 32/64 bit DLLs
- Prebuilt static libraries built with TDM-GCC (Code::Blocks projects) are not shipped anymore
* Recent TDM- GCC versions produces executables that links statically against winpthreads
* This implies requirements and restrictions that motivated to remove prebuilt libs from ocilib releases
* Users can compile them using the provided Code::Blocks project
v4.6.0
Changes
- Enhanced Oracle 18c support
* Fixed Oracle minor and revision versions computation when Oracle version >= 18c (due to breaking in OCI API)
* Added new version constants
* Extended Column property flags
* Added the ability to retrieve the SQL_ID of an SQL statement
* Added the ability to find out if a CLOB/NCLOB/BLOB is remote
* Added network timeout management support
- C++ API:
* Added Environment::GetCharMaxSize()
Fixes (C API)
- Fixed compilation with OCI_IMPORT_LINKAGE when compile time OCI version is OCI_8_1 or OCI_9_1 or OCI_9_2 (e.g. on Unix based system with very old Oracle clients)
Fixes (C++ API)
- Issue #170: How to write a clob using utf-8 encoding charset
- Issue #181: Problem with utf-8 in LobNationalCharacter
- Issue #182: Cannot bind a std::vector as a PL/SQL Table
Miscellaneous:
- Issue #180 : Added workaround for OCI bug related to prefetching with Oracle 9i clients
- Updated compilers for MS Windows pre built binaries
* VS2017 15.9.1 for 32/64 bit DLLs
* Code::Blocks 17.12 (TDM-GCC 5.1.0) for 32 bit MinGW static libs
v4.5.2
Fixes (C API)
- Issue #152: Wrong error reporting when calling OCI_Execute() on a non prepared statement
- Issue #153: OCI_GetSqlErrorPos() not working since v4.3.0
- Issue #158: OCI_IntervalCompare() always returns 0 (equality)
- Issue #159 (workaround for oracle Bug): OCI_TimestampAssign() returns ORA-00932 when timestamp type is OCI_DTYPE_TIMESTAMP_LTZ
- Issue #161: Current offset not updated when calling OCI_LobTruncate()
- Issue #162: OCI_RegisterObject() and OCI_RegisterRef() failure
- Issue #164: OCI_RefSetNull() fails if already null or if its underlying object has not been pinned
- OCI_IntervalArrayCreate() and OCI_TimestampArrayCreate() did not allow to create arrays if the connection handle was null
Fixes (C++ API)
- Issue #155: ocilib::Date::operator inverted operator >= and <=
Miscellaneous
- Updated compilers for MS Windows pre built binaries
* VS2017 15.8.3 for 32/64 bit DLLs
* Code::Blocks 17.12 (TDM-GCC 5.1.0) for 32 bit MinGW static libs
- Added Google Test suite for the C API
* Work In Progress
* VS2017 (only) project using Google test nugets
v4.5.1
Enhancements (C API)
- Updated driver information set by OCILIB since v3.1.0 (column CLIENT_DRIVER in V$SESSION_CONNECT_INFO)
- it is now including OCILIB version (e.g. "OCILIB : x.y.z" instead of "OCILIB")
- Extended OCI_SeTrace() and OCI_GetTrace():
- Added OCI_TRC_OPERATION: Name of the database operation set by the client application to be monitored (according Oracle docs)
- This value is stored the database in the column DBOP_NAME of the system view V$SQLMONITOR
- OCI_GetTrace() returns now NULL instead of an empty string if the given trace is not set or nullified
- Release Windows binaries are now built using VS 2017 15.5.6 (instead of VS2017 15.3.2)
Fixes (C API)
- Driver information (introduced in Oracle 11gR1: was set by OCILIB if
- Oracle version >= 11gR1 for standalone connections and connections retrieved from connection pools
- Oracle version >= 11gR2 for connections retrieved from session pools
- Now it sets it correctly in all cases when Oracle version >= 11gR1
- Issue #141: OCIBindRaw() now accepts empty buffers (non null data with size = 0)
- Issue #142: OCI_GetStruct() was filling numeric fields with garbage values since v4.5.0
- Issue #143: OCI_SetTrace(): passing NULL values for clearing trace information leads to segfaults
- Issue #144: OCI_SetTrace(); If called at least once, it was causing small memory leak in OCI_ConnectionFree()
- Issue #145: Using OCI_BAM_INTERNAL for types using handles was leading to segfault when executing the statement
- Impacted types:OCI_Object, OCI_Lob, OCI_File, OCI_Timestamp, OCI_Interval, OCI_Ref and OCI_Collection
Fixes (C++ API)
- Issue #141: ocilib::Statement::Bind<ocilib::Raw, unsigned int>() accepts now empty ocilib::Raw
Miscellaneous
- OCILIB requires now C99 to be activated for compiling:
- When using autotools (Unixes): Enforcing C99 compiler flags using AC_PROG_CC_STDC() macro
- When using Visual Studio: OCILIB cannot be compiled anymore with VS2010 and earlier versions (released binaries use VS 2017)
- This was motivated for using variadic macros and allow variable declarations not only at beginning of blocks
- Addressed static code analysis hints and warnings
- Internal code refactoring and factorization
- Reduced cyclomatic complexity of some internal functions
- Some methods (connection logon/logoff, bindings) were far too long and had been decomposed and split in smaller ones
- Fixed demo an script files
v4.5.0
Enhancements (C and C++ API)
- Extended support for non final UTDs
- Added OCI_TypeInfoGetSuperType() and ocilib::TypeInfo::GetSuperType()
- Added OCI_TypeInfoIsFinalType() and ocilib::TypeInfo::IsFinalType()
- Added C and C++ demos about super types and sub types
Fixes (C API)
- Issue #132, #133, #135: Fixed segfault while accessing to derived UTDs members (due to wrong members offset computation)
- Issue #134: OCI_ObjectToText() and OCI_CollToText() were mangling conversion errors leading OCI_GetLastError() to not report conversion errors
- Issue #136: OCI_RegisterSubscription() was not correctly setting port number if provided
- Issue #137: BINARY_DOUBLE and BINARY_FLOAT values could not be set or retrieved from OCI_Elem and OCI_Object
- Issue #139: OCI_ErrorGetInternalCode() may report wrong OCI_ERR_* value
Miscellaneous
- Refactored internal numeric types conversions
- Removed usage of deprecated symbols
- Some code cleanup
v4.4.1
Enhancements (C API)
- Issue #116: OCI_ColumnGetFullSQLType() returns now [schema].[typename] for UDTs (instead of [typename] only
- Issue #122: Added default format OCI_FMT_TIMESTAMP_TZ when converting TIMESTAMP WITH TIMEZONE from/to strings
- Added OCI_CST_MERGE statement type
Enhancements (C++ API)
- Added support for new methods and constants added in C API v4.4.0:
- Added Column::GetCollationID()
- Added CollationID enumeration
- Extended StatementType enumeration: added TypeMerge
- Extended SessionFlags values: Added SessionSysAsm, SessionSysBkp SessionSysDgD, SessionSysKmt, SessionSysRac, SessionPreAuth
Fixes (C API)
- Issue #117 : Fixed segfault in OCI_StatementFree() when OCI_Objects were binded to a statement and nullified with OCI_BindSetNull()
- Issue #118 : Fixed OCI_NumberCompare() that was comparing the first number with itself
- Issue #121 : Updated magic numbers (positive and negative infinity) handling in OCI_NumberToString() and OCI_NumberFromString()
- Issue #124 : OCI_DirPathSetColumn() might use a buffer to small to convert datetime/timestamp/interval values
Miscellaneous:
- Visual studio solutions/projects updates and cleanup
v4.4.0
Enhancements (C API)
- OCI_Object: Supporting now non final object types
- if an OCI_Object instance real type is a sub type of its column object type, OCILIB is dynamically retrieving its real and right type instead of processing it as its base type
- Added missing synchronized access when iterating the list of existing OCI_TypeInfo in OCI_TypeInfoGet()
- Allocation Binding mode updates
- Added BindGetAllocationMode()
- updated OCI_GetBindAllocation() and OCI_SetBindAllocation() documentation to properly specify their usage
- Extended 12cR2 support:
- Increased identifier size to 128
- Added OCI_ColumnGetCollationID
- Added more Oracle Session Mode
- Refactored OCI_List implementation (Internal change)
- No more access to OCI_List fields from other compilation units (encapsulation purposes)
- Refactored OCI_List implementation
Fixes (C API)
- Issue #112: OCI_GetString behaves badly with empty LOBs
- Issue #104: XA connection open failed with ORA-12154
- Fixed broken support for XA connections
- Added 2 new error codes related to XA connections management (OCI_ERR_XA_ENV_FROM_STRING, OCI_ERR_XA_CONN_FROM_STRING)
- Issue #101: Wrong OCI_STRING_FORMAT_TIMESTAMP constant
- Fix for Oracle bug #9838993 workaround
- Version 4.2.1 introduced support for an experimental workaround for Oracle bug 9838993 (memory leak when using unicode and re-preparing/executing same statement multiple times)
- This support was not always working as column names where sometimes not null terminated
v4.3.3
Fixes (C API)
- Issue #81: Fixed OCI_GetInt() on string columns
- Wrong implicit string to integer conversion (returning 0 whatever string value) occurred under following conditions:
- Column is string based
- Oracle client < 12gR1
- Using OCI_GetInt() or OCI_GetUnsignedInt()
- Wrong implicit string to integer conversion (returning 0 whatever string value) occurred under following conditions:
- Issue #86: Fixed wrong error information when statement execution failed involving 64bit integer binds
- It occurred under following conditions:
- Binding 64bit integer host variables with OCI_BDM_OUT flag set (default if OCI_BindSetDirection() has not been called)
- Statement execution failed on the server for any reasons (server side error, constraint violation, ..)
- Real server side error information was not reported by OCI_GetLastError() or error callback
- Instead an error "OCI-22060: argument [2] is an invalid or uninitialized number" was reported
- It occurred under following conditions:
- Issue #88: Fixed OCI_GetString() on BLOB columns with blob size > 1024 bytes
- Filling the resulting string with BLOB data led to a buffer overflow
- Issue #89: Fixed Segfault occurring in OCI_Execute()
- The issue was a wrong offset computation when trying to update user strings after execution.
- It occurred under following conditions:
- OCI_CHARSET_WIDE (Unicode) ocilib build
- Unix/Linux (wchar_t implemented as 32bit integers)
- Binding host string variable with OCI_BDM_OUT flag set (default if OCI_BindSetDirection() has not been called)
Fixes (C++ API)
- Issue #63: (Re)Added cstddef header in ocilib_core.hpp as on some platforms/compiler versions, it was reported as needed (including iterator header was not enough)
Enhancements (C API)
- Issue #84: Add support for numeric type in OCI_ColumnGetSubType() with limitations as real numeric type cannot really be identified
v4.3.2
Fixes (C API)
- Issue #69: Fixed OCI_StatementGetConnection() that was returning erroneous values (regression introduced in v4.3.0)
- Issue #70: Fixed Subscriptions issues when OCILIB charset is OCI_CHARSET_WIDE (Unicode builds)
- Issue #71: Fixed regresson introduced in v4.3.0 about binding big_uint variables (only unsigned 64bit integers)
- Issue #72: Fixed OCI_LobErase() return value that was wrong since v4.3.0 (1 on success and 0 on failure) instead of the number of elements erased from the LOB
- Issue #75: Fixed OCI_ElemIsNull() that was marking the call as failed is the value was not NULL (regression introduced in v4.3.0)
- Issue #78: Fixed usage of OCI_SetBindAllocation() when switching bind allocation mode that may result in memory leaks
- Issue #79: Fixed issues in implicit conversion in OCI_GetString()
Changes and Enhancements
- Issue #73: Activate support for N' substitution (nchar replacement in SQL statement strings) when source code is unicode (Only for Oracle Client >= 10gR2)
- Issue #74: Added support for OCI_Number in format calls
- Issue #79: Added support for OCI_Statement (cursors) in OCI_GetString()
Miscellaneous
- Removed outdated unmaintained Visual Studio 2005, 2008 an 2010 projects for building OCILIB DLLs and C/C++ tests apps
- Keeping visual Studio 2013 projects
- Added Visual Studio 2015 projects
- Prebuilt Windows OCILIB dlls are now compiled using Visual Studio 2015
v4.3.1
Fixes (C API)
- Issue #60: Fixed bug introduced in v4.3.0 related to binding arrays of big ints
- Issue #64: Fixed structure size computation for Object members that are Objects
- Issue #65: Fixed Binding null/non initialized OCI_Number
- Issue #68: Fixed OCI_Execute() behavior with PL/SQL "select into" and no data found
Fixes (C++ API)
- Issue #63: Added cstddef header in ocilib_core.hpp as on some platforms/compiler versions, it was reported as needed
- Issue #67: Fixed memory leak when using Number objects
Changes:
- Request #66: Increased value of OCI_BIND_MAX from 1024 to 65535