ruby-oci8 2.0.6-x86-mingw32 → 2.1.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
data/NEWS CHANGED
@@ -1,3 +1,114 @@
1
+ 2.1.0:
2
+
3
+ *** Ruby-oci8 2.1.0 doesn't support Oracle 8 (8.0) and Oracle 8i (8.1) anymore. ***
4
+
5
+ * New Features
6
+
7
+ - OCI connection pooling
8
+
9
+ See: http://docs.oracle.com/cd/E11882_01/appdev.112/e10646/oci09adv.htm#sthref1479
10
+ and http://docs.oracle.com/cd/E11882_01/java.112/e16548/ociconpl.htm#JJDBC28789
11
+
12
+ Example:
13
+
14
+ # Create a connection pool.
15
+ # username and password are required to establish an implicit primary session.
16
+ cpool = OCI8::ConnectionPool.new(1, 5, 2, username, password, database)
17
+
18
+ # Get a session from the pool.
19
+ # Pass the connection pool to the third argument.
20
+ conn1 = OCI8.new(username, password, cpool)
21
+
22
+ # Get another session.
23
+ conn2 = OCI8.new(username, password, cpool)
24
+
25
+ - Daylight saving time aware if TZ is set.
26
+
27
+ You should set the environment variable TZ if your applications run
28
+ in a time zone with daylight saving time transitions.
29
+ Otherwise, Oracle session time zone is set with current constant
30
+ offset from GMT.
31
+ (reported by Yasuo Honda)
32
+
33
+ - connect as sysasm (Oracle 11g only)
34
+
35
+ OCI8.new('username/password as sysasm')
36
+ or
37
+ OCI8.new('username', 'password', nil, :SYSASM)
38
+
39
+ - Oracle number is converted to ruby float exactly same as ruby does.
40
+
41
+ From ruby 1.9.2, a float value converted from Oracle number 15.7 by
42
+ the Oracle function OCINumberToReal() makes a string representation
43
+ 15.700000000000001 by Float#to_s. (See: http://redmine.ruby-lang.org/issues/4656)
44
+ To avoid this issue, any Oracle number is converted to a float as
45
+ ruby's String#to_f does.
46
+
47
+ The behavior is customizable by OCI8.properties[:float_conversion_type].
48
+
49
+ OCI8.properties[:float_conversion_type] = :oracle # => Use OCINumberToReal()
50
+ OCI8.properties[:float_conversion_type] = :ruby # => Use String#to_f
51
+
52
+ The default value is :ruby.
53
+
54
+ - OCI_SUCCESS_WITH_INFO handling is changed.
55
+
56
+ Ruby-oci8 2.0 treats OCI_SUCCESS_WITH_INFO in OCI layer as an error
57
+ and raise an exception OCISuccessWithInfo such as "ORA-24347: Warning of
58
+ a NULL column in an aggregate function" and "ORA-28002: the password will
59
+ expire within xx days."
60
+
61
+ From 2.1.0, it is treated as a warning and the exception is set
62
+ to OCI8#last_error.
63
+
64
+ - OCI8#last_error
65
+
66
+ The last error or warning associated with the session is set to
67
+ OCI8#last_error. The usecase is to detect OCI_SUCCESS_WITH_INFO.
68
+ It is reset by OCI8#exec and OCI8#parse.
69
+
70
+ - Experimental support of character length semantics
71
+
72
+ This is enabled when :char is set to OCI8.properties[:length_semantics].
73
+
74
+ - OCI8.client_charset_name and OCI8#database_charset_name is added.
75
+
76
+ They return Oracle charset name such as WE8ISO8859P15.
77
+
78
+ * Specification changes
79
+
80
+ - The parent class OCINoData was changed from OCIException to OCIError.
81
+
82
+ * Fixed Issues
83
+
84
+ - Fix a bug that an array is always bound as null.
85
+ This bug was introduced in ruby-oci8 2.0.5.
86
+ (reported by Leoš Bitto)
87
+
88
+ - Avoid a gcc internal compiler error when using ruby1.9.2-p290 on
89
+ ubuntu 11.10 (64bit). (reported by Bob Saveland.)
90
+
91
+ - Fix compilation problems on Solaris.
92
+ (Reported by Sanjiv Patel.)
93
+
94
+ - Fix compilation problems on Linux.
95
+ (Reported by Edgars Beigarts.)
96
+
97
+ - Connections are released by GC without explicit logoff.
98
+
99
+ - Set ruby encoding CP950 for oracle characterset ZHT16MSWIN950 and
100
+ CP951 for ZHT16HKSCS and ZHT16HKSCS31 when the ruby is 1.9.3.
101
+
102
+ - Clear an executuing thread information in a connection when a SQL
103
+ executions is canceled by Thread#kill or Timeout::timeout.
104
+ (reported by Aaron Qian)
105
+
106
+ - Fix some test cases for object type and TZ issues.
107
+ (reported by Yasuo Honda)
108
+
109
+ - Use Gem::Command.build_args to get arguments after '--'.
110
+ (reported by jbirdjavi)
111
+
1
112
  2.0.6:
