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.
Files changed (161) hide show
  1. data/.gitignore +12 -11
  2. data/.travis.yml +36 -7
  3. data/Appraisals +3 -3
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +13 -6
  6. data/History.txt +64 -0
  7. data/README.md +8 -1
  8. data/Rakefile +3 -1
  9. data/gemfiles/rails23.gemfile +1 -1
  10. data/gemfiles/rails23.gemfile.lock +6 -5
  11. data/gemfiles/rails30.gemfile +1 -1
  12. data/gemfiles/rails30.gemfile.lock +7 -6
  13. data/gemfiles/rails31.gemfile +1 -1
  14. data/gemfiles/rails31.gemfile.lock +6 -5
  15. data/gemfiles/rails32.gemfile +1 -1
  16. data/gemfiles/rails32.gemfile.lock +6 -5
  17. data/gemfiles/rails40.gemfile +2 -4
  18. data/gemfiles/rails40.gemfile.lock +37 -51
  19. data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
  20. data/lib/active_record/connection_adapters/db2_adapter.rb +1 -1
  21. data/lib/arel/visitors/db2.rb +5 -1
  22. data/lib/arel/visitors/hsqldb.rb +1 -0
  23. data/lib/arel/visitors/sql_server.rb +55 -13
  24. data/lib/arjdbc/db2/adapter.rb +197 -227
  25. data/lib/arjdbc/db2/as400.rb +124 -0
  26. data/lib/arjdbc/db2/connection_methods.rb +20 -1
  27. data/lib/arjdbc/derby/adapter.rb +17 -85
  28. data/lib/arjdbc/derby/connection_methods.rb +2 -1
  29. data/lib/arjdbc/discover.rb +55 -47
  30. data/lib/arjdbc/h2/adapter.rb +52 -18
  31. data/lib/arjdbc/h2/connection_methods.rb +10 -2
  32. data/lib/arjdbc/hsqldb/adapter.rb +33 -9
  33. data/lib/arjdbc/hsqldb/connection_methods.rb +10 -2
  34. data/lib/arjdbc/informix.rb +2 -1
  35. data/lib/arjdbc/jdbc.rb +5 -1
  36. data/lib/arjdbc/jdbc/adapter.rb +167 -89
  37. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  38. data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
  39. data/lib/arjdbc/jdbc/base_ext.rb +25 -3
  40. data/lib/arjdbc/jdbc/callbacks.rb +9 -8
  41. data/lib/arjdbc/jdbc/column.rb +8 -20
  42. data/lib/arjdbc/jdbc/connection.rb +69 -80
  43. data/lib/arjdbc/jdbc/extension.rb +6 -8
  44. data/lib/arjdbc/jdbc/jdbc.rake +3 -141
  45. data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
  46. data/lib/arjdbc/mssql/adapter.rb +108 -34
  47. data/lib/arjdbc/mssql/connection_methods.rb +3 -1
  48. data/lib/arjdbc/mssql/limit_helpers.rb +3 -2
  49. data/lib/arjdbc/mssql/lock_helpers.rb +5 -1
  50. data/lib/arjdbc/mysql/adapter.rb +127 -70
  51. data/lib/arjdbc/mysql/connection_methods.rb +5 -2
  52. data/lib/arjdbc/oracle/adapter.rb +124 -94
  53. data/lib/arjdbc/oracle/connection_methods.rb +2 -1
  54. data/lib/arjdbc/postgresql/adapter.rb +99 -67
  55. data/lib/arjdbc/postgresql/column_cast.rb +3 -5
  56. data/lib/arjdbc/postgresql/connection_methods.rb +6 -6
  57. data/lib/arjdbc/railtie.rb +3 -1
  58. data/lib/arjdbc/sqlite3/adapter.rb +60 -43
  59. data/lib/arjdbc/sqlite3/connection_methods.rb +9 -9
  60. data/lib/arjdbc/sybase.rb +1 -1
  61. data/lib/arjdbc/tasks.rb +13 -0
  62. data/lib/arjdbc/tasks/database_tasks.rb +50 -0
  63. data/lib/arjdbc/tasks/databases.rake +89 -0
  64. data/lib/arjdbc/tasks/databases3.rake +203 -0
  65. data/lib/arjdbc/tasks/databases4.rake +39 -0
  66. data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
  67. data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
  68. data/lib/arjdbc/tasks/h2_database_tasks.rb +29 -0
  69. data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
  70. data/lib/arjdbc/tasks/jdbc_database_tasks.rb +122 -0
  71. data/lib/arjdbc/tasks/mssql_database_tasks.rb +36 -0
  72. data/lib/arjdbc/tasks/oracle/enhanced_structure_dump.rb +297 -0
  73. data/lib/arjdbc/tasks/oracle_database_tasks.rb +62 -0
  74. data/lib/arjdbc/version.rb +1 -1
  75. data/pom.xml +11 -12
  76. data/rails_generators/jdbc_generator.rb +1 -1
  77. data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
  78. data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
  79. data/rakelib/02-test.rake +42 -15
  80. data/rakelib/compile.rake +29 -2
  81. data/rakelib/db.rake +2 -1
  82. data/rakelib/rails.rake +23 -6
  83. data/src/java/arjdbc/ArJdbcModule.java +175 -0
  84. data/src/java/arjdbc/db2/DB2Module.java +2 -1
  85. data/src/java/arjdbc/derby/DerbyModule.java +5 -24
  86. data/src/java/arjdbc/hsqldb/HSQLDBModule.java +3 -2
  87. data/src/java/arjdbc/jdbc/AdapterJavaService.java +3 -46
  88. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +1001 -259
  89. data/src/java/arjdbc/mssql/MSSQLModule.java +2 -1
  90. data/src/java/arjdbc/mysql/MySQLModule.java +4 -3
  91. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +12 -7
  92. data/src/java/arjdbc/oracle/OracleModule.java +2 -1
  93. data/src/java/arjdbc/sqlite3/SQLite3Module.java +2 -1
  94. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +12 -0
  95. data/test/db/db2.rb +14 -7
  96. data/test/db/db2/rake_test.rb +82 -0
  97. data/test/db/db2/rake_test_data.sql +35 -0
  98. data/test/db/db2/simple_test.rb +20 -0
  99. data/test/db/db2/unit_test.rb +3 -1
  100. data/test/db/derby.rb +7 -5
  101. data/test/db/derby/rake_test.rb +96 -0
  102. data/test/db/derby/simple_test.rb +10 -2
  103. data/test/db/h2.rb +6 -8
  104. data/test/db/h2/identity_column_test.rb +35 -0
  105. data/test/db/h2/offset_test.rb +49 -0
  106. data/test/db/h2/rake_test.rb +98 -0
  107. data/test/db/h2/schema_dump_test.rb +5 -1
  108. data/test/db/hsqldb.rb +6 -10
  109. data/test/db/hsqldb/rake_test.rb +101 -0
  110. data/test/db/hsqldb/schema_dump_test.rb +5 -1
  111. data/test/db/hsqldb/simple_test.rb +8 -0
  112. data/test/db/jndi_config.rb +1 -3
  113. data/test/db/jndi_pooled_config.rb +1 -3
  114. data/test/db/mssql/limit_offset_test.rb +23 -14
  115. data/test/db/mssql/rake_test.rb +143 -0
  116. data/test/db/mysql/_rails_test_mysql.32.out +1069 -1252
  117. data/test/db/mysql/nonstandard_primary_key_test.rb +21 -24
  118. data/test/db/mysql/rake_test.rb +97 -0
  119. data/test/db/mysql/schema_dump_test.rb +11 -11
  120. data/test/db/mysql/simple_test.rb +52 -3
  121. data/test/db/mysql/statement_escaping_test.rb +46 -0
  122. data/test/db/oracle/rake_test.rb +100 -0
  123. data/test/db/oracle/simple_test.rb +48 -0
  124. data/test/db/postgres/_rails_test_postgres.32.out +998 -1370
  125. data/test/db/postgres/active_schema_unit_test.rb +68 -0
  126. data/test/db/postgres/connection_test.rb +10 -2
  127. data/test/db/postgres/data_types_test.rb +2 -2
  128. data/test/db/postgres/ltree_test.rb +6 -5
  129. data/test/db/postgres/native_types_test.rb +1 -5
  130. data/test/db/postgres/rake_test.rb +117 -0
  131. data/test/db/postgres/schema_dump_test.rb +9 -2
  132. data/test/db/postgres/schema_test.rb +4 -2
  133. data/test/db/postgres/simple_test.rb +57 -16
  134. data/test/db/sqlite3.rb +3 -10
  135. data/test/db/sqlite3/_rails_test_sqlite3.32.out +1070 -1298
  136. data/test/db/sqlite3/rake_test.rb +71 -0
  137. data/test/db/sqlite3/simple_test.rb +9 -9
  138. data/test/has_many_through.rb +4 -1
  139. data/test/jdbc/db2.rb +14 -1
  140. data/test/jdbc_column_test.rb +23 -0
  141. data/test/{generic_jdbc_connection_test.rb → jdbc_connection_test.rb} +22 -17
  142. data/test/jndi_callbacks_test.rb +26 -28
  143. data/test/jndi_test.rb +7 -16
  144. data/test/models/data_types.rb +2 -1
  145. data/test/models/thing.rb +1 -0
  146. data/test/rails/mysql.rb +13 -0
  147. data/test/rails/sqlite3/version.rb +6 -0
  148. data/test/rails_stub.rb +31 -0
  149. data/test/rake_test_support.rb +298 -0
  150. data/test/serialize.rb +2 -4
  151. data/test/{helper.rb → shared_helper.rb} +0 -0
  152. data/test/simple.rb +167 -93
  153. data/test/test_helper.rb +52 -16
  154. metadata +388 -354
  155. data/lib/pg.rb +0 -26
  156. data/test/abstract_db_create.rb +0 -139
  157. data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -36
  158. data/test/db/mssql/db_create_test.rb +0 -29
  159. data/test/db/mysql/db_create_test.rb +0 -33
  160. data/test/db/postgres/db_create_test.rb +0 -44
  161. 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
