simpleOracleJDBC 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8084d705b1dc701ab3b760d885990891a57f310a
4
+ data.tar.gz: 0e6307d167089c860aa493d528cfcbecede7a584
5
+ SHA512:
6
+ metadata.gz: c35254c4993138b2b0b011c3be67418581deef20661893fe34f906253cd03d3179f8823bf50bfb3af6f55b9ad5e29ab934f83ab5acd5f4f04f1730d8efa60bcb
7
+ data.tar.gz: b62a180376d5429886d86b085a5b3946b5fff745c77a13ec24be7cb1ef5218eec3409264bdd43b50afd3c00b7ea368c0e2506c07aaa7ae9fbf9f4dbea741e189
@@ -13,7 +13,7 @@ module SimpleOracleJDBC
13
13
  java_import 'oracle.sql.ARRAY'
14
14
  java_import 'oracle.sql.StructDescriptor'
15
15
  java_import 'oracle.sql.STRUCT'
16
-
16
+ java_import 'java.sql.Types'
17
17
  end
18
18
 
19
19
  require 'simple_oracle_jdbc/type_map'
@@ -114,7 +114,20 @@ module SimpleOracleJDBC
114
114
  when 'RAW'
115
115
  retrieve_raw(obj, i)
116
116
  else
117
- raise UnknownSQLType, obj.get_meta_data.get_column_type_name(i)
117
+ # If it is not one of the built-in tyes, it could be a user defined type
118
+ # returning either an array or record type.
119
+ type_code = obj.get_meta_data.get_column_type(i)
120
+ if Java::JavaSql::Types::ARRAY == type_code
121
+ @array ||= Array.new
122
+ @array[i] ||= OraArray.new(obj.get_meta_data.get_column_type_name(i), nil)
123
+ @array[i].retrieve_out_value(@connection, obj, i)
124
+ elsif Java::JavaSql::Types::STRUCT == type_code
125
+ @array ||= Array.new
126
+ @array[i] ||= OraRecord.new(obj.get_meta_data.get_column_type_name(i), nil)
127
+ @array[i].retrieve_out_value(@connection, obj, i)
128
+ else
129
+ raise UnknownSQLType, obj.get_meta_data.get_column_type_name(i)
130
+ end
118
131
  end
119
132
  end
120
133
 
@@ -157,7 +170,7 @@ module SimpleOracleJDBC
157
170
 
158
171
  def bind_int(obj, v, i)
159
172
  if v
160
- obj.set_int(i, v)
173
+ obj.set_long(i, v)
161
174
  else
162
175
  obj.set_null(i, OracleTypes::INTEGER)
163
176
  end
@@ -200,7 +213,7 @@ module SimpleOracleJDBC
200
213
  end
201
214
 
202
215
  def retrieve_int(obj, i)
203
- v = obj.get_int(i)
216
+ v = obj.get_long(i)
204
217
  if obj.was_null
205
218
  v = nil
206
219
  end
@@ -277,6 +277,29 @@ class BindingTest < Test::Unit::TestCase
277
277
  end
278
278
  end
279
279
 
