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
data/test/db/h2.rb CHANGED
@@ -1,13 +1,11 @@
1
1
  require 'test_helper'
2
2
 
3
- config = {
4
- :adapter => 'h2',
5
- :database => 'test.db'
6
- }
3
+ config = { :adapter => 'h2', :database => 'test' } # adds .h2.db suffix
7
4
 
8
5
  ActiveRecord::Base.establish_connection(config)
9
6
 
10
- at_exit {
11
- # Clean up hsqldb when done
12
- Dir['test.db*'].each {|f| FileUtils.rm_rf(f) }
13
- }
7
+ at_exit do
8
+ Dir['*test.h2.db'].each { |f| FileUtils.rm(f) }
9
+ Dir['*test.lock.db'].each { |f| FileUtils.rm(f) }
10
+ Dir['*test.trace.db'].each { |f| FileUtils.rm(f) }
11
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+ require 'db/h2'
3
+
4
+ class H2IdentityColumnTest < Test::Unit::TestCase
5
+
6
+ class Persona < ActiveRecord::Base
7
+ end
8
+
9
+ class CreatePersonasTable < ActiveRecord::Migration
10
+ def self.up
11
+ create_table :personas do |t|
12
+ t.string :firstname
13
+ t.string :lastname
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ drop_table :personas
19
+ end
20
+ end
21
+
22
+ def setup
23
+ CreatePersonasTable.up
24
+ Persona.create(:firstname => "John", :lastname => "Smith")
25
+ end
26
+
27
+ def teardown
28
+ CreatePersonasTable.down
29
+ end
30
+
31
+ def test_auto_increment
32
+ assert_equal 1, Persona.all[0].id, "H2 auto increment initially should start at ID 1, not 0"
33
+ end
34
+ end
35
+
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+ require 'db/h2'
3
+
4
+ class H2OffsetTest < Test::Unit::TestCase
5
+
6
+ class Persona < ActiveRecord::Base
7
+ end
8
+
9
+ class CreatePersonasTable < ActiveRecord::Migration
10
+ def self.up
11
+ create_table :personas do |t|
12
+ t.string :firstname
13
+ t.string :lastname
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ drop_table :personas
19
+ end
20
+ end
21
+
22
+ def setup
23
+ CreatePersonasTable.up
24
+ Persona.create(:firstname => "John", :lastname => "Smith")
25
+ Persona.create(:firstname => "Jill", :lastname => "Smith")
26
+ Persona.create(:firstname => "Joan", :lastname => "Smith")
27
+ Persona.create(:firstname => "Jason", :lastname => "Smith")
28
+ Persona.create(:firstname => "Jack", :lastname => "Smith")
29
+ Persona.create(:firstname => "Jenssen", :lastname => "Smith")
30
+ Persona.create(:firstname => "Joe", :lastname => "Smith")
31
+ Persona.create(:firstname => "Johanna", :lastname => "Smith")
32
+ Persona.create(:firstname => "James", :lastname => "Smith")
33
+ Persona.create(:firstname => "Jim", :lastname => "Smith")
34
+ Persona.create(:firstname => "Jody", :lastname => "Smith")
35
+ end
36
+
37
+ def teardown
38
+ CreatePersonasTable.down
39
+ end
40
+
41
+ def test_offset
42
+ query = Arel::Table.new(:persons).skip(3)
43
+ assert_nothing_raised do
44
+ sql = query.to_sql
45
+ assert_equal "SELECT LIMIT 3", sql[0..13], "SQL statement was not generated, properly"
46
+ end
47
+ end if ar_version('3.0')
48
+
49
+ end
@@ -0,0 +1,98 @@
1
+ require 'rake_test_support'
2
+ require 'db/h2'
3
+
4
+ class H2RakeTest < Test::Unit::TestCase
5
+ include RakeTestSupport
6
+
7
+ def db_name; 'mem:rake-test'; end
8
+
9
+ def do_teardown
10
+ drop_rake_test_database(:silence)
11
+ end
12
+
13
+ test 'rake db:create (and db:drop)' do
14
+ @db_name = 'rake-create-test'
15
+ Rake::Task["db:create"].invoke
16
+ assert_true File.exists?("#{@db_name}.h2.db"), "db file: #{@db_name}.h2.db is missing"
17
+
18
+ Rake::Task["db:drop"].invoke
19
+ assert_false File.exists?("#{@db_name}.h2.db"), "db file: #{@db_name}.h2.db not deleted"
20
+ end
21
+
22
+ test 'rake db:create (and db:drop) in memory db' do
23
+ Rake::Task["db:create"].invoke
24
+ # assert_true File.exists?("#{db_name}.lck")
25
+
26
+ Rake::Task["db:drop"].invoke
27
+ # assert_false File.exists?("#{db_name}.lck")
28
+ end
29
+
30
+ test 'rake db:test:purge' do
31
+ # Rake::Task["db:create"].invoke
32
+ create_rake_test_database do |connection|
33
+ connection.create_table('loosers') { |t| t.string :name }
34
+ end
35
+
36
+ Rake::Task["db:test:purge"].invoke
37
+
38
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
39
+ assert_false ActiveRecord::Base.connection.table_exists?('loosers')
40
+ ActiveRecord::Base.connection.disconnect!
41
+ end
42
+
43
+ test 'rake db:structure:dump (and db:structure:load)' do
44
+ db_name = @db_name = 'test-dump-rake'
45
+ create_rake_test_database(db_name) do |connection|
46
+ create_schema_migrations_table(connection)
47
+ connection.create_table('loosers') { |t| t.string :name; t.timestamps }
48
+ end
49
+
50
+ structure_sql = File.join('db', structure_sql_filename)
51
+ begin
52
+ Dir.mkdir 'db' # db/structure.sql
53
+ Rake::Task["db:structure:dump"].invoke
54
+
55
+ assert File.exists?(structure_sql)
56
+ # CREATE CACHED TABLE PUBLIC.LOOSERS
57
+ assert_match /CREATE .*? TABLE PUBLIC.LOOSERS/i, File.read(structure_sql)
58
+
59
+ # db:structure:load
60
+ drop_rake_test_database(:silence)
61
+ Rake::Task["db:structure:load"].invoke
62
+
63
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
64
+ assert ActiveRecord::Base.connection.table_exists?('loosers')
65
+ ActiveRecord::Base.connection.disconnect!
66
+ ensure
67
+ File.delete(structure_sql) if File.exists?(structure_sql)
68
+ Dir.rmdir 'db'
69
+ end
70
+ end
71
+
72
+ # test 'rake db:charset' do
73
+ # expect_rake_output('UTF-8')
74
+ # Rake::Task["db:charset"].invoke
75
+ # end
76
+
77
+ def create_rake_test_database(db_name = self.db_name)
78
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
79
+ if block_given?
80
+ yield ActiveRecord::Base.connection
81
+ end
82
+ ActiveRecord::Base.connection.disconnect!
83
+ end
84
+
85
+ def drop_rake_test_database(silence = nil)
86
+ # ActiveRecord::Base.establish_connection db_config.merge :database => @db_name
87
+ # ActiveRecord::Base.connection.disconnect!
88
+
89
+ File.delete("#{@db_name}.lock.db") if File.exist? "#{@db_name}.lock.db"
90
+ File.delete("#{@db_name}.trace.db") if File.exist? "#{@db_name}.trace.db"
91
+ if silence
92
+ File.delete("#{@db_name}.h2.db") if File.exist? "#{@db_name}.h2.db"
93
+ else
94
+ File.delete("#{@db_name}.h2.db")
95
+ end
96
+ end
97
+
98
+ end
@@ -19,7 +19,11 @@ class H2SchemaDumpTest < Test::Unit::TestCase
19
19
  def test_schema_dump_decimal_when_scale_specified
