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