Skip to content

Releases: vrogier/ocilib

v4.6.1

17 Feb 20:14
da14191
Compare
Choose a tag to compare

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

22 Nov 09:42
c2a4794
Compare
Choose a tag to compare

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

13 Sep 22:50
Compare
Choose a tag to compare

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

23 Feb 09:12
Compare
Choose a tag to compare

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

07 Feb 07:46
Compare
Choose a tag to compare

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

29 Nov 08:27
Compare
Choose a tag to compare

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

26 Oct 16:21
Compare
Choose a tag to compare

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

07 Jun 20:27
Compare
Choose a tag to compare

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()
  • 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
  • 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

08 Feb 22:29
Compare
Choose a tag to compare

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

25 Jan 22:17
Compare
Choose a tag to compare

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