<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[OCILIB (C and C++ Driver for Oracle) - Open source C and C++ library for accessing Oracle databases]]></title>
  <link href="/ocilib/atom.xml" rel="self"/>
  <link href="/ocilib/"/>
  <updated>2026-05-19T22:42:08+00:00</updated>
  <id>/ocilib/</id>
  <author>
    <name><![CDATA[]]></name>
    <email><![CDATA[vince.rogier@ocilib.net]]></email>
  </author>
  <generator uri="http://jekyllrb.com/">Jekyll</generator>

  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.9.0 now available for download !]]></title>
    <link href="/ocilib/blog/2026/ocilib-v4-9-0-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.9.0nowavailablefordownload!"/>
    <updated>2026-05-19T19:00:00+00:00</updated>
    <id>/ocilib/blog/2026/ocilib-v4-9-0-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.9.0 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="enhancements-c-api">Enhancements (C API)</h3>

<ul>
  <li>Issue 381 : Enhancement for computing bind variables without executing statement (C API)
    <ul>
      <li>Added OCI_GetParseBindNames()</li>
    </ul>
  </li>
</ul>

<h3 id="enhancements-c-api-1">Enhancements (C++ API)</h3>

<ul>
  <li>Issue 381 : Enhancement for computing bind variables without executing statement (C++ API):
    <ul>
      <li>Added Statement::GetParseBindNames()</li>
    </ul>
  </li>
</ul>

<h3 id="fixes-c-api">Fixes (C API)</h3>

<ul>
  <li>Issue 382 : Warnings when opening a connection in password  during grace period</li>
</ul>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<ul>
  <li>Issue 379 : Issues in creating collection of user defined type</li>
  <li>Issue 383 : Compilation error on macOS</li>
  <li>Issue 387 : Message::GetPayload<Raw>() always return an empty Raw of size 0</Raw></li>
</ul>

<h3 id="documentation">Documentation</h3>

<ul>
  <li>Fixed all typos in the documentation (C and C++ APIs)</li>
  <li>Added some refinements</li>
</ul>

<h3 id="miscellaneous">Miscellaneous</h3>

<ul>
  <li>Updated compilers for MS Windows prebuilt binaries to VS2022 17.14.32</li>
  <li>Various minor internal changes, added checks and fixes found by static analysis</li>
</ul>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.8.0 now available for download !]]></title>
    <link href="/ocilib/blog/2025/ocilib-v4-8-0-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.8.0nowavailablefordownload!"/>
    <updated>2025-05-21T19:00:00+00:00</updated>
    <id>/ocilib/blog/2025/ocilib-v4-8-0-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.8.0 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="enhancements-c-api">Enhancements (C API)</h3>

<ul>
  <li>Oracle VECTOR type is now supported
    <ul>
      <li>Requires Oracle 23.4 client and database</li>
      <li>For prior Oracle clients, VECTOR type can be binded and fetched as string</li>
      <li>Added OCI_Vector* data type (OCI_CDT_VECTOR)</li>
      <li>Added the following new APIs:
        <ul>
          <li>OCI_VectorCreate()</li>
          <li>OCI_VectorFree()</li>
          <li>OCI_VectorArrayCreate()</li>
          <li>OCI_VectorArrayFree()</li>
          <li>OCI_VectorGetInfo()</li>
          <li>OCI_VectorGetValues()</li>
          <li>OCI_VectorSetValues()</li>
          <li>OCI_VectorFromText()</li>
          <li>OCI_VectorToText()</li>
          <li>OCI_GetVector()</li>
          <li>OCI_GetVector2()</li>
          <li>OCI_RegisterVector()</li>
          <li>OCI_BindVector()</li>
          <li>OCI_BindArrayOfVectors()</li>
          <li>OCI_ColumnGetDimension()</li>
        </ul>
      </li>
      <li>Added Vector element types : OCI_VEC_INT8, OCI_VEC_FLOAT32, OCI_VEC_FLOAT64 and OCI_VEC_BINARY (OCI_VEC_FLEX is only used for describing column)</li>
      <li>Vector element type OCI_VEC_BINARY is only supported from 23.5</li>
      <li>OCI_ColumnGetType() reports “VECTOR” as SQL type</li>
      <li>OCI_ColumnGetFullSQLType() reports same details as SQLPlus( e.g., VECTOR({dimension}, {type]) )</li>
      <li>OCI_ColumnGetSubType() returns OCI_VEC_XXX values</li>
      <li>OCI_GetString() returns a string representation of a VECTOR object</li>
    </ul>
  </li>
  <li>Added the ability to retrived localized strings from Oracle client
    <ul>
      <li>Added OCI_LST_XXX entries</li>
      <li>Added OCI_GetLocaleString()</li>
    </ul>
  </li>
