ruby-oci8 2.2.0.2 → 2.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -6
  3. data/ChangeLog +600 -0
  4. data/NEWS +426 -35
  5. data/README.md +27 -9
  6. data/dist-files +13 -2
  7. data/docs/bind-array-to-in_cond.md +38 -0
  8. data/docs/conflicts-local-connections-and-processes.md +98 -0
  9. data/docs/hanging-after-inactivity.md +63 -0
  10. data/docs/install-binary-package.md +15 -11
  11. data/docs/install-full-client.md +18 -21
  12. data/docs/install-instant-client.md +45 -27
  13. data/docs/install-on-osx.md +31 -117
  14. data/docs/ldap-auth-and-function-interposition.md +123 -0
  15. data/docs/number-type-mapping.md +79 -0
  16. data/docs/platform-specific-issues.md +17 -50
  17. data/docs/report-installation-issue.md +11 -8
  18. data/docs/timeout-parameters.md +94 -0
  19. data/ext/oci8/apiwrap.c.tmpl +2 -5
  20. data/ext/oci8/apiwrap.rb +6 -1
  21. data/ext/oci8/apiwrap.yml +39 -143
  22. data/ext/oci8/attr.c +4 -2
  23. data/ext/oci8/bind.c +421 -9
  24. data/ext/oci8/connection_pool.c +3 -3
  25. data/ext/oci8/encoding.c +5 -5
  26. data/ext/oci8/env.c +8 -2
  27. data/ext/oci8/error.c +24 -16
  28. data/ext/oci8/extconf.rb +35 -63
  29. data/ext/oci8/hook_funcs.c +274 -61
  30. data/ext/oci8/lob.c +31 -75
  31. data/ext/oci8/metadata.c +8 -6
  32. data/ext/oci8/object.c +119 -29
  33. data/ext/oci8/oci8.c +46 -133
  34. data/ext/oci8/oci8.h +40 -123
  35. data/ext/oci8/oci8lib.c +178 -46
  36. data/ext/oci8/ocihandle.c +37 -37
  37. data/ext/oci8/ocinumber.c +24 -35
  38. data/ext/oci8/oraconf.rb +168 -337
  39. data/ext/oci8/oradate.c +19 -19
  40. data/ext/oci8/plthook.h +10 -0
  41. data/ext/oci8/plthook_elf.c +433 -268
  42. data/ext/oci8/plthook_osx.c +40 -9
  43. data/ext/oci8/plthook_win32.c +16 -1
  44. data/ext/oci8/stmt.c +52 -17
  45. data/ext/oci8/win32.c +4 -22
  46. data/lib/oci8/bindtype.rb +10 -17
  47. data/lib/oci8/check_load_error.rb +57 -10
  48. data/lib/oci8/compat.rb +5 -1
  49. data/lib/oci8/connection_pool.rb +74 -3
  50. data/lib/oci8/cursor.rb +70 -31
  51. data/lib/oci8/metadata.rb +9 -1
  52. data/lib/oci8/object.rb +14 -1
  53. data/lib/oci8/oci8.rb +184 -58
  54. data/lib/oci8/ocihandle.rb +0 -16
  55. data/lib/oci8/oracle_version.rb +11 -1
  56. data/lib/oci8/properties.rb +55 -0
  57. data/lib/oci8/version.rb +1 -1
  58. data/lib/oci8.rb +48 -4
  59. data/lib/ruby-oci8.rb +1 -0
  60. data/pre-distclean.rb +1 -3
  61. data/ruby-oci8.gemspec +4 -9
  62. data/setup.rb +11 -2
  63. data/test/README.md +37 -0
  64. data/test/config.rb +8 -1
  65. data/test/setup_test_object.sql +42 -14
  66. data/test/setup_test_package.sql +59 -0
  67. data/test/test_all.rb +4 -0
  68. data/test/test_bind_array.rb +70 -0
  69. data/test/test_bind_boolean.rb +99 -0
  70. data/test/test_bind_integer.rb +47 -0
  71. data/test/test_break.rb +11 -9
  72. data/test/test_clob.rb +5 -17
  73. data/test/test_connstr.rb +142 -0
  74. data/test/test_datetime.rb +8 -3
  75. data/test/test_metadata.rb +2 -1
  76. data/test/test_object.rb +99 -18
  77. data/test/test_oci8.rb +170 -46
  78. data/test/test_oranumber.rb +12 -6
  79. data/test/test_package_type.rb +17 -3
  80. data/test/test_properties.rb +17 -0
  81. metadata +45 -55
  82. data/docs/osx-install-dev-tools.png +0 -0
  83. data/test/README +0 -42
