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
@@ -0,0 +1,317 @@
|
|
1
|
+
require 'oci8'
|
2
|
+
require 'test/unit'
|
3
|
+
require File.dirname(__FILE__) + '/config'
|
4
|
+
|
5
|
+
class TestArrayDML < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@conn = get_oci8_connection
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
@conn.logoff
|
12
|
+
end
|
13
|
+
|
14
|
+
# test inserting arrays with different data types
|
15
|
+
# including char, varchar2, number, date and so on
|
16
|
+
def test_array_insert1
|
17
|
+
drop_table('test_table')
|
18
|
+
sql = <<-EOS
|
19
|
+
CREATE TABLE test_table
|
20
|
+
(C CHAR(10) NOT NULL,
|
21
|
+
V VARCHAR2(20),
|
22
|
+
N NUMBER(10, 2),
|
23
|
+
D DATE,
|
24
|
+
INT NUMBER(30),
|
25
|
+
BIGNUM NUMBER(30))
|
26
|
+
STORAGE (
|
27
|
+
INITIAL 4k
|
28
|
+
NEXT 4k
|
29
|
+
MINEXTENTS 1
|
30
|
+
MAXEXTENTS UNLIMITED
|
31
|
+
PCTINCREASE 0)
|
32
|
+
EOS
|
33
|
+
@conn.exec(sql)
|
34
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:C, :V, :N, :D, :INT, :BIGNUM)")
|
35
|
+
max_array_size = 3
|
36
|
+
cursor.max_array_size= max_array_size
|
37
|
+
|
38
|
+
cursor.bind_param_array(1, nil, String)
|
39
|
+
cursor.bind_param_array(2, nil ,String)
|
40
|
+
cursor.bind_param_array(3, nil, Fixnum)
|
41
|
+
cursor.bind_param_array(4, nil, OraDate)
|
42
|
+
cursor.bind_param_array(5, nil, Integer)
|
43
|
+
cursor.bind_param_array(6, nil, Bignum)
|
44
|
+
|
45
|
+
c_arr = Array.new
|
46
|
+
v_arr = Array.new
|
47
|
+
n_arr = Array.new
|
48
|
+
d_arr = Array.new
|
49
|
+
int_arr = Array.new
|
50
|
+
bignum_arr = Array.new
|
51
|
+
|
52
|
+
1.upto(30) do |i|
|
53
|
+
c_arr << format("%10d", i * 10)
|
54
|
+
v_arr << i.to_s
|
55
|
+
n_arr << i
|
56
|
+
d_arr << OraDate.new(2000 + i, 12, 24, 23, 59, 59)
|
57
|
+
int_arr << i * 11111111111
|
58
|
+
bignum_arr << i * 10000000000
|
59
|
+
|
60
|
+
if i%max_array_size == 0
|
61
|
+
cursor[1] = c_arr
|
62
|
+
cursor[2] = v_arr
|
63
|
+
cursor[3] = n_arr
|
64
|
+
cursor[4] = d_arr
|
65
|
+
cursor[5] = int_arr
|
66
|
+
cursor[6] = bignum_arr
|
67
|
+
|
68
|
+
r = cursor.exec_array
|
69
|
+
assert_equal(max_array_size, r)
|
70
|
+
c_arr.clear
|
71
|
+
v_arr.clear
|
72
|
+
n_arr.clear
|
73
|
+
d_arr.clear
|
74
|
+
int_arr.clear
|
75
|
+
bignum_arr.clear
|
76
|
+
end
|
77
|
+
end
|
78
|
+
cursor.close
|
79
|
+
|
80
|
+
cursor = @conn.parse("SELECT * FROM test_table ORDER BY c")
|
81
|
+
cursor.define(5, Integer)
|
82
|
+
cursor.define(6, Bignum)
|
83
|
+
cursor.exec
|
84
|
+
assert_equal(["C","V","N","D","INT","BIGNUM"], cursor.get_col_names)
|
85
|
+
1.upto(30) do |i|
|
86
|
+
rv = cursor.fetch
|
87
|
+
assert_equal(format("%10d", i * 10), rv[0])
|
88
|
+
assert_equal(i.to_s, rv[1])
|
89
|
+
assert_equal(i, rv[2])
|
90
|
+
tm = Time.local(2000 + i, 12, 24, 23, 59, 59)
|
91
|
+
assert_equal(tm, rv[3])
|
92
|
+
assert_equal(i * 11111111111, rv[4])
|
93
|
+
assert_equal(i * 10000000000, rv[5])
|
94
|
+
end
|
95
|
+
assert_nil(cursor.fetch)
|
96
|
+
drop_table('test_table')
|
97
|
+
end
|
98
|
+
|
99
|
+
# Raise error when binding arrays are not the same size
|
100
|
+
def test_array_insert2
|
101
|
+
drop_table('test_table')
|
102
|
+
sql = <<-EOS
|
103
|
+
CREATE TABLE test_table
|
104
|
+
(N NUMBER(10, 2) NOT NULL,
|
105
|
+
V VARCHAR(20))
|
106
|
+
EOS
|
107
|
+
@conn.exec(sql)
|
108
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:N, :V)")
|
109
|
+
max_array_size = 10
|
110
|
+
cursor.max_array_size = max_array_size
|
111
|
+
cursor.bind_param_array(1, nil, Fixnum)
|
112
|
+
cursor.bind_param_array(2, nil, String)
|
113
|
+
n_arr = Array.new
|
114
|
+
v_arr = Array.new
|
115
|
+
1.upto(max_array_size) do |i|
|
116
|
+
n_arr << i
|
117
|
+
v_arr << i.to_s if i != max_array_size
|
118
|
+
end
|
119
|
+
cursor[1] = n_arr
|
120
|
+
assert_raise(RuntimeError) { cursor[2] = v_arr }
|
121
|
+
cursor.close
|
122
|
+
|
123
|
+
drop_table('test_table')
|
124
|
+
end
|
125
|
+
|
126
|
+
# All binds are clear from cursor after calling "max_array_size=",
|
127
|
+
# in that case, you have to re-bind the array parameters
|
128
|
+
# otherwise, an error will be raised.
|
129
|
+
def test_array_insert3
|
130
|
+
drop_table('test_table')
|
131
|
+
sql = <<-EOS
|
132
|
+
CREATE TABLE test_table
|
133
|
+
(N NUMBER(10, 2) NOT NULL,
|
134
|
+
V VARCHAR(20))
|
135
|
+
EOS
|
136
|
+
@conn.exec(sql)
|
137
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:N, :V)")
|
138
|
+
cursor.max_array_size = 3
|
139
|
+
cursor.bind_param_array(1, [1, 2, 3])
|
140
|
+
cursor.bind_param_array(2, ['happy', 'new', 'year'])
|
141
|
+
assert_nothing_raised() { cursor.exec_array }
|
142
|
+
cursor.max_array_size = 2
|
143
|
+
assert_raise(RuntimeError) { cursor.exec_array }
|
144
|
+
drop_table('test_table')
|
145
|
+
end
|
146
|
+
|
147
|
+
# The size of binding arrays are not required to be same as max_array_size. The
|
148
|
+
# only requirement is that they should be the same size, and the size will be
|
149
|
+
# used as execution count for OCIStmtExecute.
|
150
|
+
def test_array_insert4
|
151
|
+
drop_table('test_table')
|
152
|
+
sql = <<-EOS
|
153
|
+
CREATE TABLE test_table
|
154
|
+
(N NUMBER(10, 2) NOT NULL,
|
155
|
+
V VARCHAR(20))
|
156
|
+
EOS
|
157
|
+
@conn.exec(sql)
|
158
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:N, :V)")
|
159
|
+
max_array_size = 4
|
160
|
+
cursor.max_array_size = max_array_size
|
161
|
+
cursor.bind_param_array(1, nil, Fixnum)
|
162
|
+
cursor.bind_param_array(2, nil, String)
|
163
|
+
n_arr = Array.new
|
164
|
+
v_arr = Array.new
|
165
|
+
1.upto( max_array_size - 1 ) do |i|
|
166
|
+
n_arr << i
|
167
|
+
v_arr << i.to_s
|
168
|
+
end
|
169
|
+
cursor[1] = n_arr
|
170
|
+
cursor[2] = v_arr
|
171
|
+
assert_nothing_raised() { cursor.exec_array }
|
172
|
+
cursor.close
|
173
|
+
|
174
|
+
cursor = @conn.parse("SELECT * FROM test_table ORDER BY N")
|
175
|
+
cursor.exec
|
176
|
+
1.upto( max_array_size - 1 ) do |i|
|
177
|
+
rv = cursor.fetch
|
178
|
+
assert_equal(i, rv[0])
|
179
|
+
assert_equal(i.to_s, rv[1])
|
180
|
+
end
|
181
|
+
assert_nil(cursor.fetch)
|
182
|
+
cursor.close
|
183
|
+
drop_table('test_table')
|
184
|
+
end
|
185
|
+
|
186
|
+
# Inserting "nil" elements with array dml raises an error
|
187
|
+
def test_array_insert5
|
188
|
+
drop_table('test_table')
|
189
|
+
sql = <<-EOS
|
190
|
+
CREATE TABLE test_table
|
191
|
+
(N NUMBER(10, 2),
|
192
|
+
V VARCHAR(20))
|
193
|
+
EOS
|
194
|
+
@conn.exec(sql)
|
195
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:N, :V)")
|
196
|
+
max_array_size = 3
|
197
|
+
cursor.max_array_size = max_array_size
|
198
|
+
cursor.bind_param_array(1, nil, Fixnum)
|
199
|
+
cursor.bind_param_array(2, nil, String)
|
200
|
+
assert_raise(RuntimeError) { cursor.exec_array }
|
201
|
+
cursor.close
|
202
|
+
drop_table('test_table')
|
203
|
+
end
|
204
|
+
|
205
|
+
# delete with array bindings
|
206
|
+
def test_array_delete
|
207
|
+
drop_table('test_table')
|
208
|
+
sql = <<-EOS
|
209
|
+
CREATE TABLE test_table
|
210
|
+
(N NUMBER(10, 2),
|
211
|
+
V VARCHAR(20))
|
212
|
+
EOS
|
213
|
+
@conn.exec(sql)
|
214
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:N, :V)")
|
215
|
+
max_array_size = 10
|
216
|
+
cursor.max_array_size = max_array_size
|
217
|
+
n_arr = Array.new
|
218
|
+
v_arr = Array.new
|
219
|
+
1.upto( max_array_size) do |i|
|
220
|
+
n_arr << i
|
221
|
+
v_arr << i.to_s
|
222
|
+
end
|
223
|
+
cursor.bind_param_array(1, nil, Fixnum)
|
224
|
+
cursor.bind_param_array(2, nil, String)
|
225
|
+
cursor[1] = n_arr
|
226
|
+
cursor[2] = v_arr
|
227
|
+
cursor.exec_array
|
228
|
+
cursor.close
|
229
|
+
|
230
|
+
cursor = @conn.parse("DELETE FROM test_table WHERE N=:1")
|
231
|
+
cursor.max_array_size = max_array_size
|
232
|
+
delete_arr = Array.new
|
233
|
+
1.upto(max_array_size) do |i|
|
234
|
+
if i%2 == 0
|
235
|
+
delete_arr << i
|
236
|
+
end
|
237
|
+
end
|
238
|
+
cursor.bind_param_array(1, nil, Fixnum)
|
239
|
+
cursor[1] = delete_arr
|
240
|
+
cursor.exec_array
|
241
|
+
cursor.close
|
242
|
+
|
243
|
+
cursor = @conn.parse("SELECT * FROM test_table ORDER BY N")
|
244
|
+
cursor.exec
|
245
|
+
1.upto( max_array_size ) do |i|
|
246
|
+
if i%2 != 0
|
247
|
+
rv = cursor.fetch
|
248
|
+
assert_equal(rv[0], i)
|
249
|
+
assert_equal(rv[1], i.to_s)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
assert_nil(cursor.fetch)
|
253
|
+
cursor.close
|
254
|
+
|
255
|
+
drop_table('test_table')
|
256
|
+
end
|
257
|
+
|
258
|
+
# update with array bindings
|
259
|
+
def test_array_update
|
260
|
+
drop_table('test_table')
|
261
|
+
sql = <<-EOS
|
262
|
+
CREATE TABLE test_table
|
263
|
+
(N NUMBER(10, 2),
|
264
|
+
V VARCHAR(20))
|
265
|
+
EOS
|
266
|
+
@conn.exec(sql)
|
267
|
+
cursor = @conn.parse("INSERT INTO test_table VALUES (:N, :V)")
|
268
|
+
max_array_size = 10
|
269
|
+
cursor.max_array_size = max_array_size
|
270
|
+
n_arr = Array.new
|
271
|
+
v_arr = Array.new
|
272
|
+
1.upto( max_array_size) do |i|
|
273
|
+
n_arr << i
|
274
|
+
v_arr << i.to_s
|
275
|
+
end
|
276
|
+
cursor.bind_param_array(1, nil, Fixnum)
|
277
|
+
cursor.bind_param_array(2, nil, String)
|
278
|
+
cursor[1] = n_arr
|
279
|
+
cursor[2] = v_arr
|
280
|
+
cursor.exec_array
|
281
|
+
cursor.close
|
282
|
+
|
283
|
+
cursor = @conn.parse("UPDATE test_table SET V=:1 WHERE N=:2")
|
284
|
+
cursor.max_array_size = max_array_size
|
285
|
+
update_arr = Array.new
|
286
|
+
update_v_arr = Array.new
|
287
|
+
1.upto(max_array_size) do |i|
|
288
|
+
if i%2 == 0
|
289
|
+
update_arr << i
|
290
|
+
update_v_arr << (i * 10).to_s
|
291
|
+
end
|
292
|
+
end
|
293
|
+
cursor.bind_param_array(1, nil, String)
|
294
|
+
cursor.bind_param_array(2, nil, Fixnum)
|
295
|
+
cursor[1] = update_v_arr
|
296
|
+
cursor[2] = update_arr
|
297
|
+
cursor.exec_array
|
298
|
+
cursor.close
|
299
|
+
|
300
|
+
cursor = @conn.parse("SELECT * FROM test_table ORDER BY N")
|
301
|
+
cursor.exec
|
302
|
+
1.upto( max_array_size ) do |i|
|
303
|
+
rv = cursor.fetch
|
304
|
+
if i%2 != 0
|
305
|
+
assert_equal(rv[0], i)
|
306
|
+
assert_equal(rv[1], i.to_s)
|
307
|
+
else
|
308
|
+
assert_equal(rv[0], i)
|
309
|
+
assert_equal(rv[1], (i * 10).to_s)
|
310
|
+
end
|
311
|
+
end
|
312
|
+
assert_nil(cursor.fetch)
|
313
|
+
|
314
|
+
cursor.close
|
315
|
+
drop_table('test_table')
|
316
|
+
end
|
317
|
+
end
|
data/test/test_bind_raw.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# Low-level API
|
2
2
|
require 'oci8'
|
3
|
-
require '
|
4
|
-
require 'runit/cui/testrunner'
|
3
|
+
require 'test/unit'
|
5
4
|
require File.dirname(__FILE__) + '/config'
|
6
5
|
|
7
|
-
class TestBindRaw <
|
6
|
+
class TestBindRaw < Test::Unit::TestCase
|
8
7
|
CHECK_TARGET = [
|
9
8
|
["0123456789:;<=>?", "303132333435363738393A3B3C3D3E3F"],
|
10
9
|
["@ABCDEFGHIJKLMNO", "404142434445464748494A4B4C4D4E4F"],
|
@@ -14,40 +13,34 @@ class TestBindRaw < RUNIT::TestCase
|
|
14
13
|
]
|
15
14
|
|
16
15
|
def setup
|
17
|
-
@
|
16
|
+
@conn = get_oci8_connection()
|
18
17
|
end
|
19
18
|
|
20
19
|
def test_set_raw
|
21
|
-
@
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
cursor = @conn.parse("BEGIN :hex := RAWTOHEX(:raw); END;")
|
21
|
+
cursor.bind_param(:raw, nil, OCI8::RAW, 16)
|
22
|
+
cursor.bind_param(:hex, nil, String, 32)
|
23
|
+
|
25
24
|
CHECK_TARGET.each do |raw, hex|
|
26
|
-
|
27
|
-
|
28
|
-
assert_equal(hex,
|
25
|
+
cursor[:raw] = raw
|
26
|
+
cursor.exec
|
27
|
+
assert_equal(hex, cursor[:hex])
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
32
31
|
def test_get_raw
|
33
|
-
@
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
cursor = @conn.parse("BEGIN :raw := HEXTORAW(:hex); END;")
|
33
|
+
cursor.bind_param(:hex, nil, String, 32)
|
34
|
+
cursor.bind_param(:raw, nil, OCI8::RAW, 16)
|
35
|
+
|
37
36
|
CHECK_TARGET.each do |raw, hex|
|
38
|
-
|
39
|
-
|
40
|
-
assert_equal(raw,
|
37
|
+
cursor[:hex] = hex
|
38
|
+
cursor.exec
|
39
|
+
assert_equal(raw, cursor[:raw])
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
44
43
|
def teardown
|
45
|
-
@
|
46
|
-
@svc.logoff()
|
47
|
-
@env.free()
|
44
|
+
@conn.logoff
|
48
45
|
end
|
49
46
|
end
|
50
|
-
|
51
|
-
if $0 == __FILE__
|
52
|
-
RUNIT::CUI::TestRunner.run(TestBindRaw.suite())
|
53
|
-
end
|
data/test/test_bind_time.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
# Low-level API
|
2
1
|
require 'oci8'
|
3
|
-
require '
|
4
|
-
require 'runit/cui/testrunner'
|
2
|
+
require 'test/unit'
|
5
3
|
require File.dirname(__FILE__) + '/config'
|
6
4
|
|
7
|
-
class TestBindTime <
|
5
|
+
class TestBindTime < Test::Unit::TestCase
|
8
6
|
|
9
7
|
YEAR_CHECK_TARGET = [1971, 1989, 2002, 2037]
|
10
8
|
MON_CHECK_TARGET = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
@@ -14,178 +12,167 @@ class TestBindTime < RUNIT::TestCase
|
|
14
12
|
SEC_CHECK_TARGET = [0, 15, 30, 45, 59]
|
15
13
|
|
16
14
|
def setup
|
17
|
-
@
|
15
|
+
@conn = get_oci8_connection
|
18
16
|
end
|
19
17
|
|
20
18
|
def test_set_year
|
21
|
-
@
|
22
|
-
|
23
|
-
|
19
|
+
cursor = @conn.parse("BEGIN :year := TO_NUMBER(TO_CHAR(:time, 'SYYYY'), '9999'); END;")
|
20
|
+
cursor.bind_param(:time, Time)
|
21
|
+
cursor.bind_param(:year, Fixnum)
|
22
|
+
|
24
23
|
YEAR_CHECK_TARGET.each do |i|
|
25
24
|
# set year
|
26
|
-
time = Time.local(i, 1)
|
27
|
-
# check result
|
28
|
-
|
29
|
-
|
30
|
-
assert_equal(i, year_out.get())
|
25
|
+
cursor[:time] = Time.local(i, 1)
|
26
|
+
# check result
|
27
|
+
cursor.exec
|
28
|
+
assert_equal(i, cursor[:year])
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
32
|
def test_get_year
|
35
|
-
@
|
36
|
-
|
37
|
-
|
33
|
+
cursor = @conn.parse("BEGIN :time := TO_DATE(TO_CHAR(:year, '0999'), 'SYYYY'); END;")
|
34
|
+
cursor.bind_param(:year, Fixnum)
|
35
|
+
cursor.bind_param(:time, Time)
|
38
36
|
YEAR_CHECK_TARGET.each do |i|
|
39
37
|
# set time via oracle.
|
40
|
-
|
41
|
-
|
38
|
+
cursor[:year] = i
|
39
|
+
cursor.exec
|
42
40
|
# check Time#year
|
43
|
-
assert_equal(i,
|
41
|
+
assert_equal(i, cursor[:time].year)
|
44
42
|
end
|
45
43
|
end
|
46
44
|
|
47
45
|
def test_set_mon
|
48
|
-
@
|
49
|
-
|
50
|
-
|
46
|
+
cursor = @conn.parse("BEGIN :mon := TO_NUMBER(TO_CHAR(:time, 'MM'), '99'); END;")
|
47
|
+
cursor.bind_param(:time, Time)
|
48
|
+
cursor.bind_param(:mon, Fixnum)
|
51
49
|
MON_CHECK_TARGET.each do |i|
|
52
50
|
# set mon
|
53
|
-
time = Time.local(2001, i)
|
51
|
+
cursor[:time] = Time.local(2001, i)
|
54
52
|
# check result via oracle.
|
55
|
-
|
56
|
-
|
57
|
-
assert_equal(i, mon_out.get())
|
53
|
+
cursor.exec
|
54
|
+
assert_equal(i, cursor[:mon])
|
58
55
|
end
|
59
56
|
end
|
60
57
|
|
61
58
|
def test_get_mon
|
62
|
-
@
|
63
|
-
|
64
|
-
|
59
|
+
cursor = @conn.parse("BEGIN :time := TO_DATE(TO_CHAR(:mon, '99'), 'MM'); END;")
|
60
|
+
cursor.bind_param(:mon, Fixnum)
|
61
|
+
cursor.bind_param(:time, Time)
|
65
62
|
MON_CHECK_TARGET.each do |i|
|
66
63
|
# set time via oracle.
|
67
|
-
|
68
|
-
|
64
|
+
cursor[:mon] = i;
|
65
|
+
cursor.exec
|
69
66
|
# check Time#mon
|
70
|
-
assert_equal(i,
|
67
|
+
assert_equal(i, cursor[:time].mon)
|
71
68
|
end
|
72
69
|
end
|
73
70
|
|
74
71
|
def test_set_day
|
75
|
-
@
|
76
|
-
|
77
|
-
|
72
|
+
cursor = @conn.parse("BEGIN :day := TO_NUMBER(TO_CHAR(:time, 'DD'), '99'); END;")
|
73
|
+
cursor.bind_param(:time, Time)
|
74
|
+
cursor.bind_param(:day, Fixnum)
|
78
75
|
DAY_CHECK_TARGET.each do |i|
|
79
76
|
# set day
|
80
|
-
time = Time.local(2001, 1, i)
|
77
|
+
cursor[:time] = Time.local(2001, 1, i)
|
81
78
|
# check result via oracle.
|
82
|
-
|
83
|
-
|
84
|
-
assert_equal(i, day_out.get())
|
79
|
+
cursor.exec
|
80
|
+
assert_equal(i, cursor[:day])
|
85
81
|
end
|
86
82
|
end
|
87
83
|
|
88
84
|
def test_get_day
|
89
|
-
@
|
90
|
-
day_in =
|
91
|
-
time_out =
|
85
|
+
cursor = @conn.parse("BEGIN :time := TO_DATE('200101' || TO_CHAR(:day, 'FM00'), 'YYYYMMDD'); END;")
|
86
|
+
day_in = cursor.bind_param(:day, Fixnum)
|
87
|
+
time_out = cursor.bind_param(:time, Time)
|
92
88
|
DAY_CHECK_TARGET.each do |i|
|
93
89
|
# set time via oracle.
|
94
|
-
|
95
|
-
|
90
|
+
cursor[:day] = i;
|
91
|
+
cursor.exec
|
96
92
|
# check Time#day
|
97
|
-
assert_equal(i,
|
93
|
+
assert_equal(i, cursor[:time].day)
|
98
94
|
end
|
99
95
|
end
|
100
96
|
|
101
97
|
def test_set_hour
|
102
|
-
@
|
103
|
-
|
104
|
-
|
98
|
+
cursor = @conn.parse("BEGIN :hour := TO_NUMBER(TO_CHAR(:time, 'HH24'), '99'); END;")
|
99
|
+
cursor.bind_param(:time, Time)
|
100
|
+
cursor.bind_param(:hour, Fixnum)
|
105
101
|
HOUR_CHECK_TARGET.each do |i|
|
106
102
|
# set hour
|
107
|
-
time = Time.local(2001, 1, 1, i)
|
103
|
+
cursor[:time] = Time.local(2001, 1, 1, i)
|
108
104
|
# check result via oracle.
|
109
|
-
|
110
|
-
|
111
|
-
assert_equal(i, hour_out.get())
|
105
|
+
cursor.exec
|
106
|
+
assert_equal(i, cursor[:hour])
|
112
107
|
end
|
113
108
|
end
|
114
109
|
|
115
110
|
def test_get_hour
|
116
|
-
@
|
117
|
-
|
118
|
-
|
111
|
+
cursor = @conn.parse("BEGIN :time := TO_DATE(TO_CHAR(:hour, '99'), 'HH24'); END;")
|
112
|
+
cursor.bind_param(:hour, Fixnum)
|
113
|
+
cursor.bind_param(:time, Time)
|
119
114
|
HOUR_CHECK_TARGET.each do |i|
|
120
115
|
# set time via oracle.
|
121
|
-
|
122
|
-
|
116
|
+
cursor[:hour] = i
|
117
|
+
cursor.exec
|
123
118
|
# check Time#hour
|
124
|
-
assert_equal(i,
|
119
|
+
assert_equal(i, cursor[:time].hour)
|
125
120
|
end
|
126
121
|
end
|
127
122
|
|
128
123
|
def test_set_min
|
129
|
-
@
|
130
|
-
|
131
|
-
|
124
|
+
cursor = @conn.parse("BEGIN :min := TO_NUMBER(TO_CHAR(:time, 'MI'), '99'); END;")
|
125
|
+
cursor.bind_param(:time, Time)
|
126
|
+
cursor.bind_param(:min, Fixnum)
|
132
127
|
MIN_CHECK_TARGET.each do |i|
|
133
128
|
# set min
|
134
|
-
time = Time.local(2001, 1, 1, 0, i)
|
129
|
+
cursor[:time] = Time.local(2001, 1, 1, 0, i)
|
135
130
|
# check result via oracle.
|
136
|
-
|
137
|
-
|
138
|
-
assert_equal(i, min_out.get())
|
131
|
+
cursor.exec
|
132
|
+
assert_equal(i, cursor[:min])
|
139
133
|
end
|
140
134
|
end
|
141
135
|
|
142
136
|
def test_get_min
|
143
|
-
@
|
144
|
-
|
145
|
-
|
137
|
+
cursor = @conn.parse("BEGIN :time := TO_DATE(TO_CHAR(:min, '99'), 'MI'); END;")
|
138
|
+
cursor.bind_param(:min, Fixnum)
|
139
|
+
cursor.bind_param(:time, Time)
|
146
140
|
MIN_CHECK_TARGET.each do |i|
|
147
141
|
# set time via oracle.
|
148
|
-
|
149
|
-
|
142
|
+
cursor[:min] = i;
|
143
|
+
cursor.exec
|
150
144
|
# check Time#min
|
151
|
-
assert_equal(i,
|
145
|
+
assert_equal(i, cursor[:time].min)
|
152
146
|
end
|
153
147
|
end
|
154
148
|
|
155
149
|
def test_set_sec
|
156
|
-
@
|
157
|
-
|
158
|
-
|
150
|
+
cursor = @conn.parse("BEGIN :sec := TO_NUMBER(TO_CHAR(:time, 'SS'), '99'); END;")
|
151
|
+
cursor.bind_param(:time, Time)
|
152
|
+
cursor.bind_param(:sec, Fixnum)
|
159
153
|
SEC_CHECK_TARGET.each do |i|
|
160
154
|
# set sec
|
161
|
-
time = Time.local(2001, 1, 1, 0, 0, i)
|
155
|
+
cursor[:time] = Time.local(2001, 1, 1, 0, 0, i)
|
162
156
|
# check result via oracle.
|
163
|
-
|
164
|
-
|
165
|
-
assert_equal(i, sec_out.get())
|
157
|
+
cursor.exec
|
158
|
+
assert_equal(i, cursor[:sec])
|
166
159
|
end
|
167
160
|
end
|
168
161
|
|
169
162
|
def test_get_sec
|
170
|
-
@
|
171
|
-
|
172
|
-
|
163
|
+
cursor = @conn.parse("BEGIN :time := TO_DATE(TO_CHAR(:sec, '99'), 'SS'); END;")
|
164
|
+
cursor.bind_param(:sec, Fixnum)
|
165
|
+
cursor.bind_param(:time, Time)
|
173
166
|
SEC_CHECK_TARGET.each do |i|
|
174
167
|
# set time via oracle.
|
175
|
-
|
176
|
-
|
168
|
+
cursor[:sec] = i
|
169
|
+
cursor.exec
|
177
170
|
# check Time#sec
|
178
|
-
assert_equal(i,
|
171
|
+
assert_equal(i, cursor[:time].sec)
|
179
172
|
end
|
180
173
|
end
|
181
174
|
|
182
175
|
def teardown
|
183
|
-
@
|
184
|
-
@svc.logoff()
|
185
|
-
@env.free()
|
176
|
+
@conn.logoff
|
186
177
|
end
|
187
178
|
end
|
188
|
-
|
189
|
-
if $0 == __FILE__
|
190
|
-
RUNIT::CUI::TestRunner.run(TestBindTime.suite())
|
191
|
-
end
|