</ul>

<h3 id="enhancements-c-api-1">Enhancements (C++ API)</h3>

<ul>
  <li>Oracle VECTOR type is now supported (see C API for more details)
    <ul>
      <li>Added ocilib::Vector class wrapping OCI_Vector* handle</li>
      <li>Added ocilib::Column::GetDimension() method</li>
    </ul>
  </li>
  <li>Added the ability to retrived localized strings from Oracle client
    <ul>
      <li>Added ocilib::Environment::LocaleCode enum</li>
      <li>Added ocilib::Environment::GetLocaleString() method</li>
    </ul>
  </li>
</ul>

<h3 id="fixes-c-api">Fixes (C API)</h3>

<ul>
  <li>Issue 371 : Build failure with gcc14</li>
  <li>Issue 377 : Binding arrays of non scalar types (big_int/OCI_Datetime/OCI_Timestamp/OCI_Interval) with a PL/SQL block statement provides NULL values to Oracle client</li>
</ul>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<ul>
  <li>Issue 370 : Calling Environment::Initialized() before Environment::Initialize() throws an exception</li>
</ul>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.7 now available for download !]]></title>
    <link href="/ocilib/blog/2025/ocilib-v4-7-7-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.7nowavailablefordownload!"/>
    <updated>2025-01-14T19:00:00+00:00</updated>
    <id>/ocilib/blog/2025/ocilib-v4-7-7-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.7 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="enhancements-c-api">Enhancements (C API)</h3>

<ul>
  <li>Oracle XMLTYPE is now partially supported
    <ul>
      <li>Added OCI_XmlType* data type (OCI_CDT_XMLTYPE) that can only be fetched from resultets in this current release</li>
      <li>OCI_ColumnGetType() reports “XMLTYPE” as SQL type</li>
      <li>OCI_TypeInfoGet() returns a valid OCI_TypeInfo handle for the type name “SYS.XMLTYPE”</li>
      <li>OCI_GetString() returns a string representation of a XMLTYPE object</li>
      <li>Added the following new APIs:
        <ul>
          <li>OCI_GetXmlType()</li>
          <li>OCI_GetXmlType2()</li>
          <li>OCI_XmlTypeToText()</li>
        </ul>
      </li>
      <li>In this current release, use OCI_GetString() instead of OCI_GetXmlType() as:
        <ul>
          <li>OCI_XmlType handles can only be used to getting XML content strings, which is already done by OCI_GetString()</li>
          <li>In later releases, OCI_XmlType API will evolve to support local xml object creation, DOM manipulation, SQL binding</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<h3 id="enhancements-c-api-1">Enhancements (C++ API)</h3>

<ul>
  <li>Oracle XMLTYPE is now partially supported:
    <ul>
      <li>Added ocilib::XmlType class (that can only be retrieved using ocilib::Resultset::Get&lt;ocilib::XmlType&gt;())</li>
      <li>ocilib::Resultset::Get<ostring>() returns a string representation of the XMLTYPE object</ostring></li>
    </ul>
  </li>
  <li>Added Interval::GetNanoSeconds() and Interval::SetNanoSeconds()</li>
</ul>

<h3 id="fixes-c-api">Fixes (C API)</h3>

<ul>
  <li>Issue 329: OCI_GetSqlIdentifier() returns invalid values for Scrollable Statements when called more than once</li>
  <li>Issue 332: OCI_TypeInfoGet() : since v4.7.4, in case of failure, OCI_TypeInfo object is not removed from OCI_Connection internal list of OCI_TypeInfo objects</li>
  <li>Issue 331: Strange behaviour with XMLTYPE</li>
  <li>Issue 332: OCI_TypeInfoGet() : In case of failure, newly created OCI_TypeInfo object is not removed from OCI_Connection internal cache</li>
  <li>Issue 333: OCI_GetServerMajorVersion() returns wrong values for Oracle Server version &lt; 18.1</li>
  <li>Issue 334: OCI_RefToText() return garbage when charset is OCI_CHARSET_WIDE</li>
  <li>Issue 347: OCI_MsgGetEnqueueTime() leaked DateTime handle causing OCI_Cleanup() reporting unfreed handle</li>
  <li>Issue 348: OCI_EventGetObject() might returned garbage character after object name</li>
  <li>Issue 354: OCI_ElemSetRaw() performed wrong check on element datatype</li>
  <li>Issue 361: Fixed HA event callback processing</li>