20
20
  output = standard_dump(StringIO.new, [/^[^d]/]) # keep db_types
21
21
  # t.column :sample_small_decimal, :decimal, :precision => 3, :scale => 2, :default => 3.14
22
- assert_match %r{t.decimal\s+"sample_small_decimal",\s+:precision => 3,\s+:scale => 2}, output
22
+ if ar_version('4.0')
23
+ assert_match %r{t.decimal\s+"sample_small_decimal",\s+precision: 3,\s+scale: 2}, output
24
+ else
25
+ assert_match %r{t.decimal\s+"sample_small_decimal",\s+:precision => 3,\s+:scale => 2}, output
26
+ end
23
27
  end
24
28
 
25
29
  end
data/test/db/hsqldb.rb CHANGED
@@ -1,15 +1,11 @@
1
1
  require 'test_helper'
2
2
 
3
- config = {
4
- :adapter => 'hsqldb',
5
- :database => 'test.db'
6
- }
3
+ config = { :adapter => 'hsqldb', :database => 'test.hsqldb' }
7
4
 
8
5
  ActiveRecord::Base.establish_connection(config)
9
6
 
10
- at_exit {
11
- # Clean up hsqldb when done
12
- require "fileutils"
13
- Dir['test.db*'].each {|f| FileUtils.rm_rf(f)}
14
- FileUtils.rm_rf('hsqldb-testdb.log') rescue nil #can't delete on windows
15
- }
7
+ at_exit do
8
+ Dir['*test.hsqldb*'].each do |f|
9
+ FileUtils.rm_rf(f); File.delete(f) if File.exist?(f)
10
+ end
11
+ end
@@ -0,0 +1,101 @@
1
+ require 'rake_test_support'
2
+ require 'db/hsqldb'
3
+
4
+ class HSQLDBRakeTest < Test::Unit::TestCase
5
+ include RakeTestSupport
6
+
7
+ def db_name; 'mem:rake-test.hsqldb'; end
8
+
9
+ def do_teardown
10
+ drop_rake_test_database
11
+ end
12
+
13
+ test 'rake db:create (and db:drop)' do
14
+ @db_name = 'rake-create-test.hsqldb'
15
+ Rake::Task["db:create"].invoke
16
+ assert_true File.exists?("#{@db_name}.lck")
17
+
18
+ Rake::Task["db:drop"].invoke
19
+ assert_false File.exists?("#{@db_name}.lck")
20
+ end
21
+
22
+ test 'rake db:create (and db:drop) in memory db' do
23
+ Rake::Task["db:create"].invoke
24
+ # assert_true File.exists?("#{db_name}.lck")
25
+
26
+ Rake::Task["db:drop"].invoke
27
+ # assert_false File.exists?("#{db_name}.lck")
28
+ end
29
+
30
+ test 'rake db:test:purge' do
31
+ # Rake::Task["db:create"].invoke
32
+ create_rake_test_database do |connection|
33
+ connection.create_table('loosers') { |t| t.string :name }
34
+ end
35
+
36
+ Rake::Task["db:test:purge"].invoke
37
+
38
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
39
+ assert_false ActiveRecord::Base.connection.table_exists?('loosers')
40
+ ActiveRecord::Base.connection.disconnect!
41
+ end
42
+
43
+ test 'rake db:structure:dump (and db:structure:load)' do
44
+ db_name = @db_name = 'test-dump-rake.hsqldb'
45
+ create_rake_test_database(db_name) do |connection|
46
+ create_schema_migrations_table(connection)
47
+ connection.create_table('loosers') { |t| t.string :name; t.timestamps }
48
+ end
49
+
50
+ structure_sql = File.join('db', structure_sql_filename)
51
+ begin
52
+ Dir.mkdir 'db' # db/structure.sql
53
+ Rake::Task["db:structure:dump"].invoke
54
+
55
+ assert File.exists?(structure_sql)
56
+ # CREATE MEMORY TABLE PUBLIC.LOOSERS
57
+ assert_match /CREATE .*? TABLE PUBLIC.LOOSERS/i, File.read(structure_sql)
58
+
59
+ # db:structure:load
60
+ drop_rake_test_database(:silence)
61
+ Rake::Task["db:structure:load"].invoke
62
+
63
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
64
+ assert ActiveRecord::Base.connection.table_exists?('loosers')
65
+ ActiveRecord::Base.connection.disconnect!
66
+ ensure
67
+ File.delete(structure_sql) if File.exists?(structure_sql)
68
+ Dir.rmdir 'db'
69
+ end
70
+ end
71
+
72
+ # test 'rake db:charset' do
73
+ # expect_rake_output('UTF-8')
74
+ # Rake::Task["db:charset"].invoke
75
+ # end
76
+
77
+ def create_rake_test_database(db_name = self.db_name)
78
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
79
+ if block_given?
80
+ yield ActiveRecord::Base.connection
81
+ end
82
+ ActiveRecord::Base.connection.shutdown
83
+ ActiveRecord::Base.connection.disconnect!
84
+ end
85
+
86
+ def drop_rake_test_database(silence = nil)
87
+ ActiveRecord::Base.establish_connection db_config.merge :database => @db_name
88
+ ActiveRecord::Base.connection.shutdown
89
+ ActiveRecord::Base.connection.disconnect!
90
+
91
+ Dir.glob("#{@db_name}*").each do |f|
92
+ if silence
93
+ FileUtils.rm_rf(f) if File.exists?(f)
94
+ else
95
+ FileUtils.rm_rf(f)
96
+ end
97
+ FileUtils.rmdir(f) if File.directory?(f)
98
+ end
99
+ end
100
+
101
+ end
@@ -9,7 +9,11 @@ class HSQLDBSchemaDumpTest < Test::Unit::TestCase
9
9
  def test_schema_dump_decimal_when_scale_specified