data/test/test_oci8.rb CHANGED
@@ -25,54 +25,142 @@ EOS
25
25
  drop_table('test_rename_table')
26
26
  end
27
27
 
28
- # USE_DYNAMIC_FETCH doesn't work well...
29
- # This test is disabled.
30
- def _test_long_type
31
- drop_table('test_table')
32
- @conn.exec('CREATE TABLE test_table (id number(38), lng long)')
33
- test_data1 = 'a' * 70000
34
- test_data2 = 'b' * 3000
35
- test_data3 = nil
36
- test_data4 = 'c' * 70000
37
- @conn.exec('insert into test_table values (:1, :2)', 1, test_data1)
38
- @conn.exec('insert into test_table values (:1, :2)', 2, [test_data2, :long])
39
- @conn.exec('insert into test_table values (:1, :2)', 3, [nil, :long])
40
- @conn.exec('insert into test_table values (:1, :2)', 4, [test_data4, :long])
41
-
42
- [8000, 65535, 65536, 80000].each do |read_len|
43
- @conn.long_read_len = read_len
44
- cursor = @conn.parse('SELECT lng from test_table order by id')
45
- cursor.exec
46
- assert_equal(test_data1, cursor.fetch[0])
47
- assert_equal(test_data2, cursor.fetch[0])
48
- assert_equal(test_data3, cursor.fetch[0])
49
- assert_equal(test_data4, cursor.fetch[0])
50
- cursor.close
28
+ # Set `OCI8::BindType::Base.initial_chunk_size = 5` to
29
+ # use the following test data.
30
+ LONG_TEST_DATA = [
31
+ # initial chunk size: 5 (total buffer size: 5)
32
+ 'a' * 4, 'b' * 5, 'c' * 6, 'd' * 5, 'e' * 4,
33
+ # second chunk size: 10 (total buffer size: 15)
34
+ 'f' * 14, 'g' * 15, 'h' * 16, 'i' * 15, 'j' * 14,
35
+ # third chunk size: 20 (total buffer size: 35)
36
+ 'k' * 34, 'l' * 35, 'm' * 36, 'n' * 35, 'o' * 34,
37
+ # use data around initial chunk size again
38
+ 'p' * 4, 'q' * 5, 'r' * 6, 's' * 5, 't' * 4,
39
+ # special data
40
+ '', nil,
41
+ ]
42
+
43
+ def test_long_type
44
+ clob_bind_type = OCI8::BindType::Mapping[:clob]
45
+ blob_bind_type = OCI8::BindType::Mapping[:blob]
46
+ initial_cunk_size = OCI8::BindType::Base.initial_chunk_size
47
+ begin
48
+ OCI8::BindType::Base.initial_chunk_size = 5
49
+ @conn.prefetch_rows = LONG_TEST_DATA.size / 3
50
+ drop_table('test_table')
51
+ ascii_enc = Encoding.find('US-ASCII')
52
+ 0.upto(1) do |i|
53
+ if i == 0
54
+ @conn.exec("CREATE TABLE test_table (id number(38), long_column long, clob_column clob)")
55
+ cursor = @conn.parse('insert into test_table values (:1, :2, :3)')
56
+ cursor.bind_param(1, nil, Integer)
57
+ cursor.bind_param(2, nil, :long)
58
+ cursor.bind_param(3, nil, :clob)
59
+ lob = OCI8::CLOB.new(@conn, '')
60
+ enc = Encoding.default_internal || OCI8.encoding
61
+ else
62
+ @conn.exec("CREATE TABLE test_table (id number(38), long_raw_column long raw, blob_column blob)")
63
+ cursor = @conn.parse('insert into test_table values (:1, :2, :3)')
64
+ cursor.bind_param(1, nil, Integer)
65
+ cursor.bind_param(2, nil, :long_raw)
66
+ cursor.bind_param(3, nil, :blob)
67
+ lob = OCI8::BLOB.new(@conn, '')
68
+ enc = Encoding.find('ASCII-8BIT')
69
+ end
70
+
71
+ LONG_TEST_DATA.each_with_index do |data, index|
72
+ cursor[1] = index
73
+ cursor[2] = data
74
+ if data.nil?
75
+ cursor[3] = nil
76
+ else
77
+ lob.rewind
78
+ lob.write(data)
79
+ lob.size = data.size
80
+ cursor[3] = lob
81
+ end
82
+ cursor.exec
83
+ end
84
+ cursor.close
85
+
86
+ cursor = @conn.parse('SELECT * from test_table order by id')
87
+ cursor.exec
88
+ LONG_TEST_DATA.each_with_index do |data, index|
89
+ row = cursor.fetch
90
+ assert_equal(index, row[0])
91
+ if data.nil?
92
+ assert_nil(row[1])
93
+ assert_nil(row[2])
94
+ elsif data.empty?
95
+ # '' is inserted to the long or long raw column as null.
96
+ assert_nil(row[1])
97
+ # '' is inserted to the clob or blob column as an empty clob.
98
+ # It is fetched as '' when the data is read using a LOB locator.
99
+ assert_equal(data, clob_data = row[2].read)
100
+ assert_equal(ascii_enc, clob_data.encoding)
101
+ else
102
+ assert_equal(data, row[1])
103
+ assert_equal(data, clob_data = row[2].read)
104
+ assert_equal(enc, row[1].encoding)
105
+ assert_equal(enc, clob_data.encoding)
106
+ end
107
+ end
108
+ assert_nil(cursor.fetch)
109
+ cursor.close
110
+
111
+ begin
112
+ OCI8::BindType::Mapping[:clob] = OCI8::BindType::Long
113
+ OCI8::BindType::Mapping[:blob] = OCI8::BindType::LongRaw
114
+ cursor = @conn.parse('SELECT * from test_table order by id')
115
+ cursor.exec
116
+ LONG_TEST_DATA.each_with_index do |data, index|
117
+ row = cursor.fetch
118
+ assert_equal(index, row[0])
119
+ if data.nil?
120
+ assert_nil(row[1])
121
+ assert_nil(row[2])
122
+ elsif data.empty?
123
+ # '' is inserted to the long or long raw column as null.
124
+ assert_nil(row[1])
125
+ # '' is inserted to the clob or blob column as an empty clob.
126
+ # However it is fetched as nil.
127
+ assert_nil(row[2])
128
+ else
129
+ assert_equal(data, row[1])
130
+ assert_equal(data, row[2])
131
+ assert_equal(enc, row[1].encoding)
132
+ assert_equal(enc, row[2].encoding)
133
+ end
134
+ end
135
+ assert_nil(cursor.fetch)
136
+ cursor.close
137
+ ensure
138
+ OCI8::BindType::Mapping[:clob] = clob_bind_type
139
+ OCI8::BindType::Mapping[:blob] = blob_bind_type
140
+ end
141
+ drop_table('test_table')
142
+ end
143
+ ensure
144
+ OCI8::BindType::Base.initial_chunk_size = initial_cunk_size
51
145
  end
