activerecord-jdbc-adapter 1.3.0.beta1 → 1.3.0.beta2
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.
- data/.gitignore +12 -11
- data/.travis.yml +36 -7
- data/Appraisals +3 -3
- data/Gemfile +1 -1
- data/Gemfile.lock +13 -6
- data/History.txt +64 -0
- data/README.md +8 -1
- data/Rakefile +3 -1
- data/gemfiles/rails23.gemfile +1 -1
- data/gemfiles/rails23.gemfile.lock +6 -5
- data/gemfiles/rails30.gemfile +1 -1
- data/gemfiles/rails30.gemfile.lock +7 -6
- data/gemfiles/rails31.gemfile +1 -1
- data/gemfiles/rails31.gemfile.lock +6 -5
- data/gemfiles/rails32.gemfile +1 -1
- data/gemfiles/rails32.gemfile.lock +6 -5
- data/gemfiles/rails40.gemfile +2 -4
- data/gemfiles/rails40.gemfile.lock +37 -51
- data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
- data/lib/active_record/connection_adapters/db2_adapter.rb +1 -1
- data/lib/arel/visitors/db2.rb +5 -1
- data/lib/arel/visitors/hsqldb.rb +1 -0
- data/lib/arel/visitors/sql_server.rb +55 -13
- data/lib/arjdbc/db2/adapter.rb +197 -227
- data/lib/arjdbc/db2/as400.rb +124 -0
- data/lib/arjdbc/db2/connection_methods.rb +20 -1
- data/lib/arjdbc/derby/adapter.rb +17 -85
- data/lib/arjdbc/derby/connection_methods.rb +2 -1
- data/lib/arjdbc/discover.rb +55 -47
- data/lib/arjdbc/h2/adapter.rb +52 -18
- data/lib/arjdbc/h2/connection_methods.rb +10 -2
- data/lib/arjdbc/hsqldb/adapter.rb +33 -9
- data/lib/arjdbc/hsqldb/connection_methods.rb +10 -2
- data/lib/arjdbc/informix.rb +2 -1
- data/lib/arjdbc/jdbc.rb +5 -1
- data/lib/arjdbc/jdbc/adapter.rb +167 -89
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
- data/lib/arjdbc/jdbc/base_ext.rb +25 -3
- data/lib/arjdbc/jdbc/callbacks.rb +9 -8
- data/lib/arjdbc/jdbc/column.rb +8 -20
- data/lib/arjdbc/jdbc/connection.rb +69 -80
- data/lib/arjdbc/jdbc/extension.rb +6 -8
- data/lib/arjdbc/jdbc/jdbc.rake +3 -141
- data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
- data/lib/arjdbc/mssql/adapter.rb +108 -34
- data/lib/arjdbc/mssql/connection_methods.rb +3 -1
- data/lib/arjdbc/mssql/limit_helpers.rb +3 -2
- data/lib/arjdbc/mssql/lock_helpers.rb +5 -1
- data/lib/arjdbc/mysql/adapter.rb +127 -70
- data/lib/arjdbc/mysql/connection_methods.rb +5 -2
- data/lib/arjdbc/oracle/adapter.rb +124 -94
- data/lib/arjdbc/oracle/connection_methods.rb +2 -1
- data/lib/arjdbc/postgresql/adapter.rb +99 -67
- data/lib/arjdbc/postgresql/column_cast.rb +3 -5
- data/lib/arjdbc/postgresql/connection_methods.rb +6 -6
- data/lib/arjdbc/railtie.rb +3 -1
- data/lib/arjdbc/sqlite3/adapter.rb +60 -43
- data/lib/arjdbc/sqlite3/connection_methods.rb +9 -9
- data/lib/arjdbc/sybase.rb +1 -1
- data/lib/arjdbc/tasks.rb +13 -0
- data/lib/arjdbc/tasks/database_tasks.rb +50 -0
- data/lib/arjdbc/tasks/databases.rake +89 -0
- data/lib/arjdbc/tasks/databases3.rake +203 -0
- data/lib/arjdbc/tasks/databases4.rake +39 -0
- data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
- data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
- data/lib/arjdbc/tasks/h2_database_tasks.rb +29 -0
- data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
- data/lib/arjdbc/tasks/jdbc_database_tasks.rb +122 -0
- data/lib/arjdbc/tasks/mssql_database_tasks.rb +36 -0
- data/lib/arjdbc/tasks/oracle/enhanced_structure_dump.rb +297 -0
- data/lib/arjdbc/tasks/oracle_database_tasks.rb +62 -0
- data/lib/arjdbc/version.rb +1 -1
- data/pom.xml +11 -12
- data/rails_generators/jdbc_generator.rb +1 -1
- data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
- data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
- data/rakelib/02-test.rake +42 -15
- data/rakelib/compile.rake +29 -2
- data/rakelib/db.rake +2 -1
- data/rakelib/rails.rake +23 -6
- data/src/java/arjdbc/ArJdbcModule.java +175 -0
- data/src/java/arjdbc/db2/DB2Module.java +2 -1
- data/src/java/arjdbc/derby/DerbyModule.java +5 -24
- data/src/java/arjdbc/hsqldb/HSQLDBModule.java +3 -2
- data/src/java/arjdbc/jdbc/AdapterJavaService.java +3 -46
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +1001 -259
- data/src/java/arjdbc/mssql/MSSQLModule.java +2 -1
- data/src/java/arjdbc/mysql/MySQLModule.java +4 -3
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +12 -7
- data/src/java/arjdbc/oracle/OracleModule.java +2 -1
- data/src/java/arjdbc/sqlite3/SQLite3Module.java +2 -1
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +12 -0
- data/test/db/db2.rb +14 -7
- data/test/db/db2/rake_test.rb +82 -0
- data/test/db/db2/rake_test_data.sql +35 -0
- data/test/db/db2/simple_test.rb +20 -0
- data/test/db/db2/unit_test.rb +3 -1
- data/test/db/derby.rb +7 -5
- data/test/db/derby/rake_test.rb +96 -0
- data/test/db/derby/simple_test.rb +10 -2
- data/test/db/h2.rb +6 -8
- data/test/db/h2/identity_column_test.rb +35 -0
- data/test/db/h2/offset_test.rb +49 -0
- data/test/db/h2/rake_test.rb +98 -0
- data/test/db/h2/schema_dump_test.rb +5 -1
- data/test/db/hsqldb.rb +6 -10
- data/test/db/hsqldb/rake_test.rb +101 -0
- data/test/db/hsqldb/schema_dump_test.rb +5 -1
- data/test/db/hsqldb/simple_test.rb +8 -0
- data/test/db/jndi_config.rb +1 -3
- data/test/db/jndi_pooled_config.rb +1 -3
- data/test/db/mssql/limit_offset_test.rb +23 -14
- data/test/db/mssql/rake_test.rb +143 -0
- data/test/db/mysql/_rails_test_mysql.32.out +1069 -1252
- data/test/db/mysql/nonstandard_primary_key_test.rb +21 -24
- data/test/db/mysql/rake_test.rb +97 -0
- data/test/db/mysql/schema_dump_test.rb +11 -11
- data/test/db/mysql/simple_test.rb +52 -3
- data/test/db/mysql/statement_escaping_test.rb +46 -0
- data/test/db/oracle/rake_test.rb +100 -0
- data/test/db/oracle/simple_test.rb +48 -0
- data/test/db/postgres/_rails_test_postgres.32.out +998 -1370
- data/test/db/postgres/active_schema_unit_test.rb +68 -0
- data/test/db/postgres/connection_test.rb +10 -2
- data/test/db/postgres/data_types_test.rb +2 -2
- data/test/db/postgres/ltree_test.rb +6 -5
- data/test/db/postgres/native_types_test.rb +1 -5
- data/test/db/postgres/rake_test.rb +117 -0
- data/test/db/postgres/schema_dump_test.rb +9 -2
- data/test/db/postgres/schema_test.rb +4 -2
- data/test/db/postgres/simple_test.rb +57 -16
- data/test/db/sqlite3.rb +3 -10
- data/test/db/sqlite3/_rails_test_sqlite3.32.out +1070 -1298
- data/test/db/sqlite3/rake_test.rb +71 -0
- data/test/db/sqlite3/simple_test.rb +9 -9
- data/test/has_many_through.rb +4 -1
- data/test/jdbc/db2.rb +14 -1
- data/test/jdbc_column_test.rb +23 -0
- data/test/{generic_jdbc_connection_test.rb → jdbc_connection_test.rb} +22 -17
- data/test/jndi_callbacks_test.rb +26 -28
- data/test/jndi_test.rb +7 -16
- data/test/models/data_types.rb +2 -1
- data/test/models/thing.rb +1 -0
- data/test/rails/mysql.rb +13 -0
- data/test/rails/sqlite3/version.rb +6 -0
- data/test/rails_stub.rb +31 -0
- data/test/rake_test_support.rb +298 -0
- data/test/serialize.rb +2 -4
- data/test/{helper.rb → shared_helper.rb} +0 -0
- data/test/simple.rb +167 -93
- data/test/test_helper.rb +52 -16
- metadata +388 -354
- data/lib/pg.rb +0 -26
- data/test/abstract_db_create.rb +0 -139
- data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -36
- data/test/db/mssql/db_create_test.rb +0 -29
- data/test/db/mysql/db_create_test.rb +0 -33
- data/test/db/postgres/db_create_test.rb +0 -44
- data/test/db/postgres/db_drop_test.rb +0 -17
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'rake_test_support'
|
|
2
|
+
require 'db/sqlite3'
|
|
3
|
+
|
|
4
|
+
class SQLite3RakeTest < Test::Unit::TestCase
|
|
5
|
+
include RakeTestSupport
|
|
6
|
+
|
|
7
|
+
def db_name; 'rake_test.sqlite3'; end
|
|
8
|
+
|
|
9
|
+
def do_setup
|
|
10
|
+
File.delete('rake_test.sqlite3') if File.exists?('rake_test.sqlite3')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def do_teardown
|
|
14
|
+
File.delete('rake_test.sqlite3') if File.exists?('rake_test.sqlite3')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
test 'rake db:create (and db:drop)' do
|
|
18
|
+
Rake::Task["db:create"].invoke
|
|
19
|
+
assert_true File.exists?('rake_test.sqlite3')
|
|
20
|
+
|
|
21
|
+
Rake::Task["db:drop"].invoke
|
|
22
|
+
assert_false File.exists?('rake_test.sqlite3')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test 'rake db:test:purge' do
|
|
26
|
+
# Rake::Task["db:create"].invoke
|
|
27
|
+
ActiveRecord::Base.establish_connection db_config.merge :database => db_name
|
|
28
|
+
ActiveRecord::Base.connection.create_table('users') { |t| t.string :name }
|
|
29
|
+
ActiveRecord::Base.connection.disconnect!
|
|
30
|
+
|
|
31
|
+
Rake::Task["db:test:purge"].invoke
|
|
32
|
+
|
|
33
|
+
ActiveRecord::Base.establish_connection db_config.merge :database => db_name
|
|
34
|
+
assert_false ActiveRecord::Base.connection.table_exists?('users')
|
|
35
|
+
ActiveRecord::Base.connection.disconnect!
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
test 'rake db:structure:dump (and db:structure:load)' do
|
|
39
|
+
omit('sqlite3 not available') unless self.class.find_executable?('sqlite3')
|
|
40
|
+
create_rake_test_database do |connection|
|
|
41
|
+
create_schema_migrations_table(connection)
|
|
42
|
+
connection.create_table('users') { |t| t.string :name; t.timestamps }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
structure_sql = File.join('db', structure_sql_filename)
|
|
46
|
+
begin
|
|
47
|
+
Dir.mkdir 'db' # db/structure.sql
|
|
48
|
+
Rake::Task["db:structure:dump"].invoke
|
|
49
|
+
|
|
50
|
+
assert File.exists?(structure_sql)
|
|
51
|
+
assert_match /CREATE TABLE .*?users/, File.read(structure_sql)
|
|
52
|
+
|
|
53
|
+
# db:structure:load
|
|
54
|
+
File.delete('rake_test.sqlite3')
|
|
55
|
+
Rake::Task["db:structure:load"].invoke
|
|
56
|
+
|
|
57
|
+
ActiveRecord::Base.establish_connection db_config.merge :database => db_name
|
|
58
|
+
assert ActiveRecord::Base.connection.table_exists?('users')
|
|
59
|
+
ActiveRecord::Base.connection.disconnect!
|
|
60
|
+
ensure
|
|
61
|
+
File.delete(structure_sql) if File.exists?(structure_sql)
|
|
62
|
+
Dir.rmdir 'db'
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
test 'rake db:charset' do
|
|
67
|
+
expect_rake_output('UTF-8')
|
|
68
|
+
Rake::Task["db:charset"].invoke
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
@@ -55,26 +55,26 @@ class SQLite3SimpleTest < Test::Unit::TestCase
|
|
|
55
55
|
cols = ActiveRecord::Base.connection.columns("entries")
|
|
56
56
|
assert cols.find {|col| col.name == "test_remove_column"}
|
|
57
57
|
|
|
58
|
-
assert_nothing_raised do
|
|
58
|
+
#assert_nothing_raised do
|
|
59
59
|
ActiveRecord::Schema.define do
|
|
60
60
|
remove_column "entries", "test_remove_column"
|
|
61
61
|
end
|
|
62
|
-
end
|
|
62
|
+
#end
|
|
63
63
|
|
|
64
64
|
cols = ActiveRecord::Base.connection.columns("entries")
|
|
65
|
-
|
|
65
|
+
assert_nil cols.find {|col| col.name == "test_remove_column"}
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def test_rename_column
|
|
69
|
-
assert_nothing_raised do
|
|
69
|
+
#assert_nothing_raised do
|
|
70
70
|
ActiveRecord::Schema.define do
|
|
71
71
|
rename_column "entries", "title", "name"
|
|
72
72
|
end
|
|
73
|
-
end
|
|
73
|
+
#end
|
|
74
74
|
|
|
75
75
|
cols = ActiveRecord::Base.connection.columns("entries")
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
assert_not_nil cols.find {|col| col.name == "name"}
|
|
77
|
+
assert_nil cols.find {|col| col.name == "title"}
|
|
78
78
|
|
|
79
79
|
assert_nothing_raised do
|
|
80
80
|
ActiveRecord::Schema.define do
|
|
@@ -83,8 +83,8 @@ class SQLite3SimpleTest < Test::Unit::TestCase
|
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
cols = ActiveRecord::Base.connection.columns("entries")
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
assert_not_nil cols.find {|col| col.name == "title"}
|
|
87
|
+
assert_nil cols.find {|col| col.name == "name"}
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def test_rename_column_preserves_content
|
data/test/has_many_through.rb
CHANGED
|
@@ -51,8 +51,11 @@ module HasManyThroughMethods
|
|
|
51
51
|
role.permission_groups.create! :right => r1.reload
|
|
52
52
|
role.permission_groups.create! :right => r2.reload
|
|
53
53
|
|
|
54
|
+
connection = ActiveRecord::Base.connection
|
|
54
55
|
groups = role.reload.permission_groups.select('right_id')
|
|
55
|
-
|
|
56
|
+
|
|
57
|
+
pend 'todo: is this really supposed to work ?!' if ar_version('4.0')
|
|
58
|
+
assert_equal [ [ r1.id ], [ r2.id ] ], connection.select_rows(groups)
|
|
56
59
|
end if Test::Unit::TestCase.ar_version('3.0')
|
|
57
60
|
|
|
58
61
|
end
|
data/test/jdbc/db2.rb
CHANGED
|
@@ -13,7 +13,20 @@ module Jdbc
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def self.driver_name
|
|
16
|
-
'com.ibm.db2.jcc.DB2Driver'
|
|
16
|
+
'com.ibm.db2.jcc.DB2Driver' # ArJdbc::DB2::DRIVER_NAME
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
module AS400
|
|
20
|
+
def self.driver_jar
|
|
21
|
+
"jt400.jar"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.load_driver(method = :load)
|
|
25
|
+
send method, driver_jar
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.driver_name
|
|
29
|
+
'com.ibm.as400.access.AS400JDBCDriver' # ArJdbc::AS400::DRIVER_NAME
|
|
17
30
|
end
|
|
18
31
|
end
|
|
19
32
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
require 'arjdbc/jdbc'
|
|
4
|
+
|
|
5
|
+
require 'arjdbc/mysql'
|
|
6
|
+
require 'arjdbc/postgresql'
|
|
7
|
+
require 'arjdbc/sqlite3'
|
|
8
|
+
|
|
9
|
+
class JdbcColumnTest < Test::Unit::TestCase
|
|
10
|
+
|
|
11
|
+
test 'modules' do
|
|
12
|
+
assert_include ArJdbc.modules, ArJdbc::MySQL
|
|
13
|
+
assert_include ArJdbc.modules, ArJdbc::PostgreSQL
|
|
14
|
+
assert_include ArJdbc.modules, ArJdbc::SQLite3
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
test 'column types' do
|
|
18
|
+
types = ActiveRecord::ConnectionAdapters::JdbcColumn.column_types
|
|
19
|
+
assert_kind_of Proc, types[ /mysql/i ]
|
|
20
|
+
assert_kind_of Proc, types[ /sqlite/i ]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'jdbc_common'
|
|
2
2
|
require 'db/jdbc'
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class JdbcConnectionTest < Test::Unit::TestCase
|
|
5
5
|
|
|
6
6
|
def test_connection_available_through_jdbc_adapter
|
|
7
7
|
ActiveRecord::Base.connection.execute("show databases") # MySQL
|
|
@@ -47,6 +47,16 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
test 'calls configure_connection on reconnect!' do
|
|
51
|
+
connection = ActiveRecord::Base.connection
|
|
52
|
+
unless connection.respond_to?(:configure_connection)
|
|
53
|
+
fail "no configure_connection for #{connection} can not test"
|
|
54
|
+
end
|
|
55
|
+
ActiveRecord::Base.connection.disconnect!
|
|
56
|
+
ActiveRecord::Base.connection.expects(:configure_connection).once
|
|
57
|
+
ActiveRecord::Base.connection.reconnect!
|
|
58
|
+
end
|
|
59
|
+
|
|
50
60
|
class MockDriver < ActiveRecord::ConnectionAdapters::JdbcDriver
|
|
51
61
|
|
|
52
62
|
class DriverImpl
|
|
@@ -94,29 +104,29 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
|
|
|
94
104
|
ActiveRecord::Base.connection.jdbc_connection
|
|
95
105
|
fail "jdbc error not thrown"
|
|
96
106
|
rescue ActiveRecord::JDBCError => e
|
|
97
|
-
assert_match /
|
|
107
|
+
assert_match /java.sql.SQLInvalidAuthorizationSpecException/, e.to_s
|
|
98
108
|
assert_kind_of Java::JavaSql::SQLNonTransientException, e.sql_exception
|
|
99
109
|
ensure
|
|
100
110
|
ActiveRecord::Base.establish_connection JDBC_CONFIG
|
|
101
111
|
end
|
|
102
112
|
end
|
|
103
113
|
|
|
104
|
-
|
|
114
|
+
context 'configuration' do
|
|
105
115
|
|
|
106
|
-
test '
|
|
107
|
-
|
|
108
|
-
connection.
|
|
116
|
+
test 'connection url' do
|
|
117
|
+
adapter = ActiveRecord::Base.connection
|
|
118
|
+
connection = adapter.raw_connection # JdbcConnection
|
|
109
119
|
connection.config = { :url => "jdbc://somehost", :options => { :hoge => "true", :fuya => "false" } }
|
|
110
|
-
assert_equal "jdbc://somehost?hoge=true&fuya=false", connection.send(:
|
|
120
|
+
assert_equal "jdbc://somehost?hoge=true&fuya=false", connection.send(:jdbc_url)
|
|
111
121
|
|
|
112
122
|
connection.config = { :url => "jdbc://somehost?param=0", :options => { :hoge => "true", :fuya => false } }
|
|
113
|
-
assert_equal "jdbc://somehost?param=0&hoge=true&fuya=false", connection.send(:
|
|
123
|
+
assert_equal "jdbc://somehost?param=0&hoge=true&fuya=false", connection.send(:jdbc_url)
|
|
114
124
|
end
|
|
115
125
|
|
|
116
126
|
test 'connection fails without driver and url' do
|
|
117
127
|
with_connection_removed do
|
|
118
128
|
ActiveRecord::Base.establish_connection :adapter => 'jdbc'
|
|
119
|
-
|
|
129
|
+
assert_raise ActiveRecord::ConnectionNotEstablished do
|
|
120
130
|
ActiveRecord::Base.connection
|
|
121
131
|
end
|
|
122
132
|
end
|
|
@@ -125,7 +135,7 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
|
|
|
125
135
|
test 'connection fails without driver' do
|
|
126
136
|
with_connection_removed do
|
|
127
137
|
ActiveRecord::Base.establish_connection :adapter => 'jdbc', :url => 'jdbc:derby:test.derby;create=true'
|
|
128
|
-
|
|
138
|
+
assert_raise ActiveRecord::ConnectionNotEstablished do
|
|
129
139
|
ActiveRecord::Base.connection
|
|
130
140
|
end
|
|
131
141
|
end
|
|
@@ -176,14 +186,9 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
|
|
|
176
186
|
end
|
|
177
187
|
end
|
|
178
188
|
|
|
179
|
-
@@derby_driver_loaded = nil
|
|
180
|
-
|
|
181
189
|
def load_derby_driver
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Jdbc::Derby.load_driver
|
|
185
|
-
true
|
|
186
|
-
end
|
|
190
|
+
require 'jdbc/derby'
|
|
191
|
+
Jdbc::Derby.load_driver(:require)
|
|
187
192
|
end
|
|
188
193
|
|
|
189
194
|
end
|
data/test/jndi_callbacks_test.rb
CHANGED
|
@@ -1,35 +1,33 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'test_helper'
|
|
2
2
|
require 'db/jndi_config'
|
|
3
3
|
|
|
4
4
|
class JndiConnectionPoolCallbacksTest < Test::Unit::TestCase
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def setup
|
|
11
|
-
@logger = stub_everything "logger"
|
|
12
|
-
@config = JNDI_CONFIG
|
|
13
|
-
@connection = ActiveRecord::ConnectionAdapters::JdbcConnection.new @config
|
|
14
|
-
Entry.connection_pool.disconnect!
|
|
15
|
-
assert !Entry.connection_pool.connected?
|
|
16
|
-
class << Entry.connection_pool; public :instance_variable_set; end
|
|
5
|
+
|
|
6
|
+
class Dummy < ActiveRecord::Base; end
|
|
7
|
+
|
|
8
|
+
setup do
|
|
9
|
+
Dummy.establish_connection JNDI_CONFIG.dup
|
|
17
10
|
end
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
|
|
12
|
+
teardown do
|
|
13
|
+
Dummy.remove_connection
|
|
21
14
|
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
15
|
+
|
|
16
|
+
test 'calls hooks on checkout and checkin' do
|
|
17
|
+
connection = Dummy.connection_pool.checkout
|
|
18
|
+
assert_true connection.active?
|
|
19
|
+
|
|
20
|
+
# connection = Dummy.connection
|
|
21
|
+
Dummy.connection_pool.checkin connection
|
|
22
|
+
assert_false connection.active?
|
|
23
|
+
|
|
24
|
+
pool = Dummy.connection_pool
|
|
25
|
+
assert_false pool.active_connection? if pool.respond_to?(:active_connection?)
|
|
26
|
+
assert_true pool.connection.active? # checks out
|
|
27
|
+
assert_true pool.active_connection? if pool.respond_to?(:active_connection?)
|
|
28
|
+
assert_true connection.active?
|
|
29
|
+
Dummy.connection_pool.disconnect!
|
|
30
|
+
assert_false connection.active?
|
|
33
31
|
end
|
|
34
32
|
|
|
35
|
-
end
|
|
33
|
+
end
|
data/test/jndi_test.rb
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
# To support the connection pooling in the test, you'll need
|
|
2
|
-
# commons-dbcp, commons-pool, and commons-collections.
|
|
3
|
-
|
|
4
|
-
require 'jdbc_common'
|
|
5
|
-
|
|
6
1
|
require 'db/jndi_config'
|
|
2
|
+
require 'simple'
|
|
7
3
|
|
|
8
4
|
class DerbyJndiTest < Test::Unit::TestCase
|
|
9
5
|
include SimpleTestMethods
|
|
@@ -12,23 +8,20 @@ class DerbyJndiTest < Test::Unit::TestCase
|
|
|
12
8
|
DbTypeMigration.big_decimal_precision = 31
|
|
13
9
|
ALIVE_SQL = 'SELECT 1 FROM SYS.SYSSCHEMAS'
|
|
14
10
|
|
|
15
|
-
def
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
def setup
|
|
12
|
+
config = { :connection_alive_sql => ALIVE_SQL }.merge(JNDI_CONFIG)
|
|
13
|
+
ActiveRecord::Base.establish_connection config
|
|
14
|
+
super
|
|
19
15
|
end
|
|
20
|
-
|
|
21
|
-
# @override
|
|
22
|
-
#def test_connection_alive_sql; end
|
|
23
16
|
|
|
24
17
|
test "(raw) connection is a jndi connection" do
|
|
25
18
|
connection = ActiveRecord::Base.connection.raw_connection
|
|
19
|
+
assert_true connection.jndi?
|
|
26
20
|
assert_true connection.jndi_connection?
|
|
27
21
|
end
|
|
28
22
|
|
|
29
23
|
test "fills username from data source meta-data if missing" do
|
|
30
24
|
connection = ActiveRecord::Base.connection.raw_connection
|
|
31
|
-
assert_true connection.jndi_connection?
|
|
32
25
|
|
|
33
26
|
config = { :jndi => JNDI_CONFIG[:jndi] }
|
|
34
27
|
ArJdbc::Derby.adapter_matcher('Derby', config)
|
|
@@ -52,12 +45,10 @@ class DerbyJndiPooledTest < Test::Unit::TestCase
|
|
|
52
45
|
:connection_alive_sql => DerbyJndiTest::ALIVE_SQL
|
|
53
46
|
}.merge(JNDI_POOLED_CONFIG) )
|
|
54
47
|
end
|
|
55
|
-
|
|
56
|
-
# @override
|
|
57
|
-
#def test_connection_alive_sql; end
|
|
58
48
|
|
|
59
49
|
test "(raw) connection is a jndi connection" do
|
|
60
50
|
connection = ActiveRecord::Base.connection.raw_connection
|
|
51
|
+
assert_true connection.jndi?
|
|
61
52
|
assert_true connection.jndi_connection?
|
|
62
53
|
end
|
|
63
54
|
|
data/test/models/data_types.rb
CHANGED
|
@@ -23,9 +23,10 @@ class DbTypeMigration < ActiveRecord::Migration
|
|
|
23
23
|
t.column :sample_integer, :integer, :limit => 5
|
|
24
24
|
t.column :sample_integer_with_limit_2, :integer, :limit => 2
|
|
25
25
|
t.column :sample_integer_with_limit_8, :integer, :limit => 8
|
|
26
|
-
t.column :sample_integer_no_limit, :integer
|
|
26
|
+
t.column :sample_integer_no_limit, :integer, :default => 42
|
|
27
27
|
t.column :sample_integer_neg_default, :integer, :default => -1
|
|
28
28
|
t.column :sample_text, :text
|
|
29
|
+
t.decimal :decimal_with_scale, :precision => 15, :scale => 3
|
|
29
30
|
t.decimal :big_decimal, :precision => big_decimal_precision, :scale => 0
|
|
30
31
|
end
|
|
31
32
|
end
|
data/test/models/thing.rb
CHANGED
data/test/rails/mysql.rb
ADDED
data/test/rails_stub.rb
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'pathname'
|
|
2
|
+
|
|
3
|
+
module Rails
|
|
4
|
+
class Configuration; end unless const_defined?(:Configuration)
|
|
5
|
+
Configuration.class_eval do
|
|
6
|
+
def root
|
|
7
|
+
defined?(RAILS_ROOT) ? Pathname.new(RAILS_ROOT).realpath : raise("Rails.root not set")
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
class Application
|
|
11
|
+
def self.config
|
|
12
|
+
@config ||= Configuration.new
|
|
13
|
+
end
|
|
14
|
+
def self.paths
|
|
15
|
+
@paths ||= Hash.new { [] }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
def self.application
|
|
19
|
+
Rails::Application
|
|
20
|
+
end
|
|
21
|
+
def self.configuration
|
|
22
|
+
application.config
|
|
23
|
+
end
|
|
24
|
+
def self.root
|
|
25
|
+
application && application.config.root
|
|
26
|
+
end
|
|
27
|
+
def self.env
|
|
28
|
+
env = defined?(RAILS_ENV) ? RAILS_ENV : ( ENV["RAILS_ENV"] || "development" )
|
|
29
|
+
ActiveSupport::StringInquirer.new(env)
|
|
30
|
+
end
|
|
31
|
+
end
|