10
10
  output = standard_dump(StringIO.new, [/^[^d]/]) # keep db_types
11
11
  # t.column :sample_small_decimal, :decimal, :precision => 3, :scale => 2, :default => 3.14
12
- assert_match %r{t.decimal\s+"sample_small_decimal",\s+:precision => 3,\s+:scale => 2}, output
12
+ if ar_version('4.0')
13
+ assert_match %r{t.decimal\s+"sample_small_decimal",\s+precision: 3,\s+scale: 2}, output
14
+ else
15
+ assert_match %r{t.decimal\s+"sample_small_decimal",\s+:precision => 3,\s+:scale => 2}, output
16
+ end
13
17
  end
14
18
 
15
19
  end
@@ -6,4 +6,12 @@ class HsqldbSimpleTest < Test::Unit::TestCase
6
6
  include ExplainSupportTestMethods if ar_version("3.1")
7
7
  include ActiveRecord3TestMethods
8
8
  include CustomSelectTestMethods
9
+
10
+ # @override
11
+ def test_empty_insert_statement
12
+ # "INSERT INTO table DEFAULT VALUES" only works if all columns have defaults
13
+ pend if ar_version('4.0')
14
+ super
15
+ end
16
+
9
17
  end
@@ -1,7 +1,5 @@
1
1
 