- assert !cols.find {|col| col.name == "test_remove_column"}
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
- assert cols.find {|col| col.name == "name"}
77
- assert !cols.find {|col| col.name == "title"}
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
- assert cols.find {|col| col.name == "title"}
87
- assert !cols.find {|col| col.name == "name"}
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
@@ -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
- assert_equal [ [ r1.id ], [ r2.id ] ], role.connection.select_rows(groups)
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 GenericJdbcConnectionTest < Test::Unit::TestCase
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 /driver encountered an unknown error: java.sql.SQLInvalidAuthorizationSpecException/, e.to_s
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
- class ConfigHelperTest < Test::Unit::TestCase
114
+ context 'configuration' do
105
115
 
106
- test 'configure connection url' do
107
- connection = Object.new
108
- connection.extend ActiveRecord::ConnectionAdapters::JdbcConnection::ConfigHelper
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(:configure_url)
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(:configure_url)
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
- assert_raises(ActiveRecord::ConnectionNotEstablished) do
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
- assert_raises(ActiveRecord::ConnectionNotEstablished) do
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
- @@derby_driver_loaded ||= begin
183
- require 'jdbc/derby'
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
@@ -1,35 +1,33 @@
1
- require 'jdbc_common'
1
+ require 'test_helper'
2
2
  require 'db/jndi_config'
