ruby-oci8 2.1.5.1-x64-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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +17 -0
  3. data/COPYING +30 -0
  4. data/COPYING_old +64 -0
  5. data/ChangeLog +2779 -0
  6. data/Makefile +92 -0
  7. data/NEWS +660 -0
  8. data/README.md +43 -0
  9. data/VERSION +1 -0
  10. data/dist-files +91 -0
  11. data/docs/install-binary-package.md +40 -0
  12. data/docs/install-full-client.md +116 -0
  13. data/docs/install-instant-client.md +167 -0
  14. data/docs/platform-specific-issues.md +197 -0
  15. data/docs/report-installation-issue.md +50 -0
  16. data/lib/.document +1 -0
  17. data/lib/dbd/OCI8.rb +591 -0
  18. data/lib/oci8.rb +147 -0
  19. data/lib/oci8.rb.in +147 -0
  20. data/lib/oci8/.document +8 -0
  21. data/lib/oci8/bindtype.rb +350 -0
  22. data/lib/oci8/compat.rb +113 -0
  23. data/lib/oci8/connection_pool.rb +108 -0
  24. data/lib/oci8/cursor.rb +564 -0
  25. data/lib/oci8/datetime.rb +605 -0
  26. data/lib/oci8/encoding-init.rb +79 -0
  27. data/lib/oci8/encoding.yml +537 -0
  28. data/lib/oci8/metadata.rb +2092 -0
  29. data/lib/oci8/object.rb +605 -0
  30. data/lib/oci8/oci8.rb +560 -0
  31. data/lib/oci8/ocihandle.rb +607 -0
  32. data/lib/oci8/oracle_version.rb +143 -0
  33. data/lib/oci8/properties.rb +134 -0
  34. data/lib/oci8lib_200.so +0 -0
  35. data/metaconfig +142 -0
  36. data/pre-distclean.rb +7 -0
  37. data/ruby-oci8.gemspec +80 -0
  38. data/setup.rb +1333 -0
  39. data/test/README +42 -0
  40. data/test/config.rb +184 -0
  41. data/test/setup_test_object.sql +171 -0
  42. data/test/test_all.rb +54 -0
  43. data/test/test_appinfo.rb +63 -0
  44. data/test/test_array_dml.rb +333 -0
  45. data/test/test_bind_raw.rb +46 -0
  46. data/test/test_bind_string.rb +106 -0
  47. data/test/test_bind_time.rb +178 -0
  48. data/test/test_break.rb +124 -0
  49. data/test/test_clob.rb +98 -0
  50. data/test/test_connection_pool.rb +125 -0
  51. data/test/test_connstr.rb +81 -0
  52. data/test/test_datetime.rb +581 -0
  53. data/test/test_dbi.rb +366 -0
  54. data/test/test_dbi_clob.rb +53 -0
  55. data/test/test_encoding.rb +104 -0
  56. data/test/test_error.rb +88 -0
  57. data/test/test_metadata.rb +1485 -0
  58. data/test/test_object.rb +462 -0
  59. data/test/test_oci8.rb +489 -0
  60. data/test/test_oracle_version.rb +70 -0
  61. data/test/test_oradate.rb +256 -0
  62. data/test/test_oranumber.rb +787 -0
  63. data/test/test_rowid.rb +33 -0
  64. metadata +109 -0