52
146
  drop_table('test_table')
53
147
  end
54
148
 
55
- def test_long_type
56
- @conn.long_read_len = 80000
57
- drop_table('test_table')
58
- @conn.exec('CREATE TABLE test_table (id number(38), lng long)')
59
- test_data1 = 'a' * 70000
60
- test_data2 = 'b' * 3000
61
- test_data3 = nil
62
- test_data4 = 'c' * 70000
63
- @conn.exec('insert into test_table values (:1, :2)', 1, test_data1)
64
- @conn.exec('insert into test_table values (:1, :2)', 2, [test_data2, :long])
65
- @conn.exec('insert into test_table values (:1, :2)', 3, [nil, :long])
66
- @conn.exec('insert into test_table values (:1, :2)', 4, [test_data4, :long])
67
-
68
- cursor = @conn.parse('SELECT lng from test_table order by id')
69
- cursor.exec
70
- assert_equal(test_data1, cursor.fetch[0])
71
- assert_equal(test_data2, cursor.fetch[0])
72
- assert_equal(test_data3, cursor.fetch[0])
73
- assert_equal(test_data4, cursor.fetch[0])
74
- cursor.close
75
- drop_table('test_table')
149
+ def test_bind_long_data
150
+ initial_cunk_size = OCI8::BindType::Base.initial_chunk_size
151
+ begin
152
+ OCI8::BindType::Base.initial_chunk_size = 5
153
+ cursor = @conn.parse("begin :1 := '<' || :2 || '>'; end;")
154
+ cursor.bind_param(1, nil, :long)
155
+ cursor.bind_param(2, nil, :long)
156
+ (LONG_TEST_DATA + ['z' * 4000]).each do |data|
157
+ cursor[2] = data
158
+ cursor.exec
159
+ assert_equal("<#{data}>", cursor[1])
160
+ end
161
+ ensure
162
+ OCI8::BindType::Base.initial_chunk_size = initial_cunk_size
163
+ end
76
164
  end