2
- JNDI_CONFIG = {
3
- :adapter => 'jdbc', :jndi => 'jdbc/DerbyDB'
4
- }
2
+ JNDI_CONFIG = { :adapter => 'jdbc', :jndi => 'jdbc/DerbyDB' }
5
3
 
6
4
  # FS based JNDI impl borrowed from tomcat :
7
5
  load 'test/jars/tomcat-juli.jar'
@@ -1,7 +1,5 @@
1
1
 
2
- JNDI_POOLED_CONFIG = {
3
- :adapter => 'jdbc', :jndi => 'jdbc/PooledDerbyDB'
4
- }
2
+ JNDI_POOLED_CONFIG = { :adapter => 'jndi', :jndi => 'jdbc/PooledDerbyDB' }
5
3
 
6
4
  # FS based JNDI impl borrowed from tomcat :
7
5
  load 'test/jars/tomcat-juli.jar'
@@ -97,9 +97,9 @@ class MSSQLLimitOffsetTest < Test::Unit::TestCase
97
97
 
98
98
  def test_limit_with_no_id_column_available
99
99
  NoIdViking.create!(:name => 'Erik')
100
- assert_nothing_raised(ActiveRecord::StatementInvalid) do
100
+ #assert_nothing_raised(ActiveRecord::StatementInvalid) do
101
101
  NoIdViking.first
