Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
2017-10-25 Version 4.4.0 Vincent Rogier vince.rogier@ocilib.net
* 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 anlways working as column names where sometimes not null terminated
* 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
2017-06-07 Version 4.3.3 Vincent Rogier vince.rogier@ocilib.net
* 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> 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
2017-02-08 Version 4.3.2 Vincent Rogier vince.rogier@ocilib.net
* 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)
* Bug with table names, objects names and rowids reported from CDN event callbacks:
- Up to Oracle 10g, theses strings were reported as ANSI strings instead of UTF16 strings, thus OCILIB was doing a translation to UTF16 before calling user callbacks
- From Oracle 11g, this Oracle bug seems fixed while OCILIB is still trying to perform translation fron ANSI to UTF16
- Thus, now OCILIB, in Unicode builds, is performing the translation to UTF16 only if reported strings seems to be ANSI
* Bug with Oracle call OCISubscriptonUnRegister()
- OCI_SubscriptionUnregister() encounters an error ora-24015 when calling OCISubscriptonUnRegister() in Unicode build but not in ANSI builds
- Error ORA-24915 is now discarded if returned from OCISubscriptonUnRegister() in OCI_SubscriptionUnregister()
- Issue #71: Fixed regresson introduced in v4.3.0 about binding big_uint variables (only unsigned 64bit integers)
* Pre and post statement execution methods were only handling big_int and not big_uint host variables
* Root cause was a wrong numeric sub type check (using == instead of operator &) as subtypes are handled using flags not unitary values
- 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()
* Updated outdated OCI_GetString() documentation
* Reduce temporary buffer size in OCI_GetString() conversions
* Fixed implicit conversions in OCI_GetString() for LONG, BLOB
* 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
* Added token '%n' for parsing OCI_Number in OCI_xxxFmt() calls
* Added OCI_ARG_NUMBER for fetching OCI_Number in OCI_Immediate() and OCI_ImmediateFmt() 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
2017-01-25 Version 4.3.1 Vincent Rogier vince.rogier@ocilib.net
* 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
* Even if OCI_BindSetNullAtPos() was called, attempting to bind a non initialized or null OCI_Number led to statement execution failure
- Issue #68: Fixed OCI_Excecute() behavior with PL/SQL "select into" and no data found
* When executing a PL/SQL block with inner PL/SQL code like "select into :<bind_variable> from table" that does fetch anything, Oracle call OCIStmtExecute() returns OCI_NO_DATA, which is handled by OCILIB as an failure
* Now OCI_Excecute() considers OCI_NO_DATA as success
* Updated OCI_GetAffectedRows() documentation for determining if inner PL/SQL "select into" was successful
* Fixes (C++ API)
- Issue #63: Added cstddef header in ocilib_core.hpp as on some platorms/compiler versions, it was reported as needed
- Issue #67: Fixed memory leak when using Number objects
* Removed attempt to use move semantics
* It is currently causing memory leaks and does not bring that much as C API handles are already handled using smart pointers
* Changes:
- Request #66: Increased value of OCI_BIND_MAX
* Increased value of OCI_BIND_MAX from 1024 to 65535
* Now Internal Arrays of OCI_Bind can grow and are reallocated by blocks of 128 binds
2016-11-09 Version 4.3.0 Vincent Rogier vince.rogier@ocilib.net
* New Features:
- Added NUMBER SQL type native wrapping
* Optional type as NUMBER type can still be fetched/binded using regular C native numeric types
* New OCI_Number type can be used when precision matters or for dealing with special values such as positive and negative infinity
* C API :
- Added OCI_NUM_NUMBER numeric type
- Added OCI_Number type
- Added OCI_NumberCreate()
- Added OCI_NumberFree()
- Added OCI_NumberArrayCreate()
- Added OCI_NumberArrayFree()
- Added OCI_NumberAssign()
- Added OCI_NumberGetContent()
- Added OCI_NumberSetContent()
- Added OCI_NumberSetValue()
- Added OCI_NumberGetValue()
- Added OCI_NumberAdd()
- Added OCI_NumberSub()
- Added OCI_NumberMultiply()
- Added OCI_NumberDivide()
- Added OCI_NumberCompare()
- Added OCI_GetNumber()
- Added OCI_GetNumber2()
- Added OCI_BindNumber()
- Added OCI_BindArrayOfNumbers()
- Added OCI_RegisterNumber()
- Added OCI_NumberFromText()
- Added OCI_NumberToText()
- Added OCI_ElemGetNumber()
- Added OCI_ElemSetNumber()
- Added OCI_ObjectGetNumber()
- Added OCI_ObjectSetNumber()
* C++ API:
- Added ocilib::Number type encapsulating the C API OCI_Number type
- This new type comes with all possible operator overloads for better usability
* Fixes:
- OCI_ObjectGetString(): Fixed usage of internal temporary buffers
- OCI_FileRead(): Return value was not the correct one
- OCI_PoolGetConnection() : was returning NULL connections for session pool using external credentials
- OCI_StringGetFromType() : Fixed segfault when converting CLOBs (with length > to 512) to UTF8 strings in OCI_GetString() if an UTF8 charset is used
- Fix indicators usage for collections : OCI_IsNull() always returned FALSE even if fetched collection was NULL
- Fix compilation under C compilers not supporting C99 feature allowing declaring variables anywhere in blocks
* Miscellaneous:
- C API: Major internal code re-factoring
* Code factorization
* Replaced verbose macros with more compact ones
* Code base reduced by few thousands lines of code
* Fixed some error handling logic
- C API:
* Added OCI_GetDataSize() and OCI_GetDataSize2()
- C++ API:
* Rewrote iterators for ocilib::Collection<>
- Collection Iterators are now random iterators allowing Collections being used with STL algorithms such as std::sort()
- Added Collection const_iterators
* Addressed various code analysis hints
* Added C++ compiler capabilities detection (C+11)
- Updated samples in folder /demo
* Added required DDL and DML for all samples
* Updated some samples
Loading
Loading full blame...