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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +14 -0
  3. data/COPYING +30 -0
  4. data/COPYING_old +64 -0
  5. data/ChangeLog +3826 -0
  6. data/Makefile +92 -0
  7. data/NEWS +1209 -0
  8. data/README.md +66 -0
  9. data/dist-files +112 -0
  10. data/docs/bind-array-to-in_cond.md +38 -0
  11. data/docs/conflicts-local-connections-and-processes.md +98 -0
  12. data/docs/hanging-after-inactivity.md +63 -0
  13. data/docs/install-binary-package.md +44 -0
  14. data/docs/install-full-client.md +111 -0
  15. data/docs/install-instant-client.md +194 -0
  16. data/docs/install-on-osx.md +46 -0
  17. data/docs/ldap-auth-and-function-interposition.md +123 -0
  18. data/docs/number-type-mapping.md +79 -0
  19. data/docs/platform-specific-issues.md +164 -0
  20. data/docs/report-installation-issue.md +50 -0
  21. data/docs/timeout-parameters.md +94 -0
  22. data/lib/.document +1 -0
  23. data/lib/dbd/OCI8.rb +591 -0
  24. data/lib/oci8/.document +8 -0
  25. data/lib/oci8/bindtype.rb +333 -0
  26. data/lib/oci8/check_load_error.rb +146 -0
  27. data/lib/oci8/compat.rb +117 -0
  28. data/lib/oci8/connection_pool.rb +179 -0
  29. data/lib/oci8/cursor.rb +605 -0
  30. data/lib/oci8/datetime.rb +605 -0
  31. data/lib/oci8/encoding-init.rb +45 -0
  32. data/lib/oci8/encoding.yml +537 -0
  33. data/lib/oci8/metadata.rb +2148 -0
  34. data/lib/oci8/object.rb +641 -0
  35. data/lib/oci8/oci8.rb +756 -0
  36. data/lib/oci8/ocihandle.rb +591 -0
  37. data/lib/oci8/oracle_version.rb +153 -0
  38. data/lib/oci8/properties.rb +196 -0
  39. data/lib/oci8/version.rb +3 -0
  40. data/lib/oci8.rb +190 -0
  41. data/lib/oci8lib_310.so +0 -0
  42. data/lib/ruby-oci8.rb +1 -0
  43. data/metaconfig +142 -0
  44. data/pre-distclean.rb +7 -0
  45. data/ruby-oci8.gemspec +85 -0
  46. data/setup.rb +1342 -0
  47. data/test/README.md +37 -0
  48. data/test/config.rb +201 -0
  49. data/test/setup_test_object.sql +199 -0
  50. data/test/setup_test_package.sql +59 -0
  51. data/test/test_all.rb +56 -0
  52. data/test/test_appinfo.rb +62 -0
  53. data/test/test_array_dml.rb +332 -0
  54. data/test/test_bind_array.rb +70 -0
  55. data/test/test_bind_boolean.rb +99 -0
  56. data/test/test_bind_integer.rb +47 -0
  57. data/test/test_bind_raw.rb +45 -0
  58. data/test/test_bind_string.rb +105 -0
  59. data/test/test_bind_time.rb +177 -0
  60. data/test/test_break.rb +125 -0
  61. data/test/test_clob.rb +85 -0
  62. data/test/test_connection_pool.rb +124 -0
  63. data/test/test_connstr.rb +220 -0
  64. data/test/test_datetime.rb +585 -0
  65. data/test/test_dbi.rb +365 -0
  66. data/test/test_dbi_clob.rb +53 -0
  67. data/test/test_encoding.rb +103 -0
  68. data/test/test_error.rb +87 -0
  69. data/test/test_metadata.rb +2674 -0
  70. data/test/test_object.rb +546 -0
  71. data/test/test_oci8.rb +624 -0
  72. data/test/test_oracle_version.rb +68 -0
  73. data/test/test_oradate.rb +255 -0
  74. data/test/test_oranumber.rb +792 -0
  75. data/test/test_package_type.rb +981 -0
  76. data/test/test_properties.rb +17 -0
  77. data/test/test_rowid.rb +32 -0
  78. 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.