77
165
 
78
166
  def test_select
@@ -216,8 +304,8 @@ EOS
216
304
  assert_nil(rv[4])
217
305
  assert_nil(rv[5])
218
306
  else
219
- dttm = DateTime.civil(2000 + i, 8, 3, 23, 59, 59, Time.now.utc_offset.to_r/86400)
220
307
  tm = Time.local(2000 + i, 8, 3, 23, 59, 59)
308
+ dttm = DateTime.civil(2000 + i, 8, 3, 23, 59, 59, tm.utc_offset.to_r/86400)
221
309
  dt = Date.civil(2000 + i, 8, 3)
222
310
  assert_equal(tm, rv[3])
223
311
  assert_equal(dttm, rv[4])
@@ -451,6 +539,7 @@ EOS
451
539
  assert_nil(@conn.last_error)
452
540
  @conn.last_error = 'dummy'
453
541
  cursor = @conn.parse('select col1, max(col2) from (select 1 as col1, null as col2 from dual) group by col1')
542
+ cursor.prefetch_rows = 1
454
543
  assert_nil(@conn.last_error)
455
544
 
456
545
  # When an OCI function returns OCI_SUCCESS_WITH_INFO, OCI8#last_error is set.
@@ -492,9 +581,44 @@ EOS
492
581
  else
493
582
  raise "Unknown column size #{column_size}"
494
583
  end
495
- driver_name = cursor.fetch[0]
584
+ driver_name = cursor.fetch[0].strip
496
585
  cursor.close
497
586
  assert_equal(expected_value, driver_name)
498
587
  end
499
588
  end