2
113
 
3
114
  * Fixed issues
data/README CHANGED
@@ -1,86 +1,5 @@
1
- = How to make
1
+ Ruby-oci8 is a ruby interface for Oracle using OCI8 API.
2
+ The latest version (2.1.x) works with Oracle9i or later.
3
+ Use ruby-oci8 2.0.6 or earlier for Oracle 8.
2
4
 
3
- * <tt>ruby</tt> and <tt>make</tt> (or nmake on MSVC) commands in the environment variable <tt>PATH</tt>?
4
- * <tt>ruby</tt> is 1.8.0 or later? (Use ruby-oci8 0.1.x for ruby 1.6.x.)
5
-
6
- == For OCI installed by Oracle Universal Installer
7
- make sure the environment variable ORACLE_HOME (or registry on Windows)
8
- is set correctly. run the the following commands.
9
-
10
- make (or nmake on MSVC)
11
-
12
- == For OCI installed by Oracle Instant Installer
13
-
14
- linux:
15
- ruby setup.rb config -- --with-instant-client
16
- make
17
-
18
- others:
19
- ruby setup.rb config -- --with-instant-client=/path/to/instantclient10_1
20
- make (or nmake on MSVC)
21
-
22
- = On compilation failure
23
-
24
- Please report the following information to kubo@jiubao.org.
25
-
26
- * last 100 lines of 'ext/oci8/mkmf.log'.
27
- * the results of the following commands:
28
- ruby -r rbconfig -e "p Config::CONFIG['host']"
29
- ruby -r rbconfig -e "p Config::CONFIG['CC']"
30
- ruby -r rbconfig -e "p Config::CONFIG['CFLAGS']"
31
- ruby -r rbconfig -e "p Config::CONFIG['LDSHARED']"
32
- ruby -r rbconfig -e "p Config::CONFIG['LDFLAGS']"
33
- ruby -r rbconfig -e "p Config::CONFIG['LIBS']"
34
- ruby -r rbconfig -e "p Config::CONFIG['GNU_LD']"
35
- * if you use gcc:
36
- gcc --print-prog-name=ld
37
- gcc --print-prog-name=as
38
- * on platforms which can use both 32bit/64bit binaries:
39
- file $ORACLE_HOME/bin/oracle
40
- file `which ruby`
41
- echo $LD_LIBRARY_PATH
42
-
43
- = How to run unit test
44
-
45
- before runing unit test,
46
- 1. connect to Oracle as system:
47
-
48
- $ sqlplus system/<password_of_system>
49
-
50
- 2. create user ruby:
51
-
52
- SQL> CREATE USER ruby IDENTIFIED BY oci8;
53
-
54
- or
55
-
56
- SQL> CREATE USER ruby IDENTIFIED BY oci8
57
- 2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
58
-
59
- 3. grant the privilege to connect and execute.
60
-
61
- SQL> GRANT connect, resource TO ruby;
62
-
63
- 4. If the Oracle version is 8i or later:
64
-
65
- SQL> CREATE TABLE ruby.test_clob (filename VARCHAR2(40), content CLOB);
66
-
67
- 5. connect to Oracle as sys
68
-
69
- $ sqlplus 'sys/<password_of_sys> as sysdba'
70
-
71
- 6. grant the privilege for the unittest of blocking-mode.
72
-
73
- SQL> GRANT EXECUTE ON dbms_lock TO ruby;
74
-
75
- 7. change test/config.rb as you like
76
-
77
- Then you can run:
78
- $ make check
79
- or
80
- $ nmake check (If your compiler is MS Visual C++.)
81
-
82
- = TODO
83
-
84
- * more proper handling of OCI_SUCCESS_WITH_INFO.
85
- * more proper handling of NUMBER without its scale values.
86
- * support Timestamp.
5
+ See: http://ruby-oci8.rubyforge.org
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.6
1
+ 2.1.0
data/dist-files CHANGED
@@ -21,12 +21,14 @@ ext/oci8/apiwrap.rb
21
21
  ext/oci8/apiwrap.yml