</ul>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<ul>
  <li>Issue 351: C++ Value types perform handle assignment instead of value assignment</li>
  <li>Issue 355: Since v4.7.5, connection acquired from ocilib::Pool where not released, leading to pool exhaustion</li>
  <li>Issue 362: Calling Environment::Initialize() / Environment::Cleanup() multiple times per process might lead to segfaults with latest embedded vc143 runtime</li>
</ul>

<h3 id="documentation">Documentation</h3>

<ul>
  <li>Issue 352 : Fixed documentation for OCI_PoolGetNoWait and ocilib::Pool::SetNoWait()</li>
  <li>Issue 363 : Fixed documentation for OCI_IntervalGetDaySecond() and OCI_IntervalSetDaySecond(), Interval::GetDaySecond() and GetSaySecond()</li>
</ul>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.6 now available for download !]]></title>
    <link href="/ocilib/blog/2023/ocilib-v4-7-6-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.6nowavailablefordownload!"/>
    <updated>2023-02-09T19:00:00+00:00</updated>
    <id>/ocilib/blog/2023/ocilib-v4-7-6-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.6 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="fixes-c-api">Fixes (C API)</h3>

<ul>
  <li>Issue 326: OCI_GetTimeout() always returns 0 since v4.7.0</li>
</ul>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<ul>
  <li>Issue 325: ocilib::Lob::GetConnection() does not compile anymore since v4.7.5</li>
</ul>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.5 now available for download !]]></title>
    <link href="/ocilib/blog/2023/ocilib-v4-7-5-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.5nowavailablefordownload!"/>
    <updated>2023-02-06T19:00:00+00:00</updated>
    <id>/ocilib/blog/2023/ocilib-v4-7-5-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.5 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="changes-c-api">Changes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- OCI_Cleanup() now returns FALSE if OCI_Initialize() has not been called
- OCI_GetSQLVerb() handles some new verbs added with Oracle 21c
- OCI_Execute() and related methods return now FALSE and report an OCI_Error for PL/SQL statements raising PL/SQL no_data_found exceptions
    * This revert behavior introduced in v4.3.1 for addressing issue #68
    * Motivation is to re-align on SQL*Plus behavior
- OCI_GetOCIRuntimeVersion() and OCI_GetOCICompileVersion() returned integer values on 6 digits instead of 4 digits
    * Handles now  minor version using 2 digits (e.g. Oracle OCI version 19.16.0)
    * Use macros OCI_VER_MAJ, OCI_VER_MIN, OCI_VER_REV and OCI_VER_MAKE to do computations on versions
- Very old Oracle OCI 8.0.x is now supported 
    - Up to now, OCILIB supported all Oracle versions from 8.1
    - Oracle 8.0 is now also supported for very old legacy systems (as Oracle 8.0 was released in mid 90's)
    - As OCI multi-threaded APIs were only available from 8.1, passing OCI_ENV_THREADED to OCI_Initialize() with Oracle 8.0 will generate an error:
        - OCILIB Error code : OCI_ERR_NOT_AVAILABLE 
        - OCILIB Error message : "Feature not available (Oracle 8.1 multihreading support)"		
</code></pre></div></div>

<h3 id="fixes-c-api">Fixes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Issue 297: Library compilation fails with MSVC 2022 version 17.2 (error C2220)
- Issue 298: OCI_DirPathLoad() can never returns in case of internal load errors (infinite loop)
- Issue 308: OCI_Execute() raises error OCI-22060 when binding host big_int variables with OCI_BDM_OUT in case the SQL or PL/SQL engine sets a NULL value
- Issue 309: OCI_Execute() does not raise exceptions when executing PL/SQL statement raising no data was found PL/SQL exception
- Issue 313: OCI_GetString() returns NULL for CLOB columns is the CLOB row value was filled with empty_clob()
- Issue 314: OCI_BindSetCharsetForm() is not accessible since v4.7.0
- ISsue 316: OCI_DequeueGet() returns messages with OCI_Object payloads that can have NULL properties while being NOT NULL when queued
- ISsue 317: OCI_SubscriptionRegister() generates a segfault on failure
</code></pre></div></div>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Issue 299: Performance issues with C++ API in multi-threaded environments
- Issue 306: Compile error under GCC when accessing an ocilib::Collection item
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Updated compilers for MS Windows prebuilt binaries to VS2022 17.4.4
- Internal code changes / refactoring
- Some documentation updates
- Added more tests in tests suite 
- Fixed ocilib C demo makefile : compilation could failed on some Linux environments
</code></pre></div></div>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.4 now available for download !]]></title>
    <link href="/ocilib/blog/2021/ocilib-v4-7-4-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.4nowavailablefordownload!"/>
    <updated>2021-11-30T19:00:00+00:00</updated>
    <id>/ocilib/blog/2021/ocilib-v4-7-4-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.4 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="fixes-c-api">Fixes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - Issue 291: OCI_DirPathGetErrorRow() always return 0 since v4.7.0
    - Issue 284: OCI_MsgGetID() returns a NULL ID after being queued with OCI_DequeuePut()
    - Issue 288: OCI_GetString returns null on implicit conversion of a RAW value when it's longer than 64 bytes
    - Issue 283: OCI_DequeueGet() returns null pointer when message has empty payload
    - Issue 282: PL/SQL Server output wrong internal buffer size on some oracle versions
    - Issue 281: ORA-00931 in OCI_TypeInfoGet() when using SYS.RAW type
