activerecord-jdbc-adapter 1.3.2 → 1.3.3
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Appraisals +6 -5
- data/Gemfile +1 -1
- data/History.md +19 -0
- data/README.md +4 -3
- data/gemfiles/rails23.gemfile +1 -1
- data/gemfiles/rails30.gemfile +1 -1
- data/gemfiles/rails31.gemfile +1 -1
- data/gemfiles/rails32.gemfile +1 -1
- data/gemfiles/rails32.gemfile.lock +13 -13
- data/gemfiles/rails40.gemfile +1 -1
- data/gemfiles/rails40.gemfile.lock +6 -9
- data/gemfiles/rails41.gemfile +1 -1
- data/gemfiles/rails41.gemfile.lock +12 -20
- data/lib/arjdbc.rb +1 -9
- data/lib/arjdbc/derby/adapter.rb +7 -0
- data/lib/arjdbc/h2/adapter.rb +8 -0
- data/lib/arjdbc/h2/connection_methods.rb +1 -0
- data/lib/arjdbc/hsqldb/adapter.rb +9 -0
- data/lib/arjdbc/hsqldb/connection_methods.rb +1 -0
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/mssql/adapter.rb +9 -1
- data/lib/arjdbc/mssql/connection_methods.rb +3 -1
- data/lib/arjdbc/mysql/connection_methods.rb +3 -2
- data/lib/arjdbc/postgresql/adapter.rb +15 -0
- data/lib/arjdbc/postgresql/column.rb +1 -1
- data/lib/arjdbc/postgresql/connection_methods.rb +8 -5
- data/lib/arjdbc/tasks/database_tasks.rb +17 -16
- data/lib/arjdbc/tasks/databases.rake +4 -0
- data/lib/arjdbc/tasks/databases3.rake +2 -2
- data/lib/arjdbc/version.rb +1 -1
- data/lib/generators/jdbc/USAGE +2 -3
- data/lib/generators/jdbc/jdbc_generator.rb +8 -0
- data/lib/jdbc_adapter/rake_tasks.rb +3 -3
- data/lib/jdbc_adapter/version.rb +1 -2
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +30 -23
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +19 -1
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +34 -3
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +44 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afad2b1bdef2eebe2358aa5de395923a306d3485
|
4
|
+
data.tar.gz: 467e05b0176a944fa16b3011e902e549629ae222
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c23850d472d6e6cb0ced6a598ec119cef76c6d1e34257682b37ace3fac27e50488e5bc8629e96bf3d9f7acaafdb0fe22d58179d4a6ad1f9efdf2dccda54abeac
|
7
|
+
data.tar.gz: 36092c2ad04aaa6b1f2da21f6dce1f6fe69ee937b02e68a9db189a97506ff5f2f4ae9e6cff69bd8e80d2125f4d6bcc187dc0b96c436789f2f292419a3649e13c
|
data/.gitignore
CHANGED
data/Appraisals
CHANGED
@@ -1,26 +1,27 @@
|
|
1
1
|
appraise "rails23" do
|
2
|
-
gem "activerecord", "~> 2.3.18"
|
2
|
+
gem "activerecord", "~> 2.3.18", :require => false
|
3
3
|
gem "rails", "~> 2.3.18"
|
4
4
|
end
|
5
5
|
|
6
6
|
appraise "rails30" do
|
7
|
-
gem "activerecord", "~> 3.0.20"
|
7
|
+
gem "activerecord", "~> 3.0.20", :require => false
|
8
8
|
end
|
9
9
|
|
10
10
|
appraise "rails31" do
|
11
|
-
gem "activerecord", "~> 3.1.12"
|
11
|
+
gem "activerecord", "~> 3.1.12", :require => false
|
12
12
|
end
|
13
13
|
|
14
14
|
appraise "rails32" do
|
15
|
-
gem "activerecord", "~> 3.2.
|
15
|
+
gem "activerecord", "~> 3.2.15", :require => false
|
16
16
|
end
|
17
17
|
|
18
18
|
appraise "rails40" do
|
19
19
|
# NOTE: make sure you're using --1.9 with AR-4.0
|
20
|
-
gem "activerecord", "~> 4.0.0"
|
20
|
+
gem "activerecord", "~> 4.0.0", :require => false
|
21
21
|
end
|
22
22
|
|
23
23
|
appraise "rails41" do
|
24
24
|
# NOTE: make sure you're using --1.9 with AR-4.1
|
25
|
+
gem "activerecord", :github => 'rails/rails', :branch => 'master', :require => false
|
25
26
|
gem 'rails', :github => 'rails/rails', :branch => 'master'
|
26
27
|
end
|
data/Gemfile
CHANGED
data/History.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## 1.3.3 (11/12/13)
|
2
|
+
|
3
|
+
- [mysql] allow encoding to be server-detected (using `encoding: false`)
|
4
|
+
due compatibility we still default to `encoding: utf8` if not set (fixes #481)
|
5
|
+
- need to match AR 4.0 built-in patterns to re-define (oracle) tasks correctly
|
6
|
+
- [postgres] support some of libpg's ENV variables when connecting
|
7
|
+
- [derby] allow multiple parallell nested transactions on DERBY
|
8
|
+
- [mssql] when using the Microsoft SQL Server driver, fall back to
|
9
|
+
rollback_savepoint when release_savepoint is called (#484)
|
10
|
+
- [mysql] only kill the connections cancel timer for driver < 5.1.11
|
11
|
+
- [sqlite3] work-around driver ignoring passed schema for table (fixes #483)
|
12
|
+
- now using explicit adapter classes with H2/HSQLDB
|
13
|
+
- [postgres] Add support for array as root element in JSON (#491)
|
14
|
+
- [postgres] MRI compat - make sure we have a `query` method (fixes #486)
|
15
|
+
- db:structure:load does not create schema for test db (#480)
|
16
|
+
|
17
|
+
Code Contributors (in no particular order): Glenn Goodrich, Joao Carlos,
|
18
|
+
Jason Franklin, Dominique d'Argent, Sean McCarthy, Uwe Kubosch
|
19
|
+
|
1
20
|
## 1.3.2 (10/11/13)
|
2
21
|
|
3
22
|
- when "pop-ing" current savepoint name - consider open transaction count (#477)
|
data/README.md
CHANGED
@@ -179,14 +179,15 @@ that case simply setup your *Gemfile* as:
|
|
179
179
|
|
180
180
|
```ruby
|
181
181
|
gem 'activerecord', '~> 4.0.0'
|
182
|
-
gem 'activerecord-jdbc-adapter', '~> 1.3.
|
182
|
+
gem 'activerecord-jdbc-adapter', '~> 1.3.2', platform: :jruby
|
183
183
|
```
|
184
184
|
|
185
185
|
#### Without Bundler
|
186
186
|
|
187
|
-
Install the needed gems with JRuby:
|
187
|
+
Install the needed gems with JRuby, for example:
|
188
188
|
|
189
|
-
|
189
|
+
gem install activerecord -v "~> 3.2.10"
|
190
|
+
gem install activerecord-jdbc-adapter --ignore-dependencies
|
190
191
|
|
191
192
|
If you wish to use the adapter for a specific database, you can install it
|
192
193
|
directly and the (jdbc-) driver gem (dependency) will be installed as well:
|
data/gemfiles/rails23.gemfile
CHANGED
@@ -13,6 +13,6 @@ gem "bcrypt-ruby", "~> 3.0.0", :require=>nil, :group=>:test
|
|
13
13
|
gem "mysql2", :require=>nil, :platform=>:mri, :group=>:test
|
14
14
|
gem "pg", :require=>nil, :platform=>:mri, :group=>:test
|
15
15
|
gem "sqlite3", :require=>nil, :platform=>:mri, :group=>:test
|
16
|
-
gem "activerecord", "~> 2.3.18"
|
16
|
+
gem "activerecord", "~> 2.3.18", :require=>false
|
17
17
|
gem "rails", "~> 2.3.18"
|
18
18
|
|
data/gemfiles/rails30.gemfile
CHANGED
@@ -13,5 +13,5 @@ gem "bcrypt-ruby", "~> 3.0.0", :require=>nil, :group=>:test
|
|
13
13
|
gem "mysql2", :require=>nil, :platform=>:mri, :group=>:test
|
14
14
|
gem "pg", :require=>nil, :platform=>:mri, :group=>:test
|
15
15
|
gem "sqlite3", :require=>nil, :platform=>:mri, :group=>:test
|
16
|
-
gem "activerecord", "~> 3.0.20"
|
16
|
+
gem "activerecord", "~> 3.0.20", :require=>false
|
17
17
|
|
data/gemfiles/rails31.gemfile
CHANGED
@@ -13,5 +13,5 @@ gem "bcrypt-ruby", "~> 3.0.0", :require=>nil, :group=>:test
|
|
13
13
|
gem "mysql2", :require=>nil, :platform=>:mri, :group=>:test
|
14
14
|
gem "pg", :require=>nil, :platform=>:mri, :group=>:test
|
15
15
|
gem "sqlite3", :require=>nil, :platform=>:mri, :group=>:test
|
16
|
-
gem "activerecord", "~> 3.1.12"
|
16
|
+
gem "activerecord", "~> 3.1.12", :require=>false
|
17
17
|
|
data/gemfiles/rails32.gemfile
CHANGED
@@ -13,5 +13,5 @@ gem "bcrypt-ruby", "~> 3.0.0", :require=>nil, :group=>:test
|
|
13
13
|
gem "mysql2", :require=>nil, :platform=>:mri, :group=>:test
|
14
14
|
gem "pg", :require=>nil, :platform=>:mri, :group=>:test
|
15
15
|
gem "sqlite3", :require=>nil, :platform=>:mri, :group=>:test
|
16
|
-
gem "activerecord", "~> 3.2.
|
16
|
+
gem "activerecord", "~> 3.2.15", :require=>false
|
17
17
|
|
@@ -1,27 +1,27 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
activemodel (3.2.
|
5
|
-
activesupport (= 3.2.
|
4
|
+
activemodel (3.2.15)
|
5
|
+
activesupport (= 3.2.15)
|
6
6
|
builder (~> 3.0.0)
|
7
|
-
activerecord (3.2.
|
8
|
-
activemodel (= 3.2.
|
9
|
-
activesupport (= 3.2.
|
7
|
+
activerecord (3.2.15)
|
8
|
+
activemodel (= 3.2.15)
|
9
|
+
activesupport (= 3.2.15)
|
10
10
|
arel (~> 3.0.2)
|
11
11
|
tzinfo (~> 0.3.29)
|
12
|
-
activesupport (3.2.
|
12
|
+
activesupport (3.2.15)
|
13
13
|
i18n (~> 0.6, >= 0.6.4)
|
14
14
|
multi_json (~> 1.0)
|
15
15
|
appraisal (0.5.2)
|
16
16
|
bundler
|
17
17
|
rake
|
18
18
|
arel (3.0.2)
|
19
|
-
atomic (1.1.
|
20
|
-
atomic (1.1.
|
19
|
+
atomic (1.1.14)
|
20
|
+
atomic (1.1.14-java)
|
21
21
|
bcrypt-ruby (3.0.1)
|
22
22
|
bcrypt-ruby (3.0.1-java)
|
23
23
|
builder (3.0.4)
|
24
|
-
i18n (0.6.
|
24
|
+
i18n (0.6.5)
|
25
25
|
metaclass (0.0.1)
|
26
26
|
mocha (0.13.3)
|
27
27
|
metaclass (~> 0.0.1)
|
@@ -37,18 +37,18 @@ GEM
|
|
37
37
|
test-unit (2.5.4)
|
38
38
|
test-unit-context (0.3.1)
|
39
39
|
test-unit (>= 2.4.0)
|
40
|
-
thread_safe (0.1.
|
40
|
+
thread_safe (0.1.3)
|
41
41
|
atomic
|
42
|
-
thread_safe (0.1.
|
42
|
+
thread_safe (0.1.3-java)
|
43
43
|
atomic
|
44
|
-
tzinfo (0.3.
|
44
|
+
tzinfo (0.3.38)
|
45
45
|
|
46
46
|
PLATFORMS
|
47
47
|
java
|
48
48
|
ruby
|
49
49
|
|
50
50
|
DEPENDENCIES
|
51
|
-
activerecord (~> 3.2.
|
51
|
+
activerecord (~> 3.2.15)
|
52
52
|
appraisal
|
53
53
|
bcrypt-ruby (~> 3.0.0)
|
54
54
|
mocha (~> 0.13.1)
|
data/gemfiles/rails40.gemfile
CHANGED
@@ -13,5 +13,5 @@ gem "bcrypt-ruby", "~> 3.0.0", :require=>nil, :group=>:test
|
|
13
13
|
gem "mysql2", :require=>nil, :platform=>:mri, :group=>:test
|
14
14
|
gem "pg", :require=>nil, :platform=>:mri, :group=>:test
|
15
15
|
gem "sqlite3", :require=>nil, :platform=>:mri, :group=>:test
|
16
|
-
gem "activerecord", "~> 4.0.0"
|
16
|
+
gem "activerecord", "~> 4.0.0", :require=>false
|
17
17
|
|
@@ -19,18 +19,16 @@ GEM
|
|
19
19
|
appraisal (0.5.2)
|
20
20
|
bundler
|
21
21
|
rake
|
22
|
-
arel (4.0.
|
23
|
-
atomic (1.1.
|
24
|
-
atomic (1.1.10-java)
|
25
|
-
bcrypt-ruby (3.0.1)
|
22
|
+
arel (4.0.1)
|
23
|
+
atomic (1.1.14-java)
|
26
24
|
bcrypt-ruby (3.0.1-java)
|
27
25
|
builder (3.1.4)
|
28
|
-
i18n (0.6.
|
26
|
+
i18n (0.6.5)
|
29
27
|
metaclass (0.0.1)
|
30
28
|
minitest (4.7.5)
|
31
29
|
mocha (0.13.3)
|
32
30
|
metaclass (~> 0.0.1)
|
33
|
-
multi_json (1.
|
31
|
+
multi_json (1.8.2)
|
34
32
|
rake (10.1.0)
|
35
33
|
simplecov (0.7.1)
|
36
34
|
multi_json (~> 1.0)
|
@@ -39,13 +37,12 @@ GEM
|
|
39
37
|
test-unit (2.5.4)
|
40
38
|
test-unit-context (0.3.1)
|
41
39
|
test-unit (>= 2.4.0)
|
42
|
-
thread_safe (0.1.
|
40
|
+
thread_safe (0.1.3-java)
|
43
41
|
atomic
|
44
|
-
tzinfo (0.3.
|
42
|
+
tzinfo (0.3.38)
|
45
43
|
|
46
44
|
PLATFORMS
|
47
45
|
java
|
48
|
-
ruby
|
49
46
|
|
50
47
|
DEPENDENCIES
|
51
48
|
activerecord (~> 4.0.0)
|
data/gemfiles/rails41.gemfile
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "activerecord"
|
6
5
|
gem "thread_safe", :require=>nil
|
7
6
|
gem "rake", :require=>nil
|
8
7
|
gem "appraisal", :require=>nil
|
@@ -14,5 +13,6 @@ gem "bcrypt-ruby", "~> 3.0.0", :require=>nil, :group=>:test
|
|
14
13
|
gem "mysql2", :require=>nil, :platform=>:mri, :group=>:test
|
15
14
|
gem "pg", :require=>nil, :platform=>:mri, :group=>:test
|
16
15
|
gem "sqlite3", :require=>nil, :platform=>:mri, :group=>:test
|
16
|
+
gem "activerecord", :github=>"rails/rails", :branch=>"master", :require=>false
|
17
17
|
gem "rails", :github=>"rails/rails", :branch=>"master"
|
18
18
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
GIT
|
2
2
|
remote: git://github.com/rails/rails.git
|
3
|
-
revision:
|
3
|
+
revision: 094e31ce6700993759c6f36db52afb0a43bfa71f
|
4
4
|
branch: master
|
5
5
|
specs:
|
6
6
|
actionmailer (4.1.0.beta)
|
@@ -33,6 +33,7 @@ GIT
|
|
33
33
|
actionmailer (= 4.1.0.beta)
|
34
34
|
actionpack (= 4.1.0.beta)
|
35
35
|
actionview (= 4.1.0.beta)
|
36
|
+
activemodel (= 4.1.0.beta)
|
36
37
|
activerecord (= 4.1.0.beta)
|
37
38
|
activesupport (= 4.1.0.beta)
|
38
39
|
bundler (>= 1.3.0, < 2.0)
|
@@ -50,28 +51,23 @@ GEM
|
|
50
51
|
appraisal (0.5.2)
|
51
52
|
bundler
|
52
53
|
rake
|
53
|
-
arel (4.0.
|
54
|
-
atomic (1.1.
|
55
|
-
atomic (1.1.13-java)
|
56
|
-
bcrypt-ruby (3.0.1)
|
54
|
+
arel (4.0.1)
|
55
|
+
atomic (1.1.14-java)
|
57
56
|
bcrypt-ruby (3.0.1-java)
|
58
57
|
builder (3.1.4)
|
59
58
|
erubis (2.7.0)
|
60
59
|
hike (1.2.3)
|
61
60
|
i18n (0.6.5)
|
62
|
-
json (1.8.
|
63
|
-
json (1.8.0-java)
|
61
|
+
json (1.8.1-java)
|
64
62
|
mail (2.5.4)
|
65
63
|
mime-types (~> 1.16)
|
66
64
|
treetop (~> 1.4.8)
|
67
65
|
metaclass (0.0.1)
|
68
|
-
mime-types (1.
|
69
|
-
minitest (5.0.
|
66
|
+
mime-types (1.25)
|
67
|
+
minitest (5.0.8)
|
70
68
|
mocha (0.13.3)
|
71
69
|
metaclass (~> 0.0.1)
|
72
|
-
multi_json (1.
|
73
|
-
mysql2 (0.3.13)
|
74
|
-
pg (0.16.0)
|
70
|
+
multi_json (1.8.2)
|
75
71
|
polyglot (0.3.3)
|
76
72
|
rack (1.5.2)
|
77
73
|
rack-test (0.6.2)
|
@@ -86,31 +82,27 @@ GEM
|
|
86
82
|
multi_json (~> 1.0)
|
87
83
|
rack (~> 1.0)
|
88
84
|
tilt (~> 1.1, != 1.3.0)
|
89
|
-
sprockets-rails (2.0.
|
85
|
+
sprockets-rails (2.0.1)
|
90
86
|
actionpack (>= 3.0)
|
91
87
|
activesupport (>= 3.0)
|
92
88
|
sprockets (~> 2.8)
|
93
|
-
sqlite3 (1.3.8)
|
94
89
|
test-unit (2.5.4)
|
95
90
|
test-unit-context (0.3.1)
|
96
91
|
test-unit (>= 2.4.0)
|
97
92
|
thor (0.18.1)
|
98
|
-
thread_safe (0.1.
|
99
|
-
atomic
|
100
|
-
thread_safe (0.1.2-java)
|
93
|
+
thread_safe (0.1.3-java)
|
101
94
|
atomic
|
102
95
|
tilt (1.4.1)
|
103
96
|
treetop (1.4.15)
|
104
97
|
polyglot
|
105
98
|
polyglot (>= 0.3.1)
|
106
|
-
tzinfo (0.3.
|
99
|
+
tzinfo (0.3.38)
|
107
100
|
|
108
101
|
PLATFORMS
|
109
102
|
java
|
110
|
-
ruby
|
111
103
|
|
112
104
|
DEPENDENCIES
|
113
|
-
activerecord
|
105
|
+
activerecord!
|
114
106
|
appraisal
|
115
107
|
bcrypt-ruby (~> 3.0.0)
|
116
108
|
mocha (~> 0.13.1)
|
data/lib/arjdbc.rb
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
if defined?(JRUBY_VERSION)
|
2
2
|
begin
|
3
3
|
require 'active_record/version'
|
4
|
-
|
5
|
-
if defined?(RAILS_CONNECTION_ADAPTERS)
|
6
|
-
RAILS_CONNECTION_ADAPTERS << %q(jdbc)
|
7
|
-
else
|
8
|
-
RAILS_CONNECTION_ADAPTERS = %w(jdbc)
|
9
|
-
end
|
10
|
-
else
|
11
|
-
require 'active_record'
|
12
|
-
end
|
4
|
+
require 'active_record'
|
13
5
|
rescue LoadError => e
|
14
6
|
warn "activerecord-jdbc-adapter requires the activerecord gem at runtime"
|
15
7
|
raise e
|
data/lib/arjdbc/derby/adapter.rb
CHANGED
@@ -147,6 +147,13 @@ module ArJdbc
|
|
147
147
|
NATIVE_DATABASE_TYPES
|
148
148
|
end
|
149
149
|
|
150
|
+
# Ensure the savepoint name is unused before creating it.
|
151
|
+
# @override
|
152
|
+
def create_savepoint(name = current_savepoint_name(true))
|
153
|
+
release_savepoint(name) if @connection.marked_savepoint_names.include?(name)
|
154
|
+
super(name)
|
155
|
+
end
|
156
|
+
|
150
157
|
# @override
|
151
158
|
def quote(value, column = nil)
|
152
159
|
return value.quoted_id if value.respond_to?(:quoted_id)
|
data/lib/arjdbc/h2/adapter.rb
CHANGED
@@ -16,6 +16,7 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
16
16
|
end
|
17
17
|
config[:driver] ||= defined?(::Jdbc::H2.driver_name) ? ::Jdbc::H2.driver_name : 'org.h2.Driver'
|
18
18
|
config[:adapter_spec] ||= ::ArJdbc::H2
|
19
|
+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::H2Adapter unless config.key?(:adapter_class)
|
19
20
|
|
20
21
|
embedded_driver(config)
|
21
22
|
end
|
@@ -16,6 +16,7 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
16
16
|
end
|
17
17
|
config[:driver] ||= defined?(::Jdbc::HSQLDB.driver_name) ? ::Jdbc::HSQLDB.driver_name : 'org.hsqldb.jdbcDriver'
|
18
18
|
config[:adapter_spec] ||= ::ArJdbc::HSQLDB
|
19
|
+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::HsqldbAdapter unless config.key?(:adapter_class)
|
19
20
|
config[:connection_alive_sql] ||= 'CALL PI()' # does not like 'SELECT 1'
|
20
21
|
|
21
22
|
embedded_driver(config)
|
Binary file
|
data/lib/arjdbc/mssql/adapter.rb
CHANGED
@@ -11,7 +11,6 @@ module ArJdbc
|
|
11
11
|
module MSSQL
|
12
12
|
include LimitHelpers
|
13
13
|
include Utils
|
14
|
-
|
15
14
|
include ExplainSupport
|
16
15
|
|
17
16
|
# @private
|
@@ -578,6 +577,15 @@ module ArJdbc
|
|
578
577
|
end
|
579
578
|
end
|
580
579
|
|
580
|
+
# @override
|
581
|
+
def release_savepoint(name = current_savepoint_name)
|
582
|
+
if @connection.jtds_driver?
|
583
|
+
@connection.release_savepoint(name)
|
584
|
+
else # MS invented it's "own" way
|
585
|
+
@connection.rollback_savepoint(name)
|
586
|
+
end
|
587
|
+
end
|
588
|
+
|
581
589
|
private
|
582
590
|
|
583
591
|
def _execute(sql, name = nil)
|
@@ -5,6 +5,8 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
5
5
|
# If you'd like to use the "official" MS's SQL-JDBC driver, it's preferable
|
6
6
|
# to use the {#sqlserver_connection} method (set `adapter: sqlserver`).
|
7
7
|
def mssql_connection(config)
|
8
|
+
# NOTE: this detection ain't perfect and is only meant as a temporary hack
|
9
|
+
# users will get a deprecation eventually to use `adapter: sqlserver` ...
|
8
10
|
if config[:driver] =~ /SQLServerDriver$/ || config[:url] =~ /^jdbc:sqlserver:/
|
9
11
|
return sqlserver_connection(config)
|
10
12
|
end
|
@@ -68,4 +70,4 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
68
70
|
end
|
69
71
|
alias_method :jdbcsqlserver_connection, :sqlserver_connection
|
70
72
|
|
71
|
-
end
|
73
|
+
end
|
@@ -25,8 +25,9 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
25
25
|
properties = ( config[:properties] ||= {} )
|
26
26
|
properties['zeroDateTimeBehavior'] ||= 'convertToNull'
|
27
27
|
properties['jdbcCompliantTruncation'] ||= 'false'
|
28
|
-
properties['useUnicode']
|
29
|
-
|
28
|
+
properties['useUnicode'] = 'true' unless properties.key?('useUnicode') # otherwise platform default
|
29
|
+
encoding = config.key?(:encoding) ? config[:encoding] : 'utf8'
|
30
|
+
properties['characterEncoding'] = encoding if encoding
|
30
31
|
|
31
32
|
jdbc_connection(config)
|
32
33
|
end
|
@@ -552,6 +552,18 @@ module ArJdbc
|
|
552
552
|
end
|
553
553
|
end
|
554
554
|
|
555
|
+
# @note Only for "better" AR 4.0 compatibility.
|
556
|
+
# @private
|
557
|
+
def query(sql, name = nil)
|
558
|
+
log(sql, name) do
|
559
|
+
result = []
|
560
|
+
@connection.execute_query_raw(sql, nil) do |*values|
|
561
|
+
result << values
|
562
|
+
end
|
563
|
+
result
|
564
|
+
end
|
565
|
+
end
|
566
|
+
|
555
567
|
# Returns an array of schema names.
|
556
568
|
def schema_names
|
557
569
|
select_values(
|
@@ -817,6 +829,9 @@ module ArJdbc
|
|
817
829
|
if AR4_COMPAT && column.array? # will be always falsy in AR < 4.0
|
818
830
|
column_class = ::ActiveRecord::ConnectionAdapters::PostgreSQLColumn
|
819
831
|
"'#{column_class.array_to_string(value, column, self).gsub(/'/, "''")}'"
|
832
|
+
elsif column.type == :json # only in AR-4.0
|
833
|
+
column_class = ::ActiveRecord::ConnectionAdapters::PostgreSQLColumn
|
834
|
+
super(column_class.json_to_string(value), column)
|
820
835
|
else super
|
821
836
|
end
|
822
837
|
when Hash
|
@@ -6,21 +6,24 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
6
6
|
rescue LoadError # assuming driver.jar is on the class-path
|
7
7
|
end
|
8
8
|
|
9
|
-
host = config[:host] ||= ( config[:hostaddr] || 'localhost' )
|
10
|
-
port = config[:port] ||= 5432
|
11
|
-
database = config[:database] || config[:dbname]
|
9
|
+
host = config[:host] ||= ( config[:hostaddr] || ENV['PGHOST'] || 'localhost' )
|
10
|
+
port = config[:port] ||= ( ENV['PGPORT'] || 5432 )
|
11
|
+
database = config[:database] || config[:dbname] || ENV['PGDATABASE']
|
12
12
|
|
13
13
|
config[:url] ||= "jdbc:postgresql://#{host}:#{port}/#{database}"
|
14
14
|
config[:url] << config[:pg_params] if config[:pg_params] # should go away
|
15
15
|
|
16
|
-
config[:username] ||= config[:user] || ENV_JAVA['user.name']
|
16
|
+
config[:username] ||= ( config[:user] || ENV['PGUSER'] || ENV_JAVA['user.name'] )
|
17
|
+
config[:password] ||= ENV['PGPASSWORD'] unless config.key?(:password)
|
17
18
|
properties = ( config[:properties] ||= {} )
|
18
19
|
# PG :connect_timeout - maximum time to wait for connection to succeed
|
19
|
-
if connect_timeout = config[:connect_timeout]
|
20
|
+
if connect_timeout = ( config[:connect_timeout] || ENV['PGCONNECT_TIMEOUT'] )
|
20
21
|
properties['socketTimeout'] ||= connect_timeout
|
21
22
|
# NOTE: maybe set options['loginTimeout'] as well?
|
22
23
|
end
|
23
24
|
sslmode = config.key?(:sslmode) ? config[:sslmode] : config[:requiressl]
|
25
|
+
# NOTE: makes not much sense since this needs some JVM options :
|
26
|
+
# sslmode = ENV['PGSSLMODE'] || ENV['PGREQUIRESSL'] if sslmode.nil?
|
24
27
|
unless sslmode.nil? # PG :sslmode - disable|allow|prefer|require
|
25
28
|
# JRuby/JVM needs to be started with :
|
26
29
|
# -Djavax.net.ssl.trustStore=mystore -Djavax.net.ssl.trustStorePassword=...
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module ArJdbc
|
2
2
|
module Tasks
|
3
|
-
|
3
|
+
|
4
4
|
if defined? ActiveRecord::Tasks::DatabaseTasks # AR-4.x
|
5
|
-
|
5
|
+
|
6
6
|
def self.register_tasks(pattern, task)
|
7
7
|
ActiveRecord::Tasks::DatabaseTasks.register_task(pattern, task)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
else
|
11
|
-
|
11
|
+
|
12
12
|
@@tasks = {}
|
13
13
|
|
14
14
|
def self.register_tasks(pattern, task)
|
@@ -20,9 +20,9 @@ module ArJdbc
|
|
20
20
|
key = @@tasks.keys.detect { |pattern| adapter[pattern] }
|
21
21
|
( @@tasks[key] || JdbcDatabaseTasks ).new(config)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
require 'arjdbc/tasks/jdbc_database_tasks'
|
27
27
|
require 'arjdbc/tasks/db2_database_tasks'
|
28
28
|
require 'arjdbc/tasks/derby_database_tasks'
|
@@ -30,21 +30,22 @@ module ArJdbc
|
|
30
30
|
require 'arjdbc/tasks/hsqldb_database_tasks'
|
31
31
|
require 'arjdbc/tasks/mssql_database_tasks'
|
32
32
|
require 'arjdbc/tasks/oracle_database_tasks'
|
33
|
-
|
33
|
+
|
34
34
|
# re-invent built-in (but deprecated on 4.0) tasks :
|
35
|
-
register_tasks(/
|
36
|
-
register_tasks(/(oci|oracle)
|
35
|
+
register_tasks(/sqlserver/, MSSQLDatabaseTasks)
|
36
|
+
register_tasks(/(oci|oracle)/, OracleDatabaseTasks)
|
37
|
+
register_tasks(/mssql/, MSSQLDatabaseTasks) # (built-in) alias
|
37
38
|
# tasks for custom (JDBC) adapters :
|
38
|
-
register_tasks(/db2
|
39
|
-
register_tasks(/derby
|
40
|
-
register_tasks(/h2
|
41
|
-
register_tasks(/hsqldb
|
39
|
+
register_tasks(/db2/, DB2DatabaseTasks)
|
40
|
+
register_tasks(/derby/, DerbyDatabaseTasks)
|
41
|
+
register_tasks(/h2/, H2DatabaseTasks)
|
42
|
+
register_tasks(/hsqldb/, HSQLDBDatabaseTasks)
|
42
43
|
# (default) generic JDBC task :
|
43
|
-
register_tasks(/^jdbc
|
44
|
-
|
44
|
+
register_tasks(/^jdbc$/, JdbcDatabaseTasks)
|
45
|
+
|
45
46
|
# NOTE: no need to register "built-in" adapters such as MySQL
|
46
47
|
# - on 4.0 these are registered and will be instantiated
|
47
48
|
# - while on 2.3/3.x we keep the AR built-in task behavior
|
48
|
-
|
49
|
+
|
49
50
|
end
|
50
51
|
end
|
@@ -41,6 +41,10 @@ namespace :db do
|
|
41
41
|
defined?(Rails.env) ? Rails.env : ( RAILS_ENV || 'development' )
|
42
42
|
end
|
43
43
|
|
44
|
+
if defined? adapt_jdbc_config
|
45
|
+
puts "ArJdbc: double loading #{__FILE__} please delete lib/rasks/jdbc.rake if present!"
|
46
|
+
end
|
47
|
+
|
44
48
|
def adapt_jdbc_config(config)
|
45
49
|
return config unless config['adapter']
|
46
50
|
config.merge 'adapter' => config['adapter'].sub(/^jdbc/, '')
|
@@ -118,7 +118,7 @@ namespace :db do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
redefine_task :load do
|
121
|
-
config =
|
121
|
+
config = current_config
|
122
122
|
filename = structure_sql
|
123
123
|
|
124
124
|
case config['adapter']
|
@@ -200,4 +200,4 @@ namespace :db do
|
|
200
200
|
|
201
201
|
end
|
202
202
|
|
203
|
-
end
|
203
|
+
end
|
data/lib/arjdbc/version.rb
CHANGED
data/lib/generators/jdbc/USAGE
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
Description:
|
2
|
-
Creates stubs that ensure
|
3
|
-
your Rails application.
|
2
|
+
Creates stubs that ensure AR-JDBC is bootstrapped in your Rails application.
|
4
3
|
|
5
4
|
Example:
|
6
5
|
./script/generate jdbc
|
7
6
|
|
8
7
|
This will create:
|
9
8
|
config/initializers/jdbc.rb
|
10
|
-
|
9
|
+
lib/tasks/jdbc.rake
|
@@ -6,4 +6,12 @@ class JdbcGenerator < Rails::Generators::Base
|
|
6
6
|
def create_jdbc_files
|
7
7
|
directory '.', '.'
|
8
8
|
end
|
9
|
+
|
10
|
+
def self.desc(description=nil)
|
11
|
+
return super if description
|
12
|
+
"Description:\n" <<
|
13
|
+
" Creates stubs that ensure AR-JDBC is bootstrapped in your Rails application.\n" <<
|
14
|
+
" NOTE: you should not need this if you're on Rails >= 3.0 (using Bundler) ..."
|
15
|
+
end
|
16
|
+
|
9
17
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
# @deprecated
|
2
|
+
warn "DEPRECATED: load 'arjdbc/tasks.rb' instead of 'jdbc_adapter/rake_tasks.rb'"
|
3
|
+
require 'arjdbc/tasks.rb'
|
data/lib/jdbc_adapter/version.rb
CHANGED
@@ -991,32 +991,37 @@ public class RubyJdbcConnection extends RubyObject {
|
|
991
991
|
return context.getRuntime().newArray(primaryKeys);
|
992
992
|
}
|
993
993
|
|
994
|
-
|
994
|
+
protected static final int PRIMARY_KEYS_COLUMN_NAME = 4;
|
995
995
|
|
996
|
+
@Deprecated // NOTE: this should go private
|
996
997
|
protected List<RubyString> primaryKeys(final ThreadContext context, final String tableName) {
|
997
998
|
return withConnection(context, new Callable<List<RubyString>>() {
|
998
999
|
public List<RubyString> call(final Connection connection) throws SQLException {
|
999
|
-
final Ruby runtime = context.getRuntime();
|
1000
1000
|
final String _tableName = caseConvertIdentifierForJdbc(connection, tableName);
|
1001
|
-
final
|
1002
|
-
|
1003
|
-
final List<RubyString> keyNames = new ArrayList<RubyString>();
|
1004
|
-
try {
|
1005
|
-
TableName components = extractTableName(connection, null, _tableName);
|
1006
|
-
resultSet = metaData.getPrimaryKeys(components.catalog, components.schema, components.name);
|
1007
|
-
|
1008
|
-
while (resultSet.next()) {
|
1009
|
-
String columnName = resultSet.getString(PRIMARY_KEYS_COLUMN_NAME);
|
1010
|
-
columnName = caseConvertIdentifierForRails(connection, columnName);
|
1011
|
-
keyNames.add( RubyString.newUnicodeString(runtime, columnName) );
|
1012
|
-
}
|
1013
|
-
}
|
1014
|
-
finally { close(resultSet); }
|
1015
|
-
return keyNames;
|
1001
|
+
final TableName table = extractTableName(connection, null, _tableName);
|
1002
|
+
return primaryKeys(context, connection, table);
|
1016
1003
|
}
|
1017
1004
|
});
|
1018
1005
|
}
|
1019
1006
|
|
1007
|
+
protected List<RubyString> primaryKeys(final ThreadContext context,
|
1008
|
+
final Connection connection, final TableName table) throws SQLException {
|
1009
|
+
final DatabaseMetaData metaData = connection.getMetaData();
|
1010
|
+
ResultSet resultSet = null;
|
1011
|
+
final List<RubyString> keyNames = new ArrayList<RubyString>();
|
1012
|
+
try {
|
1013
|
+
resultSet = metaData.getPrimaryKeys(table.catalog, table.schema, table.name);
|
1014
|
+
final Ruby runtime = context.getRuntime();
|
1015
|
+
while ( resultSet.next() ) {
|
1016
|
+
String columnName = resultSet.getString(PRIMARY_KEYS_COLUMN_NAME);
|
1017
|
+
columnName = caseConvertIdentifierForRails(connection, columnName);
|
1018
|
+
keyNames.add( RubyString.newUnicodeString(runtime, columnName) );
|
1019
|
+
}
|
1020
|
+
}
|
1021
|
+
finally { close(resultSet); }
|
1022
|
+
return keyNames;
|
1023
|
+
}
|
1024
|
+
|
1020
1025
|
@JRubyMethod(name = "tables")
|
1021
1026
|
public IRubyObject tables(ThreadContext context) {
|
1022
1027
|
return tables(context, null, null, null, TABLE_TYPE);
|
@@ -1156,13 +1161,15 @@ public class RubyJdbcConnection extends RubyObject {
|
|
1156
1161
|
|
1157
1162
|
String _tableName = caseConvertIdentifierForJdbc(connection, tableName);
|
1158
1163
|
String _schemaName = caseConvertIdentifierForJdbc(connection, schemaName);
|
1159
|
-
final
|
1164
|
+
final TableName table = extractTableName(connection, _schemaName, _tableName);
|
1165
|
+
|
1166
|
+
final List<RubyString> primaryKeys = primaryKeys(context, connection, table);
|
1160
1167
|
|
1161
|
-
final List<RubyString> primaryKeys = primaryKeys(context, _tableName);
|
1162
1168
|
ResultSet indexInfoSet = null;
|
1163
1169
|
final List<IRubyObject> indexes = new ArrayList<IRubyObject>();
|
1164
1170
|
try {
|
1165
|
-
|
1171
|
+
final DatabaseMetaData metaData = connection.getMetaData();
|
1172
|
+
indexInfoSet = metaData.getIndexInfo(table.catalog, table.schema, table.name, false, true);
|
1166
1173
|
String currentIndex = null;
|
1167
1174
|
|
1168
1175
|
while ( indexInfoSet.next() ) {
|
@@ -3445,15 +3452,15 @@ public class RubyJdbcConnection extends RubyObject {
|
|
3445
3452
|
name = nameParts[2];
|
3446
3453
|
}
|
3447
3454
|
|
3448
|
-
if (schema != null) {
|
3455
|
+
if ( schema != null ) {
|
3449
3456
|
schema = caseConvertIdentifierForJdbc(connection, schema);
|
3450
3457
|
}
|
3451
3458
|
name = caseConvertIdentifierForJdbc(connection, name);
|
3452
3459
|
|
3453
|
-
if (schema != null && ! databaseSupportsSchemas()) {
|
3460
|
+
if ( schema != null && ! databaseSupportsSchemas() ) {
|
3454
3461
|
catalog = schema;
|
3455
3462
|
}
|
3456
|
-
if (catalog == null) catalog = connection.getCatalog();
|
3463
|
+
if ( catalog == null ) catalog = connection.getCatalog();
|
3457
3464
|
|
3458
3465
|
return new TableName(catalog, schema, name);
|
3459
3466
|
}
|
@@ -25,6 +25,9 @@
|
|
25
25
|
***** END LICENSE BLOCK *****/
|
26
26
|
package arjdbc.mssql;
|
27
27
|
|
28
|
+
import arjdbc.jdbc.Callable;
|
29
|
+
import arjdbc.jdbc.RubyJdbcConnection;
|
30
|
+
|
28
31
|
import java.sql.Connection;
|
29
32
|
import java.sql.DatabaseMetaData;
|
30
33
|
import java.sql.ResultSet;
|
@@ -47,7 +50,7 @@ import org.jruby.util.ByteList;
|
|
47
50
|
*
|
48
51
|
* @author nicksieger
|
49
52
|
*/
|
50
|
-
public class MSSQLRubyJdbcConnection extends
|
53
|
+
public class MSSQLRubyJdbcConnection extends RubyJdbcConnection {
|
51
54
|
|
52
55
|
protected MSSQLRubyJdbcConnection(Ruby runtime, RubyClass metaClass) {
|
53
56
|
super(runtime, metaClass);
|
@@ -162,4 +165,19 @@ public class MSSQLRubyJdbcConnection extends arjdbc.jdbc.RubyJdbcConnection {
|
|
162
165
|
return columns;
|
163
166
|
}
|
164
167
|
|
168
|
+
// internal helper not meant as a "public" API - used in one place thus every
|
169
|
+
@JRubyMethod(name = "jtds_driver?")
|
170
|
+
public IRubyObject jtds_driver_p(final ThreadContext context) throws SQLException {
|
171
|
+
// "jTDS Type 4 JDBC Driver for MS SQL Server and Sybase"
|
172
|
+
// SQLJDBC: "Microsoft JDBC Driver 4.0 for SQL Server"
|
173
|
+
return withConnection(context, new Callable<IRubyObject>() {
|
174
|
+
// NOTE: only used in one place for now (on release_savepoint) ...
|
175
|
+
// might get optimized to only happen once since driver won't change
|
176
|
+
public IRubyObject call(final Connection connection) throws SQLException {
|
177
|
+
final String driver = connection.getMetaData().getDriverName();
|
178
|
+
return context.getRuntime().newBoolean( driver.indexOf("jTDS") >= 0 );
|
179
|
+
}
|
180
|
+
});
|
181
|
+
}
|
182
|
+
|
165
183
|
}
|
@@ -41,6 +41,8 @@ import java.sql.Types;
|
|
41
41
|
import java.util.ArrayList;
|
42
42
|
import java.util.List;
|
43
43
|
import java.util.TimeZone;
|
44
|
+
import java.util.regex.Matcher;
|
45
|
+
import java.util.regex.Pattern;
|
44
46
|
|
45
47
|
import org.jruby.Ruby;
|
46
48
|
import org.jruby.RubyClass;
|
@@ -232,17 +234,46 @@ public class MySQLRubyJdbcConnection extends RubyJdbcConnection {
|
|
232
234
|
@Override
|
233
235
|
protected Connection newConnection() throws RaiseException, SQLException {
|
234
236
|
final Connection connection = super.newConnection();
|
235
|
-
killCancelTimer(connection);
|
237
|
+
if ( doKillCancelTimer(connection) ) killCancelTimer(connection);
|
236
238
|
return connection;
|
237
239
|
}
|
238
240
|
|
241
|
+
private static Boolean killCancelTimer;
|
242
|
+
static {
|
243
|
+
final String killTimer = System.getProperty("arjdbc.mysql.kill_cancel_timer");
|
244
|
+
if ( killTimer != null ) killCancelTimer = Boolean.parseBoolean(killTimer);
|
245
|
+
}
|
246
|
+
|
247
|
+
private static boolean doKillCancelTimer(final Connection connection) throws SQLException {
|
248
|
+
if ( killCancelTimer == null ) {
|
249
|
+
synchronized (MySQLRubyJdbcConnection.class) {
|
250
|
+
final String version = connection.getMetaData().getDriverVersion();
|
251
|
+
if ( killCancelTimer == null ) {
|
252
|
+
String regex = "mysql\\-connector\\-java-(\\d)\\.(\\d)\\.(\\d+)";
|
253
|
+
Matcher match = Pattern.compile(regex).matcher(version);
|
254
|
+
if ( match.find() ) {
|
255
|
+
final int major = Integer.parseInt( match.group(1) );
|
256
|
+
final int minor = Integer.parseInt( match.group(2) );
|
257
|
+
if ( major < 5 || ( major == 5 && minor <= 1 ) ) {
|
258
|
+
final int patch = Integer.parseInt( match.group(3) );
|
259
|
+
killCancelTimer = patch < 11;
|
260
|
+
}
|
261
|
+
}
|
262
|
+
else {
|
263
|
+
killCancelTimer = Boolean.FALSE;
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
}
|
268
|
+
return killCancelTimer;
|
269
|
+
}
|
270
|
+
|
239
271
|
/**
|
240
272
|
* HACK HACK HACK See http://bugs.mysql.com/bug.php?id=36565
|
241
273
|
* MySQL's statement cancel timer can cause memory leaks, so cancel it
|
242
274
|
* if we loaded MySQL classes from the same class-loader as JRuby
|
243
275
|
*
|
244
|
-
* NOTE:
|
245
|
-
* Connector/J supports JDBC 4.0 (Java 6+) which we now require at minimum
|
276
|
+
* NOTE: MySQL Connector/J 5.1.11 (2010-01-21) fixed the issue !
|
246
277
|
*/
|
247
278
|
private void killCancelTimer(final Connection connection) {
|
248
279
|
if (connection.getClass().getClassLoader() == getRuntime().getJRubyClassLoader()) {
|
@@ -116,6 +116,50 @@ public class SQLite3RubyJdbcConnection extends RubyJdbcConnection {
|
|
116
116
|
return statement;
|
117
117
|
}
|
118
118
|
|
119
|
+
@Override
|
120
|
+
protected IRubyObject indexes(final ThreadContext context, String tableName, final String name, String schemaName) {
|
121
|
+
int i = -1;
|
122
|
+
if ( tableName != null ) i = tableName.indexOf('.');
|
123
|
+
if ( i > 0 && schemaName == null ) {
|
124
|
+
schemaName = tableName.substring(0, i);
|
125
|
+
tableName = tableName.substring(i + 1);
|
126
|
+
}
|
127
|
+
return super.indexes(context, tableName, name, schemaName);
|
128
|
+
}
|
129
|
+
|
130
|
+
@Override
|
131
|
+
protected TableName extractTableName(
|
132
|
+
final Connection connection, String catalog, String schema,
|
133
|
+
final String tableName) throws IllegalArgumentException, SQLException {
|
134
|
+
|
135
|
+
final String[] nameParts = tableName.split("\\.");
|
136
|
+
if ( nameParts.length > 3 ) {
|
137
|
+
throw new IllegalArgumentException("table name: " + tableName + " should not contain more than 2 '.'");
|
138
|
+
}
|
139
|
+
|
140
|
+
String name = tableName;
|
141
|
+
|
142
|
+
if ( nameParts.length == 2 ) {
|
143
|
+
schema = nameParts[0];
|
144
|
+
name = nameParts[1];
|
145
|
+
}
|
146
|
+
else if ( nameParts.length == 3 ) {
|
147
|
+
catalog = nameParts[0];
|
148
|
+
schema = nameParts[1];
|
149
|
+
name = nameParts[2];
|
150
|
+
}
|
151
|
+
|
152
|
+
name = caseConvertIdentifierForJdbc(connection, name);
|
153
|
+
|
154
|
+
if ( schema != null ) {
|
155
|
+
schema = caseConvertIdentifierForJdbc(connection, schema);
|
156
|
+
// NOTE: hack to work-around SQLite JDBC ignoring schema :
|
157
|
+
return new TableName(catalog, null, schema + '.' + name);
|
158
|
+
}
|
159
|
+
|
160
|
+
return new TableName(catalog, schema, name);
|
161
|
+
}
|
162
|
+
|
119
163
|
@Override
|
120
164
|
protected IRubyObject jdbcToRuby(final ThreadContext context,
|
121
165
|
final Ruby runtime, final int column, int type, final ResultSet resultSet)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-jdbc-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sieger, Ola Bini and JRuby contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -248,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
248
|
version: '0'
|
249
249
|
requirements: []
|
250
250
|
rubyforge_project: jruby-extras
|
251
|
-
rubygems_version: 2.1.
|
251
|
+
rubygems_version: 2.1.9
|
252
252
|
signing_key:
|
253
253
|
specification_version: 4
|
254
254
|
summary: JDBC adapter for ActiveRecord, for use within JRuby on Rails.
|