22
22
  ext/oci8/attr.c
23
23
  ext/oci8/bind.c
24
+ ext/oci8/connection_pool.c
24
25
  ext/oci8/encoding.c
25
26
  ext/oci8/env.c
26
27
  ext/oci8/error.c
27
28
  ext/oci8/extconf.rb
28
29
  ext/oci8/lob.c
29
30
  ext/oci8/metadata.c
31
+ ext/oci8/object.c
30
32
  ext/oci8/oci8.c
31
33
  ext/oci8/oci8.h
32
34
  ext/oci8/oci8lib.c
@@ -39,21 +41,23 @@ ext/oci8/oranumber_util.c
39
41
  ext/oci8/oranumber_util.h
40
42
  ext/oci8/post-config.rb
41
43
  ext/oci8/stmt.c
42
- ext/oci8/object.c
44
+ ext/oci8/thread_util.c
45
+ ext/oci8/thread_util.h
43
46
  ext/oci8/win32.c
44
- ext/oci8/xmldb.c
45
47
  lib/.document
46
48
  lib/oci8.rb.in
47
49
  lib/dbd/OCI8.rb
48
50
  lib/oci8/.document
49
51
  lib/oci8/bindtype.rb
50
52
  lib/oci8/compat.rb
53
+ lib/oci8/connection_pool.rb
51
54
  lib/oci8/datetime.rb
52
55
  lib/oci8/encoding-init.rb
53
56
  lib/oci8/encoding.yml
54
57
  lib/oci8/metadata.rb
55
58
  lib/oci8/object.rb
56
59
  lib/oci8/oci8.rb
60
+ lib/oci8/ocihandle.rb
57
61
  lib/oci8/oracle_version.rb
58
62
  lib/oci8/properties.rb
59
63
  test/README
@@ -62,14 +66,17 @@ test/test_all.rb
62
66
  test/test_appinfo.rb
63
67
  test/test_array_dml.rb
64
68
  test/test_bind_raw.rb
69
+ test/test_bind_string.rb
65
70
  test/test_bind_time.rb
66
71
  test/test_break.rb
67
72
  test/test_clob.rb
73
+ test/test_connection_pool.rb
68
74
  test/test_connstr.rb
69
75
  test/test_encoding.rb
70
76
  test/test_datetime.rb
71
77
  test/test_dbi.rb
72
78
  test/test_dbi_clob.rb
79
+ test/test_error.rb
73
80
  test/test_metadata.rb
74
81
  test/test_oci8.rb
75
82
  test/test_oracle_version.rb
@@ -6,16 +6,21 @@
6
6
  # ruby -r oci8 -e 'OCI8.new("scott", "tiger", nil).exec("select * from emp") do |r| puts r.join(","); end'
7
7
  # # select all data from emp and print them as CVS format.
8
8
 
9
+ ENV['ORA_SDTZ'] = ENV['TZ'] unless ENV['ORA_SDTZ']
10
+
9
11
  if RUBY_PLATFORM =~ /cygwin/
10
12
  # Cygwin manages environment variables by itself.
11
13
  # They don't synchroize with Win32's ones.
12
14
  # This set some Oracle's environment variables to win32's enviroment.
13
15
  require 'Win32API'
14
16
  win32setenv = Win32API.new('Kernel32.dll', 'SetEnvironmentVariableA', 'PP', 'I')
15
- ['NLS_LANG', 'ORA_NLS10', 'ORA_NLS32', 'ORA_NLS33', 'ORACLE_BASE', 'ORACLE_HOME', 'ORACLE_SID', 'TNS_ADMIN', 'LOCAL'].each do |name|
17
+ ['NLS_LANG', 'TNS_ADMIN', 'LOCAL'].each do |name|
16
18
  val = ENV[name]
17
19
  win32setenv.call(name, val && val.dup)
18
20
  end
21
+ ENV.each do |name, val|
22
+ win32setenv.call(name, val && val.dup) if name =~ /^ORA/
23
+ end
19
24
  end
20
25
 
21
26
  so_basename = 'oci8lib_'
@@ -28,7 +33,7 @@ end
28
33
  # 191 - ruby 1.9.1 and 1.9.2
29
34
  # 19x - ruby 1.9.x future version which will break the API compatibility
