Skip to content
  • v4.7.3
  • 7599544
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.7.3
  • 7599544
  • Compare
    Choose a tag to compare
    Search for a tag

@vrogier vrogier released this Mar 9, 2021

Fixes (C API)

    - Issue 251: OCI_ErrorGetMessage() returns invalid messages when OCILIB is build with OCI_CHARSET_WIDE on linux/unix platforms
    - Issue 252: Incorrect OCILIB client driver layer namein V$SESSION_CONNECT_INFO and GV$SESSION_CONNECT_INFO when OCILIB is build with OCI_CHARSET_WIDE on linux/unix platforms
    - Issue 253: Error occured at OcilibLobFree: ORA-01403: no data found
    - Issue 258: OCI_SubscriptionRegister() returns always NULL since v4.7.0
    - Issue 264: Fetched UROWIDs (IOT Table ROWIDs) values are truncated
    - Issue 268: OCI_DirPathSetColumn() forwards parameter 'maxsize' as unsigned short to Oracle client leading to data truncation

Fixes (C++ API)

    - Issue 250: Exception handling when using OCI_CHARSET_WIDE
    - Issue 262: Using correct delete[] in ManagedBuffer destructor

Miscellaneous

    - Updated compilers for MS Windows prebuilt binaries
        * VS2019 16.9.0 for 32/64 bit DLLs 
        * VC runtime (statically linked) updated from vc141_xp to vc142
        * Note: Windows XP is not supported anymore due to the runtime update
    - Reduced some ocilib structures size by removing some paddings (especially in 64bits)
    - Added a makefile to build the C++ demo (Makefile_demo_cpp) that is also now installed with the C demo Makefile
    - OCILIB Test suite is now ported to Linux/Unix platforms
        * Test suite is now provided in ocilib-x.y.z-gnu.tar.gz distribution archives and installed by 'make install' among documentation and demo (typically in /usr/local/share/doc/ocilib/tests)
        * To build the test suite:
            - Modify the db credentials in ocilib_tests.h
            - Use Makefile_tests (it depends on google test that must be installed prior building the test suite)
Assets 5

@vrogier vrogier released this Nov 10, 2020

Fixes (C API)

    - Issue 247: When using a OCI_Timestamp object created with OCI_TIMESTAMP_TZ flags, some OCILIB timestamps methods might raise an OCI_ERR_NULL_POINTER error
    - Issue 248: For Oracle client version < 11g, version 4.7.0 broke the ability to fetch data from resultset containing specific datatypes
    - Fixed some Coverity code analysis findings (hypothetical issues never encountered)

Miscellaneous

    - Updated C API test suite  
        * Re-Ran successfully test suite with OCILIB compiled in 8i, 9i, 10g, 11g, 12c, 18c modes (ANSI and Unicode)

Note: PDBs are now included with ocilib-x.y.y-windows.zip distribution archives

Assets 5

@vrogier vrogier released this Oct 28, 2020

This release contains no code changes.
It enhances library symbol visibility with GCC and compilation issues with recent GCC versions

Enhancements (C API)

    - OCILIB internal and public symbols management
        * For static library:
            - All private symbols that can have local scope are now declared static
            - All private non static symbols are now prefixed with "Ocilib" to avoid collisions 
        * For shared library:
            - No change for Windows platform as __declspec(dllimport) and  __declspec(dllexport) were already handled
            - When using GNUC compatible compiler:
                - all public  symbols are now declared with __attribute__ ((visibility ("default")))
                - all private symbols are now delcared with __attribute__ ((visibility ("hidden")))
                - Configure script will automatically add the compiler flag "-fvisibility=hidden"
    
    - OCILIB compiles now without any warnings when using GNUC with flags -Wall -Wextra -pedantic

Fixes (C API)

    - Issue 242:  Fixed strings.h conflict with recent GCC versions
    - Issue 243 : Fixed compiling ocilib directly from repository on non Windows systems (while using distribution archive was OK)
    - Issue 245 : Fixed ocilib shared library symbols visibility (Linux/Unix)

Changes (C API)

    - Removed useless old macros for mapping lib C string function to ansi or wide char versions (ostrXXX)
    - Removed symbols ocisprintf(), ocistrdup(), ocistrcasecmp(), ociwcsdup(), ociwcscasecmp() from OCILIB shared library

Miscellaneous

    - Updated compilers for MS Windows prebuilt binaries
        * VS2019 16.7.6 for 32/64 bit DLLs
Assets 5
  • v4.7.0
  • 46ea653
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.7.0
  • 46ea653
  • Compare
    Choose a tag to compare
    Search for a tag

@vrogier vrogier released this Jul 16, 2020

