ruby-oci8 2.2.10-x64-mingw-ucrt
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.yardopts +14 -0
- data/COPYING +30 -0
- data/COPYING_old +64 -0
- data/ChangeLog +3826 -0
- data/Makefile +92 -0
- data/NEWS +1209 -0
- data/README.md +66 -0
- data/dist-files +112 -0
- data/docs/bind-array-to-in_cond.md +38 -0
- data/docs/conflicts-local-connections-and-processes.md +98 -0
- data/docs/hanging-after-inactivity.md +63 -0
- data/docs/install-binary-package.md +44 -0
- data/docs/install-full-client.md +111 -0
- data/docs/install-instant-client.md +194 -0
- data/docs/install-on-osx.md +46 -0
- data/docs/ldap-auth-and-function-interposition.md +123 -0
- data/docs/number-type-mapping.md +79 -0
- data/docs/platform-specific-issues.md +164 -0
- data/docs/report-installation-issue.md +50 -0
- data/docs/timeout-parameters.md +94 -0
- data/lib/.document +1 -0
- data/lib/dbd/OCI8.rb +591 -0
- data/lib/oci8/.document +8 -0
- data/lib/oci8/bindtype.rb +333 -0
- data/lib/oci8/check_load_error.rb +146 -0
- data/lib/oci8/compat.rb +117 -0
- data/lib/oci8/connection_pool.rb +179 -0
- data/lib/oci8/cursor.rb +605 -0
- data/lib/oci8/datetime.rb +605 -0
- data/lib/oci8/encoding-init.rb +45 -0
- data/lib/oci8/encoding.yml +537 -0
- data/lib/oci8/metadata.rb +2148 -0
- data/lib/oci8/object.rb +641 -0
- data/lib/oci8/oci8.rb +756 -0
- data/lib/oci8/ocihandle.rb +591 -0
- data/lib/oci8/oracle_version.rb +153 -0
- data/lib/oci8/properties.rb +196 -0
- data/lib/oci8/version.rb +3 -0
- data/lib/oci8.rb +190 -0
- data/lib/oci8lib_310.so +0 -0
- data/lib/ruby-oci8.rb +1 -0
- data/metaconfig +142 -0
- data/pre-distclean.rb +7 -0
- data/ruby-oci8.gemspec +85 -0
- data/setup.rb +1342 -0
- data/test/README.md +37 -0
- data/test/config.rb +201 -0
- data/test/setup_test_object.sql +199 -0
- data/test/setup_test_package.sql +59 -0
- data/test/test_all.rb +56 -0
- data/test/test_appinfo.rb +62 -0
- data/test/test_array_dml.rb +332 -0
- data/test/test_bind_array.rb +70 -0
- data/test/test_bind_boolean.rb +99 -0
- data/test/test_bind_integer.rb +47 -0
- data/test/test_bind_raw.rb +45 -0
- data/test/test_bind_string.rb +105 -0
- data/test/test_bind_time.rb +177 -0
- data/test/test_break.rb +125 -0
- data/test/test_clob.rb +85 -0
- data/test/test_connection_pool.rb +124 -0
- data/test/test_connstr.rb +220 -0
- data/test/test_datetime.rb +585 -0
- data/test/test_dbi.rb +365 -0
- data/test/test_dbi_clob.rb +53 -0
- data/test/test_encoding.rb +103 -0
- data/test/test_error.rb +87 -0
- data/test/test_metadata.rb +2674 -0
- data/test/test_object.rb +546 -0
- data/test/test_oci8.rb +624 -0
- data/test/test_oracle_version.rb +68 -0
- data/test/test_oradate.rb +255 -0
- data/test/test_oranumber.rb +792 -0
- data/test/test_package_type.rb +981 -0
- data/test/test_properties.rb +17 -0
- data/test/test_rowid.rb +32 -0
- metadata +123 -0
data/NEWS
ADDED
@@ -0,0 +1,1209 @@
|
|
1
|
+
# @markup markdown
|
2
|
+
|
3
|
+
2.2.10 (2022-01-12)
|
4
|
+
===================
|
5
|
+
|
6
|
+
- Use `File.exist?` instead of removed `File.exists?` in Ruby 3.2 (GH-242)
|
7
|
+
|
8
|
+
(contributed by Yasuo Honda)
|
9
|
+
|
10
|
+
- Support ruby 3.1 distributed by rubyinstaller.org
|
11
|
+
|
12
|
+
- Remove code for obsolete platforms
|
13
|
+
- Ruby compiled by Borland C++
|
14
|
+
- macOS released several years ago
|
15
|
+
|
16
|
+
- Detect arm64 macOS shared library in oraconf.rb in preparation for Instant Client for Apple Silicon release.
|
17
|
+
|
18
|
+
2.2.9 (2020-12-30)
|
19
|
+
==================
|
20
|
+
|
21
|
+
- Support [TruffleRuby](https://github.com/oracle/truffleruby). (GH-225)
|
22
|
+
|
23
|
+
(contributed by Brandon Fish)
|
24
|
+
|
25
|
+
- Remove extension libraries for unmaintained ruby versions from binary gems.
|
26
|
+
|
27
|
+
Fixed issue
|
28
|
+
-----------
|
29
|
+
|
30
|
+
- Allow --with-instant-client-dir along with --with-instant-client-lib/include. (GH-223)
|
31
|
+
|
32
|
+
(reported by Victor Nawothnig)
|
33
|
+
|
34
|
+
2.2.8 (2020-01-11)
|
35
|
+
==================
|
36
|
+
|
37
|
+
New features
|
38
|
+
------------
|
39
|
+
|
40
|
+
* Add support to specify include and lib directories of Oracle library on installation. (GH-210)
|
41
|
+
|
42
|
+
The following three flags are added.
|
43
|
+
|
44
|
+
* --with-instant-client-dir
|
45
|
+
* --with-instant-client-include
|
46
|
+
* --with-instant-client-lib
|
47
|
+
|
48
|
+
Fixed issue
|
49
|
+
-----------
|
50
|
+
|
51
|
+
- Suppress warnings compiling oci8lib.so (GH-212 and others)
|
52
|
+
|
53
|
+
- Fix compilation and tests on Windows.
|
54
|
+
|
55
|
+
- Fix spelling in install-instant-client.md (GH-217)
|
56
|
+
|
57
|
+
- Use fiddler instead obsolete Win32API on Windows (GH-212)
|
58
|
+
|
59
|
+
2.2.7 (2019-01-06)
|
60
|
+
==================
|
61
|
+
|
62
|
+
Incompatible Changes
|
63
|
+
--------------------
|
64
|
+
|
65
|
+
### `OCI8#long_read_len` and `OCI8#long_read_len=` do nothing.
|
66
|
+
|
67
|
+
When `LONG`, `LONG RAW` or `XMLTYPE` data were fetched, the data were
|
68
|
+
truncated at `OCI8#long_read_len`. The maximum size of data had
|
69
|
+
been 4 gigabytes since this release.
|
70
|
+
|
71
|
+
`OCI8#long_read_len` and `OCI8#long_read_len=` remain for code-compatibility
|
72
|
+
but do nothing.
|
73
|
+
|
74
|
+
Improvement
|
75
|
+
-----------
|
76
|
+
|
77
|
+
### The number of network round trips was reduced when LOB data are read.
|
78
|
+
|
79
|
+
When LOB data are read, ruby-oci8 before 2.2.7 does the followings:
|
80
|
+
|
81
|
+
1. Gets the size of the LOB.
|
82
|
+
2. Allocate buffer to hold the data.
|
83
|
+
3. Read the LOB contents.
|
84
|
+
|
85
|
+
This requires two round trips.
|
86
|
+
|
87
|
+
It now does the followings:
|
88
|
+
|
89
|
+
1. Request the server to get LOB contents up to 4 gigabytes.
|
90
|
+
2. Read the LOB contents and allocate buffer when the size is insufficient.
|
91
|
+
3. If the total length of received data is less than 4 gigabytes, all data
|
92
|
+
are read. If not, go to the first step to read next 4 gigabytes.
|
93
|
+
|
94
|
+
This requires only one round trip if the size is less than 4 gigabytes.
|
95
|
+
|
96
|
+
### Use array fetching instead of prefetching when LOB columns are in queries
|
97
|
+
|
98
|
+
When LOB columns are in queries, prefetching doesn't seem to work. Rows
|
99
|
+
are fetched one by one according to data captured by network packet sniffer.
|
100
|
+
So array fetching is used instead of prefetching to reduce the number of
|
101
|
+
network round trips.
|
102
|
+
|
103
|
+
### Add error diagnostics when `'require "oci8"'` fails on Windows.
|
104
|
+
|
105
|
+
When `'require "oci8"'` fails with "OCI.DLL: 126(The specified module could not be found.)"
|
106
|
+
on Windows, the cause is not always that OCI.DLL is not found. It may
|
107
|
+
be incorrect architecture, missing dependent DLLs and so on.
|
108
|
+
Ruby-oci8 checks PATH and DLL files when the error is raised and change
|
109
|
+
the error message to reasonable one as possible.
|
110
|
+
|
111
|
+
2.2.6.1 (2018-09-16)
|
112
|
+
====================
|
113
|
+
|
114
|
+
Fixed issue
|
115
|
+
-----------
|
116
|
+
Fix "No shared library is found to hook." on macOS.
|
117
|
+
(rsim/oracle-enhanced#1768)
|
118
|
+
|
119
|
+
2.2.6 (2018-08-22)
|
120
|
+
==================
|
121
|
+
|
122
|
+
This release fixed issues about Oracle 18c except one.
|
123
|
+
|
124
|
+
Fixed issue
|
125
|
+
-----------
|
126
|
+
|
127
|
+
### Setting some properties failed with Oracle 18c client
|
128
|
+
|
129
|
+
Setting `OCI8::properties[:tcp_keepalive_time]` or `OCI8::properties[:cancel_read_at_exit]`
|
130
|
+
failed with the error message "No shared library is found to hook" when Oracle
|
131
|
+
client version is 18c.
|
132
|
+
(rsim/oracle-enhanced#1754)
|
133
|
+
|
134
|
+
### Fix `OCI8#oracle_server_version` to get full version of Oracle 18c
|
135
|
+
|
136
|
+
`OCI8#oracle_server_version` returned Oracle version number whose
|
137
|
+
number components after the first dot are zeros such as '18.0.0.0.0'
|
138
|
+
even when the server version is `18.3.0.0.0`. This issue was fixed by
|
139
|
+
using a new OCI function. However the function is available since
|
140
|
+
Oracle 18c client. So when the Oracle client version is 12c or earlier
|
141
|
+
and the Oracle server version is 18c or later, it cannot get the *full*
|
142
|
+
Oracle version number.
|
143
|
+
|
144
|
+
### Fix tests when the Oracle server version is 18c.
|
145
|
+
|
146
|
+
### LOB#sync, LOB#sync= and LOB#flush do nothing now.
|
147
|
+
|
148
|
+
They have not worked by mistake from the beginning because incorrect
|
149
|
+
arguments has been passed to OCILobOpen(). Moreover it crashed Oracle
|
150
|
+
18c server-side processes and caused "ORA-03113: end-of-file on
|
151
|
+
communication channel."
|
152
|
+
(github issue #198)
|
153
|
+
|
154
|
+
### `unsupported typecode timestamp` when timestamp with time zone is in object type attributes.
|
155
|
+
|
156
|
+
(github issue #185)
|
157
|
+
|
158
|
+
2.2.5.1 (2017-12-27)
|
159
|
+
====================
|
160
|
+
|
161
|
+
No updates except tests. The version number was changed just to release
|
162
|
+
binary gems for ruby 2.5 on Windows.
|
163
|
+
|
164
|
+
### Suppress warnings in tests with ruby 2.5
|
165
|
+
|
166
|
+
(github issue #180, #181)
|
167
|
+
|
168
|
+
2.2.5 (2017-10-21)
|
169
|
+
==================
|
170
|
+
|
171
|
+
New Features
|
172
|
+
------------
|
173
|
+
|
174
|
+
### Try to load $ORACLE_HOME/lib/libclntsh.so also when runtime api check is enabled on Unix.
|
175
|
+
|
176
|
+
When ruby-oci8 is configured with `--with-runtime-check`, it loads Oracle client
|
177
|
+
library and checks available functions in the library at runtime. This feature was
|
178
|
+
added to release Windows binary gems which cannot know Oracle version at compile time.
|
179
|
+
This is available also on Unix. However it tries to load libraries in LD_LIBRARY_PATH only.
|
180
|
+
From this version, it tries to load $ORACLE_HOME/lib/libclntsh.so also.
|
181
|
+
|
182
|
+
### Check error reasons when loading failed with 'The specified module could not be found' on Windows.
|
183
|
+
|
184
|
+
The error messages are same when OCI.DLL isn't found and when Visual
|
185
|
+
C++ runtime library depended on by OCI.DLL isn't found. From this
|
186
|
+
version, ruby-oci8 distinguishes the difference and prints other message
|
187
|
+
for the latter case.
|
188
|
+
|
189
|
+
Fixed issue
|
190
|
+
-----------
|
191
|
+
|
192
|
+
### Fix segmentation fault when Oracle client library is prelinked.
|
193
|
+
|
194
|
+
When Oracle instant client rpm package is used on RHEL5 or RHEL6,
|
195
|
+
Oracle client library is modified by [prelink][] and ruby-oci8 crashed
|
196
|
+
with segmentation fault. This is not due to Oracle, but due to
|
197
|
+
plthook used by ruby-oci8. The plthook was fixed to work with
|
198
|
+
prelinked libraries.
|
199
|
+
(github issue #172)
|
200
|
+
|
201
|
+
[prelink]: https://en.wikipedia.org/wiki/Prelink#Linux
|
202
|
+
|
203
|
+
### Fix not to hide the original error message of LoadError on recent cygwin.
|
204
|
+
|
205
|
+
Ruby-oci8 tries to check error messages when `require 'oci8lib_xxx.so` fails.
|
206
|
+
However the message was hidden by an exception while checking on cygwin.
|
207
|
+
(github issue #176)
|
208
|
+
|
209
|
+
### Don't call unnecessary __paramGet(i) when a cursor is executed more than once.
|
210
|
+
|
211
|
+
pointed by OMOTO Kenji
|
212
|
+
(github issue #171)
|
213
|
+
|
214
|
+
### Suppress warning: method redefined; discarding old initialize.
|
215
|
+
|
216
|
+
(github issue #168)
|
217
|
+
|
218
|
+
Other Changes
|
219
|
+
-------------
|
220
|
+
|
221
|
+
### Add document about the mapping between Oracle number types and Ruby classes.
|
222
|
+
|
223
|
+
See {file:docs/number-type-mapping.md Number Type Mapping between Oracle and Ruby}.
|
224
|
+
(github issue #173)
|
225
|
+
|
226
|
+
2.2.4.1 (2017-06-17)
|
227
|
+
====================
|
228
|
+
|
229
|
+
Fixed issue
|
230
|
+
-----------
|
231
|
+
|
232
|
+
### Fix invalid function calls when TCP keepalive time parameter is set on Windows x86
|
233
|
+
|
234
|
+
When TCP keepalive time parameter is set, The win32 API `setsockopt` was hooked
|
235
|
+
with incorrect calling convention on Windows x86. As far as I checked it doesn't
|
236
|
+
cause bad effects. But it is by chance. If the code in `oci.dll` is optimized
|
237
|
+
differently, it may cause unexpected behavior.
|
238
|
+
|
239
|
+
### Fix compilation errors in 2.2.4 on cygwin
|
240
|
+
|
241
|
+
2.2.4 (2017-06-11)
|
242
|
+
==================
|
243
|
+
|
244
|
+
New Features
|
245
|
+
------------
|
246
|
+
|
247
|
+
### TCP keepalive parameters
|
248
|
+
|
249
|
+
`tcp_keepalive` and `tcp_keepalive_time` parameters were added.
|
250
|
+
This may fix hanging caused by a firewall after a long period of inactivity
|
251
|
+
|
252
|
+
See {file:docs/hanging-after-inactivity.md this document} for more detail.
|
253
|
+
|
254
|
+
### Workaround of function interposition on Linux and macOS
|
255
|
+
|
256
|
+
When both `oci8` and `pg` are required and LDAP authentication is used,
|
257
|
+
it may trigger segmentation faults or unexpected behaviours.
|
258
|
+
This issue was fixed by forcibly modified PLT (Procedure Linkage Table)
|
259
|
+
entries in the Oracle client library.
|
260
|
+
|
261
|
+
See {file:docs/ldap-auth-and-function-interposition.md this document} for more detail.
|
262
|
+
|
263
|
+
Fixed Issues
|
264
|
+
------------
|
265
|
+
|
266
|
+
### Support RubyInstaller2 for Windows
|
267
|
+
|
268
|
+
Fix for RubyInstaller2 for Windows as suggested [here](https://github.com/oneclick/rubyinstaller2/wiki/For-gem-developers#dll-loading).
|
269
|
+
|
270
|
+
### Fix for latest cygwin
|
271
|
+
|
272
|
+
Use Win32::Registry instead of Win32API to compile ruby-oci8 on the latest cygwin.
|
273
|
+
|
274
|
+
(contributed by tomasjura. [github issue #167](https://github.com/kubo/ruby-oci8/issues/167))
|
275
|
+
|
276
|
+
### Removed too specific ruby version constraint in binary gems.
|
277
|
+
|
278
|
+
(contributed by davidbrs. [github issue #156](https://github.com/kubo/ruby-oci8/issues/156))
|
279
|
+
|
280
|
+
2.2.3 (2016-12-27)
|
281
|
+
==================
|
282
|
+
|
283
|
+
New Features
|
284
|
+
------------
|
285
|
+
|
286
|
+
### Support ruby 2.4.0
|
287
|
+
|
288
|
+
- [Fix invalid value for BigDecimal](https://github.com/kubo/ruby-oci8/issues/144)
|
289
|
+
- Fix load error when `GC.stress = true`.
|
290
|
+
- Suppress warnings caused by integer unification
|
291
|
+
- Suppress warnings outputted by Minitest in ruby 2.4.0
|
292
|
+
- Suppress warnings when compiling with ruby 2.4.0
|
293
|
+
|
294
|
+
2.2.2 (2016-04-24)
|
295
|
+
==================
|
296
|
+
|
297
|
+
New Features
|
298
|
+
------------
|
299
|
+
|
300
|
+
### Add OCI8::in_cond
|
301
|
+
|
302
|
+
This is a helper method to bind an array to parameters in IN-conditions.
|
303
|
+
See {file:docs/bind-array-to-in_cond.md Bind an Array to IN-condition}
|
304
|
+
|
305
|
+
### Add timeout parameters in OCI8::properties
|
306
|
+
|
307
|
+
See {file:docs/timeout-parameters.md Timeout Parameters}
|
308
|
+
|
309
|
+
### Support SYSBACKUP, SYSDG and SYSKM privileges.
|
310
|
+
|
311
|
+
For example:
|
312
|
+
|
313
|
+
OCI8.new(username, password, database, :SYSBACKUP)
|
314
|
+
|
315
|
+
(github issue #110)
|
316
|
+
|
317
|
+
### Support {OCI8::Cursor#row_count} over 4G (Oracle 12c client only)
|
318
|
+
|
319
|
+
Fixed Issues
|
320
|
+
------------
|
321
|
+
|
322
|
+
### Fix type mapping of subtypes of Oracle object
|
323
|
+
|
324
|
+
github issue #119
|
325
|
+
|
326
|
+
### Fix compile error on cygwin since ruby-oci8 2.1.8.
|
327
|
+
|
328
|
+
github issue #113
|
329
|
+
|
330
|
+
### Fix compile error when the ruby was compiled by Visual Studio 64bit.
|
331
|
+
|
332
|
+
Other Changes
|
333
|
+
-------------
|
334
|
+
|
335
|
+
- Suppress warning: instance variable @name_to_tdo not initialized.
|
336
|
+
|
337
|
+
|
338
|
+
- Check the default value of DYLD_FALLBACK_LIBRARY_PATH after checking OCI_DIR on installation. (OS X only)
|
339
|
+
|
340
|
+
|
341
|
+
2.2.1 (2015-11-01)
|
342
|
+
==================
|
343
|
+
|
344
|
+
New Features
|
345
|
+
------------
|
346
|
+
|
347
|
+
### Add OCI8::Metadata::Boolean
|
348
|
+
|
349
|
+
Support boolean type binding. This feature requires Oracle 12c client and server.
|
350
|
+
Binding a boolean value fails when either Oracle server or client is 11g or lower.
|
351
|
+
|
352
|
+
Fixed Issues
|
353
|
+
------------
|
354
|
+
|
355
|
+
The following two issues were introduced in ruby-oci8 2.2.0.
|
356
|
+
|
357
|
+
### Fix handle leaks in OCI8#ping
|
358
|
+
|
359
|
+
This bug affects Oracle 10gR1 client only.
|
360
|
+
|
361
|
+
### Fix potential segmentation fault on ruby process termination
|
362
|
+
|
363
|
+
Other Changes
|
364
|
+
-------------
|
365
|
+
|
366
|
+
- Reduce compilation time by dropping unnecessary checks.
|
367
|
+
|
368
|
+
- Delete unused code which was added to support old Oracle and ruby 1.8.
|
369
|
+
|
370
|
+
2.2.0.2 (2015-10-12)
|
371
|
+
====================
|
372
|
+
|
373
|
+
Nothing was changed except the version.
|
374
|
+
|
375
|
+
The forth version was incremented to release binary gems for mingw32.
|
376
|
+
The binary gems for 2.2.0.1 didn't work by faultily packaging.
|
377
|
+
|
378
|
+
2.2.0.1 (2015-10-11)
|
379
|
+
====================
|
380
|
+
|
381
|
+
If ruby-oci8 2.2.0 is installed, you have no need to update it to
|
382
|
+
2.2.0.1. Source code itself was not changed between 2.2.0 and 2.2.0.1.
|
383
|
+
|
384
|
+
### Change the required ruby version in the ruby-oci8 gem
|
385
|
+
|
386
|
+
It was '>= 1.8.0' in ruby-oci8 2.2.0 even though ruby 1.8 support was
|
387
|
+
dropped.
|
388
|
+
|
389
|
+
### Change the URLs displayed on installation failure
|
390
|
+
|
391
|
+
Ruby-oci8 2.2.0 documents had not been generated in rubydoc.info
|
392
|
+
though the URLs are displayed on installation failure. They were
|
393
|
+
changed to documents generated by the latest github repository.
|
394
|
+
|
395
|
+
2.2.0 (2015-10-04)
|
396
|
+
==================
|
397
|
+
|
398
|
+
### Drop ruby 1.8 support
|
399
|
+
|
400
|
+
Use ruby-oci8 2.1.8 for ruby 1.8.
|
401
|
+
|
402
|
+
### Drop Oracle 9i support
|
403
|
+
|
404
|
+
Use ruby-oci8 2.1.8 for Oracle 9i.
|
405
|
+
|
406
|
+
New Features
|
407
|
+
------------
|
408
|
+
|
409
|
+
### Support LOB over 4G
|
410
|
+
|
411
|
+
### Fix to install ruby-oci8 on OS X 10.11 El Capitan.
|
412
|
+
|
413
|
+
`DYLD_LIBRARY_PATH` is unset for security reasons on OS X 10.11.
|
414
|
+
The installation script was changed to work without `DYLD_LIBRARY_PATH`
|
415
|
+
and check the environment variable `OCI_DIR` also to tell instant
|
416
|
+
client directory.
|
417
|
+
|
418
|
+
Other Changes
|
419
|
+
-------------
|
420
|
+
|
421
|
+
- Change the default prefetch row size to 100.
|
422
|
+
|
423
|
+
- Add notice that OCI8::LOB is an I/O object and is closed
|
424
|
+
when a associating connection is closed.
|
425
|
+
|
426
|
+
- Add ruby-oci8 version the driver name, which is displayed in
|
427
|
+
`V$SESSION_CONNECT_INFO.CLIENT_DRIVER` for Oracle 12.1.0.2 or later.
|
428
|
+
(suggested by Christopher Jones)
|
429
|
+
|
430
|
+
- Use `Kernel.load` in ruby-oci8.gemspec instead of `load`.
|
431
|
+
`load`, without the module name, is used as `Gem::Specification.load`
|
432
|
+
by some ruby installations.
|
433
|
+
|
434
|
+
- Add OCI8.charset_name2id and OCI8.charset_id2name.
|
435
|
+
Mark OCI8#charset_name2id and OCI8#charset_id2name as deprecated.
|
436
|
+
|
437
|
+
2.1.8 (2015-04-04)
|
438
|
+
==================
|
439
|
+
|
440
|
+
New Features
|
441
|
+
------------
|
442
|
+
|
443
|
+
### Send and receive timeouts
|
444
|
+
|
445
|
+
New methods {OCI8#send_timeout}, {OCI8#send_timeout=}, {OCI8#recv_timeout} and {OCI8#recv_timeout=}
|
446
|
+
were added. They are available on Oracle 11.1 or upper.
|
447
|
+
|
448
|
+
Use them at your own risk because they use [undocumented OCI handle attributes](http://blog.jiubao.org/2015/01/undocumented-oci-handle-attributes.html).
|
449
|
+
|
450
|
+
### Cancel read system calls not to prevent ruby process termination
|
451
|
+
|
452
|
+
When network quality is poor and incoming packets are lost irregularly,
|
453
|
+
the ruby process termination may be blocked until TCP keepalive time (2 hours).
|
454
|
+
|
455
|
+
By setting [OCI8.properties[:cancel_read_at_exit]](OCI8.html#properties-class_method)
|
456
|
+
true, read system calls, which may wait incoming packets, are canceled at exit.
|
457
|
+
See: [github issue #56](https://github.com/kubo/ruby-oci8/issues/56)
|
458
|
+
|
459
|
+
This feature is disabled by default because it uses [unusual technique](https://github.com/kubo/plthook)
|
460
|
+
which hooks read system calls issued by Oracle client library and it works only on
|
461
|
+
Linux, Windows and OSX.
|
462
|
+
|
463
|
+
### RGenGC
|
464
|
+
|
465
|
+
Object allocation code is rewritten to use [RGenGC](http://www.infoq.com/news/2013/12/ruby21).
|
466
|
+
|
467
|
+
Fixed Issues
|
468
|
+
------------
|
469
|
+
|
470
|
+
- Raises an exception when a closed OCI8 object is used.
|
471
|
+
Using a closed cursor causes various problems such as segmentation
|
472
|
+
fault, nil comparison error and so on.
|
473
|
+
See: [github issue #61](https://github.com/kubo/ruby-oci8/issues/61)
|
474
|
+
and [github issue #62](https://github.com/kubo/ruby-oci8/issues/62)
|
475
|
+
|
476
|
+
(reported by Mike Bourgeous)
|
477
|
+
|
478
|
+
- Fix "RuntimeError:executing in another thread"
|
479
|
+
when a closed connection is used. This bug was introduced by
|
480
|
+
the previously listed issue.
|
481
|
+
See: [github issue #64](https://github.com/kubo/ruby-oci8/issues/64)
|
482
|
+
|
483
|
+
(reported by Yasuo Honda)
|
484
|
+
|
485
|
+
- Fix SEGV when a temporary LOB is freed by GC while reading another
|
486
|
+
lob and the ruby version is 2.0.0 or upper.
|
487
|
+
|
488
|
+
- Skip rollback on logoff when no transactions are in progress.
|
489
|
+
|
490
|
+
- Fix a broken link in README.md.
|
491
|
+
See: [github issue #67](https://github.com/kubo/ruby-oci8/issues/67)
|
492
|
+
|
493
|
+
(reported by Zloy)
|
494
|
+
|
495
|
+
- Don't use SYM2ID on ruby 2.2.0 or later not to make symbols unGCable
|
496
|
+
by [Symbol GC](http://www.infoq.com/news/2014/12/ruby-2.2.0-released).
|
497
|
+
|
498
|
+
2.1.7 (2014-02-02)
|
499
|
+
==================
|
500
|
+
|
501
|
+
New Features
|
502
|
+
------------
|
503
|
+
|
504
|
+
### Add OCI8::Metadata::Base#obj_link.
|
505
|
+
|
506
|
+
Fixed Issues
|
507
|
+
------------
|
508
|
+
|
509
|
+
- Fix OCI8#describe_table to follow synonyms in a remote database.
|
510
|
+
|
511
|
+
2.1.6 (2013-12-29)
|
512
|
+
==================
|
513
|
+
|
514
|
+
New Features
|
515
|
+
------------
|
516
|
+
|
517
|
+
### Support ruby 2.1.0
|
518
|
+
|
519
|
+
### Support cygwin x86_64
|
520
|
+
|
521
|
+
### OCI8#describe_synonym and OCI8#describe_any accept 'PUBLIC.XXX' as a public synonym name.
|
522
|
+
|
523
|
+
Fixed Issues
|
524
|
+
------------
|
525
|
+
|
526
|
+
- fix wrong return valus of OCI8::Metadata::Synonym#schema_name
|
527
|
+
and #translated_name for synonyms with a database link but
|
528
|
+
without schema_name.
|
529
|
+
|
530
|
+
- fix ruby version checking in binary gem. Gem::ruby_version of
|
531
|
+
ruby 2.0.0p195 is 2.0.0.195, which doesn't match '= 2.0.0'.
|
532
|
+
|
533
|
+
(github issue #36 reported by sodonnel)
|
534
|
+
|
535
|
+
- fix SEGV when metadata are accessed after the session is disconnected.
|
536
|
+
|
537
|
+
- fix undefined method 'char_used?' when OCI8::Metadata::Argument#inspect is called.
|
538
|
+
|
539
|
+
- fix tests in an environment where the data size of "CAST('1' AS CHAR(1 char))"
|
540
|
+
is wrong.
|
541
|
+
|
542
|
+
- suppress warnings "MiniTest::Unit::TestCase is now Minitest::Test"
|
543
|
+
when minitest gem is installed.
|
544
|
+
|
545
|
+
- fix SEGV when oci8lib.so is compiled by mingw64 without runtime-check option.
|
546
|
+
Note that binary gems are compiled with runtime-check to check available Oracle
|
547
|
+
client features at runtime.
|
548
|
+
|
549
|
+
- fix SEGV when one connection is used by more than two threads and temporary
|
550
|
+
lobs are freed by GC.
|
551
|
+
|
552
|
+
2.1.5 (2013-03-09)
|
553
|
+
==================
|
554
|
+
|
555
|
+
New Features
|
556
|
+
------------
|
557
|
+
|
558
|
+
### V$SESSION_CONNECT_INFO.CLIENT_DRIVER.
|
559
|
+
|
560
|
+
'rubyoci8' is set as the driver name, which is displayed in
|
561
|
+
V$SESSION_CONNECT_INFO.CLIENT_DRIVER when both the client and
|
562
|
+
the server are Oracle 11g or upper.
|
563
|
+
|
564
|
+
Fixed Issues
|
565
|
+
------------
|
566
|
+
|
567
|
+
- fix segmentation fault when the process exits on rubinius.
|
568
|
+
|
569
|
+
- fix "OCI Library Initialization Error" only when the Oracle
|
570
|
+
instant client is 11.2.0.3 for Solaris x86 32-bit, the ruby
|
571
|
+
version is 1.9.3 or upper and the ruby is compiled by gcc.
|
572
|
+
|
573
|
+
2.1.4 (2013-01-06)
|
574
|
+
==================
|
575
|
+
|
576
|
+
New Features
|
577
|
+
------------
|
578
|
+
|
579
|
+
### Fast Application Notification (FAN) support
|
580
|
+
|
581
|
+
Look at {http://php.net/manual/en/oci8.connection.php} to know what is FAN.
|
582
|
+
[oci8.events](http://php.net/manual/en/oci8.configuration.php#ini.oci8.events) in PHP
|
583
|
+
corresponds to {OCI8.properties OCI8.properties[:events_mode]} in ruby-oci8.
|
584
|
+
|
585
|
+
Note: You need to set `OCI8.properties[:events_mode]` after `"require 'oci8'"` and before
|
586
|
+
any methods which call Oracle OCI functions.
|
587
|
+
|
588
|
+
Fixed Issues
|
589
|
+
------------
|
590
|
+
|
591
|
+
- fix SEGV when a temporary LOB is freed when `OCILobRead` returns `OCI_NEED_DATA`.
|
592
|
+
See: [github issue #20](https://github.com/kubo/ruby-oci8/issues/20)
|
593
|
+
|
594
|
+
(reported by Edgars Beigarts)
|
595
|
+
|
596
|
+
- use `RUBY_VERSION` instead of `RbConfig::CONFIG['ruby_version']` to know the
|
597
|
+
ruby ABI version. The latter may be changed by the configure option
|
598
|
+
--with-ruby-version.
|
599
|
+
See: [github issue #24](https://github.com/kubo/ruby-oci8/issues/24)
|
600
|
+
|
601
|
+
(reported by suhrawardi)
|
602
|
+
|
603
|
+
- add a script encoding magic comment for ruby 2.0.0 preview2.
|
604
|
+
See: [github issue #25](https://github.com/kubo/ruby-oci8/issues/25)
|
605
|
+
|
606
|
+
(reported by aboltart)
|
607
|
+
|
608
|
+
- fix {OCI8#describe_table} not to follow synonyms until stack overflow.
|
609
|
+
Now the recursive level is limited to 20.
|
610
|
+
See: [github issue #26](https://github.com/kubo/ruby-oci8/issues/26)
|
611
|
+
|
612
|
+
(reported by Brian Henderson)
|
613
|
+
|
614
|
+
2.1.3 (2012-11-11)
|
615
|
+
==================
|
616
|
+
|
617
|
+
New Features
|
618
|
+
------------
|
619
|
+
|
620
|
+
### {OCI8::Cursor#statement}
|
621
|
+
|
622
|
+
It returns the text of the SQL statement prepared in the cursor.
|
623
|
+
|
624
|
+
cursor = conn.parse("select * from country where country_code = 'ja'")
|
625
|
+
cursor.statement # => "select * from country where country_code = 'ja'"
|
626
|
+
|
627
|
+
See: [github issue #16](https://github.com/kubo/ruby-oci8/issues/16)
|
628
|
+
|
629
|
+
Specification changes
|
630
|
+
---------------------
|
631
|
+
|
632
|
+
### License was changed to 2-clause BSD-style license.
|
633
|
+
|
634
|
+
The former license was same with old ruby (<= 1.9.2) license.
|
635
|
+
|
636
|
+
### Oracle object type's DATE field type
|
637
|
+
|
638
|
+
Ruby-oci8 had returned a DateTime object when Oracle object type's DATE
|
639
|
+
field type was accessed. Now it returns a Time object.
|
640
|
+
|
641
|
+
Fixed Issues
|
642
|
+
------------
|
643
|
+
|
644
|
+
- Fix to work with procedures and functions that return temporary lobs.
|
645
|
+
See: [github issue #13](https://github.com/kubo/ruby-oci8/issues/13)
|
646
|
+
|
647
|
+
(contributed by timon)
|
648
|
+
|
649
|
+
- Fix Oracle object type's DATE field tests.
|
650
|
+
See: [github issue #17](https://github.com/kubo/ruby-oci8/issues/17)
|
651
|
+
|
652
|
+
(reported by Yasuo Honda)
|
653
|
+
|
654
|
+
- Fix a sequence test failure on Oracle 11gR2.
|
655
|
+
See: [github issue #18](https://github.com/kubo/ruby-oci8/issues/18)
|
656
|
+
|
657
|
+
(reported by Yasuo Honda)
|
658
|
+
|
659
|
+
- Include COPYING files.
|
660
|
+
See: [github issue #19](https://github.com/kubo/ruby-oci8/issues/19)
|
661
|
+
|
662
|
+
(requested by Johannes Weberhofer)
|
663
|
+
|
664
|
+
- Fix SEGV when a temporary LOB is GCed while another LOB is read.
|
665
|
+
See: [github issue #20](https://github.com/kubo/ruby-oci8/issues/20)
|
666
|
+
|
667
|
+
(reported by techsplicer)
|
668
|
+
|
669
|
+
- Fix #<NoMethodError: undefined method `timezone' for Time:Class>
|
670
|
+
when ruby is less than 1.9.2 and an object type's time attribute is accessed.
|
671
|
+
|
672
|
+
2.1.2 (2012-04-28)
|
673
|
+
==================
|
674
|
+
|
675
|
+
Specification changes
|
676
|
+
---------------------
|
677
|
+
|
678
|
+
### Statement caching in OCI is disabled by default.
|
679
|
+
|
680
|
+
This is workaround about a SIGSEGV issue.
|
681
|
+
See: [oracle enhanced issue #162](https://github.com/rsim/oracle-enhanced/issues/162)
|
682
|
+
|
683
|
+
Fixed Issues
|
684
|
+
------------
|
685
|
+
|
686
|
+
- delete code which overwrites signal handlers registered by ruby.
|
687
|
+
See: [rubyforge thread 50690](https://web.archive.org/web/20140521194940/https://rubyforge.org/forum/forum.php?thread_id=50690&forum_id=1078)
|
688
|
+
|
689
|
+
- fix internal heap error in OCI.
|
690
|
+
See: [github issue #12](https://github.com/kubo/ruby-oci8/issues/12)
|
691
|
+
|
692
|
+
(reported by Yasuo Honda)
|
693
|
+
|
694
|
+
2.1.1 (2012-04-22)
|
695
|
+
==================
|
696
|
+
|
697
|
+
New Features
|
698
|
+
------------
|
699
|
+
|
700
|
+
### Statement caching in OCI
|
701
|
+
|
702
|
+
See {http://docs.oracle.com/cd/E11882_01/appdev.112/e10646/oci09adv.htm#i471377}.
|
703
|
+
This feature is enabled only when the Oracle client is 9iR2 or upper.
|
704
|
+
|
705
|
+
The default cache size is 20. It can be changed as follows.
|
706
|
+
|
707
|
+
# change the size to 100.
|
708
|
+
OCI8.properties[:statement_cache_size] = 100
|
709
|
+
|
710
|
+
Note: The default size was changed to zero in 2.1.2.
|
711
|
+
|
712
|
+
Specification changes
|
713
|
+
---------------------
|
714
|
+
|
715
|
+
### OCI8::LOB#read() returns an empty string '' when it is an empty lob.
|
716
|
+
|
717
|
+
It had been returned nil.
|
718
|
+
|
719
|
+
Fixed Issues
|
720
|
+
------------
|
721
|
+
|
722
|
+
- OCI8::CLOB.new(conn, '') works now.
|
723
|
+
|
724
|
+
- fix core dump when calling PL/SQL procedure with cursor argument.
|
725
|
+
See: {https://github.com/kubo/ruby-oci8/issues/11}
|
726
|
+
|
727
|
+
(reported by Raimonds Simanovskis)
|
728
|
+
|
729
|
+
- fix testcase failures in DST.
|
730
|
+
See: {https://github.com/kubo/ruby-oci8/issues/8}
|
731
|
+
|
732
|
+
(reported by Yasuo Honda)
|
733
|
+
|
734
|
+
- fix a compilation issue on Redhat.
|
735
|
+
|
736
|
+
(reported by John Beckwith and others)
|
737
|
+
|
738
|
+
- fix "wrong number of arguments (1 for 2)" when a date member in a object type is accessed.
|
739
|
+
|
740
|
+
(repored by Leoš Bitto)
|
741
|
+
|
742
|
+
2.1.0 (2011-12-13)
|
743
|
+
==================
|
744
|
+
|
745
|
+
New Features
|
746
|
+
------------
|
747
|
+
|
748
|
+
### OCI connection pooling
|
749
|
+
|
750
|
+
See: {OCI8::ConnectionPool}
|
751
|
+
|
752
|
+
### Daylight saving time aware if TZ is set.
|
753
|
+
|
754
|
+
You should set the environment variable TZ if your applications run
|
755
|
+
in a time zone with daylight saving time transitions.
|
756
|
+
Otherwise, Oracle session time zone is set with current constant
|
757
|
+
offset from GMT.
|
758
|
+
(reported by Yasuo Honda)
|
759
|
+
|
760
|
+
### connect as sysasm (Oracle 11g only)
|
761
|
+
|
762
|
+
You can connect to the Oracle server as SYSASM privilege as follows:
|
763
|
+
|
764
|
+
OCI8.new('username/password as sysasm')
|
765
|
+
|
766
|
+
or
|
767
|
+
|
768
|
+
OCI8.new('username', 'password', nil, :SYSASM)
|
769
|
+
|
770
|
+
### Oracle number is converted to ruby float exactly same as ruby does.
|
771
|
+
|
772
|
+
From ruby 1.9.2, a float value converted from Oracle number 15.7 by
|
773
|
+
the Oracle function OCINumberToReal() makes a string representation
|
774
|
+
15.700000000000001 by `Float#to_s`. (See: {http://redmine.ruby-lang.org/issues/4656})
|
775
|
+
To avoid this issue, any Oracle number is converted to a float as
|
776
|
+
ruby's `String#to_f` does.
|
777
|
+
|
778
|
+
The behavior is customizable by {OCI8.properties OCI8.properties[:float\_conversion\_type]}.
|
779
|
+
|
780
|
+
OCI8.properties[:float_conversion_type] = :oracle # => Use OCINumberToReal()
|
781
|
+
OCI8.properties[:float_conversion_type] = :ruby # => Use String#to_f
|
782
|
+
|
783
|
+
The default value is :ruby.
|
784
|
+
|
785
|
+
### `OCISuccessWithInfo` exceptions are not raised any more.
|
786
|
+
|
787
|
+
Ruby-oci8 2.0 treats `OCI_SUCCESS_WITH_INFO` in OCI layer as an error
|
788
|
+
and raise an exception {OCISuccessWithInfo} such as "ORA-24347: Warning of
|
789
|
+
a NULL column in an aggregate function" and "ORA-28002: the password will
|
790
|
+
expire within xx days."
|
791
|
+
|
792
|
+
From 2.1.0, it is treated as a warning and the exception is set
|
793
|
+
to {OCI8#last_error}.
|
794
|
+
|
795
|
+
### {OCI8#last_error} is added.
|
796
|
+
|
797
|
+
The last error or warning associated with the session is set to
|
798
|
+
{OCI8#last_error}. The usecase is to detect {OCISuccessWithInfo}.
|
799
|
+
It is reset by {OCI8#exec} and {OCI8#parse}.
|
800
|
+
|
801
|
+
### Experimental support of character length semantics
|
802
|
+
|
803
|
+
{OCI8.properties OCI8.properties[:length\_semantics]} indicates length semantics
|
804
|
+
of {OCI8::Cursor#bind\_param}. When it is `:char`, the length is counted by the
|
805
|
+
number of characters. When it is `:byte`, it is counted by the number of
|
806
|
+
bytes.
|
807
|
+
|
808
|
+
### {OCI8.client\_charset\_name} and {OCI8#database\_charset\_name} are added.
|
809
|
+
|
810
|
+
They return Oracle charset name such as WE8ISO8859P15.
|
811
|
+
|
812
|
+
Specification changes
|
813
|
+
---------------------
|
814
|
+
|
815
|
+
### The parent class {OCINoData} was changed from {OCIException} to {OCIError}.
|
816
|
+
|
817
|
+
### Oracle 8 and Oracie 8i is not supported anymore.
|
818
|
+
|
819
|
+
Fixed Issues
|
820
|
+
------------
|
821
|
+
|
822
|
+
- Fix a bug that an array is always bound as null.
|
823
|
+
This bug was introduced in ruby-oci8 2.0.5.
|
824
|
+
|
825
|
+
(reported by Leoš Bitto)
|
826
|
+
|
827
|
+
- Avoid a gcc internal compiler error when using ruby1.9.2-p290 on
|
828
|
+
ubuntu 11.10 (64bit).
|
829
|
+
|
830
|
+
(reported by Bob Saveland.)
|
831
|
+
|
832
|
+
- Fix compilation problems on Solaris.
|
833
|
+
|
834
|
+
(Reported by Sanjiv Patel.)
|
835
|
+
|
836
|
+
- Fix compilation problems on Linux.
|
837
|
+
|
838
|
+
(Reported by Edgars Beigarts.)
|
839
|
+
|
840
|
+
- Connections are released by GC without explicit logoff.
|
841
|
+
|
842
|
+
- Set ruby encoding CP950 for oracle characterset ZHT16MSWIN950 and
|
843
|
+
CP951 for ZHT16HKSCS and ZHT16HKSCS31 when the ruby is 1.9.3.
|
844
|
+
|
845
|
+
- Clear an executuing thread information in a connection when a SQL
|
846
|
+
executions is canceled by Thread#kill or Timeout::timeout.
|
847
|
+
|
848
|
+
(reported by Aaron Qian)
|
849
|
+
|
850
|
+
- Fix some test cases for object type and TZ issues.
|
851
|
+
|
852
|
+
(reported by Yasuo Honda)
|
853
|
+
|
854
|
+
- Use Gem::Command.build_args to get arguments after '--'.
|
855
|
+
|
856
|
+
(reported by jbirdjavi)
|
857
|
+
|
858
|
+
2.0.6 (2011-06-14)
|
859
|
+
==================
|
860
|
+
|
861
|
+
Fixed issues
|
862
|
+
------------
|
863
|
+
|
864
|
+
- fix SEGV when freeing a temporary LOB during GC on rubinius 1.2.3.
|
865
|
+
|
866
|
+
- revert the exception type from RuntimeError to OCIException when
|
867
|
+
a closed OCI handle's method is called. It was chaned in 2.0.5
|
868
|
+
by mistake.
|
869
|
+
|
870
|
+
2.0.5 (2011-06-12)
|
871
|
+
==================
|
872
|
+
|
873
|
+
New Features
|
874
|
+
------------
|
875
|
+
|
876
|
+
### Support Rubinius.
|
877
|
+
|
878
|
+
### {OraNumber#has\_decimal\_part?} is added.
|
879
|
+
|
880
|
+
Example:
|
881
|
+
|
882
|
+
OraNumber(10).has_decimal_part? # => false
|
883
|
+
OraNumber(10.1).has_decimal_part? # => true
|
884
|
+
|
885
|
+
### Limitted support for OraNumber's positive and negative infinity.
|
886
|
+
|
887
|
+
They are converted to '~' and '-~' respectively as described in
|
888
|
+
{http://www.ixora.com.au/notes/infinity.htm}.
|
889
|
+
|
890
|
+
### {OCI8.properties} is added to control ruby-oci8 behaviour.
|
891
|
+
|
892
|
+
It supports :bind_string_as_nchar only for now.
|
893
|
+
|
894
|
+
### {OCI8.properties}[:bind\_string\_as\_nchar] is added.
|
895
|
+
|
896
|
+
You need to set "`OCI8.properties[:bind_string_as_nchar] = true`"
|
897
|
+
if the database character set is not UTF-8 and 'NCHAR'/'NVARCHAR2' columns
|
898
|
+
contain characters which cannot be converted to the database character set.
|
899
|
+
|
900
|
+
See: [rubyforge thread 48838](https://web.archive.org/web/20140519033641/http://rubyforge.org/forum/forum.php?thread_id=48838&forum_id=1078)
|
901
|
+
|
902
|
+
Fixed issues
|
903
|
+
------------
|
904
|
+
|
905
|
+
- Fix InvalidHandle errors on Rails.
|
906
|
+
|
907
|
+
(reported by Jordan Curzon and Aaron Qian)
|
908
|
+
|
909
|
+
See: [rubyforge thread 49751](https://web.archive.org/web/20140519033653/http://rubyforge.org/forum/forum.php?thread_id=49751&forum_id=1078)
|
910
|
+
|
911
|
+
- Raise "OCIError: ORA-01805: possible error in date/time operation"
|
912
|
+
when Oracle 11gR2's client and server timezone versions are not same
|
913
|
+
instead of raising a exception "undefined method `*' for nil:NilClass."
|
914
|
+
|
915
|
+
See: [rubyforge thread 49102](https://web.archive.org/web/20140521194951/https://rubyforge.org/forum/forum.php?thread_id=49102&forum_id=1078)
|
916
|
+
|
917
|
+
- Fix unexpectedly disconnect when failed-logon connections is GC'ed
|
918
|
+
and the connection object's address is accidentally same with
|
919
|
+
an alive connection.
|
920
|
+
|
921
|
+
- Fix segmentation fault when calling {OCI8::Cursor#[]} for
|
922
|
+
closed statement objects.
|
923
|
+
|
924
|
+
(reported by Hugo L. Borges)
|
925
|
+
|
926
|
+
- Fix a bug that a string is bound to RAW.
|
927
|
+
Its encoding had been convertd to {OCI8.encoding} incorrectly.
|
928
|
+
|
929
|
+
- Fix memory leaks when temporary lobs are used.
|
930
|
+
|
931
|
+
- Fix a problem to assign 'NULL' bind value to object type bind variables.
|
932
|
+
|
933
|
+
(reported by Raimonds Simanovskis)
|
934
|
+
|
935
|
+
- Support LOB datatypes in object type.
|
936
|
+
|
937
|
+
(reported by Michael Sexton)
|
938
|
+
|
939
|
+
- Fix to compile on cygwin. The declaration of 'boolean' in Oracle
|
940
|
+
conflicts with that of latest cygwin.
|
941
|
+
|
942
|
+
(reported by Don Hill).
|
943
|
+
|
944
|
+
- Fix to complie for the 32-bit ruby which was compiled on x86\_64 linux
|
945
|
+
and configured without '--build', '--host' nor '--target'.
|
946
|
+
The 'RUBY_PLATFORM' is 'x86_64-linux' even though the ruby is 32-bit.
|
947
|
+
|
948
|
+
(reported by Jason Renschler)
|
949
|
+
|
950
|
+
- Fix wrong dependencies in Makefile when running 'make -jNNN (where NNN >= 2)'
|
951
|
+
|
952
|
+
(contributed by Alyano Alyanos. See bug #28129 on rubyforge.)
|
953
|
+
|
954
|
+
- Fix to compile on HP-UX. Duplicated const qualifiers prevented HP-UX cc
|
955
|
+
from compiling.
|
956
|
+
|
957
|
+
(reported by Sebastian YEPES)
|
958
|
+
|
959
|
+
2.0.4 (2010-02-28)
|
960
|
+
==================
|
961
|
+
|
962
|
+
New Features
|
963
|
+
------------
|
964
|
+
|
965
|
+
### {OCI8.error_message} is added.
|
966
|
+
|
967
|
+
Gets the Oracle error message specified by message id.
|
968
|
+
Its language depends on 'NLS_LANGUAGE'.
|
969
|
+
|
970
|
+
Note: This method is unavailable if the Oracle client version is 8.0.
|
971
|
+
|
972
|
+
# When NLS_LANG is AMERICAN_AMERICA.AL32UTF8
|
973
|
+
OCI8.error_message(1)
|
974
|
+
# => "ORA-00001: unique constraint (%s.%s) violated"
|
975
|
+
|
976
|
+
# When NLS_LANG is FRENCH_FRANCE.AL32UTF8
|
977
|
+
OCI8.error_message(1)
|
978
|
+
# => "ORA-00001: violation de contrainte unique (%s.%s)"
|
979
|
+
|
980
|
+
### {OraNumber#dump} is added.
|
981
|
+
|
982
|
+
Returns {OraNumber}'s internal representation whose format
|
983
|
+
is same with the return value of Oracle SQL function DUMP().
|
984
|
+
|
985
|
+
OraNumber.new(100).dump #=> "Typ=2 Len=2: 194,2"
|
986
|
+
OraNumber.new(123).dump #=> "Typ=2 Len=3: 194,2,24"
|
987
|
+
OraNumber.new(0.1).dump #=> "Typ=2 Len=2: 192,11"
|
988
|
+
|
989
|
+
Fixed issues
|
990
|
+
------------
|
991
|
+
|
992
|
+
- Fractional second part is lost when ruby's Time instance is bound
|
993
|
+
to Oracle datatype TIMESTAMP.
|
994
|
+
|
995
|
+
(reported by Raimonds Simanovskis)
|
996
|
+
|
997
|
+
- {OraNumber#to\_i} and {OraNumber#to\_s} fail when its scale is larger
|
998
|
+
than 38.
|
999
|
+
|
1000
|
+
(reported by Raimonds Simanovskis)
|
1001
|
+
|
1002
|
+
- Memory leak about 30 bytes per one place holder for object type.
|
1003
|
+
|
1004
|
+
- Segmentation fault when a collection of string is bound.
|
1005
|
+
|
1006
|
+
(reported by Raimonds Simanovskis)
|
1007
|
+
|
1008
|
+
- Segmentation fault when GC starts while initializing a bind
|
1009
|
+
object for object type.
|
1010
|
+
|
1011
|
+
(reported by Remi Gagnon)
|
1012
|
+
|
1013
|
+
- Segmentation fault when OCI8::Cursor#fetch is called prior to
|
1014
|
+
{OCI8::Cursor#exec}.
|
1015
|
+
|
1016
|
+
- Detailed error message is not reported when 'PL/SQL NO_DATA_FOUND'
|
1017
|
+
exception is raised.
|
1018
|
+
|
1019
|
+
(reported by Raimonds Simanovskis)
|
1020
|
+
|
1021
|
+
2.0.3 (2009-10-21)
|
1022
|
+
==================
|
1023
|
+
|
1024
|
+
Incompatible Changes
|
1025
|
+
--------------------
|
1026
|
+
|
1027
|
+
### Number column in a SQL statement
|
1028
|
+
|
1029
|
+
Changes the default data type for number column which fit neither
|
1030
|
+
Integer nor Float from {OraNumber} to BigDecimal.
|
1031
|
+
|
1032
|
+
conn.exec("select 1.0 from dual") do |row|
|
1033
|
+
p row[0] # => BigDecimal("1") if the ruby-oci8 version is 2.0.3.
|
1034
|
+
# => OraNumber(1) if the version is 2.0.2.
|
1035
|
+
end
|
1036
|
+
|
1037
|
+
### Priority of OraNumber within numerical types
|
1038
|
+
|
1039
|
+
The return types of basic arithmetic operations with other numerical
|
1040
|
+
types are changed.
|
1041
|
+
|
1042
|
+
2.0.3:
|
1043
|
+
|
1044
|
+
OraNumber + Integer => OraNumber (OraNumber wins.)
|
1045
|
+
OraNumber + Float => Float (OraNumber loses.)
|
1046
|
+
OraNumber + Rational => Rational (OraNumber loses.)
|
1047
|
+
OraNumber + BigDecimal => BigDecimal (OraNumber loses.)
|
1048
|
+
|
1049
|
+
2.0.2:
|
1050
|
+
|
1051
|
+
OraNumber + Integer => OraNumber (OraNumber wins always.)
|
1052
|
+
OraNumber + Float => OraNumber
|
1053
|
+
OraNumber + Rational => OraNumber
|
1054
|
+
OraNumber + BigDecimal => OraNumber
|
1055
|
+
|
1056
|
+
### Interval day to second
|
1057
|
+
|
1058
|
+
The retrived value of Oracle data type "interval day to second"
|
1059
|
+
was changed from the number of days as a Rational to the number
|
1060
|
+
of seconds as a Float by default.
|
1061
|
+
Use 'OCI8::BindType::IntervalDS.unit = :day' to make it compatible
|
1062
|
+
with the previous versions.
|
1063
|
+
|
1064
|
+
conn.exec("select to_dsinterval('0 00:00:01') from dual") do |row|
|
1065
|
+
p row[0] # => 1.0 if the version is 2.0.3 and
|
1066
|
+
# OCI8::BindType::IntervalDS.unit is :second.
|
1067
|
+
# => (1/86400) if the version is 2.0.3 and
|
1068
|
+
# OCI8::BindType::IntervalDS.unit is :day or
|
1069
|
+
# the version is 2.0.2.
|
1070
|
+
end
|
1071
|
+
|
1072
|
+
### Date, timestamp, timestamp with time zone data types and ruby 1.9.2
|
1073
|
+
|
1074
|
+
These data types are retrived always as Time values when the
|
1075
|
+
ruby version is 1.9.2 because the Time class is enhanced to
|
1076
|
+
represent any time zone and is free from year 2038 problem.
|
1077
|
+
|
1078
|
+
Prior to ruby 1.9.2, if the time cannot be represented by
|
1079
|
+
Unix time or the time zone is neither utc nor local, they are
|
1080
|
+
retrived as DateTime values.
|
1081
|
+
|
1082
|
+
### Non-blocking mode and ruby 1.9
|
1083
|
+
|
1084
|
+
Non-blocking mode is enabled by default when the ruby is 1.9.
|
1085
|
+
|
1086
|
+
New Features
|
1087
|
+
------------
|
1088
|
+
|
1089
|
+
### BigDecimal and Rational are availabe as bind values.
|
1090
|
+
|
1091
|
+
### New methods {OCI8#module=}, {OCI8#action=} and {OCI8#client_info=} are added.
|
1092
|
+
|
1093
|
+
These methods change the module name, the action name and the client_info
|
1094
|
+
in the current session respectively.
|
1095
|
+
|
1096
|
+
After Oracle 10g client, these don't perform network round trips.
|
1097
|
+
The change is reflected to the server by the next round trip such as
|
1098
|
+
{OCI8#exec}, {OCI8#ping}, etc.
|
1099
|
+
|
1100
|
+
Prior to Oracle 10g client, these call PL/SQL functions such as
|
1101
|
+
`DBMS_APPLICATION_INFO.SET_MODULE`, `DBMS_APPLICATION_INFO.SET_ACTION`,
|
1102
|
+
and `DBMS_APPLICATION_INFO.SET_CLIENT_INFO` internally.
|
1103
|
+
The change is reflected immediately by a network round trip.
|
1104
|
+
|
1105
|
+
### {OCI8::BindType.default_timezone}
|
1106
|
+
|
1107
|
+
The default time zone of Time or DateTime values. This parameter is used only when
|
1108
|
+
|
1109
|
+
* date values are fetched and the Oracle client version is 8.x
|
1110
|
+
|
1111
|
+
or
|
1112
|
+
|
1113
|
+
* object types have date data type attributes.
|
1114
|
+
|
1115
|
+
Note that if the Oracle client version is 9i or upper, the time
|
1116
|
+
zone is determined by the session time zone. The default value
|
1117
|
+
is local time zone. You can change it to GMT by executing the
|
1118
|
+
following SQL statement for each connection.
|
1119
|
+
|
1120
|
+
alter session set time_zone = '00:00'
|
1121
|
+
|
1122
|
+
Note: The session time zone is set by the environment variable TZ from
|
1123
|
+
ruby-oci8 2.1.0.
|
1124
|
+
|
1125
|
+
Other specification changes
|
1126
|
+
---------------------------
|
1127
|
+
|
1128
|
+
- Add a global function OraNumber(obj) as a shortcut of OraNumber.new(obj)
|
1129
|
+
as Rational and BigDecimal do.
|
1130
|
+
|
1131
|
+
- Fix to accept nil attribute in object type's
|
1132
|
+
constructors. This works only for simple data types such as number,
|
1133
|
+
string. But it doesn't for complex types such as object types.
|
1134
|
+
(requested by Remi Gagnon)
|
1135
|
+
|
1136
|
+
- add DATE datatype support in object types.
|
1137
|
+
|
1138
|
+
- Change {OCI8::LOB#write} to accept an object which is not a String and
|
1139
|
+
doesn't respond to 'to_str' as IO#write does.
|
1140
|
+
(requested by Christopher Jones)
|
1141
|
+
|
1142
|
+
- Change the initial polling interval of
|
1143
|
+
non-blocking mode for ruby 1.8 from 100 msec to 10 msec, which
|
1144
|
+
is same with ruby-oci8 1.0.
|
1145
|
+
|
1146
|
+
Fixed installation issues
|
1147
|
+
-------------------------
|
1148
|
+
|
1149
|
+
- Fix oraconf.rb for ruby 1.8.5 with Oracle 8.x which needs some object
|
1150
|
+
files to link with.
|
1151
|
+
|
1152
|
+
(reported by Jayson Cena)
|
1153
|
+
|
1154
|
+
- Fix oraconf.rb for ruby 1.9.2 preview1.
|
1155
|
+
|
1156
|
+
(pointed by Raimonds Simanovskis)
|
1157
|
+
|
1158
|
+
- Fix oraconf.rb to compile for AIX instant clients.
|
1159
|
+
|
1160
|
+
(reported by Kazuya Teramoto)
|
1161
|
+
|
1162
|
+
2.0.2 (2009-05-17)
|
1163
|
+
==================
|
1164
|
+
|
1165
|
+
* add new methods
|
1166
|
+
- {OCI8#select_one}
|
1167
|
+
|
1168
|
+
- {OCI8#ping} -> true or false
|
1169
|
+
|
1170
|
+
Verifies that the Oracle connection is alive.
|
1171
|
+
{OCI8#ping} also can be used to flush all the pending OCI
|
1172
|
+
client-side calls to the server if any exist.
|
1173
|
+
|
1174
|
+
- {OCI8#client\_identifier=}client\_id
|
1175
|
+
|
1176
|
+
Look at the following link to know what is the client identifier.
|
1177
|
+
{http://it.toolbox.com/blogs/database-solutions/oracle-session-tracing-part-i-16356}
|
1178
|
+
|
1179
|
+
Note that the specified identifier doesn't change the v$session
|
1180
|
+
immediately. It is done by the next network round trip
|
1181
|
+
such as OCI8#exec or OCI8#ping.
|
1182
|
+
|
1183
|
+
* fix problems when compiling with Oracle 9.2 and 8.0.
|
1184
|
+
|
1185
|
+
(reported by Axel Reinhold)
|
1186
|
+
|
1187
|
+
* [dbi] fix to pass a newly added sanity check in dbi 0.4.1.
|
1188
|
+
|
1189
|
+
(reported by Dirk Herzhauser)
|
1190
|
+
|
1191
|
+
* fix an error when executing "select NULL from dual".
|
1192
|
+
|
1193
|
+
[rubyforge thread 32468](https://web.archive.org/web/20140521152939/http://rubyforge.org/forum/forum.php?thread_id=32468&forum_id=1078)
|
1194
|
+
(contributed by Raimonds Simanovskis)
|
1195
|
+
|
1196
|
+
* [ruby 1.9] fix OCI8::BLOB to read/write binary. Prior to 2.0.1,
|
1197
|
+
|
1198
|
+
it was treated as text tagged with 'NLS_LANG' encoding.
|
1199
|
+
|
1200
|
+
* [ruby 1.9] fix to bind string data by the length got from String#bytesize
|
1201
|
+
converted to {OCI8.encoding}, not by String#size.
|
1202
|
+
|
1203
|
+
2.0.1 (2009-03-17)
|
1204
|
+
==================
|
1205
|
+
|
1206
|
+
* release a binary gem for Windows, which contains libraries for both
|
1207
|
+
ruby 1.8 and ruby 1.9.1.
|
1208
|
+
* add {OCI8#oracle\_server\_version}.
|
1209
|
+
* fix bugs when fetching and binding time objects.
|