30
35
  case RUBY_VERSION
31
- when /^1\.9/
36
+ when /^1\.9/, /^2\.0/
32
37
  so_basename += '191'
33
38
  when /^1\.8/
34
39
  so_basename += '18'
@@ -37,14 +42,13 @@ else
37
42
  end
38
43
  require so_basename
39
44
 
40
- if OCI8.respond_to? :encoding
41
- if defined? DEFAULT_OCI8_ENCODING
42
- OCI8.encoding = DEFAULT_OCI8_ENCODING
43
- else
44
- load 'oci8/encoding-init.rb'
45
- end
45
+ if OCI8::VERSION != '2.1.0'
46
+ require 'rbconfig'
47
+ so_name = so_basename + "." + Config::CONFIG['DLEXT']
48
+ raise "VERSION MISMATCH! #{so_name} version is #{OCI8::VERSION}, but oci8.rb version is 2.1.0."
46
49
  end
47
50
 
51
+ require 'oci8/encoding-init.rb'
48
52
  require 'oci8/oracle_version.rb'
49
53
 
50
54
  class OCI8
@@ -77,17 +81,19 @@ class OCI8
77
81
  def self.oracle_client_version
78
82
  @@oracle_client_version
79
83
  end
84
+
85
+ # defined for backward compatibility.
86
+ CLIENT_VERSION = @@oracle_client_version.major.to_s +
87
+ @@oracle_client_version.minor.to_s +
88
+ @@oracle_client_version.update.to_s
80
89
  end
81
90
 
91
+ require 'oci8/ocihandle.rb'
82
92
  require 'oci8/datetime.rb'
83
93
  require 'oci8/oci8.rb'
84
94
  require 'oci8/bindtype.rb'
85
95
  require 'oci8/metadata.rb'
86
96
  require 'oci8/compat.rb'
87
97
  require 'oci8/object.rb'
98
+ require 'oci8/connection_pool.rb'
88
99
  require 'oci8/properties.rb'
89
-
90
- class OCI8
91
- VERSION = '2.0.6'
92
- CLIENT_VERSION = '1020'
93
- end
@@ -6,16 +6,21 @@
6
6
  # ruby -r oci8 -e 'OCI8.new("scott", "tiger", nil).exec("select * from emp") do |r| puts r.join(","); end'
7
7
  # # select all data from emp and print them as CVS format.
8
8
 
9
+ ENV['ORA_SDTZ'] = ENV['TZ'] unless ENV['ORA_SDTZ']
10
+
9
11
  if RUBY_PLATFORM =~ /cygwin/
10
12
  # Cygwin manages environment variables by itself.
11
13
  # They don't synchroize with Win32's ones.
12
14
  # This set some Oracle's environment variables to win32's enviroment.
13
15
  require 'Win32API'
14
16
  win32setenv = Win32API.new('Kernel32.dll', 'SetEnvironmentVariableA', 'PP', 'I')
15
- ['NLS_LANG', 'ORA_NLS10', 'ORA_NLS32', 'ORA_NLS33', 'ORACLE_BASE', 'ORACLE_HOME', 'ORACLE_SID', 'TNS_ADMIN', 'LOCAL'].each do |name|
17
+ ['NLS_LANG', 'TNS_ADMIN', 'LOCAL'].each do |name|
16
18
  val = ENV[name]
17
19
  win32setenv.call(name, val && val.dup)
18
20
  end
21
+ ENV.each do |name, val|
22
+ win32setenv.call(name, val && val.dup) if name =~ /^ORA/
23
+ end
19
24
  end
20
25
 
21
26
  so_basename = 'oci8lib_'
@@ -28,7 +33,7 @@ end
28
33
  # 191 - ruby 1.9.1 and 1.9.2
29
34
  # 19x - ruby 1.9.x future version which will break the API compatibility
30
35
  case RUBY_VERSION
31
- when /^1\.9/
36
+ when /^1\.9/, /^2\.0/
32
37
  so_basename += '191'
33
38
  when /^1\.8/
34
39
  so_basename += '18'
@@ -37,14 +42,13 @@ else
37
42
  end
38
43
  require so_basename
39
44
 