Enhancements (C API)

    - Library internal design changes (preparing v5.0.0)
        * OCILIB code base has been layered in 2 distinct API layers:
            - Internal API that has now its own separate design
                - v4.7.0 internal API, while matching the public one in this version, has most of its methods renamed
                - It will evolve differently, preparing new public APIs for future versions
            - Public APIs exposing features to clients
                - v4.7.0 is exposing the same public API as previous versions
                - v5.0.0 will expose a different API
                - Both will use same internal API
            - Contextual error management enhancements
                - As internal APIs cannot be called from outside the library, last error management has been simplified and improved    
            - Enhancements on internal methods implementation:
                - Since v3.0.0 (back in 2008), OCILIB methods implementations are standardized to follow the same single exit point pattern
                - Standardized entry point checks and exit points are based on extentive macros usage
                - But the control flow was handled by a status variable leading to continuous and nested checks
                - With 4.7.0, no more "if (STATUS) {...}" in the code.
                - Instead, in case of errors, code directly jumps to exit points that can have cleanup code sections.
                - See it as try {...} finally{...}  
                - Thus, code is now very sequential, much easier to read, with no nested error management/branching.
                
    - Public headers reorganization:
        * Broke up ocilib.h content into multiple headers located in /include/ocilibc/
        * Broke up C++ headers content into multiple headers located in /include/ocilibcpp/            

    - Enhanced Error handing:
        * Updated OCI_Cleanup(): if there are any unfreed allocated bytes by the library itself (e.g. OCILIB user objects not freed)
            - it raises an error of type OCI_ERR_UNFREED_BYTES (with the amount of bytes in the error message)
            - it completes cleanup and returns FALSE
        * Added method OCI_ErrorGetLocation() to return the method name where the exception occured
        * Updated method OCI_ErrorGetString() to return a string using the following format "Error occured at {Location}: {Description}"

Fixes (C API)

    - Issue 239: Fetching nclobs as strings return value in hexa format truncated values when nsl_lang is UTF8
    - Issue 238: Fetching clobs as strings return truncated values when nsl_lang is UTF8
    - Issue 236: Memory issue with OCI_BAM_INTERNAL and OCI_CDT_NUMERIC        
    - Fixed OCI_EnqueuePut() and OCI_DequeueGet() in OCI_CHARSET_WIDE charset mode (added a workaround for a known oracle client UTF16 bug)
    - Fixed a minor memory leak when using implicit resultsets     

Fixes (C++ API)

    - Issue 230: Memory leaks while rebinding vectors

Miscellaneous

    - Extended C API Test suite that has now a much wider coverage
Assets 5
  • v4.6.4
  • b9eaff0
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.6.4
  • b9eaff0
  • Compare
    Choose a tag to compare
    Search for a tag

@vrogier vrogier released this Apr 18, 2020

Fixes (C API)

- Issue #222: Allow OCI_SESSION_SYSDBA for session pools
- Issue #225: Fixed some PL/SQL tables binding issues when statement is an anonymous PL/SQL block
- Issue #226: When NOT using OCI_ENV_CONTEXT environment flag, OCI_CollToText() and OCI_ObjectToText() failed if previous OCILIB call failed
- Issue #227: Enhanced performance when fetching Clobs as strings (for Oracle 11g and above)

Miscellaneous (C API)

- Some performance improvements when converting Objects and Collections to strings
- Some performance improvements when calling OCI_GetString() on non strings columns
- Minor changes in code for addressing some code analysis hints (clang, resharper)

Miscellaneous (C++ API)

- Enhanced Number class in C++ API:
	* Restrict arithmetic operations on supported types only
	* Arithmetic operations are also now supported between Number objects
- Minor changes in code for addressing code analysis hints (clang, resharper)
- Updated C++ demo application

Miscellaneous

- Updated documentation
- Updated all files Copyright to current year (2020)
- Updated compilers for MS Windows prebuilt binaries
	* VS2019 16.5.3 for 32/64 bit DLLs	
	* Still targeting vc141_xp toolset for backward compatibility
Assets 4

@vrogier vrogier released this Nov 1, 2019

Fixes (C API)

    - Issue #207: Updated Oracle command codes that were not accurate
    - Issue #213: Updated some version checks that were testing only for server version instead of testing both client and server versions
    - Issue #216: Re-calling OCI_BindArraySetSize() with a smaller value than previous assignment led to segfaults when statement has non scalar type binds
    - Issue #220: Implicit conversion Clob issue in OCI_GetString() when using UTF8 encoding

Miscellaneous (C API)

    - Issue #212: Added possible error codes for OCI_Initialize() in the documentation
    - Issue #215: Added a workaround to correctly retrieve environment variables set at runtime using SetEnvironmentVariable() on Windows 
Assets 4

@vrogier vrogier released this Feb 25, 2019

Fixes (C API)

   - Fixed compile and run time Oracle version detection when Oracle version is >= 18.1
   - Fixed OCI_SetTimeout() that was setting all timeouts with input value
   - Fixed OCI_GetTimeout() that was returning OCI_NTO_CALL or OCI_NTO_RECEIVE value whatever requested timeout
   - Added macro OCI_VER_MAKE to make an ocilib compliant oracle version from major, minor and revision versions (e.g. OCI_VER_MAKE(18,3,0) equals OCI_18_3)
   - Updated Oracle versions constants

Fixes (C++ API)

   - Issue #197: Using C++ interface in multiple DLLs
Assets 5
  • v4.6.1
  • da14191
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.6.1
  • da14191
  • Compare
    Choose a tag to compare
    Search for a tag

@vrogier vrogier released this Feb 17, 2019

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
Assets 5
  • v4.6.0
  • c2a4794
  • Compare
    Choose a tag to compare
    Search for a tag
  • v4.6.0
  • c2a4794
  • Compare
    Choose a tag to compare
    Search for a tag

@vrogier vrogier released this Nov 22, 2018

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
Assets 5

@vrogier vrogier released this Sep 13, 2018

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
Assets 5