data/test/test_oci8.rb ADDED
@@ -0,0 +1,489 @@
1
+ require 'oci8'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/config'
4
+ require 'bigdecimal'
5
+ require 'rational'
6
+
7
+ class TestOCI8 < Test::Unit::TestCase
8
+
9
+ def setup
10
+ @conn = get_oci8_connection
11
+ end
12
+
13
+ def teardown
14
+ @conn.logoff
15
+ end
16
+
17
+ def test_rename
18
+ drop_table('test_table')
19
+ drop_table('test_rename_table')
20
+ sql = <<-EOS
21
+ CREATE TABLE test_rename_table
22
+ (C CHAR(10) NOT NULL)
23
+ EOS
24
+ @conn.exec(sql)
25
+ @conn.exec("RENAME test_rename_table TO test_table")
26
+ drop_table('test_rename_table')
27
+ end
28
+
29
+ # USE_DYNAMIC_FETCH doesn't work well...
30
+ # This test is disabled.
31
+ def _test_long_type
32
+ drop_table('test_table')
33
+ @conn.exec('CREATE TABLE test_table (id number(38), lng long)')
34
+ test_data1 = 'a' * 70000
35
+ test_data2 = 'b' * 3000
36
+ test_data3 = nil
37
+ test_data4 = 'c' * 70000
38
+ @conn.exec('insert into test_table values (:1, :2)', 1, test_data1)
39
+ @conn.exec('insert into test_table values (:1, :2)', 2, [test_data2, :long])
40
+ @conn.exec('insert into test_table values (:1, :2)', 3, [nil, :long])
41
+ @conn.exec('insert into test_table values (:1, :2)', 4, [test_data4, :long])
42
+
43
+ [8000, 65535, 65536, 80000].each do |read_len|
44
+ @conn.long_read_len = read_len
45
+ cursor = @conn.parse('SELECT lng from test_table order by id')
46
+ cursor.exec
47
+ assert_equal(test_data1, cursor.fetch[0])
48
+ assert_equal(test_data2, cursor.fetch[0])
49
+ assert_equal(test_data3, cursor.fetch[0])
50
+ assert_equal(test_data4, cursor.fetch[0])
51
+ cursor.close
52
+ end
53
+ drop_table('test_table')
54
+ end
55
+
56
+ def test_long_type
57
+ @conn.long_read_len = 80000
58
+ drop_table('test_table')
59
+ @conn.exec('CREATE TABLE test_table (id number(38), lng long)')
60
+ test_data1 = 'a' * 70000
61
+ test_data2 = 'b' * 3000
62
+ test_data3 = nil
63
+ test_data4 = 'c' * 70000
64
+ @conn.exec('insert into test_table values (:1, :2)', 1, test_data1)
65
+ @conn.exec('insert into test_table values (:1, :2)', 2, [test_data2, :long])
66
+ @conn.exec('insert into test_table values (:1, :2)', 3, [nil, :long])
67
+ @conn.exec('insert into test_table values (:1, :2)', 4, [test_data4, :long])
68
+
69
+ cursor = @conn.parse('SELECT lng from test_table order by id')
70
+ cursor.exec
71
+ assert_equal(test_data1, cursor.fetch[0])
72
+ assert_equal(test_data2, cursor.fetch[0])
73
+ assert_equal(test_data3, cursor.fetch[0])
74
+ assert_equal(test_data4, cursor.fetch[0])
75
+ cursor.close
76
+ drop_table('test_table')
77
+ end
78
+
79
+ def test_select
80
+ drop_table('test_table')
81
+ sql = <<-EOS
82
+ CREATE TABLE test_table
83
+ (C CHAR(10) NOT NULL,
84
+ V VARCHAR2(20),
85
+ N NUMBER(10, 2),
86
+ D1 DATE, D2 DATE, D3 DATE, D4 DATE,
87
+ INT NUMBER(30), BIGNUM NUMBER(30))
88
+ STORAGE (
89
+ INITIAL 4k
90
+ NEXT 4k
91
+ MINEXTENTS 1
92
+ MAXEXTENTS UNLIMITED
93
+ PCTINCREASE 0)
94
+ EOS
95
+ @conn.exec(sql)
96
+ cursor = @conn.parse("INSERT INTO test_table VALUES (:C, :V, :N, :D1, :D2, :D3, :D4, :INT, :BIGNUM)")
97
+ 1.upto(10) do |i|
98
+ if i == 1
99
+ dt = [nil, OraDate]
100
+ else
101
+ dt = OraDate.new(2000 + i, i % 2 == 0 ? 7 : 1, 3, 23, 59, 59)
102
+ end
103
+ cursor.exec(format("%10d", i * 10), i.to_s, i, dt, dt, dt, dt, i * 11111111111, i * 10000000000)
104
+ end
105
+ cursor.close
106
+ cursor = @conn.parse("SELECT * FROM test_table ORDER BY c")
107
+ cursor.define(5, Time) # define 5th column as Time
108
+ cursor.define(6, Date) # define 6th column as Date
109
+ cursor.define(7, DateTime) # define 7th column as DateTime
110
+ cursor.define(8, Integer) # define 8th column as Integer
111
+ cursor.define(9, Bignum) # define 9th column as Bignum
112
+ cursor.exec
113
+ assert_equal(["C", "V", "N", "D1", "D2", "D3", "D4", "INT", "BIGNUM"], cursor.get_col_names)
114
+ 1.upto(10) do |i|
115
+ rv = cursor.fetch
116
+ assert_equal(format("%10d", i * 10), rv[0])
117
+ assert_equal(i.to_s, rv[1])
118
+ assert_equal(i, rv[2])
119
+ if i == 1
120
+ assert_nil(rv[3])
121
+ assert_nil(rv[4])
122
+ assert_nil(rv[5])
123
+ assert_nil(rv[6])
124
+ else
125
+ month = i % 2 == 0 ? 7 : 1
126
+ tm = Time.local(2000 + i, month, 3, 23, 59, 59)
127
+ dt = Date.civil(2000 + i, month, 3)
128
+ dttm = DateTime.civil(2000 + i, month, 3, 23, 59, 59, tm.utc_offset.to_r/86400)
129
+ assert_equal(tm, rv[3])
130
+ assert_equal(tm, rv[4])
131
+ assert_equal(dt, rv[5])
132
+ assert_equal(dttm, rv[6])
133
+ end
134
+ assert_equal(i * 11111111111, rv[7])
135
+ assert_equal(i * 10000000000, rv[8])
136
+ end
137
+ assert_nil(cursor.fetch)
138
+
139
+ # fetch_hash with block
140
+ cursor.exec
141
+ i = 1
142
+ cursor.fetch_hash do |row|
143
+ assert_equal(format("%10d", i * 10), row['C'])
144
+ assert_equal(i.to_s, row['V'])
145
+ assert_equal(i, row['N'])
146
+ if i == 1
147
+ assert_nil(row['D1'])
148
+ assert_nil(row['D2'])
149
+ assert_nil(row['D3'])
150
+ assert_nil(row['D4'])
151
+ else
152
+ month = i % 2 == 0 ? 7 : 1
153
+ tm = Time.local(2000 + i, month, 3, 23, 59, 59)
154
+ dt = Date.civil(2000 + i, month, 3)
155
+ dttm = DateTime.civil(2000 + i, month, 3, 23, 59, 59, tm.utc_offset.to_r/86400)
156
+ assert_equal(tm, row['D1'])
157
+ assert_equal(tm, row['D2'])
158
+ assert_equal(dt, row['D3'])
159
+ assert_equal(dttm, row['D4'])
160
+ end
161
+ assert_equal(i * 11111111111, row['INT'])
162
+ assert_equal(i * 10000000000, row['BIGNUM'])
163
+ i += 1
164
+ end
165
+ assert_equal(11, i)
166
+
167
+ cursor.close
168
+ drop_table('test_table')
169
+ end
170
+
171
+ def test_bind_cursor
172
+ # FIXME: check again after upgrading Oracle 9.2 to 9.2.0.4.
173
+ return if $oracle_version < OCI8::ORAVER_10_1
174
+
175
+ drop_table('test_table')
176
+ sql = <<-EOS
177
+ CREATE TABLE test_table
178
+ (C CHAR(10) NOT NULL,
179
+ V VARCHAR2(20),
180
+ N NUMBER(10, 2),
181
+ D1 DATE, D2 DATE, D3 DATE,
182
+ INT NUMBER(30), BIGNUM NUMBER(30))
183
+ STORAGE (
184
+ INITIAL 4k
185
+ NEXT 4k
186
+ MINEXTENTS 1
187
+ MAXEXTENTS UNLIMITED
188
+ PCTINCREASE 0)
189
+ EOS
190
+ @conn.exec(sql)
191
+ cursor = @conn.parse("INSERT INTO test_table VALUES (:C, :V, :N, :D1, :D2, :D3, :INT, :BIGNUM)")
192
+ 1.upto(10) do |i|
193
+ if i == 1
194
+ dt = [nil, OraDate]
195
+ else
196
+ dt = OraDate.new(2000 + i, 8, 3, 23, 59, 59)
197
+ end
198
+ cursor.exec(format("%10d", i * 10), i.to_s, i, dt, dt, dt, i, i)
199
+ end
200
+ cursor.close
201
+ plsql = @conn.parse("BEGIN OPEN :cursor FOR SELECT * FROM test_table ORDER BY c; END;")
202
+ plsql.bind_param(':cursor', nil, OCI8::Cursor)
203
+ plsql.exec
204
+ cursor = plsql[':cursor']
205
+ cursor.define(5, DateTime) # define 5th column as DateTime
206
+ cursor.define(6, Date) # define 6th column as Date
207
+ cursor.define(7, Integer) # define 7th column as Integer
208
+ cursor.define(8, Bignum) # define 8th column as Integer
209
+ assert_equal(["C", "V", "N", "D1", "D2", "D3", "INT", "BIGNUM"], cursor.get_col_names)
210
+ 1.upto(10) do |i|
211
+ rv = cursor.fetch
212
+ assert_equal(format("%10d", i * 10), rv[0])
213
+ assert_equal(i.to_s, rv[1])
214
+ assert_equal(i, rv[2])
215
+ if i == 1
216
+ assert_nil(rv[3])
217
+ assert_nil(rv[4])
218
+ assert_nil(rv[5])
219
+ else
220
+ dttm = DateTime.civil(2000 + i, 8, 3, 23, 59, 59, Time.now.utc_offset.to_r/86400)
221
+ tm = Time.local(2000 + i, 8, 3, 23, 59, 59)
222
+ dt = Date.civil(2000 + i, 8, 3)
223
+ assert_equal(tm, rv[3])
224
+ assert_equal(dttm, rv[4])
225
+ assert_equal(dt, rv[5])
226
+ end
227
+ assert_equal(i, rv[6])
228
+ assert_equal(i, rv[7])
229
+ end
230
+ assert_nil(cursor.fetch)
231
+ cursor.close
232
+ drop_table('test_table')
233
+ end
234
+
235
+ def test_cursor_in_result_set
236
+ drop_table('test_table')
237
+ sql = <<-EOS
238
+ CREATE TABLE test_table (N NUMBER(10, 2))
239
+ STORAGE (
240
+ INITIAL 4k
241
+ NEXT 4k
242
+ MINEXTENTS 1
243
+ MAXEXTENTS UNLIMITED
244
+ PCTINCREASE 0)
245
+ EOS
246
+ @conn.exec(sql)
247
+ cursor = @conn.parse("INSERT INTO test_table VALUES (:1)")
248
+ 1.upto(10) do |i|
249
+ cursor.exec(i)
250
+ end
251
+ cursor.close
252
+ cursor = @conn.exec(<<EOS)
253
+ select a.n, cursor (select a.n + b.n
254
+ from test_table b
255
+ order by n)
256
+ from test_table a
257
+ order by n
258
+ EOS
259
+ 1.upto(10) do |i|
260
+ row = cursor.fetch
261
+ assert_equal(i, row[0])
262
+ cursor_in_result_set = row[1]
263
+ 1.upto(10) do |j|
264
+ row2 = cursor_in_result_set.fetch
265
+ assert_equal(i + j, row2[0])
266
+ end
267
+ assert_nil(cursor_in_result_set.fetch) # check end of row data
268
+ cursor_in_result_set.close
269
+ end
270
+ assert_nil(cursor.fetch) # check end of row data
271
+ drop_table('test_table')
272
+ end
273
+
274
+ def test_binary_float
275
+ return if $oracle_version < OCI8::ORAVER_10_1
276
+
277
+ # Oracle 10g or upper
278
+ cursor = @conn.parse("select CAST(:1 AS BINARY_FLOAT), CAST(:2 AS BINARY_DOUBLE) from dual")
279
+ bind_val = -1.0
280
+ cursor.bind_param(1, 10.0, :binary_double)
281
+ cursor.bind_param(2, nil, :binary_double)
282
+ while bind_val < 10.0
283
+ cursor[2] = bind_val
284
+ cursor.exec
285
+ rv = cursor.fetch
286
+ assert_equal(10.0, rv[0])
287
+ assert_equal(bind_val, rv[1])
288
+ bind_val += 1.234
289
+ end
290
+ [-1.0/0.0, # -Infinite
291
+ +1.0/0.0, # +Infinite
292
+ 0.0/0.0 # NaN
293
+ ].each do |num|
294
+ cursor[1] = num
295
+ cursor[2] = num
296
+ cursor.exec
297
+ rv = cursor.fetch
298
+ if num.nan?
299
+ assert(rv[0].nan?)
300
+ assert(rv[1].nan?)
301
+ else
302
+ assert_equal(num, rv[0])
303
+ assert_equal(num, rv[1])
304
+ end
305
+ end
306
+ cursor.close
307
+ end
308
+
309
+ def test_clob_nclob_and_blob
310
+ return if OCI8::oracle_client_version < OCI8::ORAVER_8_1
311
+
312
+ drop_table('test_table')
313
+ sql = <<-EOS
314
+ CREATE TABLE test_table (id number(5), C CLOB, NC NCLOB, B BLOB)
315
+ STORAGE (
316
+ INITIAL 100k
317
+ NEXT 100k
318
+ MINEXTENTS 1
319
+ MAXEXTENTS UNLIMITED
320
+ PCTINCREASE 0)
321
+ EOS
322
+ @conn.exec(sql)
323
+ cursor = @conn.parse("INSERT INTO test_table VALUES (:1, :2, :3, :4)")
324
+ 0.upto(9) do |i|
325
+ val = case i
326
+ when 5; '' # empty string
327
+ else format('%d', i) * 4096
328
+ end
329
+ cursor.exec(i, OCI8::CLOB.new(@conn, val), OCI8::NCLOB.new(@conn, val), OCI8::BLOB.new(@conn, val))
330
+ end
331
+ cursor.close
332
+ cursor = @conn.exec("select * from test_table order by id")
333
+ 0.upto(9) do |i|
334
+ rv = cursor.fetch
335
+ val = case i
336
+ when 5; '' # empty string
337
+ else format('%d', i) * 4096
338
+ end
339
+ assert_equal(i, rv[0])
340
+ assert_instance_of(OCI8::CLOB, rv[1])
341
+ assert_instance_of(OCI8::NCLOB, rv[2])
342
+ assert_instance_of(OCI8::BLOB, rv[3])
343
+ assert_equal(val, rv[1].read)
344
+ assert_equal(val.length, rv[2].size)
345
+ assert_equal(val, rv[2].read)
346
+ assert_equal(val, rv[3].read)
347
+ end
348
+ assert_nil(cursor.fetch)
349
+ cursor.close
350
+ drop_table('test_table')
351
+ end
352
+
353
+ def test_select_number
354
+ drop_table('test_table')
355
+ @conn.exec(<<EOS)
356
+ CREATE TABLE test_table (n NUMBER, n20 NUMBER(20), n14_2 NUMBER(14,2), n15_2 NUMBER(15,2), flt FLOAT)
357
+ STORAGE (
358
+ INITIAL 100k
359
+ NEXT 100k
360
+ MINEXTENTS 1
361
+ MAXEXTENTS UNLIMITED
362
+ PCTINCREASE 0)
363
+ EOS
364
+ @conn.exec(<<EOS)
365
+ INSERT INTO test_table values(12345678901234, 12345678901234567890, 123456789012.34, 1234567890123.45, 1234.5)
366
+ EOS
367
+ @conn.exec("select * from test_table") do |row|
368
+ assert_equal(row[0], 12345678901234)
369
+ assert_equal(row[1], 12345678901234567890)
370
+ assert_equal(row[2], 123456789012.34)
371
+ assert_equal(row[3], BigDecimal("1234567890123.45"))
372
+ assert_equal(row[4], 1234.5)
373
+ assert_instance_of(BigDecimal, row[0])
374
+ assert_instance_of(Bignum, row[1])
375
+ assert_instance_of(Float, row[2])
376
+ assert_instance_of(BigDecimal, row[3])
377
+ assert_instance_of(Float, row[4])
378
+ end
379
+ drop_table('test_table')
380
+ end
381
+
382
+ def test_bind_number_with_implicit_conversions
383
+ src = [1, 1.2, BigDecimal("1.2"), Rational(12, 10)]
384
+ int = [1, 1, 1, 1]
385
+ flt = [1, 1.2, 1.2, 1.2]
386
+ dec = [BigDecimal("1"), BigDecimal("1.2"), BigDecimal("1.2"), BigDecimal("1.2")]
387
+ rat = [Rational(1), Rational(12, 10), Rational(12, 10), Rational(12, 10)]
388
+
389
+ cursor = @conn.parse("begin :1 := :2; end;")
390
+
391
+ # Float
392
+ cursor.bind_param(1, nil, Float)
393
+ cursor.bind_param(2, nil, Float)
394
+ src.each_with_index do |s, idx|
395
+ cursor[2] = s
396
+ cursor.exec
397
+ assert_equal(cursor[1], flt[idx])
398
+ assert_kind_of(Float, cursor[1])
399
+ end
400
+
401
+ # Fixnum
402
+ cursor.bind_param(1, nil, Fixnum)
403
+ cursor.bind_param(2, nil, Fixnum)
404
+ src.each_with_index do |s, idx|
405
+ cursor[2] = s
406
+ cursor.exec
407
+ assert_equal(cursor[1], int[idx])
408
+ assert_kind_of(Fixnum, cursor[1])
409
+ end
410
+
411
+ # Integer
412
+ cursor.bind_param(1, nil, Integer)
413
+ cursor.bind_param(2, nil, Integer)
414
+ src.each_with_index do |s, idx|
415
+ cursor[2] = s
416
+ cursor.exec
417
+ assert_equal(cursor[1], int[idx])
418
+ assert_kind_of(Integer, cursor[1])
419
+ end
420
+
421
+ # BigDecimal
422
+ cursor.bind_param(1, nil, BigDecimal)
423
+ cursor.bind_param(2, nil, BigDecimal)
424
+ src.each_with_index do |s, idx|
425
+ cursor[2] = s
426
+ cursor.exec
427
+ assert_equal(cursor[1], dec[idx])
428
+ assert_kind_of(BigDecimal, cursor[1])
429
+ end
430
+
431
+ # Rational
432
+ cursor.bind_param(1, nil, Rational)
433
+ cursor.bind_param(2, nil, Rational)
434
+ src.each_with_index do |s, idx|
435
+ cursor[2] = s
436
+ cursor.exec
437
+ assert_equal(cursor[1], rat[idx])
438
+ assert_kind_of(Rational, cursor[1])
439
+ end
440
+ end
441
+
442
+ def test_parse_sets_query_on_cursor
443
+ statement = "select * from country where country_code = 'ja'"
444
+ cursor = @conn.parse(statement)
445
+ assert_equal(statement, cursor.statement)
446
+ end
447
+
448
+ def test_last_error
449
+ # OCI8#parse and OCI8#exec reset OCI8#last_error
450
+ @conn.last_error = 'dummy'
451
+ @conn.exec('begin null; end;')
452
+ assert_nil(@conn.last_error)
453
+ @conn.last_error = 'dummy'
454
+ cursor = @conn.parse('select col1, max(col2) from (select 1 as col1, null as col2 from dual) group by col1')
455
+ assert_nil(@conn.last_error)
456
+
457
+ # When an OCI function returns OCI_SUCCESS_WITH_INFO, OCI8#last_error is set.
458
+ @conn.last_error = 'dummy'
459
+ cursor.exec
460
+ assert_equal('dummy', @conn.last_error)
461
+ cursor.fetch
462
+ assert_kind_of(OCISuccessWithInfo, @conn.last_error)
463
+ assert_equal(24347, @conn.last_error.code)
464
+ end
465
+
466
+ def test_environment_handle
467
+ # OCI_ATTR_HEAPALLOC
468
+ assert_operator(OCI8.send(:class_variable_get, :@@environment_handle).send(:attr_get_ub4, 30), :>, 0)
469
+ # OCI_ATTR_OBJECT
470
+ assert(OCI8.send(:class_variable_get, :@@environment_handle).send(:attr_get_boolean, 2))
471
+ # OCI_ATTR_SHARED_HEAPALLOC
472
+ assert_equal(0, OCI8.send(:class_variable_get, :@@environment_handle).send(:attr_get_ub4, 84))
473
+ end
474
+
475
+ def test_process_handle
476
+ # OCI_ATTR_MEMPOOL_APPNAME
477
+ assert_equal('', OCI8.send(:class_variable_get, :@@process_handle).send(:attr_get_string, 90))
478
+ # OCI_ATTR_MEMPOOL_SIZE
479
+ assert_equal(0, OCI8.send(:class_variable_get, :@@process_handle).send(:attr_get_ub4, 88))
480
+ end
481
+
482
+ def test_client_driver_name
483
+ if OCI8.oracle_client_version >= OCI8::ORAVER_11_1 and @conn.oracle_server_version >= OCI8::ORAVER_11_1
484
+ sid = @conn.select_one("select userenv('sid') from dual")[0].to_i
485
+ driver_name = @conn.select_one('select client_driver from v$session_connect_info where sid = :1', sid)[0]
486
+ assert_equal('rubyoci8', driver_name)
487
+ end
488
+ end
489
+ end # TestOCI8