Fetching contributors…
Cannot retrieve contributors at this time
3603 lines (3046 sloc) 159 KB
2018-01-28 Kubo Takehiro <>
* ext/oci8/object.c, lib/oci8/object.rb: Add timestamp with time zone
data type support in object type attributes.
(github issue #185)
* test/setup_test_object.sql, test/test_object.rb: Add tests for
timestamp and timestamp with time zone.
2018-01-23 Kubo Takehiro <>
* ext/oci8/object.c, ext/oci8/oci8.h, lib/oci8/object.rb:
Add timestamp data type support in object type attributes.
(github issue #185)
2017-12-27 Kubo Takehiro <>
* mkpkg-win32.rb: Remove '-rubygems' in the command line to run tests.
`ubygems.rb` was removed in ruby 2.5.
2017-12-27 Kubo Takehiro <>
* NEWS: Add changes between 2.2.5 and
* lib/oci8/version.rb: Update to
* mkpkg-win32.rb: Build binary gems for ruby 2.5.
2017-12-27 Kubo Takehiro <>
* test/test_clob.rb, test/test_oci8.rb: Suppress `warning: assigned but unused variable`
2017-12-26 Yasuo Honda <>
* circle.yml: CI with Ruby 2.5.0
(github pull request #182)
2017-12-21 Yasuo Honda <>
* test/test_break.rb: Suppress expected exceptions tested with Ruby 2.5
(github pull request #181)
2017-12-21 Yasuo Honda <>
* test/test_oranumber.rb: Suppress `warning: is deprecated`
(github pull request #180)
2017-10-21 Kubo Takehiro <>
* NEWS: Add changes between and 2.2.5
* lib/oci8/version.rb: Update to 2.2.5
* docs/ minor fix
* dist-files: Add files.
2017-10-18 Kubo Takehiro <>
* docs/,, dist-files: Add document
about the mapping between Oracle number types and Ruby classes.
2017-10-17 Kubo Takehiro <>
* lib/oci8/check_load_error.rb: Check error reason when loading
failed with 'The specified module could not be found' on Windows.
2017-10-17 Kubo Takehiro <>
* lib/oci8/check_load_error.rb: Fix LoadError while trying to check
errors in "require ''" on cygwin 2.8 or later.
(related to github issue #176)
2017-10-17 Kubo Takehiro <>
* ext/oci8/ocinumber.c, test/test_oranumber.rb:
Add OraNumber#has_fractional_part?.
2017-10-01 Kubo Takehiro <>
* ext/oci8/plthook_elf.c: Update plthook to use prelinked on Linux.
(github issue #172)
2017-09-27 Kubo Takehiro <>
* ext/oci8/oci8lib.c: Change order to load libclntsh when runtime
api check is enabled on Unix.
2017-09-24 Kubo Takehiro <>
* ext/oci8/oci8lib.c: Try to load $ORACLE_HOME/lib/ also
when runtime api check is enabled on Unix.
2017-09-23 Kubo Takehiro <>
* lib/oci8/cursor.rb: Don't call unnecessary __paramGet(i) when a
cursor is executed more than once.
(pointed by OMOTO Kenji at github issue #171)
2017-07-09 Kubo Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/oci8.c, lib/oci8/oci8.rb:
Delete unused code using OCILogon2 and OCILogoff.
2017-07-09 Kubo Takehiro <>
* ext/oci8/error.c: Delete OCIError#initialize defined by C code
to suppress warning: method redefined; discarding old initialize.
(github issue #168)
2017-06-17 Kubo Takehiro <>
* NEWS: Add changes between 2.2.4 and
* lib/oci8/version.rb: Update to
* lib/oci8/properties.rb: Fix URL links
* docs/ Revised
2017-06-16 Kubo Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/hook_funcs.c, ext/oci8/oci8lib.c:
Fix to pass compilation on cygwin.
* mkpkg-win32.rb: Add tests on cygwin.
2017-06-16 Kubo Takehiro <>
* ext/oci8/hook_funcs.c: Fix the calling convention of setsockopt
on Windows x86.
2017-06-11 Kubo Takehiro <>
* NEWS: Add changes between 2.2.3 and 2.2.4.
* lib/oci8/version.rb: update to 2.2.4.
* docs/,
docs/ updated
2017-06-08 Kubo Takehiro <>
* lib/oci8.rb: Remove added dll directory after 'require'.
(RubyInstaller2 for Windows only)
2017-06-06 Kubo Takehiro <>
* docs/ revise
* dist-files: add docs/
2017-06-06 Kubo Takehiro <>
* mkpkg-win32.rb: Use RubyInstaller2 to compile binary gems for
ruby 2.4 on Windows.
2017-05-31 Kubo Takehiro <>
* docs/
Add a document about tcp_keepalive and tcp_keepalive_time properties.
*, docs/, lib/oci8/properties.rb:
Add links to the TCP keepalive document.
2017-05-21 Kubo Takehiro <>
* docs/ Add a link to the Visual
C++ 2013 redistributable package required to use Oracle 12.2.
2017-05-08 Kubo Takehiro <>
* lib/oci8.rb: Fix for RubyInstaller2 for Windows.
2017-05-07 Kubo Takehiro <>
* ext/oci8/oraconf.rb: Use Win32::Registry instead of Win32API
to compile ruby-oci8 on the latest cygwin.
(github issue #167)
2017-02-14 Kubo Takehiro <>
* test/test_connstr.rb: fix test to pass the previous commit.
2017-02-14 Kubo Takehiro <>
* ext/oci8/hook_funcs.c, ext/oci8/oci8.c, ext/oci8/oci8.h,
lib/oci8/oci8.rb, lib/oci8/properties.rb:
Add tcp_keepalive options to
2017-01-14 Kubo Takehiro <>
* ext/oci8/env.c, ext/oci8/error.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c: Fix memory leaks when `require 'oci8'` raises a LoadError.
2017-01-08 Kubo Takehiro <>
* docs/, docs/
Update documents for installation on Windows.
2017-01-07 Kubo Takehiro <>
* ext/oci8/oci8lib.c: If exports and imports same
functions, their PLT entries are forcedly modified to point
to itself not to use functions in other libraries.
(Only on Linux and macOS)
*, docs/
Add document about "LDAP Authentication and Function Interposition."
2016-12-28 Yavor Nikolov <>
* add build status and Gem version badges
(merged at 2016-12-29)
2016-12-28 Yavor Nikolov <>
* add title, demote sections to H2
(merged at 2016-12-29)
2016-12-28 Yavor Nikolov <>
* lib/oci8/cursor.rb: Fix misleading cursor.bind_param header comment
Reword an obsolete description of bind_param - since currently there is no
restriction for Bignum nor for very large Integer values.
(merged at 2016-12-29)
2016-12-27 Yavor Nikolov <>
* dist-files, test/test_all.rb, test/test_bind_integer.rb:
Tests for binding integer cursor in parameters
Add tests for binding a range of small and large integer variables
directly (not through OraNumber).
(merged at 2016-12-29)
2016-12-26 Yavor Nikolov <>
* circle.yml, cisetup/create_ruby_user.sql, cisetup/oracle/,
cisetup/oracle/, cisetup/
Add Circle CI build
(merged at 2016-12-28)
2016-12-26 Yavor Nikolov <>
* test/test_oci8.rb: Fix date/time test (expected time timezone). offset leads to unstable test due to DST sensitivity.
The solution is to take the offset of the specific local date/time.
(merged at 2016-12-28)
2016-12-25 Koichi ITO <>
* ext/oci8/encoding.c, ext/oci8/oci8.c, ext/oci8/ocihandle.c
ext/oci8/oraconf.rb, ext/oci8/oradate.c, ext/oci8/stmt.c
lib/oci8/cursor.rb: Integer Unification in Ruby 2.4.0+
(merged at 2016-12-29)
2016-12-27 Kubo Takehiro <>
* NEWS: Add changes between 2.2.2 and 2.2.3.
* lib/oci8/version.rb: update to 2.2.3.
* dist-files: add test/test_bind_array.rb
* mkpkg-win32.rb: add path to ruby 2.4.0
2016-12-26 Kubo Takehiro <>
* test/test_clob.rb, test/test_metadata.rb, test/test_object.rb,
test/test_oci8.rb, test/test_package_type.rb: Suppress warnings:
"Use assert_nil if expecting nil from ... in `...' This will
fail in MT6" printed by Minitest.
2016-12-26 Kubo Takehiro <>
* lib/oci8/bindtype.rb, lib/oci8/compat.rb, lib/oci8/oci8.rb,
test/config.rb: Suppress "warning: constant ::Fixnum is deprecated"
and "warning: constant ::Bignum is deprecated" due to integer
unification in ruby 2.4.0.
2016-12-14 Koichi ITO <>
* ext/oci8/ocinumber.c: Fix invalid value for BigDecimal in
Ruby 2.4.0+
2016-09-25 Kubo Takehiro <>
* ext/oci8/metadata.c, ext/oci8/oci8.c: Fix load error when
GC.stress = true.
2016-09-11 Kubo Takehiro <>
* ext/oci8/oci8.h: Suppress 'warning: "ALWAYS_INLINE" redefined' when
compiled for ruby 2.4.0-preview2.
2016-05-28 Kubo Takehiro <>
* docs/ Update installation document about OS X again.
2016-05-28 Kubo Takehiro <>
* docs/ Update installation document about OS X.
2016-04-24 Kubo Takehiro <>
* mkpkg-win32.rb: Added to compile mingw32 packages.
* dist-files: Updated to include docs/
2016-04-24 Kubo Takehiro <>
* NEWS: Add changes between 2.2.1 and 2.2.2.
* lib/oci8/version.rb: update to 2.2.2.
2016-04-24 Kubo Takehiro <>
* docs/ Use RbConfig::CONFIG instead of
deprecated Config::CONFIG.
2016-04-24 Kubo Takehiro <>
* lib/oci8/oci8.rb: Add OCI8::in_cond and OCI8:InCondBindHelper.
* test/test_all.rb, test/test_bind_array.rb: Add test of OCI8::in_cond.
*, docs/ Add document of OCI8::in_cond.
2016-04-10 Kubo Takehiro <>
* lib/oci8/connection_pool.rb: update document.
2016-03-27 Kubo Takehiro <>
* lib/oci8/object.rb: Suppress warning: instance variable
@name_to_tdo not initialized.
2016-03-27 Kubo Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/metadata.c, ext/oci8/object.c,
ext/oci8/oci8.h, lib/oci8/object.rb, test/setup_test_object.sql,
test/test_object.rb: Check object type from each object instance
when an Oracle object is got from a bind parameter.
(github issue #119)
2016-03-27 Kubo Takehiro <>
* lib/ruby-oci8.rb: Added for 'Bundler.require'.
(github issue #114)
* dist-files: Add lib/ruby-oci8.rb.
2016-03-27 Kubo Takehiro <>
*, docs/, lib/oci8/oci8.rb:
Update documents about timeout parameters.
2016-03-18 Kubo Takehiro <>
* ext/oci8/oraconf.rb: Fix for mswin64.
2016-03-15 Kubo Takehiro <>
* docs/ Add a document
about conflicts between local connections and child process
handling on Unix.
* Add a link to a newly added file.
2016-03-13 Kubo Takehiro <>
* ruby-oci8.gemspec: Change the license name in gemspec to suppress the
following warning.
WARNING: license value '2-clause BSD-style license' is invalid.
Use a license identifier from or 'Nonstandard'
for a nonstandard license.
2016-01-29 Kubo Takehiro <>
* lib/oci8/oci8.rb, lib/oci8/properties.rb: Rename outbound_connect_timeout in
OCI8::properties to connect_timeout.
* docs/ Revise document.
2015-12-20 Kubo Takehiro <>
* lib/oci8/cursor.rb: Use OCI_ATTR_UB8_ROW_COUNT to get the number of processed rows
if Oracle client version is 12c or upper.
2015-12-20 Kubo Takehiro <>
* lib/oci8/oci8.rb, lib/oci8/properties.rb, test/test_connstr.rb:
Support tcp_connect_timeout, connect_timeout, send_timeout and
recv_timeout in OCI8::properties.
* .yardopts, dist-files, docs/ Add document
about timeout parameters.
2015-12-19 Kubo Takehiro <>
* lib/oci8/oci8.rb, lib/oci8/ocihandle.rb: Support SYSBACKUP, SYSDG
and SYSKM privileges.
(github issue #110)
2015-12-19 Kubo Takehiro <>
* ext/oci8/plthook_win32.c: Fix bug introduced by the previous commit
for mingw32 64-bit compiler.
(github issue #113)
2015-12-18 Kubo Takehiro <>
* ext/oci8/plthook_win32.c, ext/oci8/extconf.rb: Import the latest
plthook_win32.c for cygwin. Ruby-oci8 had not been compiled on
cygwin since 2.1.8.
(github issue #113)
2015-12-18 Kubo Takehiro <>
* ext/oci8/oraconf.rb: Fix a linkage error on cygwin and mingw32
when installing without `--with-runtime-check`.
This bug was introduced in ruby-oci8 2.2.1.
(github issue #113)
2015-11-28 Kubo Takehiro <>
* ext/oci8/oraconf.rb: Check the default value of DYLD_FALLBACK_LIBRARY_PATH
after checking OCI_DIR. (OS X only)
2015-11-01 Kubo Takehiro <>
* NEWS: Add changes between and 2.2.1.
* lib/oci8/version.rb: update to 2.2.1.
2015-11-01 Kubo Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h: Delete unnecessary checks.
* ext/oci8/oraconf.rb: Reduce time to build an import library on
Mingw32 and Cygwin.
2015-11-01 Kubo Takehiro <>
* lib/oci8/oci8.rb: delete code for Oracle 8i.
2015-10-26 Kubo Takehiro <>
* ext/oci8/oci8lib.c: Fix handle leaks when OCI8#ping is used and
the Oracle client version is 10gR1.
This bug was introduced in ruby-oci8 2.2.0.
2015-10-26 Kubo Takehiro <>
* ext/oci8/oci8lib.c: Revive code dropped in ruby-oci8 2.2.0.
This prevents potential SEGV on ruby process termination.
2015-10-26 Kubo Takehiro <>
* ext/oci8/ocinumber.c: Drop code for ruby 1.8.
Rational has been a built-in type since ruby 1.9.
2015-10-20 Kubo Takehiro <>
* ext/oci8/bind.c, lib/oci8/bindtype.rb, test/test_all.rb,
test/test_bind_boolean.rb: Support boolean type binding.
2015-10-19 Kubo Takehiro <>
* ext/oci8/apiwrap.yml: Delete unused OCI function definitions.
2015-10-19 Kubo Takehiro <>
* ext/oci8/extconf.rb: Use macros OCI_MAJOR_VERSION and OCI_MINOR_VERSION
in oci.h to check the target Oracle client version.
2015-10-12 Kubo Takehiro <>
* NEWS: Add changes between and
2015-10-12 Kubo Takehiro <>
* lib/oci8/version.rb: Update the version to to
release binary gems for mingw32.
2015-10-11 Kubo Takehiro <>
* NEWS: Add changes between 2.2.0 and
* docs/ Fix indent width.
* lib/oci8/version.rb: update to
2015-10-11 Kubo Takehiro <>
* docs/osx-install-dev-tools.png: added.
* docs/ fix "Install C compiler."
* Use documents in as homepage.
2015-10-10 Kubo Takehiro <>
* ruby-oci8.gemspec: Change the required_ruby_version from '>= 1.8.0'
to '>= 1.9.1'.
(github issue #96)
2015-10-06 Kubo Takehiro <>
* Add notice that ruby 1.8 is not supported.
*, ext/oci8/oraconf.rb: Change links to ruby-oci8 documents.
They had referred docs generated from the latest gem. They were
updated only when a new version was released. Now they refers
to docs generated from the latest github repository. They are
updated for each commits.
2015-10-05 Kubo Takehiro <>
* docs/ Merge GH-97: Fix small typo in NEWS file.
2015-10-04 Kubo Takehiro <>
* NEWS: Add changes between 2.1.8 and 2.2.0.
2015-10-04 Kubo Takehiro <>
* ext/oci8/oci8lib.c: Fix compilation errors when --with-runtime-check
is passed to extconf.rb.
2015-10-04 Kubo Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/stmt.c: Use OCIStmtPrepare2 as
a local function, which doesn't require a server round-trip.
Local functions are executed without releasing the GVL.
2015-10-04 Kubo Takehiro <>
* docs/ Add notice that OCI_DIR is necessary
when Homebrew is installed outside /usr/local.
* Add a link to
2015-10-03 Kubo Takehiro <>
* docs/ Merge GH-95: Add OCI_DIR export to
Homebrew Installation Steps
2015-09-29 Kubo Takehiro <>
* docs/, .yardopts: Add a new file for
installation on OS X.
* docs/ Delete installation steps
on OS X.
2015-09-26 Kubo Takehiro <>
* lib/oci8/check_load_error.rb: Refactoring.
2015-09-26 Kubo Takehiro <>
* ext/dist-files, ext/oci8/extconf.rb, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/osx.c: Revert the previous commit.
2015-09-19 Kubo Takehiro <>
* ext/dist-files, ext/oci8/extconf.rb, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/osx.c: Intercept dlopen issued
by libclntsh.dylib to make OCIEnvCreate() work without
setting rpath to ruby itself.
** This commit was reverted. **
2015-09-19 Kubo Takehiro <>
* ext/oci8/oraconf.rb: Use OCI_DIR environmant variable also
to check instant client directory on OS X.
(github issue #89)
2015-09-19 Kubo Takehiro <>
* ext/oci8/oci8.h: Define STRINGIZE macro for rubinius.
2015-09-19 Kubo Takehiro <>
* Update supported Oracle version.
* dist-files: Add lib/oci8/check_load_error.rb.
* ext/oci8/extconf.rb: Reduce the number of #define values.
2015-09-17 Kubo Takehiro <>
* lib/oci8/oci8.rb: Change the driver name displayed in
"ruby-oci8 : VERSION".
* test/test_oci8.rb: Fix a test checking the driver name.
(github issue #93)
2015-09-13 Kubo Takehiro <>
* NEWS, docs/, ext/oci8/oraconf.rb,
lib/oci8/properties.rb, ruby-oci8.gemspec: Fix links to rubyforge.
2015-09-13 Kubo Takehiro <>
* ruby-oci8.gemspec: Use Kernel.load instead of load not to use Gem::Specification.load.
2015-09-13 Kubo Takehiro <>
* .gitignore: Ignore ext/oci8/*.bundle.
2015-09-12 Kubo Takehiro <>
* ext/oci8/lob.c: Add notice that OCI8::LOB is an I/O object and is closed
when a associating connection is closed.
2015-09-12 Kubo Takehiro <>
* lib/oci8/oci8.rb: Add ruby-oci8 version to
(suggested by Christopher Jones)
2015-08-24 Kubo Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/lob.c: Support LOB whose size is
over 4G.
2015-08-23 Kubo Takehiro <>
* dist-files: Add ext/oci8/util.c.
2015-07-12 Kubo Takehiro <>
* docs/ Add instant client installation
instructions on OS X using homebrew.
2015-07-12 Kubo Takehiro <>
* ext/oci8/oci8.rb: Check DYLD_FALLBACK_LIBRARY_PATH also on
installation. (OS X only)
2015-07-11 Kubo Takehiro <>
* ext/oci8/error.c, ext/oci8/extconf.rb, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/util.c, ext/oci8/win32.c,
lib/oci8/encoding-init.rb: Delete OCI8::Win32Util.dll_path
and add OCI8::Util.dll_path, which works on Linux, Solaris,
OS X and HP-UX in addition to Windows.
2015-06-26 Kubo Takehiro <>
* lib/oci8.rb, lib/oci8/check_load_error.rb: Check the message of
LoadError and raise more user-friendly message.
2015-06-23 Kubo Takehiro <>
* ruby-oci8.gemspec: Load oci8/version.rb temporarily and delete OCI8.
Some 'bundler' tasks load 'ruby-oci8.gemspec' before 'require "oci8"'
and fail with 'TypeError: superclass mismatch for class OCI8.'
(github issue #80)
2015-06-21 Kubo Takehiro <>
* ruby-oci8.gemspec: Use ruby-oci8 version in lib/oci8/version.rb
instead of VERSION file to generate gem.
(github issue #79)
2015-06-21 Kubo Takehiro <>
* Makefile, dist-files, ext/oci8/extconf.rb, ext/oci8/oci8.c: Use
ruby-oci8 version in lib/oci8/version.rb instead of VERSION file.
* VERSION: Deleted
* lib/oci8/version.rb: Added
* lib/oci8.rb, lib/ Renamed lib/oci8.rb to lib/
2015-06-21 Kubo Takehiro <>
* lib/oci8/encoding-init.rb: Get Oracle client charset name from
the environment handle instead of NLS_LANG.
2015-06-20 Kubo Takehiro <>
* ext/oci8/oci8.h: Fix a compilation error.
2015-06-20 Kubo Takehiro <>
* lib/oci8/oci8.rb: Change the default prefetch rows size 100.
2015-06-20 Kubo Takehiro <>
* ext/oci8/extconf.rb: Delete an object file created by extconf.rb
before compilation.
(github issue #75)
2015-06-20 Kubo Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/stmt.c:
Delete unreachable code which was created when Oracle 9i support was dropped.
2015-05-24 Kubo Takehiro <>
* ext/oci8/encoding.c: Add OCI8.charset_name2id and OCI8.charset_id2name.
Mark OCI8#charset_name2id and OCI8#charset_id2name as deprecated.
2015-05-23 Kubo Takehiro <>
* ext/oci8/bind.c, ext/oci8/encoding.c, ext/oci8/error.c, ext/oci8/oci8.c,
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/stmt.c,
lib/oci8/metadata.rb, lib/oci8/properties.rb:
Drop Oracle 9i support.
2015-05-22 Kubo Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/encoding.c, ext/oci8/env.c,
ext/oci8/extconf.rb, ext/oci8/lob.c, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/ocinumber.c, ext/oci8/thread_util.c,
ext/oci8/thread_util.h, lib/oci8/bindtype.rb, lib/oci8/encoding-init.rb,
lib/oci8/oci8.rb: Drop ruby 1.8 support.
2015-04-04 Kubo Takehiro <>
* NEWS: add changes between 2.1.7 and 2.1.8.
* VERSION: update to 2.1.8.
* dist-files: add new files.
2015-04-04 Kubo Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h: Add a macro for old rubies which
don't have rb_str_set_len().
* ext/oci8/hook_funcs.c: Suppress a warning.
2015-04-04 Kubo Takehiro <>
* ext/oci8/lob.c: Increase the buffer size to read a LOB.
2015-04-04 Kubo Takehiro <>
* docs/, ext/oci8/lob.c, ext/oci8/metadata.c,
ext/oci8/oci8.c: Update documents for YARD.
2015-04-02 Kubo Takehiro <>
* ext/oci8/lob.c: Fix SEGV when a temporary LOB is freed by GC
while reading another lob and the ruby version is 2.0.0 or
2015-03-01 Kubo Takehiro <>
* lib/oci8/cursor.rb, lib/oci8/properties.rb:
Fix errors while generating documents by yard such as
"Exception occurred while generating 'OCI8/Cursor.html'."
2015-03-01 Kubo Takehiro <>
* ext/oci8/oci8.c, ext/oci8/oci8.h: Rollback transactions on
logoff only when the transactions are in progress.
2015-01-27 Kubo Takehiro <>
* ext/oci8/ocihandle.c, ext/oci8/ocinumber.c, ext/oci8/oradate.c,
ext/oci8/stmt.c: Suppreess warnings: "[warn]: @param tag has unknown parameter name: xxx"
by yard.
2015-01-20 Kubo Takehiro <>
* lib/oci8/oci8.rb: Add OCI8#send_timeout, OCI8#send_timeout=,
OCI8#recv_timeout and OCI8#recv_timeout=.
2015-01-20 Kubo Takehiro <>
* ext/oci8/hook_funcs.c, ext/oci8/oci8.c, ext/oci8/oci8.h:
Fix for cancel_read_at_exit on Windows.
2015-01-20 Kubo Takehiro <>
* ext/oci8/oci8.c, ext/oci8/oci8lib.c, lib/oci8/properties.rb:
2015-01-20 Kubo Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/hook_funcs.c, ext/oci8/oci8.c,
ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/plthook.h,
ext/oci8/plthook_elf.c, ext/oci8/plthook_osx.c,
ext/oci8/plthook_win32.c: Cancel read system calls at exit
not to block ruby process termination.
This works on Linux, OSX and Windows Vista or upper.
(github issue #56)
2015-01-12 Kubo Takehiro <>
* Fix a broken link.
(github issue #67 reported by Zloy)
2014-12-30 Kubo Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8lib.c: Revise type checking of LOB.
2014-12-30 Kubo Takehiro <>
* ext/oci8/bind.c, ext/oci8/connection_pool.c, ext/oci8/lob.c,
ext/oci8/metadata.c, ext/oci8/object.c, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/ocihandle.c, ext/oci8/stmt.c:
Add oci8_check_typeddata() and use it instead of oci8_get_handle()
and oci8_get_bind().
2014-12-30 Kubo Takehiro <>
* ext/oci8/oradate.c: Add check_oradate() to check datatype.
2014-12-30 Kubo Takehiro <>
* ext/oci8/lob.c, ext/oci8/metadata.c, ext/oci8/object.c, ext/oci8/stmt.c:
Add more write barriers.
2014-12-29 Kubo Takehiro <>
* ext/oci8/bind.c, ext/oci8/connection_pool.c, ext/oci8/lob.c,
ext/oci8/metadata.c, ext/oci8/object.c, ext/oci8/oci8.c, ext/oci8/oci8.h
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/ocihandle.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/stmt.c:
Use rb_data_type_t as the base type of oci8_handle_data_type_t.
2014-12-29 Kubo Takehiro <>
* ext/oci8/bind.c, ext/oci8/connection_pool.c, ext/oci8/lob.c,
ext/oci8/metadata.c, ext/oci8/object.c, ext/oci8/oci8.c, ext/oci8/oci8.h
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/ocihandle.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/stmt.c:
Rename vtable and vptr to data_type.
2014-12-29 Kubo Takehiro <>
* ext/oci8/bind.c, ext/oci8/connection_pool.c, ext/oci8/lob.c,
ext/oci8/metadata.c, ext/oci8/object.c, ext/oci8/oci8.c, ext/oci8/oci8.h
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/ocihandle.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/stmt.c:
Add oci8_allocate_typeddata() and use it to allocate OCI objects.
2014-12-23 Kubo Takehiro <>
* ext/oci8/connection_pool.c, ext/oci8/metadata.c, ext/oci8/object.c,
ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/ocihandle.c
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/stmt.c:
Add write barriers to use generational GC.
2014-12-23 Kubo Takehiro <>
* ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/ocihandle.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c:
Use TypedData on ruby 1.9.3 and later.
2014-12-22 Kubo Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/stmt.c: Don't use SYM2ID on ruby 2.2.0
or later. Symbols passed to SYM2ID are not GC'ed.
2014-12-21 Kubo Takehiro <>
* ext/oci8/bind.c, ext/oci8/object.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/ocidatetime.c, ext/oci8/ocihandle.c, ext/oci8/ocinumber.c:
Use RARRAY_AREF and RARRAY_CONST_PTR for Generational GC.
2014-12-06 Kubo Takehiro <>
* ext/oci8/connection_pool.c, ext/oci8/lob.c, ext/oci8/oci8.c,
ext/oci8/stmt.c: Fix "RuntimeError:executing in another thread"
when a closed connection is used. This bug was introduced by
the previous commit.
(github issue #64 reported by Yasuo Honda)
2014-11-16 Kubo Takehiro <>
* ext/oci8/attr.c, ext/oci8/bind.c, ext/oci8/connection_pool.c,
ext/oci8/lob.c, ext/oci8/metadata.c, ext/oci8/object.c,
ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/ocihandle.c, ext/oci8/stmt.c:
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.
(github issue #61 and #62 reported by Mike Bourgeous)
2014-02-02 Kubo Takehiro <>
* NEWS: add changes between 2.1.7 and 2.1.6.
* VERSION: change the version to 2.1.7.
2014-01-25 Kubo Takehiro <>
* ext/oci8/extconf.rb, lib/ Follow ABI versioning after ruby 2.1.0.
2014-01-19 Kubo Takehiro <>
* docs/, docs/ Change down
load URL and filenames in examples.
2014-01-06 Kubo Takehiro <>
*, docs/, docs/,
docs/, ext/oci8/oraconf.rb, ruby-oci8.gemspec:
Move the project page and download URL to github.
2014-01-05 KUBO Takehiro <>
* ext/oci8/metadata.c, ext/oci8/oci8.h, lib/oci8/metadata.rb:
Fix OCI8#describe_table to follow synonyms in a remote database.
Add OCI8::Metadata::Base#obj_link.
2013-12-29 KUBO Takehiro <>
* NEWS: add changes between 2.1.6 and 2.1.5.
* VERSION: change the version to 2.1.6.
2013-12-28 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix for Windows x64. OCI.lib for MSVC doesn't
work with mingw64 compilers. fix URL in the error message.
2013-12-14 KUBO Takehiro <>
* lib/oci8/metadata.rb, test/test_metadata.rb: fix
OCI8::Metadata::Synonym#schema_name and #translated_name
for synonyms with a database link and without schema_name.
2013-12-14 KUBO Takehiro <>
* test/*.rb: suppress warnings "MiniTest::Unit::TestCase is now Minitest::Test"
when minitest gem is installed.
2013-12-14 KUBO Takehiro <>
* test/test_metadata.rb: fix tests in an environment where
the data size of "CAST('1' AS CHAR(1 char))" is wrong.
2013-11-18 KUBO Takehiro <>
* ext/oci8/oraconf.rb: support cygwin x86_64.
2013-11-10 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/lob.c, ext/oci8/object.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/ocihandle.c, ext/oci8/stmt.c:
use rb_class_new_instance() instead of rb_funcall() with rb_intern("new").
2013-11-09 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/extconf.rb, ext/oci8/oci8.h:
append the full path of the Oracle client library when OCIEnvCreate
is failed such as "OCI Library Initialization Error - /path/to/".
2013-11-09 KUBO Takehiro <>
* ext/oci8/extconf.rb, lib/ support rubinius 2.x whose
RUBY_VERSION is 2.1.0.
* ext/oci8/oraconf.rb: reduce the size of libOCI.a created for cygwin.
2013-11-09 KUBO Takehiro <>
* ext/oci8/extconf.rb, lib/ support ruby 2.1.0-preview1.
(requested by Yasuo Honda)
2013-08-24 KUBO Takehiro <>
* ext/oci8/oraconf.rb: Use Dir.glob to find the Oracle instant client
NLS data file. Its name depends on the Oracle major version on
2013-08-03 KUBO Takehiro <>
* lib/oci8/metadata.rb: fix undefined method 'char_used?' when
OCI8::Metadata::Argument#inspect is called.
* test/test_metadata.rb: refactor and add tests for #inspect methods.
* test/test_package_type.rb: add some test data.
2013-07-30 KUBO Takehiro <>
* ext/oci8/metadata.c, ext/oci8/ocihandle.c, test/test_metadata.rb:
Fix segmentation fault when metadata are accessed after the
session is disconnected.
2013-07-24 KUBO Takehiro <>
* lib/oci8/metadata.rb, test/test_package_type.rb:
Add OCI8::Metadata::Type#package_name and
2013-07-22 KUBO Takehiro <>
* ext/oci8/oci8lib.c, lib/, lib/oci8/metadata.rb: Add
OCI8::Metadata::Package:types to support package type
description. It is a new feature of Oracle 12c.
* test/setup_test_package.sql, test/test_all.rb,
test/test_package_type.rb: Add tests for package type description.
2013-07-15 KUBO Takehiro <>
* test/*.rb: Use MiniTest instead of Test::Unit.
2013-06-23 KUBO Takehiro <>
* lib/oci8/cursor.rb, lib/oci8/object.rb: fix to bind object types by
name as OCI8::Cursor#bind_param(pos, val, :named_type, typename).
* test/test_object.rb: fix to test OCI8::Cursor#bind_param(pos, val,
:named_type, typename).
2013-06-23 KUBO Takehiro <>
* lib/oci8/metadata.rb: OCI8#describe_synonym and OCI8#describe_any
accept 'PUBLIC.XXX' as a public synonym name.
* test/test_metadata.rb: add tests for OCI8#describe_synonym.
2013-06-11 KUBO Takehiro <>
* ruby-oci8.gemspec: fix ruby version checking in binary gem.
Gem::ruby_version of ruby 2.0.0p195 is, which
doesn't match '= 2.0.0'.
(github issue #36 reported by sodonnel)
2013-03-30 KUBO Takehiro <>
* ext/oci8/oci8lib.c: fix potential SEGV when one connection
is used by more than two threads and temporary lobs are
freed by GC.
2013-03-16 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/stmt.c: call OCIStmtPrepare2()
without GVL to prevent OCI8#parse from blocking ruby itself
while the connection is used by another thread even though
non-blocking mode is set.
2013-03-09 KUBO Takehiro <>
* ruby-oci8.gemspec: revert the previous commit because old
rubygems doesn't support:
required_ruby_version = ['>= 1.8.0', '<= 2.0.0']
2013-03-09 KUBO Takehiro <>
* NEWS: add changes between 2.1.5 and 2.1.4
* VERSION: change the version to 2.1.5.
* docs/ remove obsolete description.
* ext/oci8/extconf.rb, ext/oci8/oraconf.rb: fix to compile for
Windows x64 client.
* ruby-oci8.gemspec: change required_ruby_version range
when a binary gem includes more than one compiled object.
* test/test_connection_pool.rb: fix to pass tests on slow
2013-03-05 KUBO Takehiro <>
* ext/oci8/oci8.c, lib/oci8/oci8.rb, lib/oci8/oracle_version.rb:
2013-03-03 KUBO Takehiro <>
* lib/oci8/oci8.rb, test/test_oci8.rb: set 'rubyoci8' as
the driver name, which is displayed in
(require Oracle 11g or upper)
2013-03-03 KUBO Takehiro <>
* lib/ use RbConfig::CONFIG instead of obsolete
constant Config::CONFIG.
* lib/oci8/object.rb, test/test_bind_time.rb, test/test_metadata.rb
test/test_object.rb, test/test_oci8.rb:
suppress warning: assigned but unused variable
2013-03-03 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8.c, ext/oci8/oci8.h:
refactor oci8_lob_t.
2013-03-03 KUBO Takehiro <>
* ext/oci8/oci8.c: fix segmentation fault when the process
exits on rubinius.
2013-03-02 KUBO Takehiro <>
* .yardopts, ext/oci8/object.c, lib/oci8/metadata.rb,
lib/oci8/oracle_version.rb: update comments for rdoc/yard.
2013-03-02 KUBO Takehiro <>
* ext/oci8/ocihandle.c: change arguments of internal methods
OCIHandle#attr_get_*() to ignore "ORA-24328: illegal
attribute value".
* lib/oci8/metadata.rb: change OCI8::Metadata::Base#obj_id,
#obj_name and #obj_schema not to raise "ORA-24328:
illegal attribute value".
2013-03-02 KUBO Takehiro <>
* ruby-oci8.gemspec: fix for ruby 2.0.0 to make binary gems.
2013-03-02 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix for compilation on Windows x64 by mingw64.
2013-01-12 KUBO Takehiro <>
* ext/oci8/oci8lib.c: export a main function for Solaris x86 (32-bit).
When a main function is invisible from Oracle instant client for Solaris x86 (32-bit), OCIEnvCreate() fails by
unknown reasons.
* docs/ change the workaround for
Solaris x86 (32-bit) instant client.
2013-01-06 KUBO Takehiro <>
* NEWS: add changes between 2.1.4 and 2.1.3
* VERSION: change the version to 2.1.4.
* docs/ update solaris-specific document.
* ext/oci8/connection_pool.c, ext/oci8/encoding.c, ext/oci8/metadata.c,
ext/oci8/oci8.c,lib/, lib/oci8/metadata.rb, lib/oci8/oci8.rb,
lib/oci8/oracle_version.rb, lib/oci8/properties.rb: update comments for yard.
* test/test_clob.rb: change a lob size when ORA-24817 is raised to
pass tests on Windows.
2013-01-03 KUBO Takehiro <>
* ext/oci8/oci8.c, lib/oci8/properties.rb: add[:events_mode]
to support Fast Application Notification (FAN).
2013-01-03 KUBO Takehiro <>
* ext/oci8/extconf.rb, lib/ add languange mode to the extension
library name when ths ruby engine is rubinius and explicitly claim that
jruby is not supported when it is jruby.
2013-01-03 KUBO Takehiro <>
* ext/oci8/encoding.c, lib/oci8/encoding-init.rb: delete an internal method
OCI8.nls_ratio= when the ruby is 1.9 or greater. nls_ratio is set by
2012-12-23 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c, test/test_clob.rb:
fix SEGV when a temporary LOB is freed when OCILobRead returns OCI_NEED_DATA.
(github issue #20 reported by Edgars Beigarts)
2012-12-18 KUBO Takehiro <>
* ext/oci8/error.c, lib/oci8/oci8.rb: change the OCIError constructor to
accept an Oracle error code as the first parameter and create a message
which depends on NLS_LANG.
* lib/oci8/metadata.rb: fix OCI8.describe_table not to follow synonyms
until stack overflow. Now the recursive level is limited to 20.
(github issue #26 reported by Brian Henderson)
2012-12-16 KUBO Takehiro <>
* ext/oci8/extconf.rb, lib/ 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.
(github issue #24 reported by suhrawardi)
2012-12-03 KUBO Takehiro <>
* ext/oci8/oraconf.rb: add a script encoding magic comment for ruby 2.0.0 preview2.
(github issue #25 reported by aboltart)
2012-12-02 KUBO Takehiro <>
* test/test_encoding.rb: fix to pass tests with ruby 2.0.0 preview2.
2012-11-11 KUBO Takehiro <>
* ext/oci8/lob.c: use OCILobLocatorAssign_nb (non-blocking version)
instead of OCILobLocatorAssign (blocking version).
2012-11-11 KUBO Takehiro <>
* NEWS: add changes between 2.1.3 and 2.1.2
* VERSION: change the version to 2.1.3.
* dist-files: append new files.
* ruby-oci8.gemspec: declare license in the gem.
2012-11-11 KUBO Takehiro <>
* Makefile: add doc and copy-doc targets to generate document by yard command.
* ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c: change
protoptype definition of Init_oci8 for yard command to parse it.
* ext/oci8/encoding.c, ext/oci8/oci8.c, ext/oci8/ocinumber.c,
lib/, lib/oci8/connection_pool.rb, lib/oci8/datetime.rb,
lib/oci8/encoding-init.rb, lib/oci8/metadata.rb, lib/oci8/object.rb,
lib/oci8/oci8.rb: change comments for yard command.
2012-11-11 KUBO Takehiro <>
* ext/oci8/oci8.h: update RB_GC_GUARD as ruby 1.9.2 defines.
* test/test_break.rb: fix tests for rubinius 1.2.4 and 2.0.0.
2012-11-10 KUBO Takehiro <>
* ext/oci8/oci8lib.c: fix compilation errors when ruby version is 1.8.x.
* ext/oci8/ocinumber.c: Don't use rb_Rational() when rbx-2.0.testing
runs with ruby 1.8 mode.
* lib/oci8/datetime.rb: 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.
* test/config.rb, test/test_oci8.rb: for ruby 1.8.x.
2012-10-28 KUBO Takehiro <>
* ext/oci8/extconf.rb: Use rb_thread_call_without_gvl only when
ruby/thread.h exists. rb_thread_call_without_gvl is an internal
function in ruby 1.9.2 and 1.9.3.
* ext/oci8/oci8lib.c: fix compilation errors when ruby <= 1.9.1.
* setup.rb: fix uninitialized constant Config (NameError) on ruby 1.8.7.
2012-10-28 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c:
Fix SEGV when a temporary LOB is GCed while another LOB is read.
(github issue #20 reported by techsplicer)
2012-10-02 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/connection_pool.c, ext/oci8/env.c,
ext/oci8/extconf.rb, ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/thread_util.c, ext/oci8/thread_util.h:
replace rb_thread_blocking_region(), which is deprecated in ruby 2.0.0,
with rb_thread_call_without_gvl() and rename oci8_blocking_region()
to oci8_call_without_gvl().
* lib/ Ruby 2.0.0-dev's API version is changed to 2.0.0.
* setup.rb: use RbConfig instead of Config for ruby 2.0.0-dev.
2012-08-12 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/oci8/cursor.rb: revise yard comment.
2012-08-11 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/oci8/cursor.rb: refactor OCI8::Cursor to simplify
C code.
* ext/oci8/bind.c: add a private function OCI8::BindType::Base#get_data
and #set_data.
* ext/oci8/attr.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c: delete
unused functions and a unused variable.
2012-08-11 KUBO Takehiro <>
* lib/, lib/oci8/cursor.rb, lib/oci8/oci8.rb:
move OCI8::Cursor from lib/oci8/oci8.rb to lib/oci8/cursor.rb.
2012-08-05 KUBO Takehiro <>
* lib/oci8/object.rb: Change the ruby type which corresponds to
Oracle object type's DATE field from DateTime to Time.
* test/setup_test_object.sql, test/test_object.rb:
Fix github issue #17 reported by Yasuo Honda.
2012-07-31 KUBO Takehiro <>
* test/config.rb, test/test_datetime.rb: refactor test code by adding
global functions convert_to_time() and convert_to_datetime(),
which will be used by test_object.rb later.
2012-07-28 KUBO Takehiro <>
* test/test_metadata.rb: fix a sequence test failure on Oracle 11gR2.
Fix github issue #18 reported by Yasuo Honda.
2012-07-28 KUBO Takehiro <>
* lib/oci8/oci8.rb, test/test_oci8.rb: add OCI8::Cursor#statement.
See github issue #12 requested by timon.
2012-05-25 KUBO Takehiro <>
* test/test_clob.rb: speed up clob tests 29 times.
2012-05-25 KUBO Takehiro <>
* test/setup_test_object.sql, test/test_all.rb, test/test_object.rb:
Add tests of the previous commit.
2012-05-25 KUBO Takehiro <>
* ext/oci8/lob.c: Merge pull request #13 from timon/temp_lob at github.
If 's' is a temporary lob, use OCILobLocatorAssign instead.
2012-05-20 KUBO Takehiro <>
* ext/oci8/oci8.c, test/test_oci8.rb: add OCI8's class variables:
@@environment_handle and @@process_handle.
2012-05-20 KUBO Takehiro <>
* ext/oci8/ocihandle.c, lib/oci8/metadata.rb, test/test_metadata.rb:
fix methods of OCI8::Metadata::Sequence and add testcases for them.
2012-05-12 KUBO Takehiro <>
* ext/oci8/extconf.rb, lib/ refactor code which generates the
C extention name.
2012-05-05 KUBO Takehiro <>
* ext/oci8/oci8.c, lib/oci8/oci8.rb: delete private methods OCI8#server_handle
and OCI8#session_handle and use @server_handle and @session_handle instead.
2012-04-28 KUBO Takehiro <>
* NEWS: add changes between 2.1.2 and 2.1.1
* VERSION: change the version to 2.1.2.
2012-04-28 KUBO Takehiro <>
* lib/oci8/oci8.rb, lib/oci8/properties.rb: disable statement caching by default.
This is workaround about a SIGSEGV issue.
2012-04-28 KUBO Takehiro <>
* ext/oci8/oci8lib.c: delete code which overwrites signal handlers
registered by ruby. This was committed by mistake.
2012-04-24 KUBO Takehiro <>
* ext/oci8/metadata.c: fix internal heap error in OCI.
(github issue #12 reported by Yasuo Honda)
2012-04-22 KUBO Takehiro <>
* VERSION: update to 2.1.1.
* add links.
2012-04-22 KUBO Takehiro <>
* NEWS: add changes between 2.1.0 and 2.1.1.
* README -> renamed.
* .yardopts: added for yard.
* docs/, docs/
* docs/, lib/oci8/bindtype.rb, lib/oci8/connection_pool.rb
lib/oci8/object.rb, lib/oci8/properties.rb: fix documents.
* ruby-oci8.gemspec, dist-files: fix for renamed and added files.
2012-04-21 KUBO Takehiro <>
* test/test_datetime.rb: fix to pass tests on ruby 1.9.1 and earlier.
2012-04-21 KUBO Takehiro <>
* ext/oci8/oci8.c: fix to raise a RuntimeError when a connection
retrieved from a connection pool is set as non-blocking on
ruby 1.8.
2012-04-21 KUBO Takehiro <>
* ext/oci8/lob.c: OCI8::LOB#read() returns an empty string '' when
it is an empty lob.
2012-04-21 KUBO Takehiro <>
* custom-rdoc.rb: delete an unused file.
2012-04-21 KUBO Takehiro <>
* test/test_oci8.rb: fix code to test, '').
2012-04-17 KUBO Takehiro <>
* ext/oci8/lob.c: 1. fix an exception when, '')
is called. 2. Reset the position of a newly created LOB.
2012-04-17 KUBO Takehiro <>
* ext/oci8/oci8lib.c: fix core dump.
(reported by Raimonds Simanovskis)
2012-04-08 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/win32.c, lib/oci8/oracle_version.rb:
revise rdoc comments.
2012-04-06 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/ocihandle.c, ext/oci8/oradate.c,
lib/oci8/encoding-init.rb, lib/oci8/oci8.rb, lib/oci8/ocihandle.rb:
revise rdoc comments.
2012-04-05 KUBO Takehiro <>
* ext/oci8/ocinumber.c, lib/oci8/oci8.rb: revise OraNumber's comments.
2012-04-03 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/ocinumber.c: change OCI8::Math::*'s comments
for yard.
2012-04-02 KUBO Takehiro <>
* NEWS: change the text format to markdown.
2012-03-18 KUBO Takehiro <>
* test/test_datetime.rb: fix testcase failures in DST.
(reported by Yasuo Honda)
2012-03-11 KUBO Takehiro <>
* dist-files, docs/, docs/,
docs/ add and fix documents.
2012-03-11 KUBO Takehiro <>
* ruby-oci8.gemspec: fix warning: string literal in condition.
(pointed by andynu at github)
2012-01-22 KUBO Takehiro <>
* ext/oci8/ocinumber.c: Use isnan() and isinf() instead of fpclassify()
for platforms which don't have fpclassify().
(reported by John Beckwith)
2012-01-19 KUBO Takehiro <>
* ext/oci8/extconf.rb, pre-distclean.rb, ruby-oci8.gemspec: create map files
of oci8lib_*.so on mingw32 in case of analyzing a core (minidump) file.
2012-01-19 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/stmt.c, lib/oci8/oci8.rb,
lib/oci8/properties.rb: enable statement caching per session in OCI layer
if the Oracle client is 9iR2 or upper.
2012-01-19 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/oci8.c, lib/oci8/oci8.rb: replace
OCILogon() with OCILogon2() and use the latter to use
* test/config.rb: fix to pass lob tests.
2012-01-09 KUBO Takehiro <>
* docs/ add a new document file.
2012-01-08 KUBO Takehiro <>
* doc/*: remove obsolete documents.
2011-12-15 KUBO Takehiro <>
* lib/oci8/object.rb, test/setup_test_object.sql, test/test_object.rb:
fix "wrong number of arguments (1 for 2)" when date datatype in a object
type is gotten.
(repored by Leoš Bitto)
2011-12-13 KUBO Takehiro <>
* VERSION: update to 2.1.0.
* ext/oci8/error.c, ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/ocidatetime.c,
ext/oci8/ocinumber.c, ext/oci8/stmt.c: suppress gcc-4.6 warnings.
2011-12-11 KUBO Takehiro <>
* ext/oci8/connection_pool.c: fix a buffer overrun in oci8_cpool_initialize().
2011-12-11 KUBO Takehiro <>
* NEWS: add changes between 2.0.6 and 2.1.0.
* README, test/README: rewritten.
* ext/oci8/connection_pool.c: add a note.
2011-12-10 KUBO Takehiro <>
* test/test_bind_string.rb: suppress "No tests were specified" when
the client character set is not UTF-8.
2011-12-10 KUBO Takehiro <>
* lib/oci8/oci8.rb, lib/oci8/properties.rb, test/test_datetime.rb:
revert[:time_zone] which was added 5 days ago.
* lib/ use ENV['ORA_SDTZ'] instead of 'alter session set time_zone = ...'
to set Oracle session time zone. On cygwin, explicitly set
environments variables which start with 'ORA_' to WIN32 environments.
2011-12-10 KUBO Takehiro <>
* test/test_oci8.rb: fix test_select when TZ set to daylight saving time.
(reported by Yasuo Honda)
2011-12-06 KUBO Takehiro <>
* ext/oci8/oci8.c: raise a RuntimeError when non-blocking mode is set to a connection
allocated from OCI8::ConnectionPool on ruby 1.8.
Ruby 1.9.x and rubinius don't have the limitation.
* test/test_connection_pool.rb: fix for ruby 1.8.
* test/test_oranumber.rb: fix for ruby 1.9.1 and 1.8.
2011-12-05 KUBO Takehiro <>
* lib/oci8/oci8.rb, lib/oci8/properties.rb, test/test_datetime.rb.
add[:time_zone] and use ENV['TZ'] or the time_zone
propery to set Oracle session time zone.
Fix #2 at
(reported by Yasuo Honda)
2011-12-05 KUBO Takehiro <>
* lib/oci8/encoding-init.rb, lib/oci8/oci8.rb: add OCI8.client_charset_name.
* test/config.rb: use OCI8.client_charset_name instead of OCI8.encoding.
Ruby-oci8 compiled for ruby 1.8 doesn't has the latter.
* lib/oci8/properties.rb, test/test_all.rb, test/test_bind_string.rb,
test/test_encoding.rb: add a test for[:lenght_semantics]
and move the test for[:bind_string_as_nchar] from
test/test_encoding.rb to test/test_bind_string.rb.
2011-12-04 KUBO Takehiro <>
* test/config.rb, test/test_encoding.rb: add tests for bind_string_as_nchar
* ext/oci8/metadata.c, lib/oci8/metadata.rb: delete the internally used
OCI8::Metadata::Base#__charset_name method.
* lib/oci8/oci8.rb: add OCI8#database_charset_name. (added to test
2011-12-03 KUBO Takehiro <>
* lib/ fix to work with ruby 2.0.
2011-12-03 KUBO Takehiro <>
* test/test_connection_pool.rb: fix to pass a connection pool test.
OCI8::ConnectionPool#open_count after decrement depends on
Oracle version. (reported by Yasuo Honda)
2011-12-03 KUBO Takehiro <>
* test/test_metadata.rb: Check object type availability by querying
all_objects data dictionary. Fix #3 at
(reported by Yasuo Honda)
2011-12-03 KUBO Takehiro <>
* ruby-oci8.gemspec: Use Gem::Command.build_args to get arguments
after '--'. This may solve issues #4 at
(reported by jbirdjavi)
2011-12-03 KUBO Takehiro <>
* ext/oci8/apiwrap.yml: fix for run-time Oracle function checking.
* ext/oci8/oraconf.rb: fix a bug not to compile for full client on
Windows. The bug was caused by the commit at 2011-10-17.
* lib/oci8/connection_pool.rb, lib/oci8/properties.rb: fix rdoc
2011-11-27 KUBO Takehiro <>
* test/test_break.rb: fix test_timeout test for an Oracle server
on Windows.
* test/test_all.rb, test/test_connection_pool.rb: add testcases
of OCI8::ConnectionPool.
* test/test_oci8.rb: add a testcase for OCI8#last_error.
* test/test_oranumber.rb: add a testcase for[:float_conversion_type].
2011-11-26 KUBO Takehiro <>
* ext/oci8/object.c, test/test_object.rb: 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)
2011-11-23 KUBO Takehiro <>
* ext/oci8/oci8.c, lib/oci8/oci8.rb, lib/oci8/ocihandle.rb,
test/test_connstr.rb: support sysasm privilege.'username/password as sysasm')
or'username', 'password', nil, :SYSASM)
2011-11-04 KUBO Takehiro <>
* lib/oci8/encoding.yml: fix the mapping from Oracle NLS chacacter set
to ruby encoding to use CP950 and CP951, which are new encodings
in ruby 1.9.3.
2011-11-04 KUBO Takehiro <>
* ext/oci8/ocinumber.c: add a workaround to avoid a gcc internal
compiler error when using ruby 1.9.2-p290 on ubuntu 11.10 (64bit).
(reported by Bob Saveland.)
2011-11-04 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.c, ext/oci8/oci8.h,
test/test_datetime.rb, test/test_metadata.rb: fix to pass tests
on Oracle 9i.
2011-10-29 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/oci8.c, lib/oci8/object.rb, lib/oci8/oci8.rb:
reset OCI8#last_error when OCI8#parse or OCI8#exec is called.
fix bugs added by the last commit but one.
2011-10-29 KUBO Takehiro <>
* ext/oci8/oraconf.rb: use RbConfig::CONFIG instead of obsolete
2011-10-22 KUBO Takehiro <>
* ext/oci8/attr.c, ext/oci8/bind.c, ext/oci8/connection_pool.c,
ext/oci8/error.c, ext/oci8/lob.c, ext/oci8/metadata.c,
ext/oci8/object.c, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/ocihandle.c,
ext/oci8/ocinumber.c, ext/oci8/stmt.c: add OCI8#last_error and
OCI8#last_error=. When an exception is raised associated with a
connection, the exception is set to OCI8#last_error.
No OCISuccessWithInfo excpetion is raised from now on. It is
set to OCI8#last_error instead.
2011-10-22 KUBO Takehiro <>
* ext/oci8/error.c, test/test_break.rb, test/test_error.rb: change the super
class of OCINoData from OCIException to OCIError and fix testcases for
OCIError and its subclasses.
2011-10-22 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8.c, ext/oci8/ocinumber.c:
delete code for Oracle 8 and Oracle 8i.
2011-10-21 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/oci8.h: refactor OCIException and its
subclasses. OCIError#codes and OCIError#messages are deleted.
* test/test_all.rb, test/test_error.rb: add a testcase to check
OCIException's methods.
2011-10-21 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix checking code whether 'sys/types.h' is
available for Ubuntu 11.10 where sys/types.h is not right under
2011-10-21 KUBO Takehiro <>
* ext/oci8/oraconf.rb: remove code to get linker options for Oracle 8
and Oracle 8i.
2011-10-17 KUBO Takehiro <>
* ext/oci8/oraconf.rb: embed a run-time loading path to the extention
library oci8lib_*.so compiled for not only full clients, but also
instant clients on Linux and Solaris.
(suggested by d c and others.)
2011-10-09 KUBO Takehiro <>
* ext/oci8/ocidatetime.c, lib/oci8/datetime.rb, lib/oci8/object.rb:
add OCI8::BindType::OCITimestamp, OCI8::BindType::LocalDateTime,
OCI8::BindType::UTCDateTime, OCI8::BindType::LocalTime and
OCI8::BindType::UTCTime. The first is used for internal use.
The others are used for timestamp (without time zone) datatype.
2011-10-01 KUBO Takehiro <>
* ext/oci8/attr.c, ext/oci8/ocidatetime.c, ext/oci8/oradate.c: delete
subversion keywords.
* ext/oci8/env.c, ext/oci8/oci8.h, ext/oci8/thread_util.c,
ext/oci8/thread_util.h: use thread-local errhp not only at ruby 1.9
and rubinius, but also ruby 1.8 configured with --enable-pthread.
2011-10-01 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/connection_pool.c, ext/oci8/lob.c,
ext/oci8/metadata.c, ext/oci8/object.c, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/ocihandle.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/stmt.c:
rename oci8_*_class to oci8_*_vtable because they correspond to
virtual method tables (vtable) in C++.
2011-09-30 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/oci8lib.c, test/test_break.rb:
clear an executuing thread information in a connection when a SQL
executions is canceled by Thread#kill or Timeout::timeout.
(reported by Aaron Qian)
2011-09-30 KUBO Takehiro <>
* ext/oci8/connection_pool.c: run connection-pool cleanup functions
in a native thread not to block GC.
* ext/oci8/oci8.c: use xfree() instead of free() to release memory
allocated by xmalloc().
2011-08-31 KUBO Takehiro <>
* ext/oci8/env.c, ext/oci8/extconf.rb, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/thread_util.c, ext/oci8/thread_util.h:
run connection-cleanup functions in a native thread to correctly
release connections in GC.
2011-08-27 KUBO Takehiro <>
* ext/oci8/oci8.c, ext/oci8/oci8.h: refactoring for prior arrangement to
properly release garbage sessions.
2011-08-27 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/extconf.rb, ext/oci8/lob.c, ext/oci8/object.c,
ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/stmt.c,
ext/oci8/xmldb.c: delete unused and unworkable features: dynamic fetch
and xmldb.
2011-08-27 KUBO Takehiro <>
* ext/oci8/bind.c, lib/oci8/bindtype.rb, lib/oci8/properties.rb: add[:length_semantics].
2011-08-23 KUBO Takehiro <>
* ext/oci8/oraconf.rb: warn when the Oracle instant client is
64-bit on OS X Lion.
2011-08-19 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/ocinumber.c,
lib/oci8/properties.rb: Decimal to float and float to decimal conversions
are done as exactly ruby does by default. The behavior is customizable by[:float_conversion_type].
2011-08-19 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix a bug not to find the OCI library location listed in
'ldconfig -p' when LD_LIBRARY_PATH is set.
(Reported by Edgars Beigarts.)
2011-07-16 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h: fix for Solaris compiler.
(Reported by Sanjiv Patel.)
2011-07-16 KUBO Takehiro <>
* ext/oci8/oraconf.rb: Fix for Oracle 11g solaris-sparc32 instant client.
The machine type of Oracle 10g solaris-sparc32 instant client was
sparc but that of oracle 11g is sparc32plus.
(Reported by Sanjiv Patel.)
2011-06-15 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/bind.c, ext/oci8/oci8.c, ext/oci8/oci8lib.c,
lib/oci8/bindtype.rb: drop Oracle 8i support.
* ext/oci8/ocidatetime.c: OCI8::BindType::OCIDate was deleted.
* lib/oci8/datetime.rb, test/test_datetime.rb: OCI8::BindType::DateTimeViaOCIDate,
OCI8::BindType::TimeViaOCIDate, OCI8::BindType::DateTimeViaOCITimestampTZ
and OCI8::BindType::TimeViaOCITimestampTZ were deleted.
2011-06-14 KUBO Takehiro <>
* NEWS: add changes between 2.0.5 and 2.0.6.
* ext/oci8/apiwrap.yml, ext/oci8/lob.c: fix SEGV when freeing a temporary
LOB during GC on rubinius 1.2.3.
* ext/oci8/oci8lib.c: 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.
2011-06-12 KUBO Takehiro <>
* NEWS: add changes between 2.0.4 and 2.0.5.
2011-06-12 KUBO Takehiro <>
* ext/oci8/oci8lib.c: add __declspec(dllexport) to Init_oci8lib(). The mingw32
gcc compiler doesn't export functions without it if more than one function
is declared with it.
* ext/oci8/oraconf.rb: work around for rubinius 1.2.3, which doesn't support
* lib/oci8/oci8.rb: fix a bug introduced by the previous commit.
* ext/oci8/env.c, ext/oci8/extconf.rb, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c: Use HAVE_RB_THREAD_BLOCKING_REGION instead of
HAVE_TYPE_RB_BLOCKING_FUNCTION_T. have_type("rb_blocking_function_t", "ruby.h")
unexpectedly doesn't work on Visual Studio 2010.
2011-06-10 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, lib/oci8/oci8.rb: fix for Psych YAML library.
* ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/ocihandle.c: fix to
work with ruby 1.9.3dev.
2011-06-10 KUBO Takehiro <>
* ext/oci8/env.c, ext/oci8/oci8.h: Free OCI error handles on the
native thread termination, not on the ruby thread termination.
(reported by Jordan Curzon and Aaron Qian)
2011-02-21 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/metadata.c, ext/oci8/oci8.c,
ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/stmt.c:
fix segmentation fault when calling OCI8::Cursor#[] for
closed statement object's (reported by Hugo L. Borges)
2011-02-01 KUBO Takehiro <>
* ext/oci8/ocidatetime.c, lib/oci8/datetime.rb: rename
the name of the class to binding timestamp with time zone
from OCITimestamp to OCITimestampTZ. OCITimestamp will be
used for timestamp without time zone.
2011-01-30 KUBO Takehiro <>
* ext/oci8/oci8.c: fix SEGV which depends on GC order.
* ext/oci8/oraconf.rb: check Oracle client's cpu type on Solaris as
on Linux and Mac OS X. change error messages on Mac OS X to suggest
to set RC_ARCHS=x86_64 when mkmf.log contains messages such as
'missing required architecture i386 in file.'
2010-12-26 KUBO Takehiro <>
* ext/oci8/ocinumber.c, lib/oci8/bindtype.rb, test/test_oranumber.rb:
add OraNumber#has_decimal_part? and OCI8::BindType::BasicNumberType.
2010-12-14 KUBO Takehiro <>
* dist-files, lib/, lib/oci8/.document, lib/oci8/properties.rb:
add to get and set ruby-oci8 global setting.
* ext/oci8/bind.c, lib/oci8/bindtype.rb: fix NCHAR support and add[:bind_string_as_nchar] to control charset form (CHAR or NCHAR)
when binding string values.
2010-12-04 KUBO Takehiro <>
* ext/oci8/object.c, ext/oci8/bind.c, lib/oci8/object.rb,
test/test_object.rb: fix a problem to assign NULL bind value
to object type bind variables.
(reported by Raimonds Simanovskis)
* ext/oci8/oraconf.rb: fix for 32-bit ruby compiled on
x86_64 linux. (reported by Jason Renschler)
* ext/oci8/oranumber_util.c, test/test_oranumber.rb:
suppress warning: unknown conversion type character 'h' in format
2010-12-04 KUBO Takehiro <>
* VERSION, ext/oci8/encoding.c, ext/oci8/ocihandle.c: change
the version number to 2.1.
2010-09-18 KUBO Takehiro <>
* ext/oci8/win32.c: undefine boolean to pass compilation on
Cygwin. (reported by Don Hill).
* lib/oci8/encoding-init.rb, lib/oci8/encoding.yml: add a
mapping from ZHT16HKSCS to Big5-HKSCS when the latter
is available in ruby.
2010-09-12 KUBO Takehiro <>
* ext/oci8/env.c, ext/oci8/extconf.rb: suppress warning
'use "ruby/util.h" instead of bare "util.h".'
* test/test_break.rb: make tests insensitive to execution timing.
2010-09-10 KUBO Takehiro <>
* test/test_array_dml.rb: delete workaround code. It now works
fine on rubinius head.
2010-09-07 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8lib.c: Don't use
rb_set_end_proc() when it isn't available.
* ext/oci8/extconf.rb, lib/ add RUBY_ENGINE to
the C extension library name when RUBY_ENGINE is not "ruby."
* ext/oci8/oci8.c: fix for ruby 1.8.
* test/test_clob.rb: change a temporarily used table name for test
from 'test_clob' to 'test_table.'
* test/test_metadata.rb: delete ruby 1.9 feature to work on ruby 1.8.
* test/config.rb: add a support function 'drop_type' for future test
* test/test_array_dml.rb: skip test_array_insert1 on rubinius.
This will be enabled after the rubinius issue #445 is fixed.
2010-09-05 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/ocinumber.c: use rb_intern() to retrieve IDs of '+', '-',
'*' and '/' on rubinus.
* ext/oci8/oradate.c: use rb_call_super() instead of
rb_obj_init_copy(), which is not declared in rubinus.
2010-08-28 KUBO Takehiro <>
* ext/oci8/env.c: fix for rubinius.
2010-08-28 KUBO Takehiro <>
* ext/oci8/env.c, ext/oci8/error.c, ext/oci8/extconf.rb, ext/oci8/oci8.c,
ext/oci8/oci8.h, oci8/oci8lib.c, ext/oci8/ocinumber.c: fix for rubinius.
Note that this is not enough to compile ruby-oci8 on it.
2010-08-23 KUBO Takehiro <>
* lib/oci8/object.rb: fix an error when SDO_GEOMETRY is used
and $VERBOSE is set.
* test/test_metadata.rb: (1) fix errors caused by String + Symbol.
They worked on ruby 1.9.2 but not on 1.8.7 and 1.9.2.
(2) replace "assert_equal(class, object.class)" with
"assert_instance_of(class, object)."
* test/test_oranumber.rb: change a testcase for ruby 1.9.2.
Math::atan2(0, 0) behaviour was changed in 1.9.2.
2010-08-15 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/object.c, ext/oci8/oci8.h,
lib/oci8/object.rb: support LOB datatypes in Oracle objects.
(reported by Michael Sexton)
* ext/oci8/ocihandle.c: fix SEGV in finalizer when temporary LOBs
are used. This bug was introduced by the previous commit.
2010-08-15 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/lob.c: fix memory leak when temporary
lobs are used.
2010-06-15 KUBO Takehiro <>
* lib/oci8/metadata.rb: rename OCI8::Metadata::Column#type_string
to #data_type_string and add an alias from the former to the
latter. fix a return value of OCI8::Metadata::Column#data_type_string
of REF datatype.
* test/test_metadata.rb: rename a test method test_metadata to
test_column_metadata and do refactoring to make test data
reusable for other metadata classes in future.
2010-06-13 KUBO Takehiro <>
* ext/oci8/metadata.c: fix a private method
OCI8::Metadata::Base#__param to return nil when the specified
attribute is NULL.
* lib/oci8/metadata.rb: add rdoc comment of OCI8::Metadata::Type
and fix other typos. change OCI8::Metadata::Schema#all_objects
not to raise "ORA-24372: invalid object for describe" by
invalid objects.
* test/test_metadata.rb: add tests for OCI8::Metadata::Type.
2010-06-11 KUBO Takehiro <>
* lib/oci8/metadata.rb: rename OCI8::Metabase::ProcBase to
OCI8::Metabase::Subprogram, add #is_standalone? and change
#obj_id, #obj_name and #obj_schema to work for packaged
subprograms. Fix rdoc comments.
* test/test_metadata.rb: add tests for OCI8::Metadata::Function,
OCI8::Metadata::Procedure and OCI8::Metadata::Package.
2010-06-10 KUBO Takehiro <>
* lib/oci8/metadata.rb: revice rdoc comments of OCI8::Metadata::Table
and OCI8::Metadata::View and delete some unavailable methods
of OCI8::Metadata::View.
* test/test_metadata.rb: add tests for OCI8::Metadata::Table and
* README: change the description about the privilege to run tests.
'create view' privilege is needed to test OCI8::Metadata::View.
2010-06-01 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.c, lib/ move
the location where OCI8::VERSION is defined from oci8.rb to
oci8lib_*.so. Add code to check the version of oci8.rb and
* test/test_clob.rb: create test_clob table while executing
* README: delete the instruction to create test_clob before
executing tests.
2010-05-17 KUBO Takehiro <>
* ext/oci8/metadata.c: delete OCI8::Metadata::Base's methods which
get and set OCI handle attributes.
* ext/oci8/ocihandle.c: add OCIHandle#attr_get_oradate.
* lib/oci8/metadata.rb: use OCIHandle#attr_get_* instead of
obsolete OCI8::Metadata::Base#__*.
2010-05-07 KUBO Takehiro <>
* dist-files, ext/oci8/.document, ext/oci8/apiwrap.yml,
ext/oci8/connection_pool.c, ext/oci8/extconf.rb,ext/oci8/oci8.c,
ext/oci8/oci8.h, ext/oci8/oci8lib.c, lib/,
lib/oci8/.document, lib/oci8/connection_pool.rb, lib/oci8/oci8.rb,
lib/oci8/ocihandle.rb: add a new feature OCI8::ConnectionPool.
2010-05-04 KUBO Takehiro <>
* ext/oci8/bind.c: fix a bug that a string is bound to RAW,
its encoding was convertd to OCI.encoding.
* ext/oci8/encoding.c: delete an unused strcuture.
* ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/ocihandle.c,
lib/oci8/oci8.rb: do refactering to make it easy to
implement new authentication features.
* lib/, lib/oci8/metadata.rb, lib/oci8/ocihandle.rb:
move constant definitions from metadata.rb to ocihandle.rb.
2010-05-03 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/oci8.h, lib/oci8/bindtype.rb:
change the length semantics from byte to char for string
bind variables when the Oracle client is 9i or upper.
2010-05-02 KUBO Takehiro <>
* lib/oci8/encoding-init.rb: fix for zero-length NLS_LANG.
fix AL32UTF8's nls_ratio.
* ext/oci8/stmt.c: fix SEGV when an exception is raised in
2010-04-27 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/object.c, ext/oci8/oci8.h,
ext/oci8/stmt.c: refactor code to prepare character length
semantics support.
2010-04-27 KUBO Takehiro <>
* ext/oci8/encoding.c: add new methods OCI8.nls_ratio
and OCI8.nls_ratio=. Comments for rdoc are added and
revised for OCI8#charset_name2id, OCI8#charset_name2id=,
OCI8.encoding and OCI8.encoding=.
* lib/, lib/oci8/encoding-init.rb: set
OCI8.nls_ratio on initialization.
2010-04-23 KUBO Takehiro <>
* ext/oci8/oranumber_util.c, test/test_oranumber.rb:
add limitted support for OraNumber's positive and negative
infinity. They are converted to '~' and '-~' respectively
as described in <URL:>.
2010-04-23 KUBO Takehiro <>
* Makefile: fix wrong dependencies in Makefile when running
'make -jNNN (where NNN >= 2)'
(contributed by Alyano Alyanos. See bug #28129 on rubyforge.)
2010-03-07 KUBO Takehiro <>
* ext/oci8/ocinumber.c: fix to compile on HP-UX.
Duplicate const qualifiers prevented HP-UX cc from compiling.
(reported by Sebastian YEPES)
2010-02-28 KUBO Takehiro <>
* NEWS: add changes between 2.0.3 and 2.0.4.
* VERSION: change the version to 2.0.4.
* ext/oci8/stmt.c: fix segmentation fault when OCI8::Cursor#fetch
is called prior to OCI8::Cursor#exec.
* ext/oci8/oci8.c: minor fix in rdoc comment.
2010-02-27 KUBO Takehiro <>
* lib/oci8/datetime.rb: fix a problem that fractional seconds are lost
when Time value is bound to TIMESTAMP.
(reported by Raimonds Simanovskis)
2010-02-27 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/extconf.rb, ext/oci8/oci8.h: fix for
old Oracle versions, which lack declarations of OCIMsg, oraub8,
* ext/oci8/ocihandle.c: fix for mingw compiler.
2010-02-27 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/error.c, ext/oci8/oci8.h,
ext/oci8/ocinumber.c: fix for Oracle 8.0 client, which doesn't
have OCIMessageOpen() and OCIMessageGet().
* ext/oci8/oci8.c: add a new method OCI8.error_message to get
a error message which depends on NLS_LANGUAGE.
2010-02-09 KUBO Takehiro <>
* dist-files: add ext/oci8/oranumber_util.c and
(reported by Raimonds Simanovskis)
2010-02-07 KUBO Takehiro <>
* ext/oci8/ocinumber.c, ext/oci8/oranumber_util.c,
ext/oci8/oranumber_util.h: change the declaration of
oranumber_to_str() to prevent buffer overflow by
unexpected invalid Oracle number internal data.
2010-02-07 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/oci8.h: add oci8_raise_by_msgno()
to retrieve a Oracle error message which depends on NLS_LANGUAGE.
* ext/oci8/oranumber_util.c, ext/oci8/oranumber_util.h,
ext/oci8/extconf.rb: add handwritten conversion functions from
OCINumber internal representation to string and vice versa.
* ext/oci8/ocinumber.c: 1. use handwritten conversion functions
instead of OCI functions to convert OraNumber to string
and vice varse. 2. add OraNumber#dump.
* test/test_oranumber.rb: add test cases to check conversion from
OraNumber to string and vice varse.
2010-02-02 KUBO Takehiro <>
* ext/oci8/ocinumber.c: fix to support NUMBERS with scale larger
than 38 by using scientific number notation to convert OraNumber
to BigDecimal. OraNumber#to_i is also fixed.
(reported by Raimonds Simanovskis)
2010-01-24 KUBO Takehiro <>
* ext/oci8/error.c: Use OCIErrorGet() to retrieve the error message
when the OCI return code is OCI_NO_DATA.
(reported by Raimonds Simanovskis)
2009-12-06 KUBO Takehiro <>
* ext/oci8/object.c: 1. fix segv when GC starts while initializing
a bind object for object type. (reported by Remi Gagnon)
2. fix memory leak about 30 bytes per one bind object for object
2009-11-03 KUBO Takehiro <>
* ext/oci8/object.c: fix segv when binding a collection of string.
(reported by Raimonds Simanovskis)
2009-10-26 KUBO Takehiro <>
* NEW: fix typo.
* dist-files, ext/oci8/.document: add ocihandle.c.
* ext/oci8/ocihandle.c: add private methods OCIHandle#attr_get_*,
OCIHandle#attr_set_* and their rdoc comments.
2009-10-23 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/ocihandle.c: add ocihandle.c and move OCIHandle
definitions from oci8lib.c to the file.
2009-10-21 KUBO Takehiro <>
* NEWS: add changes between 2.0.2 and 2.0.3.
* VERSION, Makefile: change the version to 2.0.3.
* ext/oci8/oci8.c: fix typo.
* ext/oci8/apiwrap.yml: add OCIIntervalFromText() prototype.
2009-10-18 KUBO Takehiro <>
* ext/oci8/ocidatetime.c: Add workarounds for Oracle
* lib/oci8/datetime.rb: Change the unit of OCI8::BindType::IntervalDS
from day to second. Add OCI8::BindType::IntervalDS.unit and
* test/test_datetime.rb: Fix tests for the above changes.
2009-10-17 KUBO Takehiro <>
* ext/oci8/oci8.c: Add a workaround for Oracle when clearing
a client identifier.
* ext/oci8/oci8lib.c: Fix a segv when canceling a non-blocking
* test_appinfo.rb: Fix temporarily to prevent a segmentation fault
under Oracle
* test/test_oci8.rb: Fix temporarily to prevent a segmentation fault
under Oracle Fix for BigDecimal bundled in ruby 1.8.5.
* test/test_oranumber.rb: Fix for Oracle 9.2. Comparing float values
by <=> is too sensitive to use it in tests.
2009-10-06 KUBO Takehiro <>
* ext/oci8/ocinumber.c: Add a global function OraNumber(obj) as a
shortcut of as Rational and BigDecimal do.
Changes the return type of the four rules of arithmetic;
addition, subtraction, multiplication and division. It was
OraNumber, but now it depends on the operand.
* lib/oci8/bindtype.rb: Add OCI8::BindType::BigDecimal and
OCI8::BindType::Rational. Change the default data type for
number column which fit neither Integer nor Float from
OraNumber to BigDecimal.
* lib/oci8/oci8.rb: Fix for OCI8::BindType::Mapping to accept
a class name instead of the class object to support
OCI8::BindType::BigDecimal and OCI8::BindType::Rational without
requiring 'bigdecimal' and 'rational'.
* spec/oranumber_spec.rb: Add a spec file for OraNumber arithmetic.
* test/test_oci8.rb: Add tests for OCI8::BindType::BigDecimal and
2009-10-04 KUBO Takehiro <>
* ext/oci8/oci8.c: Add constants missing in Oracle client prior to 10g.
* ext/oci8/oraconf.rb:
1. Fix for ruby 1.8.5 with Oracle 8.x which needs some object
files to link with.
(reported by Jayson Cena)
2. Revise the error message under the sudo environemnt.
3. Print not only error message but also the error backtrace when
oraconf.rb fails.
* lib/oci8/object.rb: Fix to accept nil attribute in object type's
constructors. This works only for simple data types such as number,
string. But it doesn't for complex types such as object types.
(requested by Remi Gagnon)
* spec/object_type_spec.rb: Add a test for object type's constructors.
2009-09-22 KUBO Takehiro <>
* lib/oci8/.document, lib/oci8/datetime.rb: 1. Add
OCI8::BindType.default_timezone and OCI8::BindType.default_timezone=.
2. Change the logic to convert to Time and DateTime to adapt DST.
3. Use new features of Time class in ruby 1.9.2 if they are available.
4. Add rdoc comments.
* spec/fetch_datetime8_spec.rb, spec/fetch_datetime_spec.rb,
spec/fetch_time8_spec.rb, spec/fetch_time_spec.rb,
spec/spec_helper.rb: Add tests for OCI8::BindType::DateTime and
2009-09-13 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8.h, test/test_clob.rb: Change
OCI8::LOB#write to accept an object which is not a String and
doesn't respond to 'to_str' as IO#write does.
(requested by Christopher Jones)
2009-09-12 KUBO Takehiro <>
* ext/oci8/extconf.rb, lib/ Fixed for ruby 1.9.2 preview1.
(pointed by Raimonds Simanovskis)
2009-09-12 KUBO Takehiro <>
* ext/oci8/oraconf.rb: Fixed to compile for AIX instant clients.
(reported by Kazuya Teramoto)
2009-06-09 KUBO Takehiro <>
* ext/oci8/oci8lib.c: Change the initial polling interval of
non-blocking mode for ruby 1.8 from 100 msec to 10 msec, which
is same with ruby-oci8 1.0.
* ext/oci8/oci8.c: Change the default setting of non-blocking mode
for ruby 1.9 to true. Revise rdoc comments.
2009-06-07 KUBO Takehiro <>
* ext/oci8/oci8.c: revise rdoc comments.
2009-06-05 KUBO Takehiro <>
* Makefile: check rdoc version when making rdoc documentation.
The rdoc version must be 2.4.
* ext/oci8/.document, ext/oci8/oci8.c, lib/.document,
lib/oci8/.document, lib/oci8/oci8.rb: fix rdoc comments a bit.
2009-05-24 KUBO Takehiro <>
* ext/oci8/object.c, lib/oci8/datetime.rb, lib/oci8/object.rb:
add DATE datatype support in object types.
2009-05-19 KUBO Takehiro <>
* ext/oci8/bind.c: delete OCI8::BindType::Fixnum.
* lib/oci8/compat.rb: add OCI8::BindType::Fixnum as an alias
of OCI8::BindType::Integer.
* ext/oci8/extconf.rb: change extconf.rb's argument value of
'--with-oracle-version' to accept dotted version such as
* ext/oci8/oraconf.rb: When extconf.rb fails and it is run
by sudo command, change the error message to notice that
'sudo' may unset environment variables.
2009-05-18 KUBO Takehiro <>
* ext/oci8/oci8.c: revise rdoc comments for OCI8#ping and
OCI8#client_identifier=. Add OCI8#module=, OCI8#action= and
* test/test_appinfo.rb: add test cases for OCI8#module=,
OCI8#action= and OCI8#client_info.
2009-05-17 KUBO Takehiro <>
* NEWS: add changes between 2.0.1 and 2.0.2.
* VERSION: change version to 2.0.2.
* dist-files: append newly added files.
* ext/oci8/oci8.c: fix OCI8#ping not to raise an exception
when OCIPing() failed. It should returns true or false.
* ext/oci8/oci8lib.c: Memory allocated by xmalloc() should be
freed by xfree().
2009-05-17 KUBO Takehiro <>
* ext/oci8/error.c, ext/oci8/extconf.rb, ext/oci8/oci8.h:
fix the native library name in error messages from
to or
* ext/oci8/ocinumber.c, test/test_oranumber.rb: fix
to accept BigDecimal and Rational.
* ext/oci8/bind.c, test/test_oci8.rb: implicitly convert the
specified number to Float when the bind handle is for Float.
* ext/oci8/attr.c: fix for Oracle client which doesn't have
* ext/oci8/oci8.c, test/test_appinfo.rb, test/test_all.rb, dist-files:
add new methods OCI8#ping and OCI8#client_identifier=.
add test cases.
* ext/oci8/oci8lib.c: fix a bug for Oracle 8.0.
* lib/oci8/oci8.rb: add a convenient method OCI8#select_one
to fetch one row.
2009-04-18 KUBO Takehiro <>
* lib/oci8/oci8.rb: move OCI8::BindType module to bindtype.rb.
* lib/oci8/bindtype.rb: added. This defines OCI8::BindType.
* lib/ require 'oci8/bindtype.rb'
2009-04-17 KUBO Takehiro <>
* ext/oci8/encoding.c, ext/oci8/lob.c, ext/oci8/metadata.c,
ext/oci8/oci8.c: suppress "warning C4761: integral size mismatch
in argument; conversion supplied" when compiled by Visual C++.
2009-04-17 KUBO Takehiro <>
* ext/oci8/apiwrap.yml, ext/oci8/env.c, ext/oci8/extconf.rb,
ext/oci8/oci8.h, ext/oci8/oci8lib.c: OCIEnv is initialized
when it is needed. This makes a basis to enable an event
notification after "require 'oci8'."
* test/test_all.rb: fix a bug added four days ago.
2009-04-14 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/ocinumber.c,
ext/oci8/metadata.c, ext/oci8/object.c: pass an OCIError to
OraNumber functions if it can. (This is the first step to
delay OCIEnv initialization.)
2009-04-14 KUBO Takehiro <>
* ext/oci8/oraconf.rb: Gets ORACLE_HOME from the Windows regitry
by enumerating subkeys of \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE.
2009-04-12 KUBO Takehiro <>
* lib/oci8/oci8.rb, test/test_encoding.rb: The string bind length should
be got from the string bytesize converted to OCI8.encoding.
2009-04-12 KUBO Takehiro <>
* ext/oci8/lob.c: OCI8::BLOB#read should return ASCII-8BIT.
OCI8::BLOB#write should not convert the specified string
to OCI8.encoding.
* test/test_dbi.rb: suppress warning: "shadowing outer local
variable - i"
* test/test_all.rb, test/test_encoding.rb: add string encoding
2009-04-12 KUBO Takehiro <>
* lib/dbd/OCI8.rb: fix DBI::DBD::OCI8::BindType::DBIStatementHandle
to pass a newly added sanity check in dbi 0.4.1.
(reported by Dirk Herzhauser)
* test/test_all.rb: fix to use dbi installed as a rubygem.
2009-04-04 KUBO Takehiro <>
* ext/oci8/bind.c: fix an error when executing "select NULL from dual".
(contributed by Raimonds Simanovskis)
2009-03-24 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/oraconf.rb:
fix a problem when compiling with Oracle 8.0.
(reported by Axel Reinhold)
2009-03-24 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h: fix a problem when
compiling with Oracle 9.2.
(reported by Axel Reinhold)
* ext/oci8/apiwrap.yml: suppres warnings 'discards qualifiers
from pointer target type' when compiling with Oracle 8i.
2009-03-17 KUBO Takehiro <>
* NEWS: add a new file.
* VERSION: change version to 2.0.1.
* Makefile: add targets to make a binary gem for Windows.
* dist-files: add NEWS
* ext/oci8/extconf.rb, lib/ rename
to and The renamed name
depends on the ruby version.
* lib/oci8/datetime.rb: fix the fetched type for date column
when using Oracle 8.x.
* ruby-oci8.gemspec: fix to make a binary gem which contains
both and
2009-03-17 KUBO Takehiro <>
* ext/oci8/apiwrap.yml: add prototypes for OCIServerVersion() and
* ext/oci8/oci8.c: (1) add a private method OCI8#oracle_server_vernum,
which returns Oracle server version number.
(2) fix a class method OCI8.oracle_client_vernum when using Oracle
client 10.1 or lower.
* lib/oci8/datetime.rb: fix year information when fetching a date
whose year is between A.D. 1 and A.D. 139.
* lib/oci8/oci8.rb: (1) add OCI8#oracle_server_version.
* (2) change the default data type for timestamp with time zone
from DateTime to Time.
2009-03-11 KUBO Takehiro <>
* oraconf.rb: fix big/little endian checking problem on Mac OS X ppc.
(contributed by unknown. See: Bug ID 24284 on rubyforge.)
2009-02-15 KUBO Takehiro <>
* ext/oci8/ocidatetime.c: fix array DML and DateTime object problem.
OCI8::Cursor#bind_param_array(key, array_of_datetime) didn't
work. (Reported by Leoš Bitto)
* test/test_array_dml.rb: fix to test array DML and DateTime object.
2009-02-10 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/oci8.h, ext/oci8/stmt.c: fix array DML
and DateTime object problem. It didn't work with bind classes
which overwrite 'set' and 'get'. (Reported by Leoš Bitto)
* test/test_array_dml.rb: fix to test array DML and DateTime object.
2009-02-08 KUBO Takehiro <>
* VERSION: change version from 2.0-svn to 2.0.0 to pass ruby
gem's version string validator.
* ruby-oci8.gemspec: added.
* ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/win32.c: 1. add OCI8::Win32Util.dll_path to
retrieve Oracle home location from the OCI.DLL location.
2. add OCI8::Win32Util.enum_homes to get Oracle home and
NLS_LANG pairs in Windows registry.
* lib/oci8/encoding-init.rb: get NLS_LANG from Windows registry
if environment variable NLS_LANG is not set.
* ext/oci8/oraconf.rb: Change the output encoding of sqlplus to
US7ASCII by setting NLS_LANG. If the output encoding is
incompatible with the default external encoding, it raises
'invalid byte sequence' when using ruby 1.9.
* lib/oci8/datetime.rb: fix for ruby 1.9. Ruby 1.9 Time
class's resolution is nanosecond.
* dist-files: add dist-files, ruby-oci8.gemspec and ext/oci8/win32.c.
2009-02-06 KUBO Takehiro <>
* setup.rb: 1. install lib/**/*.yml flies also.
(It is pointed by Nate Wiger that encoding.yml is not installed.)
2. exclude .svn or .git directories on installation.
* lib/oci8/oci8.rb: A private method define_a_column was renamed
to define_one_column to prevent activerecord oracle adapter
and oracle enhanced adapter from redefining the method.
* dist-files: add newly added file names which must be included
in gem or tar.gz packages.
2009-02-01 KUBO Takehiro <>
* lib/dbd/OCI8.rb: add code for ruby-dbi 0.4 type conversion.
* test/test_dbi.rb: suppress deprecated warnings while running
* test/test_dbi_clob.rb: fix a problem when running this
file directly.
2009-01-31 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix for Oracle instant
client rpm package. The directory tree is a bit different
with that of or earlier.
(reported by Luis Parravicini.)
2009-01-31 KUBO Takehiro <>
* lib/DBD/OCI8/OCI8.rb: renamed to lib/dbd/OCI8.rb.
* lib/dbd/OCI8.rb: 1. renamed from lib/DBD/OCI8/OCI8.rb
2. fix USED_DBD_VERSION from 0.2 to 0.4.
3. add DBI::DBD::OCI8.driver_name
(changes for ruby-dbi 0.4 contributed by James Cao.)
2009-01-13 KUBO Takehiro <>
* lib/, lib/oci8/encoding-init.rb: (ruby 1.9) set
OCI8.encoding by querying NLS_LANG. If DEFAULT_OCI8_ENCODING
is defined, use it by default.
* lib/oci8/encoding.yml: (ruby 1.9) add a new file containing
mapping table from Oracle characterset name to Ruby encoding
2009-01-11 KUBO Takehiro <>
* ext/oci8/encoding.c: (ruby 1.9) add OCI8.encoding and
OCI8.encoding= to get and set the encoding of the Oracle
* ext/oci8/oci8.h: (ruby 1.9) add macros OCI8StringValue
and OCI8SafeStringValue which convert the string encoding
to Oracle librarie's encoding.
* ext/oci8/oci8.c: raise a SecurityError when specified
connect string is tainted and $SAFE >= 1.
* ext/oci8/stmt.c: OCI8#parse raise a SecurityError when specified
SQL statemenet is tainted and $SAFE >= 1.
* ext/oci8/metadata.c: OCI8#describe_* raise a SecurityError
when the object name to be described is tainted and $SAFE >= 1.
* ext/oci8/lob.c:, OCI8::BFILE#dir_alias= and
OCI8::BFILE#filename= raise a SecurityError when specified
dir_alias or filename is tainted and $SAFE >= 1.
* ext/oci8/attr.c, ext/oci8/bind.c, ext/oci8/error.c,
ext/oci8/object.c, ext/oci8/oci8lib.c, ext/oci8/ocinumber.c:
(ruby 1.9) converts encoding from/to OCI.encoding.
2009-01-11 KUBO Takehiro <>
* ext/oci8/lob.c: concatenate read data at the end, instead of
appending them for each pieces when reading LOB data.
* test/test_oranumber.rb: fix for ruby 1.9.
2009-01-04 KUBO Takehiro <>
* ext/oci8/oci8.c: delete OCI8.oracle_client_version implemented
in C. add OCI8.oracle_client_vernum whose value is retrieved
by OCIClientVersion() if Oracle 10.2 or upper.
* ext/oci8/oci8.h: add macro rb_define_singleton_method_nodoc,
which prevents rdoc from gathering the specified method.
* lib/.document, lib/oci8/.document: add lib/oci8.rb and
lib/oci8/oracle_version.rb to rdoc targets.
* lib/, lib/oci8/oracle_version.rb: add
OCI8::OracleVersion OCI8.oracle_client_version.
* test/config.rb: change version checking code to use
* test/test_all.rb, test/test_oracle_version.rb: add test cases
of OCI8::OracleVersion.
2009-01-03 KUBO Takehiro <>
* ext/oci8/encoding.c, ext/oci8/error.c, ext/oci8/ocinumber.c,
ext/oci8/oradate.c: use rb_usascii_str_new() or
rb_usascii_str_new_cstr() when its encoding is always
* ext/oci8/extconf.rb: add type checking for rb_encoding
for ruby 1.9.
* ext/oci8/oci8.h: use rb_str_new(), rb_str_new2() and
rb_tainted_str_new() if rb_usascii_str_new(),
rb_usascii_str_new_cstr() and rb_external_str_new_with_enc()
are not usable.
* ext/oci8/oci8lib.c: use ORAVERNUM macro.
2009-01-03 KUBO Takehiro <>
* custom-rdoc.rb: fix for rdoc bundled with ruby 1.9.
* ext/oci8/apiwrap.yml, ext/oci8/oci8lib.c: set the value of
OCI8.oracle_client_version by OCIClientVersion() if
the binary is configured with --with-runtime-check and
the Oracle client is 10.2 or upper.
* test/test_oranumber.rb: disable workaround code when
the Oracle client is or upper.
2008-12-30 KUBO Takehiro <>
* ext/oci8/attr.c: rewrite code converting the rowid descriptor
to string representation by using oci8_exec_sql().
* ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/stmt.c: add check code to ensure that the process id
is not changed.
2008-12-30 KUBO Takehiro <>
* ext/oci8/oraconf.rb: add code to check the cpu type of Mac OS X
2008-12-21 KUBO Takehiro <>
* ext/oci8/apiwrap.yml: add OCINlsCharSetNameToId()
* ext/oci8/encoding.c: add OCI8#charset_name2id and
* ext/oci8/env.c: include <util.h> only when ruby 1.8.
* ext/oci8/oci8.h: don't include <rubyio.h> which is not used
* ext/oci8/ocinumber.c: include <errno.h> to compile
ruby-oci8 for ruby 1.9.
* lib/oci8/metadata.rb: comment duplicated typecode.
* test/test_all.rb: use AutoRunner when it is found.
Ruby 1.9's test unit does't has AutoRunner.
* test/test_oranumber.rb: explicity convert actual_val, which is
passed to before assert_in_delta(), to a Float to prevent
SEGV in OCINumberSub().
2008-12-14 KUBO Takehiro <>
* ext/oci8/stmt.c: fix comment.
* test/test_rowid.rb: add one assertion as ruby-oci8 1.0 branch does.
2008-09-10 KUBO Takehiro <>
* ext/oci8/ocidatetime.c: use session time zone when time zone
is not specified to set bind objects of timestamp with time
zone datatype.
* lib/oci8/datetime.rb: add OCI8::BindType::Util.default_timezone
to get Time or DateTime objects from bind objects of date
* test/test_datetime.rb: fix test_datetype_duck_typing and add
test_timezone for the above changes.
2008-09-09 KUBO Takehiro <>
* ext/oci8/apiwrap.rb, ext/oci8/apiwrap.yml, ext/oci8/oci8.h,
ext/oci8/ocidatetime.c, lib/, lib/oci8/datetime.rb,
lib/oci8/metadata.rb, lib/oci8/oci8.rb, test/test_break.rb,
test/test_datetime.rb, test/test_dbi.rb, test/test_metadata.rb:
fix Oracle version number mistakes. rename ORAVER_9_1 to
2008-08-31 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/stmt.c: disable DYNAMIC_FETCH to fetch
LONG or LONG RAW columns. It doesn't work well.
* lib/oci8/metadata.rb: define char_size for Oracle 8i.
* lib/oci8/oci8.rb: define OCI8::BindType::Long and
OCI8::BindType::LongRaw as subclasses of OCI8::BindType::String
and OCI8::BindType::RAW respectively. fix
OCI8::BindType::String.create and OCI8::BindType::RAW.create
for strings longer than 4000.
* test/test_array_dml.rb: add workaround of "ORA-01036: illegal
variable name/number" by renaming a bind variable name ":N"
to ":1". I guess this is a problem in the Oracle library.
* test/test_break.rb, test/test_dbi.rb, test/test_metadata.rb:
fix test codes for Oracle 8i or lower.
* test/test_oci8.rb: revise a test for LONG columns.
2008-08-28 KUBO Takehiro <>
* ext/oci8/apiwrap.yml: OCINumberSign is unavailable on Oracle 8.
* lib/DBD/OCI8/OCI8.rb: A data dictionary all_constraints doesn't have
index_name column on Oracle 8i or lower. Rewrite
DBI::DBD::OCI8::Database#column by using all_cons_columns.
* lib/oci8/metadata.rb: raise an error when using
* test/config.rb: Oracle 8 desn't have database_compatible_level data
* test/test_metadata.rb: fix test codes for Oracle 8i or lower.
2008-08-26 KUBO Takehiro <>
* ext/oci8/metadata.c: fix bugs when trying to use already freed
* ext/oci8/ocidatetime.c: fix OCI8::BindType::OCIDate#set().
* ext/oci8/ocinumber.c: undef OraNumber#round_prec and OraNumber
#shift when using Oracle 8.0.
* lib/oci8/datetime.rb, lib/oci8/metadata.rb: fix bugs when using
Oracle 8.0.
* test/config.rb, test/test_dbi.rb, test/test_metadata.rb,
test/test_oci8.rb, test/test_oranumber.rb: do same with the
previous commit.
* test/test_datetime.rb: disable some test cases when Oracle 8.1
or lower.
* test/test_dbi_clob.rb: fix when testing in a deep directory.
2008-08-26 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/apiwrap.h.tmpl, ext/oci8/apiwrap.rb
ext/oci8/apiwrap.yml, ext/oci8/bind.c, ext/oci8/extconf.rb,
ext/oci8/oci8.h, ext/oci8/ocidatetime.c, ext/oci8/xmldb.c,
lib/, lib/oci8/datetime.rb, lib/oci8/metadata.rb,
lib/oci8/oci8.rb: change oracle version number format.
For example Oracle 9.1.0's version number was represented as 910
in ruby-oci8. Now it is 0x09000000. This format is same with
that of the last argument of OCIServerRelease().
2008-08-10 KUBO Takehiro <>
* ext/oci8/lob.c: add workaround code for a losing character problem
when reading CLOB. The problem is happened at the following condition.
1. Oracle client version is or
(It doesn't depend on Oracle server version.)
2. The character set is a variable-length one (e.g. AL32UTF8).
* dist-files: add lib/oci8/datetime.rb and .document files.
2008-08-09 KUBO Takehiro <>
* ext/oci8/lob.c: fix OCI8::LOB#size= when using a lob over 2GB.
fix the return value of OCI8::LOB#write when writing a string
over 2GB.
2008-08-05 KUBO Takehiro <>
* test/config.rb, test/test_all.rb, test/test_array_dml.rb,
test/test_bind_raw.rb, test/test_bind_time.rb, test/test_break.rb,
test/test_clob.rb, test/test_connstr.rb, test/test_datetime.rb,
test/test_dbi.rb, test/test_dbi_clob.rb, test/test_metadata.rb,
test/test_object.rb, test/test_oci8.rb, test/test_oradate.rb,
test/test_oranumber.rb, test/test_rowid.rb:
fix to run tests in directories outside of 'test' directory.
2008-08-04 KUBO Takehiro <>
* ext/oci8/attr.c: If ORA-01000 (maximum open cursors exceeded) when
converting a rowid descriptor to string representation, run
GC to cleanup unreferenced statement handles and try again.
* ext/oci8/oci8.h, ext/oci8/oci8lib.c: add a utility function
oci8_exec_sql() to execute a SQL statement in C.
* ext/oci8/encoding.c: use oci8_exec_sql() to run anonymous PL/SQL
blocks in oci8_charset_id2name() and oci8_charset_name2id().
* ext/oci8/bind.c, ext/oci8/metadata.c, ext/oci8/ocidatetime.c,
ext/oci8/ocinumber.c: suppress compiler warnings.
* ext/oci8/oci8.c: avoid "[BUG] object allocation during garbage
collection phase" when using ruby 1.9. In GC, just free a
session handle without rollback.
2008-08-02 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/ocidatetime.c, lib/,
lib/oci8/datetime.rb: change binding code for timestamps
and intervals. C side is a thin wrapper which converts Oracle's
date, timestamp and interval values to ruby arrays and vise
versa. Ruby side converts the arrays to ruby's Time, DateTime,
Integer (for interval year to month) and Rational (for interval
day to second).
* lib/oci8/oci8.rb: change mapping for binding date, timestamp and
timestamp with local time zone from OCI8::BindType::DateTime
to OCI8::BindType::Time.
* test/test_array_dml.rb, test/test_datetime.rb, test/test_dbi.rb,
test/test_oci8.rb: fix test cases for a change above.
2008-07-17 KUBO Takehiro <>
* Makefile: add a rdoc target to make rdoc document.
* custom-rdoc.rb: add a file which customizes rdoc to handle
oci8_define_class_under() and oci8_define_bind_class().
* ext/oci8/.document: add a new file for rdoc.
* ext/oci8/bind.c, ext/oci8/oci8.h: rename cOCIBind to cOCI8BindTypeBase,
which is same name used in custom-rdoc.rb.
* ext/oci8/oci8.c, ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c:
delete code in comment for vanilla rdoc which doesn't know what
oci8_define_class_under() and oci8_define_bind_class() do.
* ext/oci8/oradate.c: fix rdoc comments.
2008-07-13 KUBO Takehiro <>
* ext/oci8/stmt.c: (1) add rdoc comments. (2) OCI8::Cursor#type
returns a Fixnum when the type is not undocumented value instead
of raising an exception.
* lib/.document, lib/oci8/.document: add new files for rdoc.
* lib/oci8/metadata.rb: fix OCI8::Metadata::Scheme#inspect.
* lib/oci8/object.rb: don't put OCI8::BindArgumentHelper, which is
not used by users, to rdoc.
* lib/oci8/oci8.rb: (1) fix rdoc comments. (2) change the return
value of OCI8#exec when the SQL statement is a PL/SQL block.
(3) change the method of customize the bind type for NUMBER
without precision and scale to same with ruby-oci8 1.0 as follows
OCI8::BindType::Mapping[:number_unknown_prec] = ...
OCI8::BindType::Mapping[:number_no_prec_setting] = ...
2008-07-12 KUBO Takehiro <>
* lib/oci8/oci8.rb: add OraNumber#to_json and OraDate#to_json.
* lib/oci8/metadata.rb: define char_used?, char_size, fsprecision
and lfprecision methods to subclasses of OCI8::Metadata::Base
onln when Oracie 9i or upper. They ara unavailable on Oracle
8.1 or lower.
2008-07-06 KUBO Takehiro <>
* ext/oci8/oci8.h: add comments.
2008-07-05 KUBO Takehiro <>
* ext/oci8/oraconf.rb:
1. prints more information on checking LD_LIBRARY_PATH.
2. fix for windows Oracle 11g instant client.
3. fix for intel mac instant client.
* ext/oci8/object.c, lib/oci8/object.rb, lib/oci8/oci8.rb:
fix to pass an array of Oracle objects to a procedure.
2008-04-27 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/oci8/oci8.rb: fix typo.
(pointed by Liming)
* dist-files: fix added and deleted files.
2008-04-08 KUBO Takehiro <>
* metaconfig: add '-w' when running test cases.
* test/test_metadata.rb: suppress warning: "shadowing outer local variable - i."
* ext/oci8/stmt.c: suppress warning: "warning: instance variable
@max_array_size not initialized" at lib/oci8/oci8.rb:375.
2008-03-29 KUBO Takehiro <>
* ext/oci8/encoding.c, ext/oci8/extconf.rb, ext/oci8/oci8.h
ext/oci8/oci8lib.c: add a new file encoding.c.
oci8_charset_id2name() is added to convert Oracle charset
id to charset name. If the Oracle client version is 9iR2
or upper, it uses OCINlsCharSetIdToName(). If 9iR1 or lower,
it uses PL/SQL function nls_charset_name() and converts
at the server side.
* ext/oci8/metadata.c: use oci8_charset_id2name() instead of
2008-03-29 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8lib.c, ext/oci8/oci8.h:
When '--with-runtime-check' is passed to extconf.rb,
is no longer linked to an Oracle client library at compilation
time. It tries to search the Oracle client library at runtime.
* ext/oci8/bind.c: define OCI8::BindType::BinaryDouble when
oracle_client_version's value is 10g or later, not when SQLT_BDOUBLE
is declared. This is for runtime check.
2008-03-22 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/object.c, ext/oci8/oci8.h,
ext/oci8/oci8lib.c, ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c,
ext/oci8/oradate.c, ext/oci8/stmt.c: add qualifier 'const' to
oci8_bind_*class_t values. These are read only.
2008-03-22 KUBO Takehiro <>
* ext/oci8/.: add apiwrap.[ch] to svn:ignore property.
* ext/oci8/apiwrap.c.tmpl, ext/oci8/apiwrap.rb, ext/oci8/apiwrap.yml:
add alternative code if OCINumberSetPi(), OCINumberIsInt() is
not found.
* ext/oci8/oci8.h: delete unused macros. add LIKELY and UNLIKELY
macros and use the former in oci8_get_errhp().
* ext/oci8/oci8.h, ext/oci8/oci8lib.c: change the scope of
oci8_base_class to static.
* ext/oci8/ocinumber.c: fix OraNumber#** and OraNumber#<=>. raise
exceptions when OraNumber#round_prec or OraNumber#shift is called
and the Oracle client version is 8.0.
* test/test_oranumber.rb: add testcass for all OraNumber methods.
2008-03-19 KUBO Takehiro <>
* ext/oci8/ocinumber.c, lib/oci8/compat.rb, lib/oci8/object.rb
lib/oci8/oci8.rb, test/test_oci8.rb:
1. OCINumber, which is a new object in 2.0, become OraNumber.
This means OraNumber become a true numeric class.
2. Rdoc comments in ocinumber.c are fixed.
2008-03-08 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8lib.c, ext/oci8/rowid.c:
rowid.c is deleted. OCIRowid is no longer in use.
* ext/oci8/oci8.h, ext/oci8/attr.c: oci8_get_rowid_attr()
is moved from rowid.c and returns a String instead of
an OCIRowid object.
* ext/oci8/stmt.c: fix a rdoc comment of OCI8::Cursor#rowid.
* lib/oci8/oci8.rb: fetch a rowid value as a String.
* test/test_all.rb, test/test_rowid.rb: add a rowid testcase.
2008-03-07 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/apiwrap.rb, ext/oci8/apiwrap.yml:
add all OCI functions to 'apiwrap.yml'.
* ext/oci8/object.c: use OCIObjectPin_nb() instead of OCIObjectPin().
* ext/oci8/oci8lib.c: call OCIBreak in rb_thread_blocking_region()
to prevent the thread from being blocked.
2008-03-06 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/apiwrap.h.tmpl:
rewrite apiwrap.[ch].tmpl. All non-static variables
and functions have 'oci8_' prefix name.
* ext/oci8/apiwrap.rb, ext/oci8/apiwrap.yml,
ext/oci8/extconf.rb: change format of apiwrap.yml
to use both OCIAttrGet() and OCIAttrGet_nb().
* ext/oci8/oci8.c, test/config.rb: add OCI8.oracle_client_version.
2008-03-05 KUBO Takehiro <>
* ext/oci8/env.c, ext/oci8/oci8.h: use native API to get a thread
local errhp (ruby 1.9 only)
pthread: pthread_getspecific()
win32: TlsGetValue()
2008-03-04 KUBO Takehiro <>
* ext/oci8/extconf.rb: output a message to say 'install
a ruby development package' when 'mkmf.rb' is not
found and the platform is Linux. Both ruby and its
development package are required to compile extension
libraries on Linux.
2008-03-04 KUBO Takehiro <>
* ext/oci8/ocinumber.c: fix for ruby-1.9.0-1.
The arguments of rb_num_coerce_cmp() and rb_num_coerce_bin()
are changed in ruby-1.9.0-1.
2008-2-27 Liming Lian <>
Add new feature: Array DML
* lib/oci8/oci8.rb: add three new methods for Array DML to OCI8::Cursor:
max_array_size=, bind_param_array and exec_array
1) OCI8::Cursor#max_array_size=: set the maximum array size for OCI8::Cursor#bind_param_array.
This method should be called before OCI8::Cursor#bind_param_array
2) OCI8::Cursor#bind_param_array: bind array explicitly. This method is used to bind an array of
values to a placeholder embedded in the prepared statement which is to be executed with
3) OCI8::Cursor#exec_array: executes the SQL statement assigned the cursor with array bindings.
This implementation currently only supports non-data returning statements (INSERT, UPDATE, DELETE
but not SELECT). All binding arrays should be the same size and this size will be used as iteration
count for OCIStmtExecute()
* ext/oci8/stmt.c: add support for Array DML
1) Change the parameters for invoking OCIBindByPos and OCIBindByName because
currently we only support Array DML for non-PL/SQL binds.
2) Add a new parameter "Value iteration_count" to function oci8_stmt_execute.
This parameter indicates iteration count for OCIStmtExecute. For Non-Array DML,
you should set this parameter "nil"
3) Add three new functions: each_value, clear_binds_iterator_proc, oci8_stmt_clear_binds.
Those functions are used to clear all binds from OCI8::Cursor. When calling OCI8::Cursor#max_array_size,
all the binds will be clean from cursor if instance variable max_array_size of cursor is set before.
* test/test_array_dml.rb(added): add test cases for Array DML
* test/test_all.rb: call test cases for Array DML
2008-02-17 KUBO Takehiro <>
* Makefile: add format_c_source target to fix indentation by
astyle. <URL:>
* ext/oci8/error.c, ext/oci8/lob.c, ext/oci8/metadata.c,
ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c,
ext/oci8/oradate.c, ext/oci8/stmt.c, ext/oci8/xmldb.c:
fix indentation by astyle.
The command line options are as follows.
astyle --style=linux --indent=spaces=4 --brackets=linux ext/oci8/*.[ch]
2008-02-17 KUBO Takehiro <>
* ext/oci8/object.c, ext/oci8/stmt.c:
change from:
switch (fixnum_value) {
switch (FIX2INT(fixnum_value)) {
"case INT2FIX(INT_CONSTANT)" confuses astyle.
astyle's URL:
* test/config.rb: sleep 5 seconds and retry again when
ORA-12516 or ORA-12520. One second was too short on
my new linux box.
* test/test_oci8.rb: fix a test case for x86_64 linux.
2008-01-14 KUBO Takehiro <>
* ext/oci8/extconf.rb: add checking code for intern.h, util.h,
ruby/util.h, ruby_errinfo and rb_errinfo.
* ext/oci8/env.c: define a header file to be included by
* ext/oci8/oci8.h: define a header file to be included by
HAVE_RUBY_ERRINFO to define rb_errinfo() as a macro.
* ext/oci8/oci8.c: use rb_eval_string() instead of rb_reg_new()
for not to use RUBY_VM.
2008-01-14 KUBO Takehiro <>
* ext/oci8/oci8.h ext/oci8/oci8lib.c: rename variable name
cOCIHandle to oci8_cOCIHandle to use outside of oci8lib.c.
* ext/oci8/metadata.c: use oci8_cOCIHandle instead of rb_cObject
to hold a descrbe handle. check parent object's handle type
in oci8_metadata_create().
2008-01-14 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl: fix a bug on runtime-api check.
* ext/oci8/ocidatetime.c, test/test_datetime.rb: use
DateTime.parse('0001-01-01 00:00:00.1') instead of
DateTime.parse('00:00:00.1'). The latter doesn't work
on ruby 1.8.5 or earlier.
* test/config.rb: revert the previous commit and add
get_oci8_connection() and get_dbi_connection() to the
base class of test cases. When an attempt to connect fails
by ORA-12516 or ORA-12520, their methods sleep one seconds
and try again more once.
delete unused method setup_lowapi().
* test/test_bind_raw.rb, test/test_bind_time.rb,
test/test_break.rb, test/test_clob.rb, test/test_datetime.rb,
test/test_dbi.rb, test/test_dbi_clob.rb, test/test_metadata.rb,
test/test_object.rb, test/test_oci8.rb, test/test_oradate.rb,
test_oranumber.rb: revert the previous commit and use
get_oci8_connection() or get_dbi_connection() to make a
2008-01-08 KUBO Takehiro <>
* test/config.rb, test/test_bind_raw.rb, test/test_bind_time.rb,
test/test_break.rb, test/test_clob.rb, test/test_datetime.rb,
test/test_dbi.rb, test/test_dbi_clob.rb, test/test_metadata.rb,
test/test_object.rb, test/test_oci8.rb, test/test_oradate.rb,
test_oranumber.rb: use one OCI8 session for all OCI8 test cases
and use one DBI session for all DBI test cases.
Before this changes, connection/disconnection were called
for each tests. If they are done too frequently and the Oracle
server is on a remote server, the following error is raised.
OCIError: ORA-12516: TNS:listener could not find available
handler with matching protocol stack
2008-01-04 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/stmt.c: 1. add a 'pre_fetch_hook'
callback function to oci8_bind_class_t. This function is
called before OCIStmtFetch in OCI8::Cursor#fetch.
2. allocate OCIStmt handle by pre_fetch_hook when a result set
has cursors.
3. change 'init' callback function's prototype in
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/object.c,
ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c,
ext/oci8/oradate.c, ext/oci8/rowid.c: changes causes by above 1
and 3.
* test/test_oci8.rb: delete re-defining in a test case for cursors
in a result set.
2008-01-03 KUBO Takehiro <>
* ext/oci8/error.c: fix a SEGV bug when an error is raised in GC.
make a custom backtrace entry only when 'caller' returns an Array.
2007-12-29 KUBO Takehiro <>
* lib/oci8/metadata.rb, lib/oci8/oci8.rb: support cursors in a
result set. For example:
SELECT column1 A, column2 B, CURSOR(SELECT * FROM table2) C
FROM table1
(port from changes in 1.0.0, which is contributed by Randy Gordon)
* test/test_oci8.rb: add a testcase for cursors in a result set.
2007-12-23 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix for official x86_64 rpms.
(contributed by Pat.)
2007-12-04 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/oci8/oci8.rb: delete a private method
OCI8::Curosr#__connection and use @con instead.
2007-12-04 KUBO Takehiro <>
* ext/oci8/extconf.rb: compile xmldb.o by default.
* ext/oci8/lob.c, ext/oci8/metadata.c, ext/oci8/oci8.c: use
functions which ends with _nb instead of normal OCI functions
if they may block ruby itself. delete BUILD_FOR_ORACLE_* macros
and use have_OCI* instead.
* ext/oci8/oci8.h: delete unused macros; BUILD_FOR_ORACLE_*,
Get_Int_With_Default, oci_rc2, oci_rc, and _D_.
* ext/oci8/oci8lib.c, ext/oci8/oci8.c: change the default value
of executing_thread member in oci8_svcctx_t.
* ext/oci8/xmldb.c: disabled for a while.
2007-12-04 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/apiwrap.h.tmpl, ext/oci8/apiwrap.rb:
change function declares of runtime-check.
add oracle_client_version.
* ext/oci8/apiwrap.yml: add OCI function prototypes.
* ext/oci8/extconf.rb: check oracle_client_version by existent functions
in OCI libraries. delete BUILD_FOR_ORACLE_VERSION_MAJOR and
* ext/oci8/oci8.h: use ORACLE_CLIENT_VERSION instead of
* ext/oci8/ocidatetime.c: fix for ruby 1.8.
* ext/oci8/tdo.c: delete an unused file.
2007-12-03 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl: move rboci_blocking_region() and
find_symbol() to ext/oci8/oci8lib.c and rename to
oci8_blocking_region() and oci8_find_symbol() respectively.
* ext/oci8/bind.c: use RFLOAT_VALUE macro for ruby 1.9.
* ext/oci8/oci8.h: define a macro RFLOAT_VALUE if it is not defined.
add prototypes oci8_blocking_region() and oci8_find_symbol().
* ext/oci8/oci8lib.c: add oci8_blocking_region() and oci8_find_symbol().
* ext/oci8/ocidatetime.c: add workaround code for ruby 1.9 VM bug.
* lib/DBD/OCI8/OCI8.rb, lib/oci8/metadata.rb, test/test_metadata.rb:
rename OCI8::Metadata::Column#is_null? to
OCI8::Metadata::Column#nullable? as ruby 1.0.0 does.
* test/test_dbi.rb: add testcase to check binding ''(empty string)
via dbi as ruby 1.0.0 does.
* test/test_oci8.rb: add asserts binding Nan, +Infinity and
-Inifinty as ruby 1.0.0 does.
2007-11-23 KUBO Takehiro <>
* ext/oci8/apiwrap.c.tmpl, ext/oci8/apiwrap.h.tmpl, ext/oci8/apiwrap.rb
ext/oci8/apiwrap.yml, ext/oci8/extconf.rb, ext/oci8/oci8.h
ext/oci8/oci8lib.c: add a framework to check whether an OCI functions
exists at run-time.
* ext/oci8/lob.c: check whether OCILobIsTemporary and OCILobLocatorAssign
exist at run-time.
* ext/oci8/rowid.c: use new framework to check whether OCIRowidToChar
exists at run-time.
2007-11-20 KUBO Takehiro <>
* ext/oci8/extconf.rb, , ext/oci8/apiwrap.c.tmpl,
ext/oci8/apiwrap.h.tmpl, ext/oci8/apiwrap.rb,
ext/oci8/apiwrap.yml: add new files for non-blocking
executions. These use rb_thread_blocking_region in
ruby 1.9.
* ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/stmt.c:
use new non-blocking execution API for OCI8#exec and
* test/test_break.rb: add comment and add sleep to pass
2007-11-19 KUBO Takehiro <>
* ext/oci8/ocidatetime.c, test/test_datetime.rb: fix for a change
of DateTime#fsec_fractions in ruby 1.9.
* ext/oci8/stmt.c: rename OCI8::Cursor#__defineByPos to
* test/test_oci8.rb: add test_select_number.
* lib/oci8/oci8.rb: add OCI8::BindType::Base.create which acts as
a factory method. move bindtype specific code to create method
of OCI8::BindType::Base's subclasses.
2007-11-18 KUBO Takehiro <>
* lib/DBD/OCI8/OCI8.rb: add StatementHandle#column_info.
refine DatabaseHandle#columns.
* test/test_dbi.rb: add a testcase for StatementHandle#column_info
and DatabaseHandle#columns.
2007-11-17 KUBO Takehiro <>
* ext/oci8/error.c: add OCIError#initialize(msg, code = nil).
* ext/oci8/metadata.c, lib/oci8/metadata.rb: rename char_semantics
method to "char_used?". change the return value of data_type
method when the data_type is NCHAR, NVARCHAR2 or NCLOB.
* test/test_all.rb, test/test_metadata.rb: add a testcase for
OCI8::Cursor#column_metadata and OCI8#describe_table.
2007-11-17 KUBO Takehiro <>
* lib/oci8/oci8.rb: OCI8::Cursor#fetch_hash accepts a block now.
* test/test_oci8.rb: add a test for fetch_hash with a block.
* ext/oci8/metadata.c: fix for 64-bit windows.
2007-11-12 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/oci8/oci8.rb: add OCI8::Cursor#column_metadata.
* ext/oci8/metadata.c, ext/oci8/oci8.h, ext/oci8/stmt.c: Change
the lifetime of OCI8::Metadata::Base. It depended on the connection,
but now it depends on what it describes. For example OCI8::cursor
for OCI8::Cursor#column_metadata.
* ext/oci8/env.c, ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/oraconf.rb, setup.rb: fix for ruby 1.9. Not full tests are
not passed on ruby 1.9.
2007-11-11 KUBO Takehiro <>
* ext/oci8/oci8.c, lib/oci8/metadata.rb, test/test_datetime.rb:
suppress warnings 'instance variable @xxxx not initialized' when
running ruby with '-w' option. (suggested by Daniel Berger.)
2007-11-11 KUBO Takehiro <>
* test/config.rb, test/test_dbi.rb, test/test_oci8.rb:
add 'purge' option to 'drop table' statement when Oracle 10g
or upper.
* ext/oci8/bind.c: add OCI8::BindType::BinaryDouble when SQLT_BDOUBLE
is defined.
* lib/oci8/compat.rb: add OCI8::SQLT_IBFLOAT, OCI8::SQLT_IBDOUBLE and
OCI8::SQLT_BFILE for compatibility with 1.0.
* lib/oci8/metadata.rb, lib/oci8/object.rb, lib/oci8/oci8.rb:
rename :bfloat and :bdouble to :binary_float and :binary_double
* lib/oci8/oci8.rb: use OCI8::BindType::BinaryDouble for :binary_float
and :binary_double column when BinaryDouble is available.
* test/test_oci8.rb: bind as binary_double explicitly in
2007-10-15 KUBO Takehiro <>
* lib/oci8/object.rb: quick fix to get and set object
attributes without explicitly setting default_connection.
I am now wavering about what to do.
2007-10-14 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix a problem to compile with a
third-party x86_64 rpm package. '--with-instant-client'
option become obsolete and is ignored.
* ext/oci8/oraconf.rb: fix for FreeBSD oracle8-client port.
Not all tests are passed on FreeBSD yet.
* lib/oci8/object.rb: fix a problem when convertion ruby class
name to oracle object name fails.
2007-10-11 KUBO Takehiro <>
* lib/DBD/OCI8/OCI8.rb: add DatabaseHandle#columns for DBI.
(suggested by Venkat Pa)
2007-10-11 KUBO Takehiro <>
* lib/DBD/OCI8/OCI8.rb: fix external OS authentication.
I applied Dan Fitch's patch to improper location.
2007-07-24 KUBO Takehiro <>
* ext/oci8/object.c, lib/oci8/object.rb: support binary_double,
binary_float and object member of object datatype.
* test/setup_test_object.sql, test/test_object.rb: add testcase for
binary_double, binary_float, embedded object, array of raw, array
of binary_double, array of binary_float, array of object in object
2007-07-07 KUBO Takehiro <>
* ext/oci8/object.c: support array of number in OCI8::NamedCollection.
* test/setup_test_object.sql, test/test_object.rb: fix a testcase
to test array of number.
2007-07-05 KUBO Takehiro <>
* lib/oci8/object.rb, ext/oci8/object.c: add OCI8::NamedCollection
to support collection datatypes. add OCI8::NamedType#attributes
and #attributes= instead of OCI8::NamedType#copy_attributes_from
and #copy_attributes_to. and others.
* lib/oci8/oci8.rb: add OCI8#username.
* test/test_object.rb: add a testcase for array of varchar2.
2007-07-04 KUBO Takehiro <>
* ext/oci8/object.c, lib/oci8/object.rb, lib/oci8/oci8.rb:
delete OCI8::NamedType module and OCI8::NamedType::Base class
and add OCI8::Object module, OCI8::Object::Base class and
OCI8::NamedType class. In the user view, OCI8::NamedType::Base
become OCI8::Object::Base. The reason is that 'named type' is used
only by OCI documents, and Other Oracle manuals use Oracle Object.
* ext/oci8/oci8.c: free all dependent objects in advance to
disconnecting a connection.
* lib/oci8/metadata.rb: add OCI8::Metadata::Type#type_metadata.
fix typos.
* test/setup_test_object.sql, test/test_object.rb: add a testcase for
Oracle Objects.
2007-07-03 KUBO Takehiro <>
* lib/DBD/OCI8/OCI8.rb: fix for external OS authentication.
(contributed by Dan Fitch)
2007-06-26 KUBO Takehiro <>
* ext/oci8/oci8.c: add external OS authentication. (suggested by Dan Fitch)
conn ='/')
conn =, nil)
* test/test_connstr.rb: fix a testcase for external OS authentication.
2007-06-23 KUBO Takehiro <>
* ext/oci8/oraconf.rb: read a shared library's ELF header to
check what cpu is it for. (linux x86, x86_64 and ia64 only)
2007-06-05 KUBO Takehiro <>
* ext/oci8/oraconf.rb: copy oraconf.rb of ruby-oci8-1.0 branch.
* ext/oci8/lob.c, ext/oci8/oci8.h, ext/oci8/stmt.c: fix to bind
an OCI8::NCLOB value on Oralce 9i.
* test/test_oci8.rb: add testcases for binary_double datatype
2007-05-20 KUBO Takehiro <>
* lib/oci8/object.rb, ext/oci8/object.c: add new files.
* ext/oci8/bind.c: fix to bind object type.
* ext/oci8/extconf.rb: use object.c instead of tdo.c.
* ext/oci8/metadata.c: add OCI8::Metadata::Base#tdo_id.
* ext/oci8/oci8.h: add new prototypes; oci8_set_ocinumber(),
oci8_set_integer() and Init_oci_object(). delete Init_oci_tdo().
* ext/oci8/oci8lib.c: use Init_oci_object() instead of Init_oci_tdo().
* ext/oci8/ocinumber.c: export oci8_set_ocinumber() and
* ext/oci8/stmt.c: fix to bind object type.
* lib/ add requiring 'oci8/object.rb'.
* lib/oci8/metadata.rb: add OCI8::Metadata::TypeMethod#has_result?
fix comments.
* lib/oci8/oci8.rb: fix to bind object type.
2007-05-12 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h,
ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c, ext/oci8/oradate.c,
ext/oci8/rowid.c, ext/oci8/stmt.c, ext/oci8/tdo.c:
change a callback function's argument type used internally
in OCI8::BindType::Base#set().
* ext/oci8/metadata.c, lib/oci8/metadata.rb: change the internal
structure of OCI8::Metadata::Base.
2007-05-10 KUBO Takehiro <>
* lib/oci8/oci8.rb: 1. move the location of setting
OCI8::BindType::Mapping to the end of the file.
2. set :xmltype to OCI8::BindType::Mapping's key when
the fetched column is XMLTYPE.
2007-05-03 KUBO Takehiro <>
* ext/oci8/extconf.rb: add '--with-oracle-version' option to
make a binary for the specified oracle version.
get the oracle client version from available OCI functions.
* ext/oci8/lob.c, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/rowid.c, ext/oci8/tdo.c, ext/oci8/xmldb.c: use
BUILD_FOR_ORACLE_major_minor macros instead of HAVE_xxx
* ext/oci8/oci8.c: delete unsed code.
* dist-files: add ext/oci8/xmldb.c and test/test_connstr.rb.
2007-05-01 KUBO Takehiro <>
* ext/oci8/bind.c: fix to return nil for LONG null column.
* ext/oci8/env.c: use OCIInitialize() and OCIEnvInit() instead
of OCIEnvCreate() on every Oracle version.
* ext/oci8/env.c, ext/oci8/error.c, ext/oci8/oci8.h: raise
"OCI Library Initialization Error" when Oracle can't supply
the error message.
* ext/oci8/oci8.c: raise OCIException instead of TypeError.
* lib/oci8/metadata.rb: fix typo in comment.
* VERSION: change to 2.0-svn.
2007-04-30 KUBO Takehiro <>
* ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/tdo.c: enable XML support when Oracle 10g.
* ext/oci8/xmldb.c: add oci8_make_rexml() to support XML for reading.
* ext/oci8/lob.c: fix compiler warnings.
* ext/oci8/error.c: fix a bit.
2007-04-28 KUBO Takehiro <>
* lib/oci8/oci8.rb: fetch NCLOB column value as an OCI8::NCLOB. fetch
BINARY_DOUBLE and BINARY_FLOAT column as a Float.
* lib/oci8/metadata.rb: OCI8::Metadata::Column#data_type can return
:nclob, :bfloat and :bdouble now.
* ext/oci8/extconf.rb: check whether OCILobCreateTemporary exists.
* ext/oci8/lob.c: add OCI8::NCLOB.
* ext/oci8/oci8.h: add oci8_make_nclob().
* ext/oci8/tdo.c: use oci8_make_nclob().
2007-04-26 KUBO Takehiro <>
* lib/oci8/oci8.rb: fetch BFILE as OCI8::BFILE.
* ext/oci8/lob.c: add OCI8::BFILE.
* ext/oci8/oci8.h: add oci8_make_bfile().
* ext/oci8/tdo.c: use oci8_make_bfile().
* ext/oci8/stmt.c: use oci8_get_error_code().
2007-04-21 KUBO Takehiro <>
* ext/oci8/error.c: change a way to set the error line number to the
OCIException's backtrace.
2007-02-15 KUBO Takehiro <>
no new features. fix to suppress warnings and to compile with ruby 1.9.
* ext/oci8/attr.c, ext/oci8/lob.c, ext/oci8/metadata.c, ext/oci8/oci8.c,
ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/rowid.c, ext/oci8/stmt.c,
ext/oci8/tdo.c: use union to suppress warnings: dereferencing type-punned
pointer will break strict-aliasing rules.
* ext/oci8/bind.c: change a format string tu suppress a warning.
* ext/oci8/error.c: use rb_errinfo() instead of ruby_errinfo to compile with ruby 1.9.
* ext/oci8/oci8.h: define rb_errinfo() as ruby_errinfo when compling with ruby 1.8.
* ext/oci8/oci8lib.c: delete unused macros OCI_DEFAULT and OCI_COMMIT_ON_SUCCESS.
* ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c: fix bugs.
* ext/oci8/oraconf.rb: use File.exist? instead of File.exists?. The latter become obsolete on ruby 1.9.
* lib/oci8/compat.rb: fix for ruby 1.9. Class.constants returns an array of Symbols in 1.9.
2007-02-14 Oracle Corporation (modified for 2.0 by KUBO Takehiro <>)
* ext/oci8/oci8.c: add a private method parse_connect_string to support
"username/password[@(tns_name|//host[:port]/service_name)][ as (sysdba|sysoper)]".
(The original code, contributed by Oracle, is written
for ruby-oci8 1.0. Kubo rewrite it for 2.0.)
* test/test_connstr.rb: add test cases for parse_connect_string.
* test/test_all.rb: call test cases for parse_connect_string.
2007-02-14 KUBO Takehiro <>
* ext/oci8/ocinumber.c: fix a bug created by the previous commit.
2007-01-28 KUBO Takehiro <>
* ext/oci8/oci8.h: add TO_ORATEXT, TO_CHARPTR and RSTRING_ORATEXT
macros to suppress 'differ in signedness' warinings.
* ext/oci8/attr.c, ext/oci8/error.c, ext/oci8/metadata.c,
ext/oci8/oci8.c, ext/oci8/ocinumber.c, ext/oci8/rowid.c,
ext/oci8/stmt.c, ext/oci8/tdo.c: use TO_ORATEXT, TO_CHARPTR and
RSTRING_ORATEXT macros to suppress 'differ in signedness'
2007-01-08 KUBO Takehiro <>
* ext/oci8/oraconf.rb, ext/oci8/extconf.rb: refactor oraconf.rb.
check whether Full Client or Instant Client by checking load
library path.
2006-12-27 KUBO Takehiro <>
* ext/oci8/oci8.c: ignore an exception during GC.
2006-12-22 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/oci8lib.c: add new structure
members to oci8_base_t to handle parent-children tree.
add new functions oci8_link_to_parent() and
In prior to free the object's content. free all its children.
* ext/oci8/bind.c, ext/oci8/stmt.c:
use oci8_base_t's structure members instead of oci8_bind_t
and oci8_stmt_t's members.
* ext/oci8/lob.c, ext/oci8/metadata.c, ext/oci8/tdo.c:
link to the connection which creates the LOB, Metadata, TDO objects.
These objects are freed when the connection is disconnected.
* ext/oci8/oci8.c: call logoff explicitly when the connection object
is freed.
2006-12-19 KUBO Takehiro <>
* ext/oci8/tdo.c: fix a GC problem.
* ext/oci8/stmt.c: add OCI8::Cursor#prefetch_rows=
* ext/oci8/oci8.c: add OCI8#prefetch_rows=. add comments for rdoc.
* doc/oci8-ja.rb: add comments for rdoc.
2006-12-14 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h,
ext/oci8/ocidatetime.c ext/oci8/ocinumber.c, ext/oci8/oradate.c,
ext/oci8/rowid.c, ext/oci8/stmt.c, ext/oci8/tdo.c: add PL/SQL
table support. unify the variable names of oci8_bind_t.
* lib/oci8/oci8.rb: add PL/SQL table support.
2006-12-13 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h, ext/oci8/stmt.c:
delete oci8_bind_handle_t and use oci8_hp_obj_t.
(prepare to bind an array)
* ext/oci8/bind.c: fix for alignment.
(prepare to bind an array)
2006-12-12 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h,
ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c, ext/oci8/oradate.c,
ext/oci8/rowid.c, ext/oci8/stmt.c, ext/oci8/tdo.c, lib/oci8/oci8.rb:
change arguments of internal bind-init functions.
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h,
ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c, ext/oci8/oradate.c,
ext/oci8/rowid.c, ext/oci8/stmt.c, ext/oci8/tdo.c:
split bind-init callback to init and init_elem.
(prepare to bind an array)
* ext/oci8/bind.c, ext/oci8/oci8.h, ext/oci8/stmt.c:
change arguments of piece-width-fetch callbacks.
(prepare to bind an array)
2006-12-07 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/oci8.h, ext/oci8/stmt.c, ext/oci8/tdo.c:
delete rlen and use_rlen from oci8_bind_t.
* ext/oci8/rowid.c: change the bind type for ROWID not to use rlen.
2006-12-05 KUBO Takehiro <>
* ext/oci8/attr.c, ext/oci8/bind.c, ext/oci8/error.c, ext/oci8/lob.c,
ext/oci8/metadata.c, ext/oci8/oci8.c, ext/oci8/oci8.h,
ext/oci8/ocidatetime.c, ext/oci8/ocinumber.c, ext/oci8/oradate.c,
ext/oci8/rowid.c, ext/oci8/stmt.c, ext/oci8/tdo.c:
2006-11-25 KUBO Takehiro <>
* doc/oci8-ja.rb: add a new file for Japanese rdoc document.
* ext/oci8/ocidatetime.c: add comments for rdoc.
* test/test_datetime.rb: add testcases for OCI8::BindType::DateTime.
2006-11-23 KUBO Takehiro <>
* dist-files, ext/oci8/extconf.rb, ext/oci8/oci8.h, ext/oci8/oci8lib.c,
ext/oci8/oranumber.c: delete OraNumber implemented by C.
* ext/oci8/metadata.c: use oci8_make_integer() instead of ora_number_to_str()
which was implemented in oranumber.c.
* ext/oci8/ocinumber.c: add OCINumber#initialize_copy for OCINumber#copy.
* lib/ delete "require 'oci8/interval.rb'".
* lib/oci8/oci8.rb: remove OraNumber-related code.
* lib/oci8/compat.rb: add emulation code of OraNumber by using OCINumber.
* test_oranumber.rb: use assert_in_delta when comparing Float value.
2006-11-22 KUBO Takehiro <>
* ext/oci8/ocidatetime.c: bind types for interval_ym and interval_ds
are now Rational instread of OCI8::IntervalYM and OCI8::IntervalDS.
* lib/oci8/interval.rb: delete OCI8::IntervalYM and OCI8::IntervalDS.
* lib/oci8/oci8.rb: delete OCI8::IntervalYM and OCI8::IntervalDS.
* test/test_all.rb: call testcases for timestamps and intervals.
* test/test_datetime.rb: add testcases for timestamps and intervals.
2006-11-19 KUBO Takehiro <>
* ext/oci8/oci8.c: fix the default value of OCI8#long_read_len.
* ext/oci8/stmt.c: fix bug when execute RENAME statement.
* test/test_oci8.rb: add testcases for above two problems.
The testcases are contributed by Pete Schwamb.
2006-11-18 KUBO Takehiro <>
* ext/oci8/tdo.c: add a new class OCI8::TDO to fetch Oracle's
object types.
* ext/oci8/bind.c, ext/oci8/extconf.rb, ext/oci8/lob.c,
ext/oci8/oci8.h, ext/oci8/oci8lib.c, ext/oci8/stmt.c,
lib/oci8/oci8.rb: use OCI8::TDO to fetch Oracle's object
* ext/oci8/lob.c: add oci8_make_clob() and oci8_make_blob()
for OCI8::TDO.
* ext/oci8/metadata.c: export cOCI8MetadataBase for OCI8::TDO.
* ext/oci8/error.c: prepend error line in C to the exception's
backtrace for debug.
2006-11-18 KUBO Takehiro <>
* ext/oci8/oraconf.rb: add check code whether oci.h exists.
2006-11-09 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/ocinumber.c: rename make_oci_number()
and make_integer to oci8_make_ocinumber() and oci8_make_integer().
add oci8_make_float().
* ext/oci8/oci8.h, ext/oci8/ocidatetime.c, lib/oci8/oci8.rb: add
oci8_make_datetime_from_ocidate(), oci8_make_datetime_from_ocidatetime(),
oci8_make_interval_ym() and oci8_make_interval_ds().
OCI8::BindType::IntervalYM#get return an OCI8::IntervalYM instead of an array.
OCI8::BindType::IntervalDS#get return an OCI8::IntervalDS instead of an array.
OCI8::BindType::DateTime#get return a DateTime instead of an array.
2006-11-04 KUBO Takehiro <>
* ext/oci8/oci8.h: add callbacks for piecewise operations.
* ext/oci8/oraconf.rb: add an error message for intel mac.
* ext/oci8/bind.c: add OCI8::BindType::Long and
* ext/oci8/stmt.c: fix OCI8::Cursor#define, OCI8::Cursor#bind_param,
OCI8::Cursor#exec and OCI8::Cursor#fetch for piecewise operations.
* ext/oci8/lob.c, ext/oci8/oradate.c, ext/oci8/ocinumber.c,
ext/oci8/rowid.c, ext/oci8/ocidatetime.c, ext/oci8/oranumber.c:
follow up the change of piecewise operations.
* lib/oci8/oci8.rb: use OCI8::BindType::Long and
OCI8::BindType::LongRaw for LONG and LONG RAW respectively.
2006-08-18 KUBO Takehiro <>
* ext/oci8/oradate.c: add OraDate.hash().
* ext/oci8/oranumber.c: now accepts a String.
* lib/oci8/oci8.rb: add YAML support for OraDate and OraNumber.
* test/test_oranumber.rb: add testcases for
2006-08-17 KUBO Takehiro <>
* ext/oci8/bind.c:
Use long instead of int to bind Fixnum.
* lib/ add a workaround code on cygwin version.
Cygwin manages environment variables by itself. They don't
synchroize with Win32's ones. set some Oracle's environment
variables to win32.
2006-08-03 KUBO Takehiro <>
* lib/ add a workaround code on cygwin version.
Cygwin manages environment variables by itself. They don't
synchroize with Win32's ones. set some Oracle's environment
variables to win32.
2006-07-29 KUBO Takehiro <>
* ext/oci8/oradate.c: add OraDate#dup, OraDate#clone, OraDate#_dump
and OraDate._load.
* ext/oci8/oranumber.c: add OraNumber#dup, OraNumber#clone,
OraNumber#_dump and OraNumber._load.
* ext/oci8/rowid.c: add OCIRowid#dup, OCIRowid#clone.
These methods raise an error when using Oracle 8.x.
* test/test_oradate.rb: add tests for OraDate#dup, OraDate#clone,
OraDate#_dump and OraDate._load.
* test/test_oranumber.rb: add tests for OraNumber#dup,
OraNumber#clone, OraNumber#_dump and OraNumber._load.
2006-07-22 KUBO Takehiro <>
* ext/oci8/metadata.c, lib/oci8/metadata.rb: add a type_metadata method
to OCI8::Metadata::Table, OCI8::Metadata::View, OCI8::Metadata::TypeAttr,
OCI8::Metadata::Collection, OCI8::Metadata::Column, OCI8::Metadata::Argument
OCI8::Metadata::TypeArgument and OCI8::Metadata::TypeResult.
2006-07-21 KUBO Takehiro <>
* ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/bind.c, ext/oci8/stmt.c,
lib/oci8/oci8.rb: Support LONG and LONG RAW longer than 65535 bytes.
Add OCI8#long_read_len and OCI8#long_read_len= to set max long
* ext/oci8/oraconf.rb: fix typo.
2006-07-20 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/rowid.c, ext/oci8/oci8lib.c: change
Rowid's internal structure when OCIRowidToChar is available.
The new structure can be passed to Marshal.
* VERSION, Makefile, ext/oci8/extconf.rb:
read version string from the VERSION file.
2006-06-27 KUBO Takehiro <>
Many method move to C layer. Add support of Timestamp, Interval
year to month and Interval day to second. Oracle's Date become
DateTime instead of OraDate.
* ext/oci8/env.c: 1. delete code registering ruby_xmalloc(),
ruby_xrealloc() and ruby_xfree() to OCI library. These
API cannot be called only in ruby VM's native thread.
2. add workaround code to avoid breaking ENV.
* ext/oci8/oci8.c: move OCI8#parse from ruby to C layer.
* ext/oci8/oci8.h, ext/oci8/oci8lib.c: add oci8_id_* variables.
* ext/oci8/ocidatetime.c: delete OCIDateTime and OCIInterval.
add OCI8::BindType::DateTime, OCI8::BindType::IntervalYM and
* ext/oci8/ocinumber.c: delete OCI8::Math::E, OCINumber#trunc
and OCINumber#sign. add OCINumber#truncate and
* ext/oci8/oraconf.rb:fix for OracleXE windows version. OracleXE's
* ext/oci8/oranumber.c: move OCI8::BindType::Integer to ocinumber.c
* ext/oci8/stmt.c: OCI8::Cursor#initialize become private.
move OCI8::Cursor#fetch, OCI8::Cursor#[], OCI8::Cursor#[]=,
OCI8::Cursor#keys from ruby to C layer. add a private method
* lib/oci8/oci8.rb: many methods move to C layer.
* lib/oci8/interval.rb: add OCI8::IntervalYM an OCI8::IntervalDS.
* lib/ocidatetime.rb: deleted.
* test/test_dbi.rb: fix test script which retrieving Date.
* test/test_oci8.rb: fix test script which retrieving Date.
2006-03-05 KUBO Takehiro <>
* ext/oci8/oraconf.rb: add check_ruby_header to warn when
broken darwin ruby.
add export #{ld_path} in check_instant_client().
2006-02-25 KUBO Takehiro <>
* ext/oci8/metadata.c: set default value zero in C of private method
OCI::Metadata::Base#__get_*. add a private method
* lib/DBD/OCI8/OCI8.rb: fix to work with ruby-oci8 0.1 also.
* lib/oci8/metadata.rb: refactor and add comments for rdoc.
2006-02-11 KUBO Takehiro <>
* lib/ require oci8/compat.rb also.
* lib/oci8/compat.rb: add a new file. Old version's features
are moved from lib/oci8/oci8.rb.
* lib/oci8/metadata.rb: data_type's return value become symbol
instead of number.
* lib/oci8/oci8.rb: Old version's features are moved to
2006-02-09 KUBO Takehiro <>
add OCI8::Metadata module.
* ext/oci8/error.c: add oci8_get_error_code().
* ext/oci8/extconf.rb: delete param.o and add metadata.o.
* ext/oci8/metadata.c: add a new file.
* ext/oci8/oci8.h: add oci8_get_error_code(), Init_oci8_metadata(),
oci8_metadata_create() and ora_number_to_str().
delete and oci8_param_create().
* ext/oci8/oci8lib.c: call Init_oci8_metadata() instead of
* ext/oci8/oranumber.c: export ora_number_to_str().
* ext/oci8/param.c: deleted.
* ext/oci8/stmt.c: call oci8_metadata_create instead of
* lib/ require 'oci8/metadata.rb'
* lib/oci8/metadata.rb: add a new file.
2006-02-08 KUBO Takehiro <>
* lib/oci8.rb: move almost code to lib/oci8/oci8.rb.
* lib/oci8/oci8.rb: moved from lib/oci8.rb.
2006-02-04 KUBO Takehiro <>
merge OCIStmt to OCi8::Curosr.
* ext/oci8/oci8.c: implement OCI8::autocommit? and OCI8::autocommit=
in C layer.
* ext/oci8/oci8.h: fix oci8_svcctx_t structure to support
OCI8::autocommit in C layer. fix Init_oci8_stmt() prototype.
* ext/oci8/oci8lib.c: fix Init_oci8_stmt().
* ext/oci8/stmt.c: OCIStmt become OCI8::Cursor. Almost OCIStmt's
methods become private methods, which are called by ruby layer.
* lib/ delete OCI8::autocommit?, OCI8::autocommit=,
2006-02-02 KUBO Takehiro <>
move non-blocking handling code from oci8.rb to
* ext/oci8/error.c: add OCIBreak class.
* ext/oci8/oci8.c: move oci8_svcctx_t to oci8.h.
change oci8_commit(), oci8_rollback(), oci8_non_blocking_p()
and oci8_set_non_blocking() to use oci_rc macro.
change oci8_break() for oci_rc macro.
delete oci8_reset(). OCIReset is called in oci_rc macro now.
change oci8_get_svcctx() scope to global.
implement OCI8#commit, OCI8#rollback, OCI8#non_blocking?,
OCI8#non_blocking=, OCI8#break in C layer.
* ext/oci8/oci8.h: move oci8_svcctx_t from oci8.c.
implement oci_rc2 and oci_rc macro.
* ext/oci8/stmt.c: change oci8_stmt_execute() and oci8_stmt_fetch()
to use oci_rc macro.
* lib/ delete non-blocking handling code.
delete OCI8#commit, OCI8#rollback, OCI8#non_blocking?,
OCI8#non_blocking=, OCI8#break from ruby layer.
2006-01-29 KUBO Takehiro <>
* ext/oci8/oci8lib.c: rename OCI8Base to OCIHandle.
2006-01-28 KUBO Takehiro <>
* ext/oci8/const.c: delete this file.
delete global constants OCI_TYPECODE_*.
* ext/oci8/extconf.rb: delete const.o from compilation objects.
* ext/oci8/oci8lib.c: move oci8_id_new, OCI_DEFAULT and
rename Init_oci8_svcctx() to Init_oci8().
* ext/oci8/oci8.c: rename Init_oci8_svcctx() to Init_oci8().
* ext/oci8/oci8.h: rename Init_oci8_svcctx() to Init_oci8() and so on...
2006-01-28 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/error.c, ext/oci8/oci8.c,
ext/oci8/ocidatetime.c, ext/oci8/oradate.c,
ext/oci8/oranumber.c, ext/oci8/param.c, ext/oci8/rowid.c,
ext/oci8/stmt.c: fix indentation.
* .cvsignore, ext/oci8/.cvsignore: added.
2005-10-22 KUBO Takehiro <>
* ext/oci8/oci8lib.c, ext/oci8/oci8.c, ext/oci8/svcctx.c, ext/oci8/extconf.rb:
oci8.c is renamed to oci8lib.c.
svcctx.c is renamed to oci8.c.
2005-10-22 KUBO Takehiro <>
* ext/oci8/ocidatetime.c: fix to bind OCIDateTime.
* ext/oci8/oraconf.rb: add -R to linker on Solaris and Linux.
* ext/oci8/svcctx.c: change a setter name. __non_blocking= doesn't work. use
__set_non_blocking instead.
* lib/ add ruby's Datetime support.
* lib/ocidatetime.rb: add a ruby's Datetime support file.
* test/test_all.rb: fix
* test/test_break.rb: add two assesion to check a non_blocking status.
* test/test_dbi.rb, test/test_oci8.rb: testcases for DateTime.
* test/test_oradate.rb: delete an unsuccessfull testcase, which depends on libc implementation.
2005-07-17 KUBO Takehiro <>
* ext/oci8/lob.c, ext/oci8/oci8.c, ext/oci8/oci8.h, lib/
delete OCILobLocator. implement OCI8::LOB by C instead of ruby.
* ext/oci8/svcctx.c: add more check in oci8_get_svcctx().
2005-07-17 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h, ext/oci8/ocidatetime.c,
ext/oci8/ocinumber.c, ext/oci8/oradate.c, ext/oci8/oranumber.c,
ext/oci8/rowid.c, ext/oci8/stmt.c, ext/oci8/svcctx.c:
change arguments of (oci8_bind_class_t *)->init(). change the return
value of oci8_get_svcctx(). add oci8_get_oci_session().
* lib/ change arguments of
2005-07-16 KUBO Takehiro <>
* metaconfig: move "require 'base64'" and "require 'zlib'" to the
next line of "def get_zcontent(file)" for a ruby which doesn't
have 'zlib'.
2005-07-10 KUBO Takehiro <>
* ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/svcctx.c, lib/
OCISvcCtx class is merged to OCI8 class. OCISvcCtx's public instance
methods become OCI8's private instance methods.
* ext/oci8/depend: deleted.
2005-07-10 KUBO Takehiro <>
* Makefile, ext/oci8/extconf.rb: change version to 0.2.0-alpha.
* ext/oci8/extconf.rb: add "ocidatetime.o" to $objs. add '--with-instant-client'
to Makefile when setup.rb is called with '--with-instant-client'.
* ext/oci8/oci8.c: add oci8_base_class. fix bug in oci8_handle_initialize().
call Init_oci_datetime() in Init_oci8().
* ext/oci8/oci8.h: add macros oci_lc, CHECK_STRING, TO_STRING_PTR and TO_STRING_LEN.
* ext/oci8/ocinumber.c: add oci8_get_ocinumber().
* ext/oci8/ocidatetime.c: add a new file for OCIDateTime.
2005-07-09 KUBO Takehiro <>
* ext/oci8/bind.c, ext/oci8/lob.c, ext/oci8/oci8.h, ext/oci8/oradate.c,
ext/oci8/oranumber.c, ext/oci8/rowid.c, ext/oci8/stmt.c:
use doubly linked list to free OCI8::BindType::*.
* ext/oci8/extconf.rb, ext/oci8/oci8.c, ext/oci8/ocinumber.c: add OCINumber.
2005-07-03 KUBO Takehiro <>
* ext/oci8/*.c, ext/oci8/*.h: remove oci8_handle_t and oci8_base_class_t.
use oci8_base_t and oci8_bind_t instead of them. use oci8_base_class_t
and oci8_bind_class_t.
* ext/oci8/descriptor.c, ext/oci8/handle.c: removed.
* ext/oci8/rowid.c: added.
2005-07-01 KUBO Takehiro <>
* ext/oci8/oraconf.rb: try default $libs then get from
2005-06-29 KUBO Takehiro <>
* ext/oci8/oraconf.rb: don't read sysliblist when instant client.
2005-06-12 KUBO Takehiro <>
* ext/oci8/const.c: delete unused constants.
move some oci_id_* to ext/oci8/error.c.
move oci8_sym_*stmt to ext/oci8/stmt.c.
* ext/oci8/error.c:
move some oci_id_* from ext/oci8/const.c.
move subclasses of cOCIException from ext/oci8/oci8.c.
* ext/oci8/extconf.rb: add have_func("localtime_r").
* ext/oci8/handle.c: delete explicit OCIParam.
* ext/oci8/lob.c: delete #ifdef OCI8_USE_CALLBACK_LOB_READ.
* ext/oci8/oci8.c:
move subclasses of cOCIException to ext/oci8/error.c.
move cOraDate to ext/oci8/oradate.c.
move cOraNumber to ext/oci8/oranumber.c.
* ext/oci8/oci8.h:
move ora_date_t to ext/oci8/oradate.c.
move ora_number_t and ora_vnumber_t to ext/oci8/oranumber.c.
* ext/oci8/oradate.c: fix indentation.
move cOraDate from ext/oci8/oci8.c.
move ora_date_t from ext/oci8/oci8.h.
* ext/oci8/oranumber.c: fix indentation.
move cOraNumber from ext/oci8/oci8.c.
move ora_number_t and ora_vnumber_t from ext/oci8/oci8.h.
* ext/oci8/param.c: delete OCIParam#paramGet().
* ext/oci8/stmt.c:
move oci8_sym_*stmt from ext/oci8/const.c.
fix OCIStmt#prepare() and OCIStmt#execute().
2005-06-12 KUBO Takehiro <>
* ext/oci8/bind.c: add oci8_register_bind_type().
move bind_rowid* to ext/oci8/descriptor.c.
move bind_clob* and bind_blob* to ext/oci8/lob.c.
move bind_oradate* to ext/oci8/oradate.c.
move bind_oranumber* and bind_integer* to ext/oci8/oranumber.c.
move bind_stmt* to ext/oci8/stmt.c.
* ext/oci8/const.c: add oci8_sym_*_stmt. delete ruby constants OCI_STMT_*.
* ext/oci8/descriptor.c: move bind_rowid* from ext/oci8/bind.c.
* ext/oci8/lob.c: move bind_clob* and bind_blob* from ext/oci8/bind.c.
* ext/oci8/oci8.c: change initialization order for oci8_register_bind_type().
* ext/oci8/oci8.h: add oci8_register_bind_type(). add oci8_sym_*_stmt.
* ext/oci8/oradate.c: move bind_oradate* from ext/oci8/bind.c.
oci8_set_ora_date() become a static function.
delete oci8_get_ora_date().
* ext/oci8/oranumber.c: move bind_oranumber* and bind_integer* from ext/oci8/bind.c.
* ext/oci8/stmt.c: move bind_stmt* from ext/oci8/bind.c.
OCIStmt#stmt_type returns a Symbol instead of a Fixnum.
* lib/ OCI8::Cursor#type returns a Symbol instead of a Fixnum.
2005-06-12 KUBO Takehiro <>
* ext/oci8/extconf.rb: add have_func("OCILobLocatorAssign").
* ext/oci8/lob.c: delete OCILobLocator#getChunkSize().
use OCILobAssign instead of OCILobLocatorAssign on Oracle 8.
* ext/oci8/attr.c, ext/oci8/oci8.h: delete OCI*#attrGet(), OCI*#attrSet().
* ext/oci8/const.c: delete OCI_ATTR_* constants.
* ext/oci8/descriptor.c: delete OCIDescriptor#attrGet(), OCIDescriptor#attrSet().
* ext/oci8/handle.c: delete OCIHandle#attrGet(), OCIHandle#attrSet().
* ext/oci8/param.c: add OCIParam#name, OCIParam#data_type, OCIParam#data_size,
OCIParam#precision and OCIParam#scale.
* ext/oci8/stmt.c: add OCIStmt#stmt_type, OCIStmt#row_count, OCIStmt#rowid and
* lib/ use OCIParam#name, OCIParam#data_type, OCIParam#data_size,
OCIParam#precision, OCIParam#scale, OCIStmt#stmt_type, OCIStmt#row_count,
OCIStmt#rowid and OCIStmt#param_count instead of OCIHandle#attrGet() and
2005-06-12 KUBO Takehiro <>
* ext/oci8/oraconf.rb: rewrie OraConf#check_lp64().
* ext/oci8/bind.c, ext/oci8/descriptor.c, ext/oci8/env.c,
ext/oci8/handle.c, ext/oci8/lob.c, ext/oci8/oci8.h,
ext/oci8/stmt.c, ext/oci8/svcctx.c, lib/
delete an OCIEnv instance from each instance method's argument.
get it from the internal global variable in C.
* ext/oci8/oci8.c, lib/DBD/OCI8/OCI8.rb: change the OCIBind class name
to OCI8::BindType::Base.
* lib/ fix typo rb_eArgError to ArgumentError.
2005-06-08 KUBO Takehiro <>
* ext/oci8/oraconf.rb: test __64BIT__ to check whether lp64. (for AIX 64bit)
2005-05-31 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix for cygwin. fix for oracle instant client.
* metaconfig: add distbin task.
2005-05-29 KUBO Takehiro <>
* ext/oci8/oraconf.rb: change the detection logic for Multiple
Oracle Homes on Windows.
2005-05-24 KUBO Takehiro <>
* ext/oci8/oraconf.rb: use "-L#{@oracle_home}/lib(32) -lclntsh" as
a last resort.
2005-04-14 KUBO Takehiro <>
* ext/oci8/oraconf.rb: fix for Cygwin with Oracle instant client.
add Oraconf#lp64, which is true when long and pointer are 64 bits.
improve error message.
2005-04-10 KUBO Takehiro <>
* README: change the document format for rdoc.
* ext/oci8/bind.c, ext/oci8/descriptor.c, ext/oci8/env.c,
ext/oci8/error.c, ext/oci8/const.c, ext/oci8/handle.c
ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/stmt.c:
change bind_type_t structure. bind_* variables in binc.c
become OCI8::BindType::* which are subclasses of OCIBind.
add envh member to oci8_handle_t and oci8_bind_handle_t.
add OCIRowid#initialize.
delete macros to compile on ruby 1.6.
* lib/ add comments for rdoc.
change OCI8::BindType::*.
* lib/DBD/OCI8/OCI8.rb
change DBI::DBD::OCI8::BindType::*.
2005-04-06 KUBO Takehiro <>
* ext/oci8/oci8.h, ext/oci8/handle.c: delete enum oci8_bind_type.
add oci8_bind_type_t.
* ext/oci8/bind.c: add oci8_bind_type_t structures bind_string, bind_raw,
bind_fixnum, bind_float, bind_oradate, bind_integer, bind_oranumber,
bind_rowid, bind_clob, bind_blob, and bind_stmt.
add oci8_bind_type_set() and oci8_bind_type_get() to get/set
an oci8_bind_type_t structure.
delete oci8_get_value() and oci8_set_value(), use
(oci8_bind_type_t*)->get()/set() instead.
* ext/oci8/stmt.c: change check_bind_type() by using oci8_bind_type_t.
change oci8_define_by_pos(), oci8_bind_by_pos() and oci8_bind_by_name().
* ext/oci8/MANIFEST, ext/oci8/depend, ext/oci8/extconf.rb, ext/oci8/oci8.c,
ext/oci8/define.c: delete define.c and Init_define().
* lib/ change OCI8::BindType::Float, OCI8::BindType::Fixnum,
OCI8::BindType::Integer and OCI8::BindType::OraNumber for in-bind.
2005-04-03 KUBO Takehiro <>
* ext/oci8/oraconf.rb: improve Oracle instance client check:
1. add more strict check.
2. change LD_LIBRARY_PATH message by its platform.
3. add '-Wl,-rpath,#{lib_dir}' to $libs when Linux.
* ext/oci8/MANIFEST, ext/oci8/depend, ext/oci8/extconf.rb:
delete server.c and session.c.
* ext/oci8/attr.c: delete OCISvcCtx#attrGet(OCI_ATTR_NONBLOCKING_MODE),
OCISvcCtx#attrSet(OCI_ATTR_SERVER, aOCIServer),
OCISvcCtx#attrSet(OCI_ATTR_SESSION, aOCISession).
* ext/oci8/const.c: delete constants unused by high-level API.
delete oci8_id_server, oci8_id_session.
* ext/oci8/handle.c, ext/oci8/descriptor.c: use ruby1.8 allocation
* ext/oci8/env.c: add delete OCIEnv.initialise(),
OCIEnv.init(), OCIEnv.create(), OCIEnv.terminate(),
OCIEnv#alloc(), OCIEnv#logon().
* ext/oci8/oci8.c, ext/oci8/oci8.h: use ruby1.8 allocation
framework. delete OCIServer and OCISession.
* ext/oci8/lob.c: add
* ext/oci8/stmt.c: add
* ext/oci8/svcctx.c: add, OCISvcCtx#non_blocking?,
* ext/oci8/server.c, ext/oci8/session.c: deleted.
* lib/ use and instead of
OCIEnv.create, OCIEnv#alloc, OCISession#begin, OCIServer#attach.
use OCISvcCtx.logoff instead of OCISession#end, OCIServer#detach, use OCISvcCtx#non_blocking? instead of
use OCISvcCtx#non_blocking= instead of
use <OCICLASS>.new(anOCIEnv) instead of
* lib/DBD/OCI8/OCI8.rb: use instead of
2005-03-27 KUBO Takehiro <>
* ext/oci8/server.c: delete OCIServer#version, OCIServer#break, OCIServer#reset.
* ext/oci8/stmt.c: OCIStmt#bindByName accepts a symbol as a bind name.
* lib/ add OCI8::LOB#sync, OCI8::LOB#sync= and OCI8::LOB#flush.
* test/test_bind_raw.rb, test/test_bind_time.rb, test/test_clob.rb,
test/test_oradate.rb, test/test_oranumber.rb: use OCI8 high-level API
instead of low-level API.
2005-03-24 KUBO Takehiro <>
* fix bug on binding Time or Date.
* support/*: deleted.
* test/*.rb: use 'test/unit' instead of runit.
ruby 1.6.8 won't be supported by this commit.
* ext/oci8/MANIFEST, ext/oci8/depend, ext/oci8/describe.c(deleted),
ext/oci8/env.c, ext/oci8/extconf.rb, ext/oci8/handle.c,
ext/oci8/oci8.c, ext/oci8/oci8.h, ext/oci8/svcctx.c:
delete OCIDescribe and OCISvcCtx#describeAny. OCIDescribe isn't used by
oci8 high-level API.
* test/test_all.rb, test/test_describe.rb(deleted): delete OCIDescribe
test cases.
2005-03-23 KUBO Takehiro <>
*, OCI8.rb:
delete OCI8.register_type_fixer, OCI8::TypeFixer.
add OCI8::BindType::* instead.
2005-03-21 KUBO Takehiro <>
*, OCI8.rb: refactoring OCI8::Cursor#define_a_column
* Makefile, ext/oci8/extconf.rb: change version to 0.1.10
2005-03-20 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/, lib/DBD/OCI8/OCI8.rb, test/test_dbi.rb:
enable DATE to be bound as a DBI::Date or a DBI::Timestamp.
2005-03-20 KUBO Takehiro <>
* ext/oci8/stmt.c, lib/, test/test_oci8.rb:
bind a ref cursor as an OCI8::Cursor.
apply a patch at <URL:>.
2005-01-16 KUBO Takehiro <>
* lib/ change default bindtype for NUMBER with
unspecified scale.
(This problem is reported by William Lawson, Dmitry Maksyoma and Andreas Habel)
* lib/ add OCI8::Cursor.select_number_as=
(for someone who want old bindtype)
* lib/ add OCI8::Cursor#fetch_hash
(contributed by Jason Sweat)
* ext/oci8/oci8.h, ext/oci8/stmt.c: don't raise an error when OCI_SUCCESS_WITH_INFO.
(suggested by Kenji Nishishiro)
* ext/ooi8/oraconf.rb: support Oracle Instant Installer.
(suggested by Eustaquio Rangel de Oliveira Jr.)
* Makefile, ext/oci8/extconf.rb: change version to 0.1.9
2004-10-30 KUBO Takehiro <>
* pre-distclean.rb: delete a temporary file made by ext/oci8/oraconf.rb.
* ext/oci8/oraconf.rb: 1. change object files to an archive file
to work around on Oracle 8.1.7. 2. raise error when OCI.H can't
be found on Windows.
2004-06-21 KUBO Takehiro <>
* Makefile, ext/oci8/extconf.rb: change version to 0.1.8-pre1
* lib/DBD/OCI8/OCI8.rb: add DBI::DatabaseHandle#tables. add DBI::StatementHandle#func(:bind_value, ...).
2004-03-07 KUBO Takehiro <>
* ext/oci8/extconf.rb: fix to use setup.rb.
* ext/oci8/oraconf.rb: add support Borland C++ Builder.
* lib/ support OCI8::CLOB.
* test/config.rb: CLOB test file depends on NLS_LANG.
* test/test_oci8.rb: fix a test method.
* test/test_break.rb: break time depends on OS?...
* test/test_dbi_clob.rb: add a new file to test CLOB via DBI.
2003-09-20 KUBO Takehiro <>
* src/handle.c: fix bug of OCI8::BLOB at running GC.
* src/stmt.c: accept Bignum as (({type})) of OCI8::Cursor#define.
* src/lib/ accept OCI8::BLOB as (({type})) of OCI8::Cursor#define.
* src/lib/DBD/OCI8/OCI8.rb: add (({define})) function to DBD::OCI8.
* src/oranumber.c, src/oci8.h: use rb_cstr_to_dbl instead of strtod for ruby 1.8.
* support/runit/cui/testrunner.rb, support/runit/testcase.rb: fix for ruby 1.8.
* test/test_dbi.rb: add a test method.
* test/test_oci8.rb: fix a test method.
2003-08-03 KUBO Takehiro <>
* Makefile: update version to 0.1.5
* MANIFEST: add test/test_oci8.rb
* src/lib/ implement OCI8::Cursor#define, OraDate#to_time and OraDate#to_date.
* test/test_oci8.rb: add new tests of OCI8::Cursor#define.
* test/test_oradate.rb: add new tests of OraDate#to_time and OraDate#to_date.
* test/test_all.rb: call test_oci8.rb.
2003-07-20 KUBO Takehiro <>
* src/stmt.c: When the error "ORA-01000: maximum open cursors
exceeded" happens, run garbage collect to close unused cursors
and retry automatically.
2003-06-07 KUBO Takehiro <>
* Makefile: update version to 0.1.4
* src/lob.c: add OCILobLocator#clone()
* src/bind.c, src/stmt.c, src/lib/ fix BLOB support.
* src/lib/DBD/OCI8/OCI8.rb: set the backtrace of an original exception
to newly created DBI exception.
* src/oraconf.rb: retry get_libs with postfix '32' when compilation
failed with Oracle 9i on Solaris.
* src/oradate.c: add OraDate#<=> and include 'Comparable'.
(contributed by Brian Candler)
* test/test_oradate.rb: add test cases of OraDate#<=>.
2003-04-27 KUBO Takehiro <>
* Makefile: update version to 0.1.3
* doc/api.*.rd, doc/api.*.html: update document.
* src/lob.c: add new LOB APIs.
* src/lib/ add BLOB support.
* src/lib/DBD/OCI8/OCI8.rb: add 'NonBlocking' support(suggested by Brian Candler).
raise subclass of DBI::DatabaseError, which depends on its error code.
2003-03-08 KUBO Takehiro <>
* Makefile: update version to 0.1.2
* src/extconf.rb: use Oraconf#cc_is_gcc.
* src/oraconf.rb: support Solaris with gcc.
* src/handle.c: suppress warning about uninitialized instance variables.
* src/oranumber.c, test/test_oranumber.rb: fix serious bug of
conversion routine from Oracle internal number format to string.
2003-02-01 KUBO Takehiro <>
* Makefile: update version to 0.1.1.
* src/oraconf.rb: added. Oracle specific features were moved from
src/extconf.rb, src/extunix.rb and src/extwin32.rb
* src/extunix.rb, src/extwin32.rb: deleted.
* src/extconf.rb: use oraconf.rb.
* src/error.c, src/oci8.h: use macro RBOCI_NORETURN not NORETURN.
* MANIFEST, Makefile: fix for added and deleted files.
2002-09-12 KUBO Takehiro <>
* Makefile: update version to 0.1.0.
* README: support cygwin and mingw32.
* test/test_oradate.rb: delete test_now().
* src/extconf.rb: support mingw32.
2002-09-12 Hitoshi Endoh <>
* src/extwin32.rb: support cygwin.
2002-09-12 KUBO Takehiro <>
* ChangeLog: Added.