</code></pre></div></div>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - Issue 272: AddressSanitizer reports mismatched new[] vs delete
    - Issue 278: ocilib::Object causes Segmentation fault
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    -Updated compilers for MS Windows prebuilt binaries
        * VS2022 17.0.1 for 32/64 bit DLLs 
        * VC runtime (statically linked) updated from vc142 to vc143
</code></pre></div></div>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.3 now available for download !]]></title>
    <link href="/ocilib/blog/2021/ocilib-v4-7-3-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.3nowavailablefordownload!"/>
    <updated>2021-03-09T21:00:00+00:00</updated>
    <id>/ocilib/blog/2021/ocilib-v4-7-3-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.3 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="fixes-c-api">Fixes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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
</code></pre></div></div>

<p>###  Fixes (C++ API)</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - Issue 250: Exception handling when using OCI_CHARSET_WIDE
    - Issue 262: Using correct delete[] in ManagedBuffer destructor
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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)
</code></pre></div></div>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.1 now available for download !]]></title>
    <link href="/ocilib/blog/2020/ocilib-v4-7-1-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.1nowavailablefordownload!"/>
    <updated>2020-10-28T09:00:00+00:00</updated>
    <id>/ocilib/blog/2020/ocilib-v4-7-1-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.1 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br />
<strong>This release contains no code changes. 
It enhances library symbol visibility with GCC and compilation issues with recent GCC versions</strong></p>

<h3 id="enhancements-c-api">Enhancements (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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
</code></pre></div></div>

<h3 id="fixes-c-api">Fixes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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)
</code></pre></div></div>

<h3 id="changes-c-api">Changes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - Updated compilers for MS Windows prebuilt binaries
        * VS2019 16.7.6 for 32/64 bit DLLs &lt;br/&gt;
</code></pre></div></div>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.7.0 now available for download !]]></title>
    <link href="/ocilib/blog/2020/ocilib-v4-7-0-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.7.0nowavailablefordownload!"/>
    <updated>2020-07-16T11:00:00+00:00</updated>
    <id>/ocilib/blog/2020/ocilib-v4-7-0-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.7.0 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="enhancements-c-api">Enhancements (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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}"
</code></pre></div></div>

<h3 id="fixes-c-api">Fixes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - 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     
</code></pre></div></div>

<h3 id="fixes-c-api-1">Fixes (C++ API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - Issue 230: Memory leaks while rebinding vectors
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    - Extended C API Test suite that has now a much wider coverage
</code></pre></div></div>

<p><br /></p>

<p>Vincent</p>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[OCILIB v4.6.4 now available for download !]]></title>
    <link href="/ocilib/blog/2020/ocilib-v4-6-4-now-available-for-download?utm_source=RSS&amp;utm_medium=RSS&amp;utm_campaign=OCILIBv4.6.4nowavailablefordownload!"/>
    <updated>2020-04-18T10:45:00+00:00</updated>
    <id>/ocilib/blog/2020/ocilib-v4-6-4-now-available-for-download</id>
    <content type="html"><![CDATA[<p>Dear all,
<br />
<br />
<b>OCILIB v4.6.4 is now <a href="https://github.com/vrogier/ocilib/releases/"><em>available for download</em></a> !</b>
<br />
<br />
Get the release and enjoy it !
<br />
<br /></p>
<h3 id="fixes-c-api">Fixes (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- 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)
</code></pre></div></div>

<h3 id="miscellaneous-c-api">Miscellaneous (C API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- 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)
</code></pre></div></div>

<h3 id="miscellaneous-c-api-1">Miscellaneous (C++ API)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- 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
</code></pre></div></div>

<h3 id="miscellaneous">Miscellaneous</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- 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 &lt;br/&gt;
</code></pre></div></div>

<p>Vincent</p>

]]></content>
  </entry>
  
</feed>