589
+
590
+ def test_server_version
591
+ cursor = @conn.exec("select * from product_component_version where product like 'Oracle Database %'")
592
+ row = cursor.fetch_hash
593
+ cursor.close
594
+ ver = if OCI8::oracle_client_version >= OCI8::ORAVER_18
595
+ row['VERSION_FULL'] || row['VERSION']
596
+ else
597
+ # OCI8#oracle_server_version could not get infomation corresponding
598
+ # to VERSION_FULL when the Oracle client version is below 18.1.
599
+ row['VERSION']
600
+ end
601
+ assert_equal(ver, @conn.oracle_server_version.to_s)
602
+ end
603
+
604
+ def test_array_fetch
605
+ drop_table('test_table')
606
+ @conn.exec("CREATE TABLE test_table (id number, val clob)")
607
+ cursor = @conn.parse("INSERT INTO test_table VALUES (:1, :2)")
608
+ 1.upto(10) do |i|
609
+ cursor.exec(i, ('a'.ord + i).chr * i)
610
+ end
611
+ cursor.close
612
+ cursor = @conn.parse("select * from test_table where id <= :1 order by id")
613
+ cursor.prefetch_rows = 4
614
+ [1, 6, 2, 7, 3, 8, 4, 9, 5, 10].each do |i|
615
+ cursor.exec(i)
616
+ 1.upto(i) do |j|
617
+ row = cursor.fetch
618
+ assert_equal(j, row[0])
619
+ assert_equal(('a'.ord + j).chr * j, row[1].read)
620
+ end
621
+ assert_nil(cursor.fetch)
622
+ end
623
+ end
500
624
  end # TestOCI8
@@ -215,9 +215,15 @@ EOS
215
215
  end
216
216
 
217
217
  def test_yaml
218
+ # Use the permitted_classes keyword parameter if it is supported by YAML.load
219
+ keyword_params = if YAML.method(:load).parameters.any? { |key, value| value == :permitted_symbols }
220
+ {permitted_classes: [OraNumber]}
221
+ else
222
+ {}
223
+ end
218
224
  (LARGE_RANGE_VALUES + ['~', '-~']).each do |x|
219
225
  n = OraNumber.new(x)
220
- assert_equal(n, YAML.load(YAML.dump(n)))
226
+ assert_equal(n, YAML.load(YAML.dump(n), **keyword_params))
221
227
  end
222
228
  end
223
229
 
@@ -702,12 +708,12 @@ EOS
702
708
  def test_new_from_bigdecimal
703
709
  ["+Infinity", "-Infinity", "NaN"].each do |n|
704
710
  assert_raises TypeError do
705
- OraNumber.new(BigDecimal.new(n))
711
+ OraNumber.new(BigDecimal(n))
706
712
  end
707
713
  end
708
714
 
709
715
  LARGE_RANGE_VALUES.each do |val|
710
- assert_equal(val, OraNumber.new(BigDecimal.new(val)).to_s)
716
+ assert_equal(val, OraNumber.new(BigDecimal(val)).to_s)
711
717
  end
712
718
  end
713
719
 
@@ -738,9 +744,9 @@ EOS
738
744
  LARGE_RANGE_VALUES
739
745
  end
740
746
 
741
- def test_has_decimal_part
742
- assert_equal(false, OraNumber(10.0).has_decimal_part?)
743
- assert_equal(true, OraNumber(10.1).has_decimal_part?)
747
+ def test_has_fractional_part
748
+ assert_equal(false, OraNumber(10.0).has_fractional_part?)
749
+ assert_equal(true, OraNumber(10.1).has_fractional_part?)
744
750
  end
745
751
 
746
752
  def test_float_conversion_type_ruby
@@ -38,6 +38,8 @@ class TestPackageType < Minitest::Test
38
38
  val = method.is_a?(Array) ? obj[method[0]] : obj.send(method)
39
39
  if expected_value.is_a? Hash
40
40
  check_attributes("#{msg} > #{method}", val, expected_value)
41
+ elsif expected_value.nil?
42
+ assert_nil(val, "#{msg} > #{method}")
41
43
  else
42
44
  assert_equal(expected_value, val, "#{msg} > #{method}")
43
45
  end
@@ -637,7 +639,11 @@ class TestPackageType < Minitest::Test
637
639
  :sub_name => "TABLE_OF_PLS_INTEGER",
638
640
  :link => "",
639
641
  #:type_metadata => nil,
