ruby-oci8 2.1.5.1-x64-mingw32

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 (64) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +17 -0
  3. data/COPYING +30 -0
  4. data/COPYING_old +64 -0
  5. data/ChangeLog +2779 -0
  6. data/Makefile +92 -0
  7. data/NEWS +660 -0
  8. data/README.md +43 -0
  9. data/VERSION +1 -0
  10. data/dist-files +91 -0
  11. data/docs/install-binary-package.md +40 -0
  12. data/docs/install-full-client.md +116 -0
  13. data/docs/install-instant-client.md +167 -0
  14. data/docs/platform-specific-issues.md +197 -0
  15. data/docs/report-installation-issue.md +50 -0
  16. data/lib/.document +1 -0
  17. data/lib/dbd/OCI8.rb +591 -0
  18. data/lib/oci8.rb +147 -0
  19. data/lib/oci8.rb.in +147 -0
  20. data/lib/oci8/.document +8 -0
  21. data/lib/oci8/bindtype.rb +350 -0
  22. data/lib/oci8/compat.rb +113 -0
  23. data/lib/oci8/connection_pool.rb +108 -0
  24. data/lib/oci8/cursor.rb +564 -0
  25. data/lib/oci8/datetime.rb +605 -0
  26. data/lib/oci8/encoding-init.rb +79 -0
  27. data/lib/oci8/encoding.yml +537 -0
  28. data/lib/oci8/metadata.rb +2092 -0
  29. data/lib/oci8/object.rb +605 -0
  30. data/lib/oci8/oci8.rb +560 -0
  31. data/lib/oci8/ocihandle.rb +607 -0
  32. data/lib/oci8/oracle_version.rb +143 -0
  33. data/lib/oci8/properties.rb +134 -0
  34. data/lib/oci8lib_200.so +0 -0
  35. data/metaconfig +142 -0
  36. data/pre-distclean.rb +7 -0
  37. data/ruby-oci8.gemspec +80 -0
  38. data/setup.rb +1333 -0
  39. data/test/README +42 -0
  40. data/test/config.rb +184 -0
  41. data/test/setup_test_object.sql +171 -0
  42. data/test/test_all.rb +54 -0
  43. data/test/test_appinfo.rb +63 -0
  44. data/test/test_array_dml.rb +333 -0
  45. data/test/test_bind_raw.rb +46 -0
  46. data/test/test_bind_string.rb +106 -0
  47. data/test/test_bind_time.rb +178 -0
  48. data/test/test_break.rb +124 -0
  49. data/test/test_clob.rb +98 -0
  50. data/test/test_connection_pool.rb +125 -0
  51. data/test/test_connstr.rb +81 -0
  52. data/test/test_datetime.rb +581 -0
  53. data/test/test_dbi.rb +366 -0
  54. data/test/test_dbi_clob.rb +53 -0
  55. data/test/test_encoding.rb +104 -0
  56. data/test/test_error.rb +88 -0
  57. data/test/test_metadata.rb +1485 -0
  58. data/test/test_object.rb +462 -0
  59. data/test/test_oci8.rb +489 -0
  60. data/test/test_oracle_version.rb +70 -0
  61. data/test/test_oradate.rb +256 -0
  62. data/test/test_oranumber.rb +787 -0
  63. data/test/test_rowid.rb +33 -0
  64. metadata +109 -0