102
- end
102
+ #end
103
103
  end
104
104
 
105
105
  def test_limit_with_alternate_named_primary_key
@@ -140,12 +140,15 @@ class MSSQLLimitOffsetTest < Test::Unit::TestCase
140
140
  skei.vikings.create!(:name => "Bob")
141
141
  skei.vikings.create!(:name => "Ben")
142
142
  skei.vikings.create!(:name => "Basil")
143
- ships = Viking.find(:all, :include => :long_ship, :offset => 1, :limit => 2)
143
+ if ar_version('4.0')
144
+ ships = Viking.includes(:long_ship).offset(1).limit(2) #.all
145
+ else
146
+ ships = Viking.find(:all, :include => :long_ship, :offset => 1, :limit => 2)
147
+ end
144
148
  assert_equal(2, ships.size)
145
149
  end
146
150
 
147
151
  def test_limit_and_offset_with_include_and_order
148
-
149
152
  boat1 = LongShip.create!(:name => "1-Skei")
150
153
  boat2 = LongShip.create!(:name => "2-Skei")
151
154
 
@@ -153,29 +156,35 @@ class MSSQLLimitOffsetTest < Test::Unit::TestCase
153
156
  boat2.vikings.create!(:name => "Ben")
154
157
  boat1.vikings.create!(:name => "Carl")
155
158
  boat2.vikings.create!(:name => "Donald")
156
-
157
- vikings = Viking.find(:all, :include => :long_ship, :order => "long_ships.name, vikings.name", :offset => 0, :limit => 3)
158
- assert_equal(["Adam", "Carl", "Ben"], vikings.map(&:name))
159
159
 
160
+ if ar_version('4.0')
161
+ vikings = Viking.includes(:long_ship).order('long_ships.name, vikings.name').references(:long_ship).offset(0).limit(3)
162
+ else
163
+ vikings = Viking.find(:all, :include => :long_ship, :order => "long_ships.name, vikings.name", :offset => 0, :limit => 3)
164
+ end
165
+ assert_equal ["Adam", "Carl", "Ben"], vikings.map(&:name)
160
166
  end
161
167
 
162
168
  def test_offset_without_limit
163
- %w(one two three four five six seven eight).each do |name|
169
+ %w( egy keto harom negy ot hat het nyolc ).each do |name|
164
170
  LongShip.create!(:name => name)
165
171
  end
166
172
  error = assert_raise ActiveRecord::ActiveRecordError do
167
- LongShip.find(:all, :offset => 2)
173
+ if ar_version('3.0')
174
+ LongShip.select(:name).offset(2).all
175
+ else
176
+ LongShip.find(:all, :select => 'name', :offset => 2)
177
+ end
168
178
  end
169
- assert_equal("You must specify :limit with :offset.", error.message)
179
+ assert_equal "You must specify :limit with :offset.", error.message
170
180
  end
171
181
 
172
182
  def test_limit_with_group_by
173
- %w(one two three four five six seven eight).each do |name|
183
+ %w( one two three four five six seven eight ).each do |name|
174
184
  LongShip.create!(:name => name)
175
185
  end
176
-
177
- ships = LongShip.group(:name).find(:all, :limit => 2)
178
- asset_equal(['one', 'two'], ships.map(&:name))
186
+ ships = LongShip.select(:name).group(:name).limit(2).all
187
+ assert_equal ['one', 'two'], ships.map(&:name)
179
188
  end if ar_version('3.0')
180
189
 
181
190
  end