ruby-oci8 2.2.5.1-x86-mingw32 → 2.2.6-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog CHANGED
@@ -1,3 +1,71 @@
1
+ 2018-08-22 Kubo Takehiro <kubo@jiubao.org>
2
+ * NEWS: Add changes between 2.2.5.1 and 2.2.6
3
+ * lib/oci8/version.rb: Update to 2.2.6
4
+ * mkpkg-win32.rb: Don't test with self-build ruby 2.4.
5
+
6
+ 2018-08-22 Kubo Takehiro <kubo@jiubao.org>
7
+ * ext/oci8/oci8lib.c: Load a Oracle client library which doesn't have
8
+ version number suffix also on Unix when runtime-check is enabled.
9
+ Oracle version numbers are incremented yearly sice Oracle 18c.
10
+
11
+ 2018-08-22 Kubo Takehiro <kubo@jiubao.org>
12
+ * ext/oci8/hook_funcs.c, ext/oci8/win32.c: Suppress warnings:
13
+ "'raise_error' defined but not used" and "'strncpy' specified
14
+ bound 512 equals destination size".
15
+
16
+ 2018-08-19 Kubo Takehiro <kubo@jiubao.org>
17
+ * ext/oci8/hook_funcs.c: Not depend on Oracle version number
18
+ of Oracle client file name suffix when hooking functions.
19
+ (rsim/oracle-enhanced#1754)
20
+ * test/test_all.rb, test/test_properties.rb, dist-files:
21
+ Add tests for hooking.
22
+
23
+ 2018-08-18 Kubo Takehiro <kubo@jiubao.org>
24
+ * test/test_oci8.rb: Fix to pass a test when the client is 11g
25
+ and the server is 18c. client_driver in v$session_connect_info
26
+ has an extra space at the end.
27
+
28
+ 2018-08-18 Kubo Takehiro <kubo@jiubao.org>
29
+ * ext/oci8/apiwrap.rb, ext/oci8/apiwrap.yml, ext/oci8/oci8.c,
30
+ ext/oci8/oci8.h, lib/oci8/oci8.rb, lib/oci8/oracle_version.rb,
31
+ test/test_oci8.rb: Fix OCI8#oracle_server_version to get
32
+ full version of Oracle 18c.
33
+
34
+ 2018-08-18 Kubo Takehiro <kubo@jiubao.org>
35
+ * lib/oci8/metadata.rb: Update doc comments of OCI8::Metadata::ArgBase#level
36
+ and OCI8::Metadata::ArgBase#arguments.
37
+ * test/test_package_type.rb, lib/oci8.rb: Fix to pass tests on Oracle 18c.
38
+ Detailed user-defined type information used in arguments isn't available
39
+ on Oracle 18c.
40
+
41
+ 2018-08-12 Kubo Takehiro <kubo@jiubao.org>
42
+ * test/test_clob.rb: Skip TestCLob#test_github_issue_20 because it
43
+ takes 4 minutes to test it in my Linux box.
44
+
45
+ 2018-08-12 Kubo Takehiro <kubo@jiubao.org>
46
+ * ext/oci8/lob.c, test/test_clob.rb: LOB#sync, LOB#sync= and LOB#flush
47
+ do nothing now. They have not worked by mistake from the beginning
48
+ because incorrect arguments has been passed to OCILobOpen().
49
+ Moreover it crashed Oracle 18c server-side processes and caused
50
+ "ORA-03113: end-of-file on communication channel."
51
+ (github issue #198)
52
+
53
+ 2018-01-28 Kubo Takehiro <kubo@jiubao.org>
54
+ * ext/oci8/object.c, lib/oci8/object.rb: Add timestamp with time zone
55
+ data type support in object type attributes.
56
+ (github issue #185)
57
+ * test/setup_test_object.sql, test/test_object.rb: Add tests for
58
+ timestamp and timestamp with time zone.
59
+
60
+ 2018-01-23 Kubo Takehiro <kubo@jiubao.org>
61
+ * ext/oci8/object.c, ext/oci8/oci8.h, lib/oci8/object.rb:
62
+ Add timestamp data type support in object type attributes.
63
+ (github issue #185)
64
+
65
+ 2017-12-27 Kubo Takehiro <kubo@jiubao.org>
66
+ * mkpkg-win32.rb: Remove '-rubygems' in the command line to run tests.
67
+ `ubygems.rb` was removed in ruby 2.5.
68
+
1
69
  2017-12-27 Kubo Takehiro <kubo@jiubao.org>
2
70
  * NEWS: Add changes between 2.2.5 and 2.2.5.1
3
71
  * lib/oci8/version.rb: Update to 2.2.5.1
data/NEWS CHANGED
@@ -1,5 +1,44 @@
1
1
  # @markup markdown
2
2
 
3
+ 2.2.6
4
+ =====
5
+
6
+ This release fixed issues about Oracle 18c except one.
7
+
8
+ Fixed issue
9
+ -----------
10
+
11
+ ### Setting some properties failed with Oracle 18c client
12
+
13
+ Setting `OCI8::properties[:tcp_keepalive_time]` or `OCI8::properties[:cancel_read_at_exit]`
14
+ failed with the error message "No shared library is found to hook" when Oracle
15
+ client version is 18c.
16
+ (rsim/oracle-enhanced#1754)
17
+
18
+ ### Fix `OCI8#oracle_server_version` to get full version of Oracle 18c
19
+
20
+ `OCI8#oracle_server_version` returned Oracle version number whose
21
+ number components after the first dot are zeros such as '18.0.0.0.0'
22
+ even when the server version is `18.3.0.0.0`. This issue was fixed by
23
+ using a new OCI function. However the function is available since
24
+ Oracle 18c client. So when the Oracle client version is 12c or earlier
25
+ and the Oracle server version is 18c or later, it cannot get the *full*
26
+ Oracle version number.
27
+
28
+ ### Fix tests when the Oracle server version is 18c.
29
+
30
+ ### LOB#sync, LOB#sync= and LOB#flush do nothing now.
31
+
32
+ They have not worked by mistake from the beginning because incorrect
33
+ arguments has been passed to OCILobOpen(). Moreover it crashed Oracle
34
+ 18c server-side processes and caused "ORA-03113: end-of-file on
35
+ communication channel."
36
+ (github issue #198)
37
+
38
+ ### `unsupported typecode timestamp` when timestamp with time zone is in object type attributes.
39
+
40
+ (github issue #185)
41
+
3
42
  2.2.5.1
4
43
  =======
5
44
 
data/README.md CHANGED
@@ -2,7 +2,7 @@ Ruby-oci8
2
2
  =========
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/ruby-oci8.svg)](http://badge.fury.io/rb/ruby-oci8)
5
- [![Circle CI](https://circleci.com/gh/kubo/ruby-oci8.png?style=shield)](https://circleci.com/gh/kubo/ruby-oci8)
5
+ [![Build Status](https://travis-ci.org/kubo/ruby-oci8.svg?branch=master)](https://travis-ci.org/kubo/ruby-oci8)
6
6
 
7
7
  What is ruby-oci8
8
8
  -----------------
data/dist-files CHANGED
@@ -109,4 +109,5 @@ test/test_oracle_version.rb
109
109
  test/test_oradate.rb
110
110
  test/test_oranumber.rb
111
111
  test/test_package_type.rb
112
+ test/test_properties.rb
112
113
  test/test_rowid.rb
@@ -39,7 +39,7 @@ Download the following packages from [Oracle Technology Network][]
39
39
 
40
40
  * Instant Client Package - Basic (`instantclient-basic-macos.x64-12.1.0.2.0.zip`) or Basic Lite (`instantclient-basiclite-macos.x64-12.1.0.2.0.zip`)
41
41
  * Instant Client Package - SDK (`instantclient-sdk-macos.x64-12.1.0.2.0.zip`)
42
- * Instant Client Package - SQL*Plus (`instantclient-sdk-macos.x64-12.1.0.2.0.zip`) (optionally)
42
+ * Instant Client Package - SQL*Plus (`instantclient-sqlplus-macos.x64-12.1.0.2.0.zip`) (optionally)
43
43
 
44
44
  ### Install Oracle Instant Client Packages via Homebrew
45
45
 
data/lib/oci8.rb CHANGED
@@ -140,6 +140,8 @@ class OCI8
140
140
  ORAVER_11_1 = OCI8::OracleVersion.new(11, 1)
141
141
  # @private
142
142
  ORAVER_12_1 = OCI8::OracleVersion.new(12, 1)
143
+ # @private
144
+ ORAVER_18 = OCI8::OracleVersion.new(18)
143
145
 
144
146
  # @private
145
147
  @@oracle_client_version = OCI8::OracleVersion.new(self.oracle_client_vernum)
data/lib/oci8/metadata.rb CHANGED
@@ -1503,7 +1503,11 @@ class OCI8
1503
1503
  attr_get_sb1(OCI_ATTR_SCALE)
1504
1504
  end
1505
1505
 
1506
- # The datatype levels. This attribute always returns zero.
1506
+ # The nest level.
1507
+ #
1508
+ # Oracle manual says that it always returns zero. However it returns
1509
+ # the depth of {OCI8::ArgBase#arguments} calls when #arguments returns
1510
+ # a non-empty array.
1507
1511
  def level
1508
1512
  attr_get_ub2(OCI_ATTR_LEVEL)
1509
1513
  end
@@ -1607,6 +1611,10 @@ class OCI8
1607
1611
 
1608
1612
  # The list of arguments at the next level (when the argument is
1609
1613
  # of a record or table type).
1614
+ #
1615
+ # This method returns an array containing type information when
1616
+ # the type is a user-defined type and the Oracle server version
1617
+ # is 12c or earlier. Otherwise, it returns an empty array.
1610
1618
  def arguments
1611
1619
  @arguments ||= list_arguments.to_a
1612
1620
  end
data/lib/oci8/object.rb CHANGED
@@ -493,6 +493,16 @@ EOS
493
493
  Proc.new do |val| datetime_to_array(val, :date) end, # set_proc
494
494
  Proc.new do |val| array_to_time(val, :local) end, # get_proc
495
495
  ]
496
+ when :timestamp
497
+ [ATTR_TIMESTAMP, con, SIZE_OF_POINTER, 2, ALIGNMENT_OF_POINTER,
498
+ Proc.new do |val| datetime_to_array(val, :timestamp) end, # set_proc
499
+ Proc.new do |val| array_to_time(val, :local) end, # get_proc
500
+ ]
501
+ when :timestamp_tz
502
+ [ATTR_TIMESTAMP_TZ, con, SIZE_OF_POINTER, 2, ALIGNMENT_OF_POINTER,
503
+ Proc.new do |val| datetime_to_array(val, :timestamp_tz) end, # set_proc
504
+ Proc.new do |val| array_to_time(val, nil) end, # get_proc
505
+ ]
496
506
  when :binary_double
497
507
  [ATTR_BINARY_DOUBLE, nil, SIZE_OF_DOUBLE, 2, ALIGNMENT_OF_DOUBLE]
498
508
  when :binary_float
data/lib/oci8/oci8.rb CHANGED
@@ -340,6 +340,12 @@ class OCI8
340
340
 
341
341
  # Returns the Oracle server version.
342
342
  #
343
+ # When the Oracle client version is 12c or earlier and
344
+ # the Oracle server version is 18c or later, this method
345
+ # doesn't return *full* version number such as '18.3.0.0.0'.
346
+ # It returns version number whose number components after
347
+ # the first dot are zeros such as '18.0.0.0.0'.
348
+ #
343
349
  # @see OCI8.oracle_client_version
344
350
  # @return [OCI8::OracleVersion]
345
351
  def oracle_server_version
@@ -66,6 +66,12 @@ class OCI8
66
66
  major, minor, update, patch, port_update = arg.split('.').collect do |v|
67
67
  v.to_i
68
68
  end
69
+ elsif arg >= 0x12000000
70
+ major = (arg & 0xFF000000) >> 24
71
+ minor = (arg & 0x00FF0000) >> 16
72
+ update = (arg & 0x0000F000) >> 12
73
+ patch = (arg & 0x00000FF0) >> 4
74
+ port_update = (arg & 0x0000000F)
69
75
  elsif arg >= 0x08000000
70
76
  major = (arg & 0xFF000000) >> 24
71
77
  minor = (arg & 0x00F00000) >> 20
@@ -80,7 +86,11 @@ class OCI8
80
86
  @update = update || 0
81
87
  @patch = patch || 0
82
88
  @port_update = port_update || 0
83
- @vernum = (@major << 24) | (@minor << 20) | (@update << 12) | (@patch << 8) | @port_update
89
+ @vernum = if @major >= 18
90
+ (@major << 24) | (@minor << 16) | (@update << 12) | (@patch << 4) | @port_update
91
+ else
92
+ (@major << 24) | (@minor << 20) | (@update << 12) | (@patch << 8) | @port_update
93
+ end
84
94
  end
85
95
 
86
96
  # Compares +self+ and +other+.
data/lib/oci8/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class OCI8
2
- VERSION = "2.2.5.1"
2
+ VERSION = "2.2.6"
3
3
  end
data/lib/oci8lib_191.so CHANGED
Binary file
data/lib/oci8lib_200.so CHANGED
Binary file
data/lib/oci8lib_210.so CHANGED
Binary file
data/lib/oci8lib_220.so CHANGED
Binary file
data/lib/oci8lib_230.so CHANGED
Binary file
data/lib/oci8lib_240.so CHANGED
Binary file
data/lib/oci8lib_250.so CHANGED
Binary file
data/lib/ruby-oci8.rb CHANGED
@@ -1,4 +1 @@
1
- if caller[0] !~ /\/bundler\/runtime\.rb:\d+:in `require'/
2
- warn "Don't require 'ruby-oci8'. Use \"require 'oci8'\" instead. 'ruby-oci8.rb' was added only for 'Bundler.require'."
3
- end
4
1
  require 'oci8'
@@ -61,6 +61,8 @@ create type rb_test_obj as object (
61
61
  obj_array_val rb_test_obj_elem_array,
62
62
  obj_ary_of_ary_val rb_test_obj_elem_ary_of_ary,
63
63
  date_val date,
64
+ timestamp_val timestamp(9),
65
+ timestamp_tz_val timestamp(9) with time zone,
64
66
  -- date_array_val rb_test_date_array,
65
67
 
66
68
  constructor function rb_test_obj(n number) return self as result,
@@ -72,19 +74,23 @@ create type rb_test_obj as object (
72
74
  member procedure member_proc(n in integer)
73
75
  )
74
76
  /
75
- create or replace type body rb_test_obj is
76
-
77
+ create type body rb_test_obj is
77
78
  constructor function rb_test_obj(n number) return self as result is
78
- function to_test_date(n number) return date is
79
- begin
80
- return to_date(to_char(1990 + n, 'FM0000') ||
81
- to_char(mod(round(n) * 5, 12) + 1, 'FM00') ||
82
- to_char(mod(round(n) * 7, 27) + 1, 'FM00') ||
83
- to_char(mod(round(n) * 9, 24), 'FM00') ||
84
- to_char(mod(round(n) * 11, 60), 'FM00') ||
85
- to_char(mod(round(n) * 13, 60), 'FM00'), 'yyyymmddhh24miss');
86
- end;
79
+ str varchar(28);
80
+ ts timestamp(9);
81
+ ts_tz timestamp(9) with time zone;
87
82
  begin
83
+ str := to_char(1990 + n, 'FM0000') ||
84
+ to_char(mod(round(n) * 5, 12) + 1, 'FM00') ||
85
+ to_char(mod(round(n) * 7, 27) + 1, 'FM00') ||
86
+ to_char(mod(round(n) * 9, 24), 'FM00') ||
87
+ to_char(mod(round(n) * 11, 60), 'FM00') ||
88
+ to_char(mod(round(n) * 13, 60), 'FM00') ||
89
+ to_char(mod(round(n) * 333333333, 1000000000), 'FM000000000');
90
+ ts := to_timestamp(str, 'yyyymmddhh24missff9');
91
+ str := str || to_char(mod(round(n) * 15, 24) - 11, 'FMS00') ||
92
+ to_char(mod(round(n) * 17, 60), 'FM00');
93
+ ts_tz := to_timestamp_tz(str, 'yyyymmddhh24missff9tzhtzm');
88
94
  self.int_val := n;
89
95
  self.flt_val := n;
90
96
  self.num_val := n;
@@ -96,7 +102,9 @@ create or replace type body rb_test_obj is
96
102
  self.nclob_val := to_clob(n);
97
103
  self.blob_val := to_blob(utl_raw.cast_to_raw(to_char(n)));
98
104
  self.obj_val := rb_test_obj_elem(n, n + 1);
99
- self.date_val := to_test_date(n);
105
+ self.date_val := ts;
106
+ self.timestamp_val := ts;
107
+ self.timestamp_tz_val := ts_tz;
100
108
  if self.int_val != 1 then
101
109
  self.int_array_val := rb_test_int_array(n, n + 1, n + 2);
102
110
  self.flt_array_val := rb_test_flt_array(n, n + 1, n + 2);
@@ -120,7 +128,7 @@ create or replace type body rb_test_obj is
120
128
 
121
129
  static function test_object_version return integer is
122
130
  begin
123
- return 3;
131
+ return 4;
124
132
  end;
125
133
 
126
134
  static function class_func(n number) return rb_test_obj is
data/test/test_all.rb CHANGED
@@ -26,6 +26,7 @@ require "#{srcdir}/test_oracle_version"
26
26
  require "#{srcdir}/test_error"
27
27
  require "#{srcdir}/test_connection_pool"
28
28
  require "#{srcdir}/test_object"
29
+ require "#{srcdir}/test_properties.rb"
29
30
 
30
31
  if OCI8.respond_to? :encoding
31
32
  require "#{srcdir}/test_encoding"
data/test/test_clob.rb CHANGED
@@ -24,22 +24,6 @@ class TestCLob < Minitest::Test
24
24
  lob.close
25
25
  end
26
26
 
27
- def test_insert_with_flush
28
- filename = File.basename($lobfile)
29
- @conn.exec("DELETE FROM test_table WHERE filename = :1", filename)
30
- @conn.exec("INSERT INTO test_table(filename, content) VALUES (:1, EMPTY_CLOB())", filename)
31
- cursor = @conn.exec("SELECT content FROM test_table WHERE filename = :1 FOR UPDATE", filename)
32
- lob = cursor.fetch[0]
33
- lob.sync = false
34
- open($lobfile) do |f|
35
- while s = f.read(1000)
36
- lob.write(s)
37
- end
38
- end
39
- lob.flush
40
- lob.close
41
- end
42
-
43
27
  def test_insert_symbol
44
28
  filename = 'test_symbol'
45
29
  value = :foo_bar
@@ -76,6 +60,9 @@ class TestCLob < Minitest::Test
76
60
 
77
61
  # https://github.com/kubo/ruby-oci8/issues/20
78
62
  def test_github_issue_20
63
+ # Skip this test if FULLTEST isn't set because it takes 4 minutes in my Linux box.
64
+ return if ENV['FULLTEST']
65
+
79
66
  lob1 = OCI8::CLOB.new(@conn, ' ' * (1024 * 1024))
80
67
  lob1.read(1) # to suppress `warning: assigned but unused variable - lob1`
81
68
  begin
data/test/test_object.rb CHANGED
@@ -1,6 +1,12 @@
1
1
  require 'oci8'
2
2
  require File.dirname(__FILE__) + '/config'
3
3
 
4
+ class Time
5
+ def inspect
6
+ self.strftime("%Y-%m-%d %H:%M:%S.%N %:z")
7
+ end
8
+ end
9
+
4
10
  conn = OCI8.new($dbuser, $dbpass, $dbname)
5
11
  error_message = nil
6
12
  begin
@@ -22,7 +28,7 @@ begin
22
28
 
23
29
  begin
24
30
  version = RbTestObj.test_object_version(conn)
25
- error_message = "Invalid test object version" if version != 3
31
+ error_message = "Invalid test object version" if version != 4
26
32
  rescue NoMethodError
27
33
  raise unless $!.to_s.include?('test_object_version')
28
34
  error_message = "rb_test_obj.test_object_version is not declared."
@@ -100,7 +106,8 @@ class TestObj1 < Minitest::Test
100
106
  attr_reader :obj_array_val
101
107
  attr_reader :obj_ary_of_ary_val
102
108
  attr_reader :date_val
103
- # attr_reader :date_array_val
109
+ attr_reader :timestamp_val
110
+ attr_reader :timestamp_tz_val
104
111
 
105
112
  attr_accessor :assertions
106
113
 
@@ -109,16 +116,28 @@ class TestObj1 < Minitest::Test
109
116
  @assertions = 0
110
117
  end
111
118
 
112
- def to_test_date(n)
119
+ def to_test_datetime(n, type)
113
120
  year = (1990 + n).round
114
121
  month = (n.round * 5) % 12 + 1
115
122
  mday = (n.round * 7) % 27 + 1
116
123
  hour = (n.round * 9) % 24
117
124
  minute = (n.round * 11) % 60
118
125
  sec = (n.round * 13) % 60
119
- convert_to_time(year, month, mday, hour, minute, sec, 0, nil)
126
+ nsec = if type == :date
127
+ 0
128
+ else
129
+ ((n.round * 333_333_333) % 1_000_000_000).to_r / 1_000_000_000
130
+ end
131
+ tz = if type == :timestamp_tz
132
+ tzh = (n.round * 15) % 24 - 11
133
+ tzm = (n.round * 17) % 60
134
+ format('%+03d:%02d', tzh, tzm)
135
+ else
136
+ nil
137
+ end
138
+ convert_to_time(year, month, mday, hour, minute, sec, nsec, tz)
120
139
  end
121
- private :to_test_date
140
+ private :to_test_datetime
122
141
 
123
142
  def next
124
143
  @n += 1.2
@@ -135,7 +154,9 @@ class TestObj1 < Minitest::Test
135
154
  @nclob_val = @str_val
136
155
  @blob_val = @str_val
137
156
  @obj_val = ExpectedValObjElem.new(@int_val, @int_val + 1)
138
- @date_val = to_test_date(@n)
157
+ @date_val = to_test_datetime(@n, :date)
158
+ @timestamp_val = to_test_datetime(@n, :timestamp)
159
+ @timestamp_tz_val = to_test_datetime(@n, :timestamp_tz)
139
160
  if @int_val == 1
140
161
  @int_array_val = nil
141
162
  @flt_array_val = nil
@@ -199,7 +220,8 @@ class TestObj1 < Minitest::Test
199
220
  obj_array_val = val[18]
200
221
  obj_ary_of_ary_val = val[19]
201
222
  date_val = val[20]
202
- # date_array_val = val[18]
223
+ timestamp_val = val[21]
224
+ timestamp_tz_val = val[22]
203
225
  else
204
226
  assert_instance_of(RbTestObj, val)
205
227
  int_val = val.int_val
@@ -223,7 +245,8 @@ class TestObj1 < Minitest::Test
223
245
  obj_array_val = val.obj_array_val
224
246
  obj_ary_of_ary_val = val.obj_ary_of_ary_val
225
247
  date_val = val.date_val
226
- # date_array_val = val.date_array_val
248
+ timestamp_val = val.timestamp_val
249
+ timestamp_tz_val = val.timestamp_tz_val
227
250
  end
228
251
 
229
252
  assert_equal(@int_val, int_val)
@@ -267,7 +290,8 @@ class TestObj1 < Minitest::Test
267
290
  assert_nil(obj_ary_of_ary_val)
268
291
  end
269
292
  assert_equal(@date_val, date_val)
270
- # assert_equal(@date_array_val, date_array_val && date_array_val.to_ary)
293
+ assert_equal(@timestamp_val, timestamp_val)
294
+ assert_equal(@timestamp_tz_val, timestamp_tz_val)
271
295
  end
272
296
 
273
297
  def assert_array_in_delta(exp, val)
data/test/test_oci8.rb CHANGED
@@ -491,9 +491,23 @@ EOS
491
491
  else
492
492
  raise "Unknown column size #{column_size}"
493
493
  end
494
- driver_name = cursor.fetch[0]
494
+ driver_name = cursor.fetch[0].strip
495
495
  cursor.close
496
496
  assert_equal(expected_value, driver_name)
497
497
  end
498
498
  end
499
+
500
+ def test_server_version
501
+ cursor = @conn.exec("select * from product_component_version where product like 'Oracle Database %'")
502
+ row = cursor.fetch_hash
503
+ cursor.close
504
+ ver = if OCI8::oracle_client_version >= OCI8::ORAVER_18
505
+ row['VERSION_FULL'] || row['VERSION']
506
+ else
507
+ # OCI8#oracle_server_version could not get infomation corresponding
508
+ # to VERSION_FULL when the Oracle client version is below 18.1.
509
+ row['VERSION']
510
+ end
511
+ assert_equal(ver, @conn.oracle_server_version.to_s)
512
+ end
499
513
  end # TestOCI8
@@ -639,7 +639,11 @@ class TestPackageType < Minitest::Test
639
639
  :sub_name => "TABLE_OF_PLS_INTEGER",
640
640
  :link => "",
641
641
  #:type_metadata => nil,
642
- :arguments => {
642
+ :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
643
+ {
644
+ :class => Array,
645
+ :size => 0,
646
+ } : {
643
647
  :class => Array,
644
648
  :size => 1,
645
649
  [0] => {
@@ -729,7 +733,11 @@ class TestPackageType < Minitest::Test
729
733
  :sub_name => "TABLE_OF_REC1",
730
734
  :link => "",
731
735
  #:type_metadata => nil,
732
- :arguments => {
736
+ :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
737
+ {
738
+ :class => Array,
739
+ :size => 0,
740
+ } : {
733
741
  :class => Array,
734
742
  :size => 1,
735
743
  [0] => {
@@ -846,7 +854,11 @@ class TestPackageType < Minitest::Test
846
854
  :sub_name => "TABLE_OF_REC1",
847
855
  :link => "",
848
856
  #:type_metadata => nil,
849
- :arguments => {
857
+ :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
858
+ {
859
+ :class => Array,
860
+ :size => 0,
861
+ } : {
850
862
  :class => Array,
851
863
  :size => 1,
852
864
  [0] => {
@@ -0,0 +1,17 @@
1
+ require 'oci8'
2
+ require File.dirname(__FILE__) + '/config'
3
+
4
+ class TestProperties < Minitest::Test
5
+ def test_tcp_keepalive_time
6
+ begin
7
+ oldval = OCI8.properties[:tcp_keepalive_time]
8
+ begin
9
+ OCI8.properties[:tcp_keepalive_time] = 600
10
+ assert(true)
11
+ ensure
12
+ OCI8.properties[:tcp_keepalive_time] = oldval
13
+ end
14
+ rescue NotImplementedError
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-oci8
3
3
  version: !ruby/object:Gem::Version
4
- hash: 105
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 2
9
- - 5
10
- - 1
11
- version: 2.2.5.1
9
+ - 6
10
+ version: 2.2.6
12
11
  platform: x86-mingw32
13
12
  authors:
14
13
  - Kubo Takehiro
@@ -16,7 +15,7 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2017-12-27 00:00:00 +09:00
18
+ date: 2018-08-22 00:00:00 +09:00
20
19
  default_executable:
21
20
  dependencies: []
22
21
 
@@ -105,6 +104,7 @@ files:
105
104
  - test/test_oradate.rb
106
105
  - test/test_oranumber.rb
107
106
  - test/test_package_type.rb
107
+ - test/test_properties.rb
108
108
  - test/test_rowid.rb
109
109
  - lib/oci8lib_191.so
110
110
  - lib/oci8lib_200.so