data/Makefile ADDED
@@ -0,0 +1,92 @@
1
+ VERSION = `cat VERSION`
2
+ RUBY = ruby -w
3
+
4
+ all: build
5
+
6
+ config.save: lib/oci8.rb.in
7
+ $(RUBY) setup.rb config
8
+
9
+ build: config.save
10
+ $(RUBY) setup.rb setup
11
+
12
+ check: build
13
+ $(RUBY) setup.rb test
14
+
15
+ clean:
16
+ $(RUBY) setup.rb clean
17
+
18
+ distclean:
19
+ $(RUBY) setup.rb distclean
20
+
21
+ install:
22
+ $(RUBY) setup.rb install
23
+
24
+ site-install:
25
+ $(RUBY) setup.rb install
26
+
27
+ format_c_source:
28
+ astyle --options=none --style=linux --indent=spaces=4 --brackets=linux --suffix=none ext/oci8/*.[ch]
29
+
30
+ # internal use only
31
+ .PHONY: dist dist-check doc copy-doc
32
+
33
+ doc:
34
+ rm -rf doc
35
+ TZ= yard
36
+ echo DirectoryIndex frames.html > doc/.htaccess
37
+
38
+ copy-doc: doc
39
+ rsync -avz doc/ rubyforge.org:/var/www/gforge-projects/ruby-oci8/en
40
+
41
+ dist:
42
+ -rm -rf ruby-oci8-$(VERSION)
43
+ mkdir ruby-oci8-$(VERSION)
44
+ tar cf - `cat dist-files` | (cd ruby-oci8-$(VERSION); tar xf - )
45
+ tar cfz ruby-oci8-$(VERSION).tar.gz ruby-oci8-$(VERSION)
46
+
47
+ dist-check: dist
48
+ cd ruby-oci8-$(VERSION) && $(MAKE) RUBY="$(RUBY)"
49
+ cd ruby-oci8-$(VERSION) && $(MAKE) RUBY="$(RUBY)" check
50
+ cd ruby-oci8-$(VERSION)/src && $(MAKE) RUBY="$(RUBY)" sitearchdir=../work sitelibdir=../work site-install
51
+ cd ruby-oci8-$(VERSION)/test && $(RUBY) -I../work -I../support test_all.rb
52
+
53
+ #
54
+ # for Windows
55
+ #
56
+ RUBY_18 = c:\ruby
57
+ RUBY_191 = c:\ruby-1.9.1
58
+ GEMPKG = ruby-oci8-2.0.3-x86-mswin32-60.gem
59
+
60
+ ext\oci8\oci8lib_18.so:
61
+ $(RUBY_18)\bin\ruby -r fileutils -e "FileUtils.rm_rf('ruby18')"
62
+ md ruby18
63
+ cd ruby18
64
+ $(RUBY_18)\bin\ruby ..\setup.rb config -- --with-runtime-check
65
+ $(RUBY_18)\bin\ruby ..\setup.rb setup
66
+ rem $(RUBY_18)\bin\ruby ..\setup.rb test
67
+ cd ..
68
+ copy ruby18\ext\oci8\oci8lib_18.so ext\oci8\oci8lib_18.so
69
+
70
+ ext\oci8\oci8lib_191.so:
71
+ $(RUBY_191)\bin\ruby -r fileutils -e "FileUtils.rm_rf('ruby191')"
72
+ md ruby191
73
+ cd ruby191
74
+ $(RUBY_191)\bin\ruby ..\setup.rb config -- --with-runtime-check
75
+ $(RUBY_191)\bin\ruby ..\setup.rb setup
76
+ rem $(RUBY_191)\bin\ruby ..\setup.rb test
77
+ cd ..
78
+ copy ruby191\ext\oci8\oci8lib_191.so ext\oci8\oci8lib_191.so
79
+ copy ruby191\lib\oci8.rb lib\oci8.rb
80
+
81
+ $(GEMPKG): ext\oci8\oci8lib_18.so ext\oci8\oci8lib_191.so ruby-oci8.gemspec
82
+ $(RUBY_191)\bin\gem build ruby-oci8.gemspec -- current
83
+
84
+ test-win32-ruby18: $(GEMPKG)
85
+ $(RUBY_18)\bin\gem install $(GEMPKG) --no-rdoc --no-ri --local
86
+ $(RUBY_18)\bin\ruby -rubygems test\test_all.rb
87
+
88
+ test-win32-ruby191: $(GEMPKG)
89
+ $(RUBY_191)\bin\gem install $(GEMPKG) --no-rdoc --no-ri --local
90
+ $(RUBY_191)\bin\ruby test\test_all.rb
91
+
92
+ test-win32: test-win32-ruby18 test-win32-ruby191
data/NEWS ADDED
@@ -0,0 +1,660 @@
1
+ # @markup markdown
2
+
3
+ 2.1.5
4
+ =====
5
+
6
+ New Features
7
+ ------------
8
+
9
+ ### V$SESSION_CONNECT_INFO.CLIENT_DRIVER.
10
+
11
+ 'rubyoci8' is set as the driver name, which is displayed in
12
+ V$SESSION_CONNECT_INFO.CLIENT_DRIVER when both the client and
13
+ the server are Oracle 11g or upper.
14
+
15
+ Fixed Issues
16
+ ------------
17
+
18
+ - fix segmentation fault when the process exits on rubinius.
19
+
20
+ - fix "OCI Library Initialization Error" only when the Oracle
21
+ instant client is 11.2.0.3 for Solaris x86 32-bit, the ruby
22
+ version is 1.9.3 or upper and the ruby is compiled by gcc.
23
+
24
+ 2.1.4
25
+ =====
26
+
27
+ New Features
28
+ ------------
29
+
30
+ ### Fast Application Notification (FAN) support
31
+
32
+ Look at {http://php.net/manual/en/oci8.connection.php} to know what is FAN.
33
+ [oci8.events](http://php.net/manual/en/oci8.configuration.php#ini.oci8.events) in PHP
34
+ corresponds to {OCI8.properties OCI8.properties[:events_mode]} in ruby-oci8.
35
+
36
+ Note: You need to set `OCI8.properties[:events_mode]` after `"require 'oci8'"` and before
37
+ any methods which call Oracle OCI functions.
38
+
39
+ Fixed Issues
40
+ ------------
41
+
42
+ - fix SEGV when a temporary LOB is freed when `OCILobRead` returns `OCI_NEED_DATA`.
43
+ See: [github issue #20](https://github.com/kubo/ruby-oci8/issues/20)
44
+
45
+ (reported by Edgars Beigarts)
46
+
47
+ - use `RUBY_VERSION` instead of `RbConfig::CONFIG['ruby_version']` to know the
48
+ ruby ABI version. The latter may be changed by the configure option
49
+ --with-ruby-version.
50
+ See: [github issue #24](https://github.com/kubo/ruby-oci8/issues/24)
51
+
52
+ (reported by suhrawardi)
53
+
54
+ - add a script encoding magic comment for ruby 2.0.0 preview2.
55
+ See: [github issue #25](https://github.com/kubo/ruby-oci8/issues/25)
56
+
57
+ (reported by aboltart)
58
+
59
+ - fix {OCI8#describe_table} not to follow synonyms until stack overflow.
60
+ Now the recursive level is limited to 20.
61
+ See: [github issue #26](https://github.com/kubo/ruby-oci8/issues/26)
62
+
63
+ (reported by Brian Henderson)
64
+
65
+ 2.1.3
66
+ =====
67
+
68
+ New Features
69
+ ------------
70
+
71
+ ### {OCI8::Cursor#statement}
72
+
73
+ It returns the text of the SQL statement prepared in the cursor.
74
+
75
+ cursor = conn.parse("select * from country where country_code = 'ja'")
76
+ cursor.statement # => "select * from country where country_code = 'ja'"
77
+
78
+ See: [github issue #16](https://github.com/kubo/ruby-oci8/issues/16)
79
+
80
+ Specification changes
81
+ ---------------------
82
+
83
+ ### License was changed to 2-clause BSD-style license.
84
+
85
+ The former license was same with old ruby (<= 1.9.2) license.
86
+
87
+ ### Oracle object type's DATE field type
88
+
89
+ Ruby-oci8 had returned a DateTime object when Oracle object type's DATE
90
+ field type was accessed. Now it returns a Time object.
91
+
92
+ Fixed Issues
93
+ ------------
94
+
95
+ - Fix to work with procedures and functions that return temporary lobs.
96
+ See: [github issue #13](https://github.com/kubo/ruby-oci8/issues/13)
97
+
98
+ (contributed by timon)
99
+
100
+ - Fix Oracle object type's DATE field tests.
101
+ See: [github issue #17](https://github.com/kubo/ruby-oci8/issues/17)
102
+
103
+ (reported by Yasuo Honda)
104
+
105
+ - Fix a sequence test failure on Oracle 11gR2.
106
+ See: [github issue #18](https://github.com/kubo/ruby-oci8/issues/18)
107
+
108
+ (reported by Yasuo Honda)
109
+
110
+ - Include COPYING files.
111
+ See: [github issue #19](https://github.com/kubo/ruby-oci8/issues/19)
112
+
113
+ (requested by Johannes Weberhofer)
114
+
115
+ - Fix SEGV when a temporary LOB is GCed while another LOB is read.
116
+ See: [github issue #20](https://github.com/kubo/ruby-oci8/issues/20)
117
+
118
+ (reported by techsplicer)
119
+
120
+ - Fix #<NoMethodError: undefined method `timezone' for Time:Class>
121
+ when ruby is less than 1.9.2 and an object type's time attribute is accessed.
122
+
123
+ 2.1.2
124
+ =====
125
+
126
+ Specification changes
127
+ ---------------------
128
+
129
+ ### Statement caching in OCI is disabled by default.
130
+
131
+ This is workaround about a SIGSEGV issue.
132
+ See: [oracle enhanced issue #162](https://github.com/rsim/oracle-enhanced/issues/162)
133
+
134
+ Fixed Issues
135
+ ------------
136
+
137
+ - delete code which overwrites signal handlers registered by ruby.
138
+ See: [rubyforge thread 50690](http://rubyforge.org/forum/forum.php?thread_id=50690&forum_id=1078)
139
+
140
+ - fix internal heap error in OCI.
141
+ See: [github issue #12](https://github.com/kubo/ruby-oci8/issues/12)
142
+
143
+ (reported by Yasuo Honda)
144
+
145
+ 2.1.1
146
+ =====
147
+
148
+ New Features
149
+ ------------
150
+
151
+ ### Statement caching in OCI
152
+
153
+ See {http://docs.oracle.com/cd/E11882_01/appdev.112/e10646/oci09adv.htm#i471377}.
154
+ This feature is enabled only when the Oracle client is 9iR2 or upper.
155
+
156
+ The default cache size is 20. It can be changed as follows.
157
+
158
+ # change the size to 100.
159
+ OCI8.properties[:statement_cache_size] = 100
160
+
161
+ Note: The default size was changed to zero in 2.1.2.
162
+
163
+ Specification changes
164
+ ---------------------
165
+
166
+ ### OCI8::LOB#read() returns an empty string '' when it is an empty lob.
167
+
168
+ It had been returned nil.
169
+
170
+ Fixed Issues
171
+ ------------
172
+
173
+ - OCI8::CLOB.new(conn, '') works now.
174
+
175
+ - fix core dump when calling PL/SQL procedure with cursor argument.
176
+ See: {https://github.com/kubo/ruby-oci8/issues/11}
177
+
178
+ (reported by Raimonds Simanovskis)
179
+
180
+ - fix testcase failures in DST.
181
+ See: {https://github.com/kubo/ruby-oci8/issues/8}
182
+
183
+ (reported by Yasuo Honda)
184
+
185
+ - fix a compilation issue on Redhat.
186
+
187
+ (reported by John Beckwith and others)
188
+
189
+ - fix "wrong number of arguments (1 for 2)" when a date member in a object type is accessed.
190
+
191
+ (repored by Leoš Bitto)
192
+
193
+ 2.1.0
194
+ =====
195
+
196
+ New Features
197
+ ------------
198
+
199
+ ### OCI connection pooling
200
+
201
+ See: {OCI8::ConnectionPool}
202
+
203
+ ### Daylight saving time aware if TZ is set.
204
+
205
+ You should set the environment variable TZ if your applications run
206
+ in a time zone with daylight saving time transitions.
207
+ Otherwise, Oracle session time zone is set with current constant
208
+ offset from GMT.
209
+ (reported by Yasuo Honda)
210
+
211
+ ### connect as sysasm (Oracle 11g only)
212
+
213
+ You can connect to the Oracle server as SYSASM privilege as follows:
214
+
215
+ OCI8.new('username/password as sysasm')
216
+
217
+ or
218
+
219
+ OCI8.new('username', 'password', nil, :SYSASM)
220
+
221
+ ### Oracle number is converted to ruby float exactly same as ruby does.
222
+
223
+ From ruby 1.9.2, a float value converted from Oracle number 15.7 by
224
+ the Oracle function OCINumberToReal() makes a string representation
225
+ 15.700000000000001 by `Float#to_s`. (See: {http://redmine.ruby-lang.org/issues/4656})
226
+ To avoid this issue, any Oracle number is converted to a float as
227
+ ruby's `String#to_f` does.
228
+
229
+ The behavior is customizable by {OCI8.properties OCI8.properties[:float\_conversion\_type]}.
230
+
231
+ OCI8.properties[:float_conversion_type] = :oracle # => Use OCINumberToReal()
232
+ OCI8.properties[:float_conversion_type] = :ruby # => Use String#to_f
233
+
234
+ The default value is :ruby.
235
+
236
+ ### `OCISuccessWithInfo` exceptions are not raised any more.
237
+
238
+ Ruby-oci8 2.0 treats `OCI_SUCCESS_WITH_INFO` in OCI layer as an error
239
+ and raise an exception {OCISuccessWithInfo} such as "ORA-24347: Warning of
240
+ a NULL column in an aggregate function" and "ORA-28002: the password will
241
+ expire within xx days."
242
+
243
+ From 2.1.0, it is treated as a warning and the exception is set
244
+ to {OCI8#last_error}.
245
+
246
+ ### {OCI8#last_error} is added.
247
+
248
+ The last error or warning associated with the session is set to
249
+ {OCI8#last_error}. The usecase is to detect {OCISuccessWithInfo}.
250
+ It is reset by {OCI8#exec} and {OCI8#parse}.
251
+
252
+ ### Experimental support of character length semantics
253
+
254
+ {OCI8.properties OCI8.properties[:length\_semantics]} indicates length semantics
255
+ of {OCI8::Cursor#bind\_param}. When it is `:char`, the length is counted by the
256
+ number of characters. When it is `:byte`, it is counted by the number of
257
+ bytes.
258
+
259
+ ### {OCI8.client\_charset\_name} and {OCI8#database\_charset\_name} are added.
260
+
261
+ They return Oracle charset name such as WE8ISO8859P15.
262
+
263
+ Specification changes
264
+ ---------------------
265
+
266
+ ### The parent class {OCINoData} was changed from {OCIException} to {OCIError}.
267
+
268
+ ### Oracle 8 and Oracie 8i is not supported anymore.
269
+
270
+ Fixed Issues
271
+ ------------
272
+
273
+ - Fix a bug that an array is always bound as null.
274
+ This bug was introduced in ruby-oci8 2.0.5.
275
+
276
+ (reported by Leoš Bitto)
277
+
278
+ - Avoid a gcc internal compiler error when using ruby1.9.2-p290 on
279
+ ubuntu 11.10 (64bit).
280
+
281
+ (reported by Bob Saveland.)
282
+
283
+ - Fix compilation problems on Solaris.
284
+
285
+ (Reported by Sanjiv Patel.)
286
+
287
+ - Fix compilation problems on Linux.
288
+
289
+ (Reported by Edgars Beigarts.)
290
+
291
+ - Connections are released by GC without explicit logoff.
292
+
293
+ - Set ruby encoding CP950 for oracle characterset ZHT16MSWIN950 and
294
+ CP951 for ZHT16HKSCS and ZHT16HKSCS31 when the ruby is 1.9.3.
295
+
296
+ - Clear an executuing thread information in a connection when a SQL
297
+ executions is canceled by Thread#kill or Timeout::timeout.
298
+
299
+ (reported by Aaron Qian)
300
+
301
+ - Fix some test cases for object type and TZ issues.
302
+
303
+ (reported by Yasuo Honda)
304
+
305
+ - Use Gem::Command.build_args to get arguments after '--'.
306
+
307
+ (reported by jbirdjavi)
308
+
309
+ 2.0.6
310
+ =====
311
+
312
+ Fixed issues
313
+ ------------
314
+
315
+ - fix SEGV when freeing a temporary LOB during GC on rubinius 1.2.3.
316
+
317
+ - revert the exception type from RuntimeError to OCIException when
318
+ a closed OCI handle's method is called. It was chaned in 2.0.5
319
+ by mistake.
320
+
321
+ 2.0.5
322
+ =====
323
+
324
+ New Features
325
+ ------------
326
+
327
+ ### Support Rubinius.
328
+
329
+ ### {OraNumber#has\_decimal\_part?} is added.
330
+
331
+ Example:
332
+
333
+ OraNumber(10).has_decimal_part? # => false
334
+ OraNumber(10.1).has_decimal_part? # => true
335
+
336
+ ### Limitted support for OraNumber's positive and negative infinity.
337
+
338
+ They are converted to '~' and '-~' respectively as described in
339
+ {http://www.ixora.com.au/notes/infinity.htm}.
340
+
341
+ ### {OCI8.properties} is added to control ruby-oci8 behaviour.
342
+
343
+ It supports :bind_string_as_nchar only for now.
344
+
345
+ ### {OCI8.properties}[:bind\_string\_as\_nchar] is added.
346
+
347
+ You need to set "`OCI8.properties[:bind_string_as_nchar] = true`"
348
+ if the database character set is not UTF-8 and 'NCHAR'/'NVARCHAR2' columns
349
+ contain characters which cannot be converted to the database character set.
350
+
351
+ See: {http://rubyforge.org/forum/forum.php?thread\_id=48838&forum\_id=1078}
352
+
353
+ Fixed issues
354
+ ------------
355
+
356
+ - Fix InvalidHandle errors on Rails.
357
+
358
+ (reported by Jordan Curzon and Aaron Qian)
359
+
360
+ See: {http://rubyforge.org/forum/forum.php?thread\_id=49751&forum\_id=1078}
361
+
362
+ - Raise "OCIError: ORA-01805: possible error in date/time operation"
363
+ when Oracle 11gR2's client and server timezone versions are not same
364
+ instead of raising a exception "undefined method `*' for nil:NilClass."
365
+
366
+ See: {http://rubyforge.org/forum/forum.php?thread\_id=49102&forum\_id=1078}
367
+
368
+ - Fix unexpectedly disconnect when failed-logon connections is GC'ed
369
+ and the connection object's address is accidentally same with
370
+ an alive connection.
371
+
372
+ - Fix segmentation fault when calling {OCI8::Cursor#[]} for
373
+ closed statement objects.
374
+
375
+ (reported by Hugo L. Borges)
376
+
377
+ - Fix a bug that a string is bound to RAW.
378
+ Its encoding had been convertd to {OCI8.encoding} incorrectly.
379
+
380
+ - Fix memory leaks when temporary lobs are used.
381
+
382
+ - Fix a problem to assign 'NULL' bind value to object type bind variables.
383
+
384
+ (reported by Raimonds Simanovskis)
385
+
386
+ - Support LOB datatypes in object type.
387
+
388
+ (reported by Michael Sexton)
389
+
390
+ - Fix to compile on cygwin. The declaration of 'boolean' in Oracle
391
+ conflicts with that of latest cygwin.
392
+
393
+ (reported by Don Hill).
394
+
395
+ - Fix to complie for the 32-bit ruby which was compiled on x86\_64 linux
396
+ and configured without '--build', '--host' nor '--target'.
397
+ The 'RUBY_PLATFORM' is 'x86_64-linux' even though the ruby is 32-bit.
398
+
399
+ (reported by Jason Renschler)
400
+
401
+ - Fix wrong dependencies in Makefile when running 'make -jNNN (where NNN >= 2)'
402
+
403
+ (contributed by Alyano Alyanos. See bug #28129 on rubyforge.)
404
+
405
+ - Fix to compile on HP-UX. Duplicated const qualifiers prevented HP-UX cc
406
+ from compiling.
407
+
408
+ (reported by Sebastian YEPES)
409
+
410
+ 2.0.4
411
+ =====
412
+
413
+ New Features
414
+ ------------
415
+
416
+ ### {OCI8.error_message} is added.
417
+
418
+ Gets the Oracle error message specified by message id.
419
+ Its language depends on 'NLS_LANGUAGE'.
420
+
421
+ Note: This method is unavailable if the Oracle client version is 8.0.
422
+
423
+ # When NLS_LANG is AMERICAN_AMERICA.AL32UTF8
424
+ OCI8.error_message(1)
425
+ # => "ORA-00001: unique constraint (%s.%s) violated"
426
+
427
+ # When NLS_LANG is FRENCH_FRANCE.AL32UTF8
428
+ OCI8.error_message(1)
429
+ # => "ORA-00001: violation de contrainte unique (%s.%s)"
430
+
431
+ ### {OraNumber#dump} is added.
432
+
433
+ Returns {OraNumber}'s internal representation whose format
434
+ is same with the return value of Oracle SQL function DUMP().
435
+
436
+ OraNumber.new(100).dump #=> "Typ=2 Len=2: 194,2"
437
+ OraNumber.new(123).dump #=> "Typ=2 Len=3: 194,2,24"
438
+ OraNumber.new(0.1).dump #=> "Typ=2 Len=2: 192,11"
439
+
440
+ Fixed issues
441
+ ------------
442
+
443
+ - Fractional second part is lost when ruby's Time instance is bound
444
+ to Oracle datatype TIMESTAMP.
445
+
446
+ (reported by Raimonds Simanovskis)
447
+
448
+ - {OraNumber#to\_i} and {OraNumber#to\_s} fail when its scale is larger
449
+ than 38.
450
+
451
+ (reported by Raimonds Simanovskis)
452
+
453
+ - Memory leak about 30 bytes per one place holder for object type.
454
+
455
+ - Segmentation fault when a collection of string is bound.
456
+
457
+ (reported by Raimonds Simanovskis)
458
+
459
+ - Segmentation fault when GC starts while initializing a bind
460
+ object for object type.
461
+
462
+ (reported by Remi Gagnon)
463
+
464
+ - Segmentation fault when OCI8::Cursor#fetch is called prior to
465
+ {OCI8::Cursor#exec}.
466
+
467
+ - Detailed error message is not reported when 'PL/SQL NO_DATA_FOUND'
468
+ exception is raised.
469
+
470
+ (reported by Raimonds Simanovskis)
471
+
472
+ 2.0.3
473
+ =====
474
+
475
+ Incompatible Changes
476
+ --------------------
477
+
478
+ ### Number column in a SQL statement
479
+
480
+ Changes the default data type for number column which fit neither
481
+ Integer nor Float from {OraNumber} to BigDecimal.
482
+
483
+ conn.exec("select 1.0 from dual") do |row|
484
+ p row[0] # => BigDecimal("1") if the ruby-oci8 version is 2.0.3.
485
+ # => OraNumber(1) if the version is 2.0.2.
486
+ end
487
+
488
+ ### Priority of OraNumber within numerical types
489
+
490
+ The return types of basic arithmetic operations with other numerical
491
+ types are changed.
492
+
493
+ 2.0.3:
494
+
495
+ OraNumber + Integer => OraNumber (OraNumber wins.)
496
+ OraNumber + Float => Float (OraNumber loses.)
497
+ OraNumber + Rational => Rational (OraNumber loses.)
498
+ OraNumber + BigDecimal => BigDecimal (OraNumber loses.)
499
+
500
+ 2.0.2:
501
+
502
+ OraNumber + Integer => OraNumber (OraNumber wins always.)
503
+ OraNumber + Float => OraNumber
504
+ OraNumber + Rational => OraNumber
505
+ OraNumber + BigDecimal => OraNumber
506
+
507
+ ### Interval day to second
508
+
509
+ The retrived value of Oracle data type "interval day to second"
510
+ was changed from the number of days as a Rational to the number
511
+ of seconds as a Float by default.
512
+ Use 'OCI8::BindType::IntervalDS.unit = :day' to make it compatible
513
+ with the previous versions.
514
+
515
+ conn.exec("select to_dsinterval('0 00:00:01') from dual") do |row|
516
+ p row[0] # => 1.0 if the version is 2.0.3 and
517
+ # OCI8::BindType::IntervalDS.unit is :second.
518
+ # => (1/86400) if the version is 2.0.3 and
519
+ # OCI8::BindType::IntervalDS.unit is :day or
520
+ # the version is 2.0.2.
521
+ end
522
+
523
+ ### Date, timestamp, timestamp with time zone data types and ruby 1.9.2
524
+
525
+ These data types are retrived always as Time values when the
526
+ ruby version is 1.9.2 because the Time class is enhanced to
527
+ represent any time zone and is free from year 2038 problem.
528
+
529
+ Prior to ruby 1.9.2, if the time cannot be represented by
530
+ Unix time or the time zone is neither utc nor local, they are
531
+ retrived as DateTime values.
532
+
533
+ ### Non-blocking mode and ruby 1.9
534
+
535
+ Non-blocking mode is enabled by default when the ruby is 1.9.
536
+
537
+ New Features
538
+ ------------
539
+
540
+ ### BigDecimal and Rational are availabe as bind values.
541
+
542
+ ### New methods {OCI8#module=}, {OCI8#action=} and {OCI8#client_info=} are added.
543
+
544
+ These methods change the module name, the action name and the client_info
545
+ in the current session respectively.
546
+
547
+ After Oracle 10g client, these don't perform network round trips.
548
+ The change is reflected to the server by the next round trip such as
549
+ {OCI8#exec}, {OCI8#ping}, etc.
550
+
551
+ Prior to Oracle 10g client, these call PL/SQL functions such as
552
+ `DBMS_APPLICATION_INFO.SET_MODULE`, `DBMS_APPLICATION_INFO.SET_ACTION`,
553
+ and `DBMS_APPLICATION_INFO.SET_CLIENT_INFO` internally.
554
+ The change is reflected immediately by a network round trip.
555
+
556
+ ### {OCI8::BindType.default_timezone}
557
+
558
+ The default time zone of Time or DateTime values. This parameter is used only when
559
+
560
+ * date values are fetched and the Oracle client version is 8.x
561
+
562
+ or
563
+
564
+ * object types have date data type attributes.
565
+
566
+ Note that if the Oracle client version is 9i or upper, the time
567
+ zone is determined by the session time zone. The default value
568
+ is local time zone. You can change it to GMT by executing the
569
+ following SQL statement for each connection.
570
+
571
+ alter session set time_zone = '00:00'
572
+
573
+ Note: The session time zone is set by the environment variable TZ from
574
+ ruby-oci8 2.1.0.
575
+
576
+ Other specification changes
577
+ ---------------------------
578
+
579
+ - Add a global function OraNumber(obj) as a shortcut of OraNumber.new(obj)
580
+ as Rational and BigDecimal do.
581
+
582
+ - Fix to accept nil attribute in object type's
583
+ constructors. This works only for simple data types such as number,
584
+ string. But it doesn't for complex types such as object types.
585
+ (requested by Remi Gagnon)
586
+
587
+ - add DATE datatype support in object types.
588
+
589
+ - Change {OCI8::LOB#write} to accept an object which is not a String and
590
+ doesn't respond to 'to_str' as IO#write does.
591
+ (requested by Christopher Jones)
592
+
593
+ - Change the initial polling interval of
594
+ non-blocking mode for ruby 1.8 from 100 msec to 10 msec, which
595
+ is same with ruby-oci8 1.0.
596
+
597
+ Fixed installation issues
598
+ -------------------------
599
+
600
+ - Fix oraconf.rb for ruby 1.8.5 with Oracle 8.x which needs some object
601
+ files to link with.
602
+
603
+ (reported by Jayson Cena)
604
+
605
+ - Fix oraconf.rb for ruby 1.9.2 preview1.
606
+
607
+ (pointed by Raimonds Simanovskis)
608
+
609
+ - Fix oraconf.rb to compile for AIX instant clients.
610
+
611
+ (reported by Kazuya Teramoto)
612
+
613
+ 2.0.2
614
+ =====
615
+
616
+ * add new methods
617
+ - {OCI8#select_one}
618
+
619
+ - {OCI8#ping} -> true or false
620
+
621
+ Verifies that the Oracle connection is alive.
622
+ {OCI8#ping} also can be used to flush all the pending OCI
623
+ client-side calls to the server if any exist.
624
+
625
+ - {OCI8#client\_identifier=}client\_id
626
+
627
+ Look at the following link to know what is the client identifier.
628
+ {http://it.toolbox.com/blogs/database-solutions/oracle-session-tracing-part-i-16356}
629
+
630
+ Note that the specified identifier doesn't change the v$session
631
+ immediately. It is done by the next network round trip
632
+ such as OCI8#exec or OCI8#ping.
633
+
634
+ * fix problems when compiling with Oracle 9.2 and 8.0.
635
+
636
+ (reported by Axel Reinhold)
637
+
638
+ * [dbi] fix to pass a newly added sanity check in dbi 0.4.1.
639
+
640
+ (reported by Dirk Herzhauser)
641
+
642
+ * fix an error when executing "select NULL from dual".
643
+
644
+ {http://rubyforge.org/forum/forum.php?thread\_id=32468&forum\_id=1078}
645
+ (contributed by Raimonds Simanovskis)
646
+
647
+ * [ruby 1.9] fix OCI8::BLOB to read/write binary. Prior to 2.0.1,
648
+
649
+ it was treated as text tagged with 'NLS_LANG' encoding.
650
+
651
+ * [ruby 1.9] fix to bind string data by the length got from String#bytesize
652
+ converted to {OCI8.encoding}, not by String#size.
653
+
654
+ 2.0.1
655
+ =====
656
+
657
+ * release a binary gem for Windows, which contains libraries for both
658
+ ruby 1.8 and ruby 1.9.1.
659
+ * add {OCI8#oracle\_server\_version}.
660
+ * fix bugs when fetching and binding time objects.