40
- if OCI8.respond_to? :encoding
41
- if defined? DEFAULT_OCI8_ENCODING
42
- OCI8.encoding = DEFAULT_OCI8_ENCODING
43
- else
44
- load 'oci8/encoding-init.rb'
45
- end
45
+ if OCI8::VERSION != '@@OCI8_MODULE_VERSION@@'
46
+ require 'rbconfig'
47
+ so_name = so_basename + "." + Config::CONFIG['DLEXT']
48
+ raise "VERSION MISMATCH! #{so_name} version is #{OCI8::VERSION}, but oci8.rb version is @@OCI8_MODULE_VERSION@@."
46
49
  end
47
50
 
51
+ require 'oci8/encoding-init.rb'
48
52
  require 'oci8/oracle_version.rb'
49
53
 
50
54
  class OCI8
@@ -77,17 +81,19 @@ class OCI8
77
81
  def self.oracle_client_version
78
82
  @@oracle_client_version
79
83
  end
84
+
85
+ # defined for backward compatibility.
86
+ CLIENT_VERSION = @@oracle_client_version.major.to_s +
87
+ @@oracle_client_version.minor.to_s +
88
+ @@oracle_client_version.update.to_s
80
89
  end
81
90
 
91
+ require 'oci8/ocihandle.rb'
82
92
  require 'oci8/datetime.rb'
83
93
  require 'oci8/oci8.rb'
84
94
  require 'oci8/bindtype.rb'
85
95
  require 'oci8/metadata.rb'
86
96
  require 'oci8/compat.rb'
87
97
  require 'oci8/object.rb'
98
+ require 'oci8/connection_pool.rb'
88
99
  require 'oci8/properties.rb'
89
-
90
- class OCI8
91
- VERSION = '@@OCI8_MODULE_VERSION@@'
92
- CLIENT_VERSION = '@@OCI8_CLIENT_VERSION@@'
93
- end
@@ -3,4 +3,6 @@ object.rb
3
3
  metadata.rb
4
4
  oracle_version.rb
5
5
  oci8.rb
6
+ ocihandle.rb
7
+ connection_pool.rb
6
8
  properties.rb
@@ -1,7 +1,7 @@
1
1
  #--
2
2
  # bindtype.rb -- OCI8::BindType
3
3
  #
4
- # Copyright (C) 2009-2010 KUBO Takehiro <kubo@jiubao.org>
4
+ # Copyright (C) 2009-2011 KUBO Takehiro <kubo@jiubao.org>
5
5
  #++
6
6
 
7
7
  class OCI8
@@ -105,45 +105,56 @@ class OCI8
105
105
  def self.create(con, val, param, max_array_size)
106
106
  case param
107
107
  when Hash
108
- if param[:length]
109
- # If length is passed explicitly, use it.
110
- length = param[:length]
111
- elsif val.is_a? String or (val.respond_to? :to_str and val = val.to_str)
112
- if OCI8.respond_to? :encoding and OCI8.encoding != val.encoding
113
- # If the string encoding is different with NLS_LANG character set,
114
- # convert it to get the length.
115
- val = val.encode(OCI8.encoding)
116
- end
117
- if val.respond_to? :bytesize
118
- # ruby 1.8.7 or upper
119
- length = val.bytesize
108
+ param[:length_semantics] = OCI8::properties[:length_semantics] unless param.has_key? :length_semantics
109
+ unless param[:length]
110
+ if val.respond_to? :to_str
111
+ val = val.to_str
112
+ if param[:length_semantics] == :char
113
+ # character semantics
114
+ param[:length] = val.size
115
+ else
116
+ # byte semantics
117
+ if OCI8.respond_to? :encoding and OCI8.encoding != val.encoding
118
+ # If the string encoding is different with NLS_LANG character set,
119
+ # convert it to get the length.
120
+ val = val.encode(OCI8.encoding)
121
+ end
122
+ if val.respond_to? :bytesize
123
+ # ruby 1.8.7 or upper
124
+ param[:length] = val.bytesize
125
+ else
126
+ # ruby 1.8.6 or lower
127
+ param[:length] = val.size
128
+ end
129
+ end
120
130
  else
121
- # ruby 1.8.6 or lower
122
- length = val.size
131
+ param[:length] = @@minimum_bind_length
123
132
  end
124
133
  end
125
134
  # use the default value when :nchar is not set explicitly.
126
- nchar = OCI8.properties[:bind_string_as_nchar] unless param.has_key?(:nchar)
135
+ param[:nchar] = OCI8.properties[:bind_string_as_nchar] unless param.has_key?(:nchar)
127
136
  when OCI8::Metadata::Base
128
137
  case param.data_type
129
138
  when :char, :varchar2
