ruby-oci8 1.0.7 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +1254 -390
- data/Makefile +10 -13
- data/README +56 -385
- data/VERSION +1 -1
- data/dist-files +26 -27
- data/ext/oci8/.document +1 -0
- data/ext/oci8/MANIFEST +0 -4
- data/ext/oci8/apiwrap.c.tmpl +172 -0
- data/ext/oci8/apiwrap.h.tmpl +61 -0
- data/ext/oci8/apiwrap.rb +91 -0
- data/ext/oci8/apiwrap.yml +1243 -0
- data/ext/oci8/attr.c +124 -384
- data/ext/oci8/bind.c +472 -164
- data/ext/oci8/encoding.c +196 -0
- data/ext/oci8/env.c +84 -253
- data/ext/oci8/error.c +196 -127
- data/ext/oci8/extconf.rb +82 -59
- data/ext/oci8/lob.c +710 -370
- data/ext/oci8/metadata.c +359 -0
- data/ext/oci8/object.c +622 -0
- data/ext/oci8/oci8.c +577 -161
- data/ext/oci8/oci8.h +354 -258
- data/ext/oci8/oci8lib.c +493 -0
- data/ext/oci8/ocidatetime.c +473 -0
- data/ext/oci8/ocinumber.c +1123 -24
- data/ext/oci8/oraconf.rb +72 -106
- data/ext/oci8/oradate.c +511 -321
- data/ext/oci8/stmt.c +752 -572
- data/ext/oci8/win32.c +131 -0
- data/ext/oci8/xmldb.c +383 -0
- data/lib/.document +2 -0
- data/lib/dbd/OCI8.rb +2 -17
- data/lib/oci8.rb.in +41 -1622
- data/lib/oci8/.document +5 -0
- data/lib/oci8/compat.rb +108 -0
- data/lib/oci8/datetime.rb +489 -0
- data/lib/oci8/encoding-init.rb +40 -0
- data/lib/oci8/encoding.yml +537 -0
- data/lib/oci8/metadata.rb +2077 -0
- data/lib/oci8/object.rb +548 -0
- data/lib/oci8/oci8.rb +773 -0
- data/lib/oci8/oracle_version.rb +144 -0
- data/metaconfig +3 -3
- data/ruby-oci8.gemspec +5 -5
- data/setup.rb +4 -4
- data/test/config.rb +64 -84
- data/test/test_all.rb +14 -21
- data/test/test_array_dml.rb +317 -0
- data/test/test_bind_raw.rb +18 -25
- data/test/test_bind_time.rb +78 -91
- data/test/test_break.rb +37 -35
- data/test/test_clob.rb +33 -89
- data/test/test_connstr.rb +5 -4
- data/test/test_datetime.rb +469 -0
- data/test/test_dbi.rb +99 -60
- data/test/test_dbi_clob.rb +3 -8
- data/test/test_metadata.rb +65 -51
- data/test/test_oci8.rb +151 -55
- data/test/test_oracle_version.rb +70 -0
- data/test/test_oradate.rb +76 -83
- data/test/test_oranumber.rb +405 -71
- data/test/test_rowid.rb +6 -11
- metadata +31 -32
- data/NEWS +0 -420
- data/ext/oci8/const.c +0 -165
- data/ext/oci8/define.c +0 -53
- data/ext/oci8/describe.c +0 -81
- data/ext/oci8/descriptor.c +0 -39
- data/ext/oci8/handle.c +0 -273
- data/ext/oci8/oranumber.c +0 -445
- data/ext/oci8/param.c +0 -37
- data/ext/oci8/server.c +0 -182
- data/ext/oci8/session.c +0 -99
- data/ext/oci8/svcctx.c +0 -238
- data/ruby-oci8.spec +0 -62
- data/support/README +0 -4
- data/support/runit/assert.rb +0 -281
- data/support/runit/cui/testrunner.rb +0 -101
- data/support/runit/error.rb +0 -4
- data/support/runit/method_mappable.rb +0 -20
- data/support/runit/robserver.rb +0 -25
- data/support/runit/setuppable.rb +0 -15
- data/support/runit/teardownable.rb +0 -16
- data/support/runit/testcase.rb +0 -113
- data/support/runit/testfailure.rb +0 -25
- data/support/runit/testresult.rb +0 -121
- data/support/runit/testsuite.rb +0 -43
- data/support/runit/version.rb +0 -3
- data/test/test_describe.rb +0 -137
data/support/runit/error.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
module RUNIT
|
2
|
-
module MethodMappable
|
3
|
-
def attach_method(hash, method, *methods)
|
4
|
-
methods.each do |m|
|
5
|
-
hash[self.to_s + m.to_s] = method
|
6
|
-
end
|
7
|
-
end
|
8
|
-
private :attach_method
|
9
|
-
|
10
|
-
def invoke_method(hash, m)
|
11
|
-
if hash[self.to_s + m.to_s]
|
12
|
-
send hash[self.to_s + m.to_s]
|
13
|
-
elsif hash[self.class.to_s + m.to_s]
|
14
|
-
send hash[self.class.to_s + m.to_s]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
private :invoke_method
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
data/support/runit/robserver.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module RUNIT
|
2
|
-
module RObserver
|
3
|
-
ADD_ERROR = :add_error
|
4
|
-
ADD_FAILURE = :add_failure
|
5
|
-
START_TEST = :start_test
|
6
|
-
END_TEST = :end_test
|
7
|
-
|
8
|
-
def add_error(*arg)
|
9
|
-
end
|
10
|
-
|
11
|
-
def add_failure(*arg)
|
12
|
-
end
|
13
|
-
|
14
|
-
def start_test(*arg)
|
15
|
-
end
|
16
|
-
|
17
|
-
def end_test(*arg)
|
18
|
-
end
|
19
|
-
|
20
|
-
def update(ev, *arg)
|
21
|
-
send(ev, *arg)
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
data/support/runit/setuppable.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'runit/method_mappable'
|
2
|
-
module RUNIT
|
3
|
-
module Setuppable
|
4
|
-
include MethodMappable
|
5
|
-
@@setups = {}
|
6
|
-
def attach_setup(setup_method, *methods)
|
7
|
-
attach_method(@@setups, setup_method, *methods)
|
8
|
-
end
|
9
|
-
private :attach_setup
|
10
|
-
def invoke_setup(m)
|
11
|
-
invoke_method(@@setups, m)
|
12
|
-
end
|
13
|
-
private :invoke_setup
|
14
|
-
end
|
15
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'runit/method_mappable'
|
2
|
-
module RUNIT
|
3
|
-
module Teardownable
|
4
|
-
include MethodMappable
|
5
|
-
@@teardowns = {}
|
6
|
-
def attach_teardown(teardown_method, *methods)
|
7
|
-
attach_method(@@teardowns, teardown_method, *methods)
|
8
|
-
end
|
9
|
-
private :attach_teardown
|
10
|
-
def invoke_teardown(m)
|
11
|
-
invoke_method(@@teardowns, m)
|
12
|
-
end
|
13
|
-
private :invoke_teardown
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
data/support/runit/testcase.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
require 'observer'
|
2
|
-
require 'runit/testsuite'
|
3
|
-
require 'runit/robserver'
|
4
|
-
require 'runit/error'
|
5
|
-
require 'runit/assert'
|
6
|
-
require 'runit/setuppable'
|
7
|
-
require 'runit/teardownable'
|
8
|
-
|
9
|
-
module RUNIT
|
10
|
-
class TestCase
|
11
|
-
alias_method :extend_test, :extend
|
12
|
-
|
13
|
-
include Assert
|
14
|
-
include Observable
|
15
|
-
|
16
|
-
include Setuppable
|
17
|
-
extend Setuppable
|
18
|
-
include Teardownable
|
19
|
-
extend Teardownable
|
20
|
-
|
21
|
-
@@test_classes = []
|
22
|
-
|
23
|
-
def initialize(method, name=self.class.name)
|
24
|
-
@method = method
|
25
|
-
@name = name
|
26
|
-
end
|
27
|
-
|
28
|
-
def setup
|
29
|
-
end
|
30
|
-
private :setup
|
31
|
-
|
32
|
-
def teardown
|
33
|
-
end
|
34
|
-
private :teardown
|
35
|
-
|
36
|
-
def name
|
37
|
-
@name + "#" + @method
|
38
|
-
end
|
39
|
-
|
40
|
-
def method_name
|
41
|
-
@method
|
42
|
-
end
|
43
|
-
|
44
|
-
def count_test_cases
|
45
|
-
1
|
46
|
-
end
|
47
|
-
|
48
|
-
def run(result)
|
49
|
-
result.start_test(self)
|
50
|
-
begin
|
51
|
-
run_bare
|
52
|
-
rescue AssertionFailedError
|
53
|
-
result.add_failure($@, $!, self.class)
|
54
|
-
rescue StandardError, ScriptError
|
55
|
-
result.add_error($@, $!, self.class)
|
56
|
-
end
|
57
|
-
result.end_test(self)
|
58
|
-
end
|
59
|
-
|
60
|
-
def run_bare
|
61
|
-
setup
|
62
|
-
invoke_setup(@method)
|
63
|
-
begin
|
64
|
-
send(@method)
|
65
|
-
ensure
|
66
|
-
begin
|
67
|
-
invoke_teardown(@method)
|
68
|
-
teardown
|
69
|
-
rescue
|
70
|
-
changed
|
71
|
-
notify_observers(RObserver::ADD_ERROR, $@, $!, self.class)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def ==(other)
|
77
|
-
other.class == self.class && other.method_name && self.method_name
|
78
|
-
end
|
79
|
-
|
80
|
-
def TestCase.suite
|
81
|
-
TestSuite.new(self_test_cases)
|
82
|
-
end
|
83
|
-
|
84
|
-
def TestCase.inherited(sub)
|
85
|
-
@@test_classes.push sub
|
86
|
-
end
|
87
|
-
|
88
|
-
def TestCase.self_test_cases
|
89
|
-
instance_methods(true).sort.collect {|m|
|
90
|
-
new(m, name) if /^test/ =~ m
|
91
|
-
}.compact
|
92
|
-
end
|
93
|
-
|
94
|
-
def TestCase.test_cases
|
95
|
-
if self == TestCase
|
96
|
-
TestSuite.new(*@@test_classes)
|
97
|
-
else
|
98
|
-
suite
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
|
103
|
-
class<<TestCase
|
104
|
-
alias test_methods test_cases
|
105
|
-
alias all_suite test_cases
|
106
|
-
private :self_test_cases
|
107
|
-
end
|
108
|
-
|
109
|
-
def TestCase.test_classes
|
110
|
-
@@test_classes
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module RUNIT
|
2
|
-
SKIP_FILES = $:.collect{|path| /#{path}\/runit\//}.push /\/rubyunit\.rb:/
|
3
|
-
|
4
|
-
class TestFailure
|
5
|
-
attr_reader :at, :err
|
6
|
-
def initialize(at, err, testclass)
|
7
|
-
skip_trace = at.reject{|i|
|
8
|
-
SKIP_FILES.find {|pat|
|
9
|
-
pat =~ i
|
10
|
-
}
|
11
|
-
}
|
12
|
-
@at = insert_class_name(skip_trace, testclass)
|
13
|
-
@err = err
|
14
|
-
end
|
15
|
-
def to_s
|
16
|
-
"#{@at[0]} #{@err}(#{@err.type})"
|
17
|
-
end
|
18
|
-
def insert_class_name(last_exception_backtrace, testclass)
|
19
|
-
tns = testclass.inspect.split("::")
|
20
|
-
last_exception_backtrace[0] += "(" + tns[tns.length-1] + ")"
|
21
|
-
last_exception_backtrace
|
22
|
-
end
|
23
|
-
private :insert_class_name
|
24
|
-
end
|
25
|
-
end
|
data/support/runit/testresult.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
require 'observer'
|
2
|
-
require 'runit/error'
|
3
|
-
require 'runit/robserver'
|
4
|
-
require 'runit/testfailure'
|
5
|
-
|
6
|
-
module RUNIT
|
7
|
-
class TestResultItem
|
8
|
-
attr_reader :name
|
9
|
-
attr_reader :failures
|
10
|
-
attr_reader :errors
|
11
|
-
attr_accessor :run_asserts
|
12
|
-
|
13
|
-
def initialize(name)
|
14
|
-
@failures = []
|
15
|
-
@errors = []
|
16
|
-
@name = name
|
17
|
-
@run_asserts = 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def add_failure(failure)
|
21
|
-
@failures.push failure
|
22
|
-
end
|
23
|
-
|
24
|
-
def add_error(error)
|
25
|
-
@errors.push error
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
class TestResult
|
30
|
-
include Observable
|
31
|
-
include RObserver
|
32
|
-
|
33
|
-
def initialize
|
34
|
-
@result = nil
|
35
|
-
@results = []
|
36
|
-
@test_start_time = nil
|
37
|
-
@test_end_time = nil
|
38
|
-
@start_assert_size = 0
|
39
|
-
end
|
40
|
-
|
41
|
-
def items
|
42
|
-
@results
|
43
|
-
end
|
44
|
-
|
45
|
-
def run_tests
|
46
|
-
@results.size
|
47
|
-
end
|
48
|
-
|
49
|
-
def add_failure(at, err, testclass)
|
50
|
-
fail = TestFailure.new(at, err, testclass)
|
51
|
-
@result.add_failure(fail)
|
52
|
-
changed
|
53
|
-
notify_observers(RObserver::ADD_FAILURE, at, err)
|
54
|
-
end
|
55
|
-
|
56
|
-
def add_error(at, err, testclass)
|
57
|
-
error = TestFailure.new(at, err, testclass)
|
58
|
-
@result.add_error(error)
|
59
|
-
changed
|
60
|
-
notify_observers(RObserver::ADD_ERROR, at, err)
|
61
|
-
end
|
62
|
-
|
63
|
-
def assert_size
|
64
|
-
size = 0
|
65
|
-
@results.each do |i|
|
66
|
-
size += i.run_asserts
|
67
|
-
end
|
68
|
-
size
|
69
|
-
end
|
70
|
-
alias run_asserts assert_size
|
71
|
-
|
72
|
-
def failure_size
|
73
|
-
failures.size
|
74
|
-
end
|
75
|
-
|
76
|
-
def error_size
|
77
|
-
errors.size
|
78
|
-
end
|
79
|
-
|
80
|
-
def failures
|
81
|
-
@results.collect{|r|
|
82
|
-
r.failures
|
83
|
-
}.flatten
|
84
|
-
end
|
85
|
-
|
86
|
-
def errors
|
87
|
-
@results.collect{|r|
|
88
|
-
r.errors
|
89
|
-
}.flatten
|
90
|
-
end
|
91
|
-
|
92
|
-
def succeed?
|
93
|
-
failure_size == 0 && error_size == 0
|
94
|
-
end
|
95
|
-
|
96
|
-
def running_time
|
97
|
-
if @test_end_time && @test_start_time
|
98
|
-
@test_end_time - @test_start_time
|
99
|
-
else
|
100
|
-
0
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
def start_test(testcase)
|
105
|
-
testcase.add_observer(self)
|
106
|
-
@result = TestResultItem.new(testcase.name)
|
107
|
-
@results.push @result
|
108
|
-
@start_assert_size = Assert.run_asserts
|
109
|
-
@test_start_time = Time.now if !@test_start_time
|
110
|
-
changed
|
111
|
-
notify_observers(RObserver::START_TEST, testcase)
|
112
|
-
end
|
113
|
-
|
114
|
-
def end_test(testcase)
|
115
|
-
changed
|
116
|
-
notify_observers(RObserver::END_TEST, testcase)
|
117
|
-
@test_end_time = Time.now
|
118
|
-
@result.run_asserts = Assert.run_asserts - @start_assert_size
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
data/support/runit/testsuite.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
module RUNIT
|
2
|
-
class TestSuite < Array
|
3
|
-
|
4
|
-
def initialize(*test_classes)
|
5
|
-
test_classes.each do |k|
|
6
|
-
if k.kind_of?(Array)
|
7
|
-
concat k
|
8
|
-
else
|
9
|
-
concat k.suite
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def run(result)
|
15
|
-
each do |t|
|
16
|
-
t.run(result)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def count_test_cases
|
21
|
-
sum = 0
|
22
|
-
each do |test|
|
23
|
-
sum += test.count_test_cases
|
24
|
-
end
|
25
|
-
sum
|
26
|
-
end
|
27
|
-
|
28
|
-
def add(test)
|
29
|
-
if test.kind_of?(Array)
|
30
|
-
concat test
|
31
|
-
else
|
32
|
-
push test
|
33
|
-
end
|
34
|
-
end
|
35
|
-
alias add_test add
|
36
|
-
|
37
|
-
def extend_test(*mod)
|
38
|
-
each do |t|
|
39
|
-
t.extend_test(*mod)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/support/runit/version.rb
DELETED
data/test/test_describe.rb
DELETED
@@ -1,137 +0,0 @@
|
|
1
|
-
# Low-level API
|
2
|
-
require 'oci8'
|
3
|
-
require 'runit/testcase'
|
4
|
-
require 'runit/cui/testrunner'
|
5
|
-
require File.dirname(__FILE__) + '/config'
|
6
|
-
|
7
|
-
class TestDescribe < RUNIT::TestCase
|
8
|
-
|
9
|
-
def setup
|
10
|
-
# initialize oracle as object mode.
|
11
|
-
# This is workaround to use OCIDescribeAny in Oracle 8.0.5 on Linux.
|
12
|
-
# This bug was fixed in 8.0.6 and 8i.
|
13
|
-
@env, @svc, @stmt = setup_lowapi()
|
14
|
-
@desc = @env.alloc(OCIDescribe)
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_describe_sequence
|
18
|
-
begin
|
19
|
-
@stmt.prepare("DROP SEQUENCE test_sequence").execute(@svc)
|
20
|
-
rescue OCIError
|
21
|
-
raise if $!.code != 2289 # sequence does not exist
|
22
|
-
end
|
23
|
-
minvalue = 1
|
24
|
-
maxvalue = 1234567890123456789012345678 # bignum
|
25
|
-
incr = 777
|
26
|
-
sql = <<-EOS
|
27
|
-
CREATE SEQUENCE test_sequence
|
28
|
-
MINVALUE #{minvalue}
|
29
|
-
MAXVALUE #{maxvalue}
|
30
|
-
INCREMENT BY #{incr}
|
31
|
-
ORDER
|
32
|
-
EOS
|
33
|
-
@stmt.prepare(sql).execute(@svc)
|
34
|
-
@desc.describeAny(@svc, "test_sequence", OCI_PTYPE_SEQ)
|
35
|
-
parm = @desc.attrGet(OCI_ATTR_PARAM)
|
36
|
-
# common part
|
37
|
-
assert_equal(OCI_PTYPE_SEQ, parm.attrGet(OCI_ATTR_PTYPE))
|
38
|
-
# specific part
|
39
|
-
assert_instance_of(Fixnum, parm.attrGet(OCI_ATTR_OBJID))
|
40
|
-
assert_equal(minvalue, parm.attrGet(OCI_ATTR_MIN))
|
41
|
-
assert_equal(maxvalue, parm.attrGet(OCI_ATTR_MAX))
|
42
|
-
assert_equal(incr, parm.attrGet(OCI_ATTR_INCR))
|
43
|
-
assert_kind_of(Integer, parm.attrGet(OCI_ATTR_CACHE))
|
44
|
-
assert_equal(true, parm.attrGet(OCI_ATTR_ORDER))
|
45
|
-
assert_kind_of(Integer, parm.attrGet(OCI_ATTR_HW_MARK))
|
46
|
-
@stmt.prepare("DROP SEQUENCE test_sequence").execute(@svc)
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_describe_synonym
|
50
|
-
begin
|
51
|
-
@stmt.prepare("DROP SYNONYM test_synonym").execute(@svc)
|
52
|
-
rescue OCIError
|
53
|
-
raise if $!.code != 1434 # private synonym to be dropped does not exist
|
54
|
-
end
|
55
|
-
@stmt.prepare("CREATE SYNONYM test_synonym FOR foo.bar@baz").execute(@svc)
|
56
|
-
@desc.describeAny(@svc, "test_synonym", OCI_PTYPE_SYN)
|
57
|
-
parm = @desc.attrGet(OCI_ATTR_PARAM)
|
58
|
-
# common part
|
59
|
-
assert_equal(OCI_PTYPE_SYN, parm.attrGet(OCI_ATTR_PTYPE))
|
60
|
-
# specific part
|
61
|
-
assert_instance_of(Fixnum, parm.attrGet(OCI_ATTR_OBJID))
|
62
|
-
assert_equal("FOO", parm.attrGet(OCI_ATTR_SCHEMA_NAME))
|
63
|
-
assert_equal("BAR", parm.attrGet(OCI_ATTR_NAME))
|
64
|
-
assert_equal("BAZ", parm.attrGet(OCI_ATTR_LINK))
|
65
|
-
@stmt.prepare("DROP SYNONYM test_synonym").execute(@svc)
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_describe_table_and_columns
|
69
|
-
drop_table('test_table')
|
70
|
-
sql = <<-EOS
|
71
|
-
CREATE TABLE test_table
|
72
|
-
(C CHAR(10) NOT NULL,
|
73
|
-
V VARCHAR2(20),
|
74
|
-
N NUMBER(10, 2),
|
75
|
-
D DATE)
|
76
|
-
STORAGE (
|
77
|
-
INITIAL 4k
|
78
|
-
NEXT 4k
|
79
|
-
MINEXTENTS 1
|
80
|
-
MAXEXTENTS UNLIMITED
|
81
|
-
PCTINCREASE 0)
|
82
|
-
EOS
|
83
|
-
@stmt.prepare(sql).execute(@svc)
|
84
|
-
@desc.describeAny(@svc, "test_table", OCI_PTYPE_TABLE)
|
85
|
-
tab_parm = @desc.attrGet(OCI_ATTR_PARAM)
|
86
|
-
col_list = tab_parm.attrGet(OCI_ATTR_LIST_COLUMNS)
|
87
|
-
num_cols = tab_parm.attrGet(OCI_ATTR_NUM_COLS)
|
88
|
-
# common part for table
|
89
|
-
assert_equal(OCI_PTYPE_TABLE, tab_parm.attrGet(OCI_ATTR_PTYPE))
|
90
|
-
# specific part for table
|
91
|
-
assert_instance_of(Fixnum, tab_parm.attrGet(OCI_ATTR_OBJID))
|
92
|
-
assert_equal(4, num_cols)
|
93
|
-
# common part for column list
|
94
|
-
assert_equal(OCI_PTYPE_LIST, col_list.attrGet(OCI_ATTR_PTYPE))
|
95
|
-
|
96
|
-
col = Array.new(num_cols)
|
97
|
-
1.upto(num_cols) do |i|
|
98
|
-
col[i] = col_list.paramGet(i)
|
99
|
-
assert_equal(OCI_PTYPE_COL, col[1].attrGet(OCI_ATTR_PTYPE))
|
100
|
-
end
|
101
|
-
assert_equal(10, col[1].attrGet(OCI_ATTR_DATA_SIZE))
|
102
|
-
assert_equal(20, col[2].attrGet(OCI_ATTR_DATA_SIZE))
|
103
|
-
assert_equal(22, col[3].attrGet(OCI_ATTR_DATA_SIZE))
|
104
|
-
assert_equal(7, col[4].attrGet(OCI_ATTR_DATA_SIZE))
|
105
|
-
assert_equal(OCI_TYPECODE_CHAR, col[1].attrGet(OCI_ATTR_DATA_TYPE))
|
106
|
-
assert_equal(OCI_TYPECODE_VARCHAR, col[2].attrGet(OCI_ATTR_DATA_TYPE))
|
107
|
-
assert_equal(OCI_TYPECODE_NUMBER, col[3].attrGet(OCI_ATTR_DATA_TYPE))
|
108
|
-
assert_equal(OCI_TYPECODE_DATE, col[4].attrGet(OCI_ATTR_DATA_TYPE))
|
109
|
-
assert_equal("C", col[1].attrGet(OCI_ATTR_NAME))
|
110
|
-
assert_equal("V", col[2].attrGet(OCI_ATTR_NAME))
|
111
|
-
assert_equal("N", col[3].attrGet(OCI_ATTR_NAME))
|
112
|
-
assert_equal("D", col[4].attrGet(OCI_ATTR_NAME))
|
113
|
-
assert_equal(0, col[1].attrGet(OCI_ATTR_PRECISION))
|
114
|
-
assert_equal(0, col[2].attrGet(OCI_ATTR_PRECISION))
|
115
|
-
assert_equal(10, col[3].attrGet(OCI_ATTR_PRECISION))
|
116
|
-
assert_equal(0, col[4].attrGet(OCI_ATTR_PRECISION))
|
117
|
-
assert_equal(0, col[1].attrGet(OCI_ATTR_SCALE))
|
118
|
-
assert_equal(0, col[2].attrGet(OCI_ATTR_SCALE))
|
119
|
-
assert_equal(2, col[3].attrGet(OCI_ATTR_SCALE))
|
120
|
-
assert_equal(0, col[4].attrGet(OCI_ATTR_SCALE))
|
121
|
-
assert_equal(false, col[1].attrGet(OCI_ATTR_IS_NULL))
|
122
|
-
assert_equal(true, col[2].attrGet(OCI_ATTR_IS_NULL))
|
123
|
-
assert_equal(true, col[3].attrGet(OCI_ATTR_IS_NULL))
|
124
|
-
assert_equal(true, col[4].attrGet(OCI_ATTR_IS_NULL))
|
125
|
-
drop_table('test_table')
|
126
|
-
end
|
127
|
-
|
128
|
-
def teardown
|
129
|
-
@stmt.free()
|
130
|
-
@svc.logoff()
|
131
|
-
@env.free()
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
if $0 == __FILE__
|
136
|
-
RUNIT::CUI::TestRunner.run(TestDescribe.suite())
|
137
|
-
end
|