3
3
 
4
4
  class JndiConnectionPoolCallbacksTest < Test::Unit::TestCase
5
-
6
- def self.startup
7
- ActiveRecord::Base.establish_connection JNDI_CONFIG
8
- end
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
- def teardown
20
- Entry.connection_pool.disconnect!
11
+
12
+ teardown do
13
+ Dummy.remove_connection
21
14
  end
22
-
23
- def test_should_call_hooks_on_checkout_and_checkin
24
- @adapter = ActiveRecord::ConnectionAdapters::JdbcAdapter.new @connection, @logger, @config
25
- Entry.connection_pool.instance_variable_set "@connections", [@adapter]
26
- assert !@connection.active?
27
-
28
- Entry.connection_pool.checkout
29
- assert @connection.active?
30
-
31
- Entry.connection_pool.checkin @adapter
32
- assert !@connection.active?
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 if ActiveRecord::Base.respond_to?(:connection_pool)
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 self.startup
16
- ActiveRecord::Base.establish_connection( {
17
- :connection_alive_sql => ALIVE_SQL
18
- }.merge(JNDI_CONFIG) )
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
 
@@ -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
@@ -5,6 +5,7 @@ class CreateThings < ActiveRecord::Migration
5
5
  t.timestamps
6
6
  end
7
7
  add_index :things, :name, :unique => true
8
+ add_index :things, :created_at, :where => 'name IS NOT NULL', :name => "thing_partial_index"
8
9
  end
9
10
 
10
11
  def self.down
@@ -0,0 +1,13 @@
1
+ module Mysql # :nodoc:
2
+ # remove_const(:Error) if const_defined?(:Error)
3
+ class Error < StandardError; end
4
+
5
+ def self.client_version
6
+ 50400 # faked out for AR tests
7
+ end
8
+
9
+ #module GemVersion
10
+ # VERSION = '2.8.2'
11
+ #end
12
+
13
+ end
@@ -0,0 +1,6 @@
1
+ # activerecord/test/cases/query_cache_test.rb requires this file
2
+ module SQLite3 # gem 'sqlite3' (native)
3
+ module Version
4
+ VERSION = '1.3.7' # SQLite3::Version::VERSION > '1.2.5'
5
+ end
6
+ end
@@ -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