640
- :arguments => {
642
+ :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
643
+ {
644
+ :class => Array,
645
+ :size => 0,
646
+ } : {
641
647
  :class => Array,
642
648
  :size => 1,
643
649
  [0] => {
@@ -727,7 +733,11 @@ class TestPackageType < Minitest::Test
727
733
  :sub_name => "TABLE_OF_REC1",
728
734
  :link => "",
729
735
  #:type_metadata => nil,
730
- :arguments => {
736
+ :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
737
+ {
738
+ :class => Array,
739
+ :size => 0,
740
+ } : {
731
741
  :class => Array,
732
742
  :size => 1,
733
743
  [0] => {
@@ -844,7 +854,11 @@ class TestPackageType < Minitest::Test
844
854
  :sub_name => "TABLE_OF_REC1",
845
855
  :link => "",
846
856
  #:type_metadata => nil,
847
- :arguments => {
857
+ :arguments => ($oracle_server_version >= OCI8::ORAVER_18) ?
858
+ {
859
+ :class => Array,
860
+ :size => 0,
861
+ } : {
848
862
  :class => Array,
849
863
  :size => 1,
850
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,36 +1,27 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-oci8
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 2
7
- - 2
8
- - 0
9
- - 2
10
- version: 2.2.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.12
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Kubo Takehiro
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2015-10-12 00:00:00 +09:00
19
- default_executable:
11
+ date: 2022-12-30 00:00:00.000000000 Z
20
12
  dependencies: []
13
+ description: 'ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available
14
+ with Oracle 10g or later including Oracle Instant Client.
21
15
 
22
- description: |
23
- ruby-oci8 is a ruby interface for Oracle using OCI8 API. It is available with Oracle 10g or later including Oracle Instant Client.
24
-
16
+ '
25
17
  email: kubo@jiubao.org
26
18
  executables: []
27
-
28
- extensions:
19
+ extensions:
29
20
  - ext/oci8/extconf.rb
30
- extra_rdoc_files:
21
+ extra_rdoc_files:
31
22
  - README.md
32
- files:
33
- - .yardopts
23
+ files:
24
+ - ".yardopts"
34
25
  - COPYING
35
26
  - COPYING_old
36
27
  - ChangeLog
@@ -38,17 +29,18 @@ files:
38
29
  - NEWS
39
30
  - README.md
40
31
  - dist-files
41
- - metaconfig
42
- - pre-distclean.rb
43
- - ruby-oci8.gemspec
44
- - setup.rb
32
+ - docs/bind-array-to-in_cond.md
33
+ - docs/conflicts-local-connections-and-processes.md
34
+ - docs/hanging-after-inactivity.md
45
35
  - docs/install-binary-package.md
46
36
  - docs/install-full-client.md
47
37
  - docs/install-instant-client.md
48
38
  - docs/install-on-osx.md
49
- - docs/osx-install-dev-tools.png
39
+ - docs/ldap-auth-and-function-interposition.md
40
+ - docs/number-type-mapping.md
50
41
  - docs/platform-specific-issues.md
51
42
  - docs/report-installation-issue.md
43
+ - docs/timeout-parameters.md
52
44
  - ext/oci8/.document
53
45
  - ext/oci8/MANIFEST
54
46
  - ext/oci8/apiwrap.c.tmpl
@@ -87,8 +79,8 @@ files:
87
79
  - ext/oci8/util.c
88
80
  - ext/oci8/win32.c
89
81
  - lib/.document
90
- - lib/oci8.rb
91
82
  - lib/dbd/OCI8.rb
83
+ - lib/oci8.rb
92
84
  - lib/oci8/.document
93
85
  - lib/oci8/bindtype.rb
94
86
  - lib/oci8/check_load_error.rb
@@ -105,12 +97,21 @@ files:
105
97
  - lib/oci8/oracle_version.rb
106
98
  - lib/oci8/properties.rb
107
99
  - lib/oci8/version.rb
108
- - test/README
100
+ - lib/ruby-oci8.rb
101
+ - metaconfig
102
+ - pre-distclean.rb
103
+ - ruby-oci8.gemspec
104
+ - setup.rb
105
+ - test/README.md
109
106
  - test/config.rb
110
107
  - test/setup_test_object.sql
108
+ - test/setup_test_package.sql
111
109
  - test/test_all.rb
112
110
  - test/test_appinfo.rb
113
111
  - test/test_array_dml.rb
112
+ - test/test_bind_array.rb
113
+ - test/test_bind_boolean.rb
114
+ - test/test_bind_integer.rb
114
115
  - test/test_bind_raw.rb
115
116
  - test/test_bind_string.rb
116
117
  - test/test_bind_time.rb
@@ -118,10 +119,10 @@ files:
118
119
  - test/test_clob.rb
119
120
  - test/test_connection_pool.rb
120
121
  - test/test_connstr.rb
121
- - test/test_encoding.rb
122
122
  - test/test_datetime.rb
123
123
  - test/test_dbi.rb
124
124
  - test/test_dbi_clob.rb
125
+ - test/test_encoding.rb
125
126
  - test/test_error.rb
126
127
  - test/test_metadata.rb
127
128
  - test/test_object.rb
@@ -130,41 +131,30 @@ files:
130
131
  - test/test_oradate.rb
131
132
  - test/test_oranumber.rb
132
133
  - test/test_package_type.rb
134
+ - test/test_properties.rb
133
135
  - test/test_rowid.rb
134
- has_rdoc: true
135
136
  homepage: http://www.rubydoc.info/github/kubo/ruby-oci8
136
- licenses:
137
- - 2-clause BSD-style license
137
+ licenses:
138
+ - BSD-2-Clause
139
+ metadata: {}
138
140
  post_install_message:
139
141
  rdoc_options: []
140
-
141
- require_paths:
142
+ require_paths:
142
143
  - lib
143
- - ext/oci8
144
- required_ruby_version: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
147
146
  - - ">="
148
- - !ruby/object:Gem::Version
149
- segments:
150
- - 1
151
- - 9
152
- - 1
147
+ - !ruby/object:Gem::Version
153
148
  version: 1.9.1
154
- required_rubygems_version: !ruby/object:Gem::Requirement
155
- none: false
156
- requirements:
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
157
151
  - - ">="
158
- - !ruby/object:Gem::Version
159
- segments:
160
- - 0
161
- version: "0"
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
162
154
  requirements: []
163
-
164
- rubyforge_project:
165
- rubygems_version: 1.3.7
155
+ rubygems_version: 3.4.1
166
156
  signing_key:
167
- specification_version: 3
157
+ specification_version: 4
168
158
  summary: Ruby interface for Oracle using OCI8 API
169
- test_files:
159
+ test_files:
170
160
  - test/test_all.rb
Binary file
data/test/README DELETED
@@ -1,42 +0,0 @@
1
- Before runing unit test:
2
-
3
- 1. connect to Oracle as system:
4
-
5
- $ sqlplus system/<password_of_system>
6
-
7
- 2. create user ruby:
8
-
9
- SQL> CREATE USER ruby IDENTIFIED BY oci8;
10
-
11
- or
12
-
13
- SQL> CREATE USER ruby IDENTIFIED BY oci8
14
- 2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
15
-
16
- 3. grant the privilege to connect and execute.
17
-
18
- SQL> GRANT connect, resource, create view TO ruby;
19
-
20
- 4. connect to Oracle as sys
21
-
22
- $ sqlplus 'sys/<password_of_sys> as sysdba'
23
-
24
- 5. grant privileges
25
-
26
- SQL> GRANT EXECUTE ON dbms_lock TO ruby;
27
- SQL> GRANT CREATE VIEW TO ruby;
28
-
29
- 6. connect as ruby user.
30
-
31
- $ sqlplus ruby/oci8
32
-
33
- 7. Create object types
34
-
35
- SQL> @test/setup_test_object.sql
36
-
37
- 8. change $dbname if the database
38
-
39
- Then you can run:
40
- $ make check
41
- or
42
- $ nmake check (If your compiler is MS Visual C++.)