ruby-staci 2.2.9

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