130
- length = param.data_size
131
- # character size may become large on character set conversion.
132
- # The length of a Japanese half-width kana is one in Shift_JIS,
133
- # two in EUC-JP, three in UTF-8.
134
- length *= 3 unless param.char_used?
135
- nchar = (param.charset_form == :nchar)
139
+ length_semantics = OCI8.properties[:length_semantics]
140
+ if length_semantics == :char
141
+ length = param.char_size
142
+ else
143
+ length = param.data_size * OCI8.nls_ratio
144
+ end
145
+ param = {
146
+ :length => length,
147
+ :length_semantics => length_semantics,
148
+ :nchar => (param.charset_form == :nchar),
149
+ }
136
150
  when :raw
137
151
  # HEX needs twice space.
138
- length = param.data_size * 2
152
+ param = {:length => param.data_size * 2}
153
+ else
154
+ param = {:length => @@minimum_bind_length}
139
155
  end
140
156
  end
141
- length = @@minimum_bind_length if length.nil? or length < @@minimum_bind_length
142
- if nchar
143
- OCI8::BindType::NCHAR.new(con, val, length, max_array_size)
144
- else
145
- OCI8::BindType::CHAR.new(con, val, length, max_array_size)
146
- end
157
+ self.new(con, val, param, max_array_size)
147
158
  end
148
159
  end
149
160
 
@@ -151,28 +162,36 @@ class OCI8
151
162
  def self.create(con, val, param, max_array_size)
152
163
  case param
153
164
  when Hash
154
- length = 400 # default length
155
- if param[:length]
156
- length = param[:length]
157
- elsif val.respond_to? :to_str and val.to_str.size > length
158
- length = val.to_str.size
165
+ unless param[:length]
166
+ if val.respond_to? :to_str
167
+ val = val.to_str
168
+ if val.respond_to? :bytesize
169
+ param[:length] = val.bytesize
170
+ else
171
+ param[:length] = val.size
172
+ end
173
+ else
174
+ param[:length] = 400
175
+ end
159
176
  end
160
177
  when OCI8::Metadata::Base
161
- length = param.data_size
178
+ param = {:length => param.data_size}
162
179
  end
163
- self.new(con, val, length, max_array_size)
180
+ self.new(con, val, param, max_array_size)
164
181
  end
165
182
  end
166
183
 
167
184
  class Long < OCI8::BindType::String
168
185
  def self.create(con, val, param, max_array_size)
169
- super(con, val, {:length => con.long_read_len}, max_array_size)
186
+ param = {:length => con.long_read_len, :char_semantics => true}
187
+ super(con, val, param, max_array_size)
170
188
  end
171
189
  end
172
190
 
173
191
  class LongRaw < OCI8::BindType::RAW
174
192
  def self.create(con, val, param, max_array_size)
175
- self.new(con, val, con.long_read_len, max_array_size)
193
+ param = {:length => con.long_read_len, :char_semantics => false}
194
+ self.new(con, val, param, max_array_size)
176
195
  end
177
196
  end
178
197
 
@@ -260,13 +279,11 @@ OCI8::BindType::Mapping[:bfile] = OCI8::BindType::BFILE
260
279
  # DATE SQLT_DAT 7 0 0
261
280
  OCI8::BindType::Mapping[:date] = OCI8::BindType::Time
262
281
 
263
- if OCI8.oracle_client_version >= OCI8::ORAVER_9_0
264
- OCI8::BindType::Mapping[:timestamp] = OCI8::BindType::Time
265
- OCI8::BindType::Mapping[:timestamp_tz] = OCI8::BindType::Time
266
- OCI8::BindType::Mapping[:timestamp_ltz] = OCI8::BindType::Time
267
- OCI8::BindType::Mapping[:interval_ym] = OCI8::BindType::IntervalYM
268
- OCI8::BindType::Mapping[:interval_ds] = OCI8::BindType::IntervalDS
269
- end
282
+ OCI8::BindType::Mapping[:timestamp] = OCI8::BindType::Time
283
+ OCI8::BindType::Mapping[:timestamp_tz] = OCI8::BindType::Time
284
+ OCI8::BindType::Mapping[:timestamp_ltz] = OCI8::BindType::Time
285
+ OCI8::BindType::Mapping[:interval_ym] = OCI8::BindType::IntervalYM
286
+ OCI8::BindType::Mapping[:interval_ds] = OCI8::BindType::IntervalDS
270
287
 
271
288
  # datatype type size prec scale
272
289
  # -------------------------------------------------