280
+ def test_array_type_can_be_retrieved_from_result_set
281
+ sql = @interface.execute_sql("select key, cast(collect(val) as t_varchar2_tab) as vals
282
+ from (
283
+ select 1 key, 'helloo' val from dual
284
+ union all
285
+ select 1 key, 'there' val from dual
286
+ ) group by key")
280
287
 
288
+ results = sql.all_array
289
+ assert_equal(1, results.length)
290
+ assert_equal(1.0, results[0][0])
291
+ assert_equal(Array, results[0][1].class)
292
+ assert_equal('helloo', results[0][1][0])
293
+ assert_equal('there', results[0][1][1])
294
+ end
295
+
296
+ def test_record_type_can_be_retrieved_from_result_set
297
+ sql = @interface.execute_sql("select t_record('abc', 1, 2.2, 'a', sysdate, sysdate, '0101')
298
+ from dual")
299
+ results = sql.all_array
300
+ assert_equal(1, results.length)
301
+ assert_equal(7, results[0][0].length)
302
+ assert_equal('abc', results[0][0][0])
303
+ end
281
304
 
282
305
  end
metadata CHANGED
@@ -1,82 +1,65 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: simpleOracleJDBC
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 3
8
- - 0
9
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Stephen O'Donnell
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2013-09-17 00:00:00 +01:00
18
- default_executable:
11
+ date: 2014-03-03 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
- description: A lightweight wrapper around the JDBC interface to make it easier to make SQL and stored procedure calls.
13
+ description: A lightweight wrapper around the JDBC interface to make it easier to
14
+ make SQL and stored procedure calls.
22
15
  email: stephen@betteratoracle.com
23
16
  executables: []
24
-
25
17
  extensions: []
26
-
27
- extra_rdoc_files:
18
+ extra_rdoc_files:
28
19
  - README.md
29
- files:
20
+ files:
21
+ - README.md
22
+ - Rakefile.rb
23
+ - lib/simple_oracle_jdbc.rb
24
+ - lib/simple_oracle_jdbc/bindings.rb
25
+ - lib/simple_oracle_jdbc/db_call.rb
26
+ - lib/simple_oracle_jdbc/interface.rb
27
+ - lib/simple_oracle_jdbc/ora_array.rb
28
+ - lib/simple_oracle_jdbc/ora_record.rb
29
+ - lib/simple_oracle_jdbc/result_set.rb
30
+ - lib/simple_oracle_jdbc/sql.rb
31
+ - lib/simple_oracle_jdbc/type_map.rb
32
+ - test/README
30
33
  - test/binding_test.rb
31
34
  - test/db_call_test.rb
32
35
  - test/helper.rb
33
36
  - test/interface_test.rb
34
37
  - test/ora_array_test.rb
35
38
  - test/ora_record_test.rb
36
- - test/README
37
39
  - test/result_set_test.rb
38
40
  - test/sql_test.rb
39
41
  - test/test_runner.rb
40
- - lib/simple_oracle_jdbc/bindings.rb
41
- - lib/simple_oracle_jdbc/db_call.rb
42
- - lib/simple_oracle_jdbc/interface.rb
43
- - lib/simple_oracle_jdbc/ora_array.rb
44
- - lib/simple_oracle_jdbc/ora_record.rb
45
- - lib/simple_oracle_jdbc/result_set.rb
46
- - lib/simple_oracle_jdbc/sql.rb
47
- - lib/simple_oracle_jdbc/type_map.rb
48
- - lib/simple_oracle_jdbc.rb
49
- - Rakefile.rb
50
- - README.md
51
- has_rdoc: true
52
42
  homepage: http://betteratoracle.com
53
43
  licenses: []
54
-
44
+ metadata: {}
55
45
  post_install_message:
56
46
  rdoc_options: []
57
-
58
- require_paths:
47
+ require_paths:
59
48
  - lib
60
- required_ruby_version: !ruby/object:Gem::Requirement
61
- requirements:
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
62
51
  - - ">="
63
- - !ruby/object:Gem::Version
64
- segments:
65
- - 0
66
- version: "0"
67
- required_rubygems_version: !ruby/object:Gem::Requirement
68
- requirements:
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
69
56
  - - ">="
70
- - !ruby/object:Gem::Version
71
- segments:
72
- - 0
73
- version: "0"
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
74
59
  requirements: []
75
-
76
60
  rubyforge_project:
77
- rubygems_version: 1.3.6
61
+ rubygems_version: 2.2.0
78
62
  signing_key:
79
- specification_version: 3
63
+ specification_version: 4
80
64
  summary: A gem to simplify JDBC database access to Oracle when using JRuby
81
65
  test_files: []
82
-