simpleOracleJDBC 0.3.0 → 0.3.1

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.
@@ -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
-