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.
- checksums.yaml +7 -0
- data/.yardopts +1 -6
- data/ChangeLog +600 -0
- data/NEWS +426 -35
- data/README.md +27 -9
- data/dist-files +13 -2
- data/docs/bind-array-to-in_cond.md +38 -0
- data/docs/conflicts-local-connections-and-processes.md +98 -0
- data/docs/hanging-after-inactivity.md +63 -0
- data/docs/install-binary-package.md +15 -11
- data/docs/install-full-client.md +18 -21
- data/docs/install-instant-client.md +45 -27
- data/docs/install-on-osx.md +31 -117
- data/docs/ldap-auth-and-function-interposition.md +123 -0
- data/docs/number-type-mapping.md +79 -0
- data/docs/platform-specific-issues.md +17 -50
- data/docs/report-installation-issue.md +11 -8
- data/docs/timeout-parameters.md +94 -0
- data/ext/oci8/apiwrap.c.tmpl +2 -5
- data/ext/oci8/apiwrap.rb +6 -1
- data/ext/oci8/apiwrap.yml +39 -143
- data/ext/oci8/attr.c +4 -2
- data/ext/oci8/bind.c +421 -9
- data/ext/oci8/connection_pool.c +3 -3
- data/ext/oci8/encoding.c +5 -5
- data/ext/oci8/env.c +8 -2
- data/ext/oci8/error.c +24 -16
- data/ext/oci8/extconf.rb +35 -63
- data/ext/oci8/hook_funcs.c +274 -61
- data/ext/oci8/lob.c +31 -75
- data/ext/oci8/metadata.c +8 -6
- data/ext/oci8/object.c +119 -29
- data/ext/oci8/oci8.c +46 -133
- data/ext/oci8/oci8.h +40 -123
- data/ext/oci8/oci8lib.c +178 -46
- data/ext/oci8/ocihandle.c +37 -37
- data/ext/oci8/ocinumber.c +24 -35
- data/ext/oci8/oraconf.rb +168 -337
- data/ext/oci8/oradate.c +19 -19
- data/ext/oci8/plthook.h +10 -0
- data/ext/oci8/plthook_elf.c +433 -268
- data/ext/oci8/plthook_osx.c +40 -9
- data/ext/oci8/plthook_win32.c +16 -1
- data/ext/oci8/stmt.c +52 -17
- data/ext/oci8/win32.c +4 -22
- data/lib/oci8/bindtype.rb +10 -17
- data/lib/oci8/check_load_error.rb +57 -10
- data/lib/oci8/compat.rb +5 -1
- data/lib/oci8/connection_pool.rb +74 -3
- data/lib/oci8/cursor.rb +70 -31
- data/lib/oci8/metadata.rb +9 -1
- data/lib/oci8/object.rb +14 -1
- data/lib/oci8/oci8.rb +184 -58
- data/lib/oci8/ocihandle.rb +0 -16
- data/lib/oci8/oracle_version.rb +11 -1
- data/lib/oci8/properties.rb +55 -0
- data/lib/oci8/version.rb +1 -1
- data/lib/oci8.rb +48 -4
- data/lib/ruby-oci8.rb +1 -0
- data/pre-distclean.rb +1 -3
- data/ruby-oci8.gemspec +4 -9
- data/setup.rb +11 -2
- data/test/README.md +37 -0
- data/test/config.rb +8 -1
- data/test/setup_test_object.sql +42 -14
- data/test/setup_test_package.sql +59 -0
- data/test/test_all.rb +4 -0
- data/test/test_bind_array.rb +70 -0
- data/test/test_bind_boolean.rb +99 -0
- data/test/test_bind_integer.rb +47 -0
- data/test/test_break.rb +11 -9
- data/test/test_clob.rb +5 -17
- data/test/test_connstr.rb +142 -0
- data/test/test_datetime.rb +8 -3
- data/test/test_metadata.rb +2 -1
- data/test/test_object.rb +99 -18
- data/test/test_oci8.rb +170 -46
- data/test/test_oranumber.rb +12 -6
- data/test/test_package_type.rb +17 -3
- data/test/test_properties.rb +17 -0
- metadata +45 -55
- data/docs/osx-install-dev-tools.png +0 -0
- 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
|
-
#
|
29
|
-
#
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
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
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
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
|
data/test/test_oranumber.rb
CHANGED
@@ -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
|
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
|
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
|
742
|
-
assert_equal(false, OraNumber(10.0).
|
743
|
-
assert_equal(true, OraNumber(10.1).
|
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
|
data/test/test_package_type.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
-
|
42
|
-
-
|
43
|
-
-
|
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/
|
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
|
-
-
|
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-
|
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
|
-
|
144
|
-
|
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
|
-
|
156
|
-
requirements:
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
157
151
|
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
|
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:
|
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++.)
|