activerecord-jdbc-adapter 0.9.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. data/History.txt +163 -0
  2. data/Manifest.txt +130 -65
  3. data/README.txt +64 -72
  4. data/lib/active_record/connection_adapters/derby_adapter.rb +1 -13
  5. data/lib/active_record/connection_adapters/h2_adapter.rb +1 -13
  6. data/lib/active_record/connection_adapters/hsqldb_adapter.rb +1 -13
  7. data/lib/active_record/connection_adapters/informix_adapter.rb +1 -1
  8. data/lib/active_record/connection_adapters/jdbc_adapter.rb +1 -633
  9. data/lib/active_record/connection_adapters/jndi_adapter.rb +1 -1
  10. data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -0
  11. data/lib/active_record/connection_adapters/mysql2_adapter.rb +1 -0
  12. data/lib/active_record/connection_adapters/mysql_adapter.rb +1 -13
  13. data/lib/active_record/connection_adapters/oracle_adapter.rb +1 -1
  14. data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -13
  15. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +1 -13
  16. data/lib/activerecord-jdbc-adapter.rb +6 -0
  17. data/lib/arel/engines/sql/compilers/db2_compiler.rb +9 -0
  18. data/lib/arel/engines/sql/compilers/derby_compiler.rb +6 -0
  19. data/lib/arel/engines/sql/compilers/h2_compiler.rb +6 -0
  20. data/lib/arel/engines/sql/compilers/hsqldb_compiler.rb +15 -0
  21. data/lib/arel/engines/sql/compilers/jdbc_compiler.rb +6 -0
  22. data/lib/arel/engines/sql/compilers/mssql_compiler.rb +46 -0
  23. data/lib/arel/visitors/db2.rb +15 -0
  24. data/lib/arel/visitors/derby.rb +19 -0
  25. data/lib/arel/visitors/hsqldb.rb +24 -0
  26. data/lib/arel/visitors/mssql.rb +44 -0
  27. data/lib/arjdbc.rb +29 -0
  28. data/lib/arjdbc/db2.rb +2 -0
  29. data/lib/arjdbc/db2/adapter.rb +413 -0
  30. data/lib/arjdbc/derby.rb +7 -0
  31. data/lib/{jdbc_adapter/jdbc_derby.rb → arjdbc/derby/adapter.rb} +58 -132
  32. data/lib/arjdbc/derby/connection_methods.rb +18 -0
  33. data/lib/arjdbc/discover.rb +92 -0
  34. data/lib/arjdbc/firebird.rb +2 -0
  35. data/lib/{jdbc_adapter/jdbc_firebird.rb → arjdbc/firebird/adapter.rb} +36 -14
  36. data/lib/arjdbc/h2.rb +4 -0
  37. data/lib/arjdbc/h2/adapter.rb +36 -0
  38. data/lib/arjdbc/h2/connection_methods.rb +12 -0
  39. data/lib/arjdbc/hsqldb.rb +4 -0
  40. data/lib/{jdbc_adapter/jdbc_hsqldb.rb → arjdbc/hsqldb/adapter.rb} +34 -62
  41. data/lib/arjdbc/hsqldb/connection_methods.rb +14 -0
  42. data/lib/arjdbc/informix.rb +3 -0
  43. data/lib/{jdbc_adapter/jdbc_informix.rb → arjdbc/informix/adapter.rb} +10 -19
  44. data/lib/arjdbc/informix/connection_methods.rb +10 -0
  45. data/lib/arjdbc/jdbc.rb +2 -0
  46. data/lib/arjdbc/jdbc/adapter.rb +285 -0
  47. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  48. data/lib/arjdbc/jdbc/callbacks.rb +44 -0
  49. data/lib/arjdbc/jdbc/column.rb +38 -0
  50. data/lib/arjdbc/jdbc/compatibility.rb +51 -0
  51. data/lib/arjdbc/jdbc/connection.rb +128 -0
  52. data/lib/arjdbc/jdbc/connection_methods.rb +16 -0
  53. data/lib/arjdbc/jdbc/core_ext.rb +24 -0
  54. data/lib/arjdbc/jdbc/discover.rb +18 -0
  55. data/lib/arjdbc/jdbc/driver.rb +44 -0
  56. data/lib/arjdbc/jdbc/extension.rb +47 -0
  57. data/lib/arjdbc/jdbc/java.rb +14 -0
  58. data/lib/{jdbc_adapter → arjdbc/jdbc}/jdbc.rake +36 -26
  59. data/lib/{jdbc_adapter → arjdbc/jdbc}/missing_functionality_helper.rb +5 -5
  60. data/lib/arjdbc/jdbc/quoted_primary_key.rb +28 -0
  61. data/lib/arjdbc/jdbc/railtie.rb +9 -0
  62. data/lib/arjdbc/jdbc/rake_tasks.rb +10 -0
  63. data/lib/arjdbc/jdbc/require_driver.rb +16 -0
  64. data/lib/arjdbc/jdbc/type_converter.rb +126 -0
  65. data/lib/arjdbc/mimer.rb +2 -0
  66. data/lib/{jdbc_adapter/jdbc_mimer.rb → arjdbc/mimer/adapter.rb} +17 -16
  67. data/lib/arjdbc/mssql.rb +4 -0
  68. data/lib/arjdbc/mssql/adapter.rb +472 -0
  69. data/lib/arjdbc/mssql/connection_methods.rb +30 -0
  70. data/lib/arjdbc/mssql/limit_helpers.rb +92 -0
  71. data/lib/{jdbc_adapter → arjdbc/mssql}/tsql_helper.rb +2 -1
  72. data/lib/arjdbc/mysql.rb +4 -0
  73. data/lib/arjdbc/mysql/adapter.rb +416 -0
  74. data/lib/arjdbc/mysql/connection_methods.rb +27 -0
  75. data/lib/arjdbc/oracle.rb +3 -0
  76. data/lib/{jdbc_adapter/jdbc_oracle.rb → arjdbc/oracle/adapter.rb} +68 -33
  77. data/lib/arjdbc/oracle/connection_methods.rb +11 -0
  78. data/lib/arjdbc/postgresql.rb +4 -0
  79. data/lib/{jdbc_adapter/jdbc_postgre.rb → arjdbc/postgresql/adapter.rb} +147 -72
  80. data/lib/arjdbc/postgresql/connection_methods.rb +21 -0
  81. data/lib/arjdbc/sqlite3.rb +4 -0
  82. data/lib/arjdbc/sqlite3/adapter.rb +381 -0
  83. data/lib/arjdbc/sqlite3/connection_methods.rb +34 -0
  84. data/lib/arjdbc/sybase.rb +2 -0
  85. data/lib/arjdbc/sybase/adapter.rb +46 -0
  86. data/lib/arjdbc/version.rb +8 -0
  87. data/lib/generators/jdbc/jdbc_generator.rb +9 -0
  88. data/lib/jdbc_adapter.rb +2 -27
  89. data/lib/jdbc_adapter/rake_tasks.rb +3 -10
  90. data/lib/jdbc_adapter/version.rb +3 -5
  91. data/lib/pg.rb +23 -1
  92. data/rails_generators/jdbc_generator.rb +2 -2
  93. data/rails_generators/templates/{jdbc.rb → config/initializers/jdbc.rb} +1 -1
  94. data/rails_generators/templates/{jdbc.rake → lib/tasks/jdbc.rake} +2 -2
  95. data/rakelib/compile.rake +5 -3
  96. data/rakelib/db.rake +19 -0
  97. data/rakelib/package.rake +12 -6
  98. data/rakelib/test.rake +24 -14
  99. data/src/java/{jdbc_adapter/JdbcDerbySpec.java → arjdbc/derby/DerbyModule.java} +63 -34
  100. data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +70 -0
  101. data/src/java/{jdbc_adapter/MssqlRubyJdbcConnection.java → arjdbc/informix/InformixRubyJdbcConnection.java} +15 -12
  102. data/src/java/{jdbc_adapter/JdbcAdapterInternalService.java → arjdbc/jdbc/AdapterJavaService.java} +21 -8
  103. data/src/java/{jdbc_adapter → arjdbc/jdbc}/JdbcConnectionFactory.java +6 -6
  104. data/src/java/{jdbc_adapter → arjdbc/jdbc}/RubyJdbcConnection.java +210 -67
  105. data/src/java/arjdbc/jdbc/SQLBlock.java +48 -0
  106. data/src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java +127 -0
  107. data/src/java/{jdbc_adapter/JdbcMySQLSpec.java → arjdbc/mysql/MySQLModule.java} +12 -12
  108. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +87 -0
  109. data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +85 -0
  110. data/src/java/{jdbc_adapter/PostgresRubyJdbcConnection.java → arjdbc/postgresql/PostgresqlRubyJdbcConnection.java} +11 -9
  111. data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +64 -0
  112. data/test/abstract_db_create.rb +98 -19
  113. data/test/activerecord/connection_adapters/type_conversion_test.rb +1 -1
  114. data/test/db/db2.rb +4 -2
  115. data/test/db/derby.rb +12 -14
  116. data/test/db/hsqldb.rb +3 -2
  117. data/test/db/jndi_config.rb +22 -12
  118. data/test/db/mssql.rb +5 -5
  119. data/test/db/sqlite3.rb +2 -6
  120. data/test/db2_simple_test.rb +56 -0
  121. data/test/derby_migration_test.rb +50 -3
  122. data/test/derby_simple_test.rb +87 -0
  123. data/test/generic_jdbc_connection_test.rb +21 -1
  124. data/test/h2_simple_test.rb +35 -0
  125. data/test/jdbc_common.rb +4 -5
  126. data/test/jndi_callbacks_test.rb +3 -1
  127. data/test/jndi_test.rb +1 -11
  128. data/test/models/entry.rb +20 -0
  129. data/test/models/mixed_case.rb +7 -2
  130. data/test/models/string_id.rb +18 -0
  131. data/test/mssql_db_create_test.rb +26 -0
  132. data/test/mssql_identity_insert_test.rb +19 -0
  133. data/test/mssql_legacy_types_test.rb +58 -0
  134. data/test/mssql_limit_offset_test.rb +136 -0
  135. data/test/mssql_multibyte_test.rb +18 -0
  136. data/test/mssql_simple_test.rb +49 -0
  137. data/test/mysql_db_create_test.rb +8 -6
  138. data/test/mysql_info_test.rb +123 -0
  139. data/test/mysql_simple_test.rb +19 -1
  140. data/test/oracle_simple_test.rb +9 -20
  141. data/test/oracle_specific_test.rb +83 -0
  142. data/test/pick_rails_version.rb +3 -0
  143. data/test/postgres_db_create_test.rb +11 -0
  144. data/test/postgres_drop_db_test.rb +16 -0
  145. data/test/postgres_mixed_case_test.rb +11 -1
  146. data/test/postgres_nonseq_pkey_test.rb +0 -2
  147. data/test/postgres_schema_search_path_test.rb +44 -0
  148. data/test/postgres_simple_test.rb +53 -0
  149. data/test/postgres_table_alias_length_test.rb +15 -0
  150. data/test/simple.rb +103 -9
  151. data/test/sqlite3_simple_test.rb +1 -0
  152. data/test/sybase_jtds_simple_test.rb +22 -0
  153. metadata +239 -137
  154. data/lib/active_record/connection_adapters/cachedb_adapter.rb +0 -1
  155. data/lib/active_record/connection_adapters/jdbc_adapter_spec.rb +0 -26
  156. data/lib/jdbc_adapter/jdbc_adapter_internal.jar +0 -0
  157. data/lib/jdbc_adapter/jdbc_cachedb.rb +0 -33
  158. data/lib/jdbc_adapter/jdbc_db2.rb +0 -191
  159. data/lib/jdbc_adapter/jdbc_mssql.rb +0 -333
  160. data/lib/jdbc_adapter/jdbc_mysql.rb +0 -236
  161. data/lib/jdbc_adapter/jdbc_sqlite3.rb +0 -379
  162. data/lib/jdbc_adapter/jdbc_sybase.rb +0 -50
  163. data/src/java/jdbc_adapter/SQLBlock.java +0 -27
  164. data/src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java +0 -41
  165. data/test/cachedb_simple_test.rb +0 -6
  166. data/test/db/cachedb.rb +0 -9
  167. data/test/jdbc_adapter/jdbc_db2_test.rb +0 -26
  168. data/test/jdbc_adapter/jdbc_sybase_test.rb +0 -33
  169. data/test/minirunit.rb +0 -109
  170. data/test/minirunit/testConnect.rb +0 -14
  171. data/test/minirunit/testH2.rb +0 -73
  172. data/test/minirunit/testHsqldb.rb +0 -73
  173. data/test/minirunit/testLoadActiveRecord.rb +0 -3
  174. data/test/minirunit/testMysql.rb +0 -83
  175. data/test/minirunit/testRawSelect.rb +0 -24
@@ -1,5 +1,3 @@
1
- require 'rubygems'
2
- require 'active_record'
3
1
  require 'jdbc_common'
4
2
  require 'db/postgres'
5
3
 
@@ -0,0 +1,44 @@
1
+ require 'jdbc_common'
2
+ require 'db/postgres'
3
+
4
+ class CreateSchema < ActiveRecord::Migration
5
+ def self.up
6
+ execute "CREATE SCHEMA test"
7
+ execute "CREATE TABLE test.people (id serial, name text)"
8
+ execute "INSERT INTO test.people (name) VALUES ('Alex')"
9
+ execute "CREATE TABLE public.people (id serial, wrongname text)"
10
+ end
11
+
12
+ def self.down
13
+ execute "DROP SCHEMA test CASCADE"
14
+ execute "DROP TABLE people"
15
+ end
16
+ end
17
+
18
+ class Person < ActiveRecord::Base
19
+ establish_connection POSTGRES_CONFIG.merge(:schema_search_path => 'test')
20
+ end
21
+
22
+ class PostgresSchemaSearchPathTest < Test::Unit::TestCase
23
+ def setup
24
+ CreateSchema.up
25
+ end
26
+
27
+ def teardown
28
+ CreateSchema.down
29
+ end
30
+
31
+ def test_columns
32
+ assert_equal(%w{id name}, Person.column_names)
33
+ end
34
+
35
+ def test_find_right
36
+ assert_not_nil Person.find_by_name("Alex")
37
+ end
38
+
39
+ def test_find_wrong
40
+ assert_raise NoMethodError do
41
+ Person.find_by_wrongname("Alex")
42
+ end
43
+ end
44
+ end
@@ -9,4 +9,57 @@ require 'db/postgres'
9
9
 
10
10
  class PostgresSimpleTest < Test::Unit::TestCase
11
11
  include SimpleTestMethods
12
+ include ActiveRecord3TestMethods
13
+
14
+ def test_multi_statement_support
15
+ results = @connection.execute "SELECT title from entries; SELECT login from users"
16
+ assert_equal 2, results.length
17
+ assert_equal ["title"], results[0].first.keys
18
+ assert_equal ["login"], results[1].first.keys
19
+ end
20
+ end
21
+
22
+ class PostgresDeserializationTest < Test::Unit::TestCase
23
+ def setup
24
+ DbTypeMigration.up
25
+ end
26
+
27
+ def teardown
28
+ DbTypeMigration.down
29
+ end
30
+
31
+ def test_should_keep_float_precision
32
+ expected = DbType.create(:sample_float => 7.3)
33
+ actual = DbType.find(expected.id)
34
+
35
+ assert_equal expected.sample_float, actual.sample_float
36
+ end
37
+ end
38
+
39
+ class PostgresSchemaDumperTest < Test::Unit::TestCase
40
+ def setup
41
+ DbTypeMigration.up
42
+ @connection = ActiveRecord::Base.connection
43
+ strio = StringIO.new
44
+ ActiveRecord::SchemaDumper::dump(ActiveRecord::Base.connection, strio)
45
+ @dump = strio.string
46
+ end
47
+
48
+ def teardown
49
+ DbTypeMigration.down
50
+ end
51
+
52
+ # http://kenai.com/jira/browse/ACTIVERECORD_JDBC-135
53
+ def test_schema_dump_should_not_have_limits_on_boolean
54
+ lines = @dump.grep(/boolean/)
55
+ assert !lines.empty?
56
+ lines.each {|line| assert line !~ /limit/ }
57
+ end
58
+
59
+ # http://kenai.com/jira/browse/ACTIVERECORD_JDBC-139
60
+ def test_schema_dump_should_not_have_limits_on_text_or_date
61
+ lines = @dump.grep(/date|text/)
62
+ assert !lines.empty?
63
+ lines.each {|line| assert line !~ /limit/ }
64
+ end
12
65
  end
@@ -0,0 +1,15 @@
1
+ require 'jdbc_common'
2
+ require 'db/postgres'
3
+
4
+ class PostgresTableAliasLengthTest < Test::Unit::TestCase
5
+ def test_table_alias_length
6
+ result = ActiveRecord::Base.connection.select_one("SELECT 1 AS " + "a" * 2048)
7
+
8
+ actual_table_alias_length = result.keys.first.size
9
+ actual_table_alias_length = 0 if actual_table_alias_length == 2048
10
+
11
+ assert_equal(actual_table_alias_length,
12
+ ActiveRecord::Base.connection.table_alias_length)
13
+ end
14
+ end
15
+
@@ -8,7 +8,9 @@ Time.zone = 'Moscow' if Time.respond_to?(:zone)
8
8
  module MigrationSetup
9
9
  def setup
10
10
  DbTypeMigration.up
11
+ CreateStringIds.up
11
12
  CreateEntries.up
13
+ CreateUsers.up
12
14
  CreateAutoIds.up
13
15
  CreateValidatesUniquenessOf.up
14
16
 
@@ -17,7 +19,9 @@ module MigrationSetup
17
19
 
18
20
  def teardown
19
21
  DbTypeMigration.down
22
+ CreateStringIds.down
20
23
  CreateEntries.down
24
+ CreateUsers.down
21
25
  CreateAutoIds.down
22
26
  CreateValidatesUniquenessOf.down
23
27
  ActiveRecord::Base.clear_active_connections!
@@ -32,7 +36,8 @@ module FixtureSetup
32
36
  @content = "Hello from JRuby on Rails!"
33
37
  @new_title = "First post updated title"
34
38
  @rating = 205.76
35
- Entry.create :title => @title, :content => @content, :rating => @rating
39
+ @user = User.create :login=>"something"
40
+ @entry = Entry.create :title => @title, :content => @content, :rating => @rating, :user=>@user
36
41
  DbType.create
37
42
  end
38
43
  end
@@ -44,6 +49,10 @@ module SimpleTestMethods
44
49
  assert ActiveRecord::Base.connection.tables.find{|t| t =~ /^entries$/i}, "entries not created"
45
50
  end
46
51
 
52
+ def test_users_created
53
+ assert ActiveRecord::Base.connection.tables.find{|t| t =~ /^users$/i}, "users not created"
54
+ end
55
+
47
56
  def test_entries_empty
48
57
  Entry.delete_all
49
58
  assert_equal 0, Entry.count
@@ -60,7 +69,7 @@ module SimpleTestMethods
60
69
  value = ActiveRecord::Base.connection.insert("INSERT INTO entries (title, content, rating) VALUES('insert_title', 'some content', 1)")
61
70
  assert !value.nil?
62
71
  entry = Entry.find_by_title('insert_title')
63
- assert_equal value, entry.id
72
+ assert_equal entry.id, value
64
73
  end
65
74
  end
66
75
 
@@ -102,7 +111,31 @@ module SimpleTestMethods
102
111
  assert_equal prev_count - 1, Entry.count
103
112
  end
104
113
 
114
+ if Entry.respond_to?(:limit)
115
+ def test_limit
116
+ Entry.limit(10).to_a
117
+ end
118
+
119
+ def test_count_with_limit
120
+ assert_equal Entry.count, Entry.limit(10).count
121
+ end
122
+ end
123
+
105
124
  if Time.respond_to?(:zone)
125
+ def test_save_time_with_utc
126
+ current_zone = Time.zone
127
+ default_zone = ActiveRecord::Base.default_timezone
128
+ ActiveRecord::Base.default_timezone = Time.zone = :utc
129
+ now = Time.now
130
+ my_time = Time.local now.year, now.month, now.day, now.hour, now.min, now.sec
131
+ m = DbType.create! :sample_datetime => my_time
132
+ m.reload
133
+ assert_equal my_time, m.sample_datetime
134
+ rescue
135
+ Time.zone = current_zone
136
+ ActiveRecord::Base.default_timezone = default_zone
137
+ end
138
+
106
139
  def test_save_time
107
140
  t = Time.now
108
141
  #precision will only be expected to the second.
@@ -154,7 +187,12 @@ module SimpleTestMethods
154
187
  e.sample_date = date
155
188
  e.save!
156
189
  e = DbType.find(:first)
157
- assert_equal date, e.sample_date
190
+ if DbType.columns_hash["sample_date"].type == :datetime
191
+ # Oracle doesn't distinguish btw date/datetime
192
+ assert_equal date, e.sample_date.to_date
193
+ else
194
+ assert_equal date, e.sample_date
195
+ end
158
196
  end
159
197
 
160
198
  def test_boolean
@@ -213,7 +251,6 @@ module SimpleTestMethods
213
251
  binary_string = "\000ABCDEFGHIJKLMNOPQRSTUVWXYZ'\001\003"*1#2_000
214
252
  e = DbType.find(:first)
215
253
  e.sample_binary = binary_string
216
- e.send(:write_attribute, :binary, binary_string)
217
254
  e.save!
218
255
  e = DbType.find(:first)
219
256
  assert_equal binary_string, e.sample_binary
@@ -253,6 +290,15 @@ module SimpleTestMethods
253
290
  assert_nil AutoId.find(test.id).value
254
291
  end
255
292
 
293
+ # These should make no difference, but might due to the wacky regexp SQL rewriting we do.
294
+ def test_save_value_containing_sql
295
+ e = DbType.first
296
+ e.save
297
+
298
+ e.sample_string = e.sample_text = "\n\nselect from nothing where id = 'foo'"
299
+ e.save
300
+ end
301
+
256
302
  def test_invalid
257
303
  e = Entry.new(:title => @title, :content => @content, :rating => ' ')
258
304
  assert e.valid?
@@ -266,7 +312,7 @@ module SimpleTestMethods
266
312
 
267
313
  if jruby?
268
314
  def test_connection_valid
269
- assert_raises(ActiveRecord::ActiveRecordError) do
315
+ assert_raises(ActiveRecord::JDBCError) do
270
316
  @connection.raw_connection.with_connection_retry_guard do |c|
271
317
  begin
272
318
  stmt = c.createStatement
@@ -282,7 +328,7 @@ module SimpleTestMethods
282
328
 
283
329
  # ENEBO: Is this really ar-jdbc-specific or a bug in our adapter?
284
330
  def test_fetching_columns_for_nonexistent_table_should_raise
285
- assert_raises(ActiveRecord::ActiveRecordError) do
331
+ assert_raises(ActiveRecord::JDBCError) do
286
332
  Animal.columns
287
333
  end
288
334
  end
@@ -302,10 +348,37 @@ module SimpleTestMethods
302
348
  AddNotNullColumnToTable.down
303
349
  end
304
350
 
305
- def test_validates_uniqueness_of_strings_case_sensitive
306
- # MySQL string cmps are case-insensitive by default, so skip this test
307
- return if ActiveRecord::Base.connection.config[:adapter] =~ /mysql/
351
+ def test_add_null_column_with_default
352
+ Entry.connection.add_column :entries, :color, :string, :null => false, :default => "blue"
353
+ created_columns = Entry.connection.columns('entries')
354
+
355
+ color = created_columns.detect { |c| c.name == 'color' }
356
+ assert !color.null
357
+ end
358
+
359
+ def test_add_null_column_with_no_default
360
+ # You must specify a default value with most databases
361
+ if ActiveRecord::Base.connection.adapter_name =~ /mysql/i
362
+ Entry.connection.add_column :entries, :color, :string, :null => false
363
+ created_columns = Entry.connection.columns('entries')
308
364
 
365
+ color = created_columns.detect { |c| c.name == 'color' }
366
+ assert !color.null
367
+ end
368
+ end
369
+
370
+ def test_add_null_column_with_nil_default
371
+ # You must specify a default value with most databases
372
+ if ActiveRecord::Base.connection.adapter_name =~ /mysql/i
373
+ Entry.connection.add_column :entries, :color, :string, :null => false, :default => nil
374
+ created_columns = Entry.connection.columns('entries')
375
+
376
+ color = created_columns.detect { |c| c.name == 'color' }
377
+ assert !color.null
378
+ end
379
+ end
380
+
381
+ def test_validates_uniqueness_of_strings_case_sensitive
309
382
  name_lower = ValidatesUniquenessOfString.new(:cs_string => "name", :ci_string => '1')
310
383
  name_lower.save!
311
384
 
@@ -371,6 +444,14 @@ module SimpleTestMethods
371
444
  ChangeEntriesTable.up
372
445
  ChangeEntriesTable.down
373
446
  end
447
+
448
+ def test_string_id
449
+ f = StringId.new
450
+ f.id = "some_string"
451
+ f.save
452
+ f = StringId.first #reload is essential
453
+ assert_equal "some_string", f.id
454
+ end
374
455
  end
375
456
 
376
457
  module MultibyteTestMethods
@@ -450,3 +531,16 @@ module NonUTF8EncodingMethods
450
531
  assert_equal prague_district, new_entry.title
451
532
  end
452
533
  end
534
+
535
+ module ActiveRecord3TestMethods
536
+ def self.included(base)
537
+ base.send :include, Tests if ActiveRecord::VERSION::MAJOR == 3
538
+ end
539
+
540
+ module Tests
541
+ def test_where
542
+ entries = Entry.where(:title => @entry.title)
543
+ assert_equal @entry, entries.first
544
+ end
545
+ end
546
+ end
@@ -5,6 +5,7 @@ require 'models/validates_uniqueness_of_string'
5
5
 
6
6
  class SQLite3SimpleTest < Test::Unit::TestCase
7
7
  include SimpleTestMethods
8
+ include ActiveRecord3TestMethods
8
9
 
9
10
  def test_recreate_database
10
11
  assert @connection.tables.include?(Entry.table_name)
@@ -4,3 +4,25 @@ require 'db/sybase_jtds'
4
4
  class SybaseJtdsSimpleTest < Test::Unit::TestCase
5
5
  include SimpleTestMethods
6
6
  end
7
+
8
+ class SybaseAdapterSelectionTest < Test::Unit::TestCase
9
+ class MockConnection
10
+ def adapter=(adapt)
11
+ end
12
+ end
13
+
14
+ def test_jtds_selection_using_dialect
15
+ config = {
16
+ :driver => 'net.sourceforge.jtds.Driver',
17
+ :dialect => 'sybase'
18
+ }
19
+ adapt = JdbcAdapter.new(MockConnection.new, nil, config)
20
+ assert adapt.kind_of?(ArJdbc::Sybase), "Should be a sybase adapter"
21
+ end
22
+
23
+ def test_jtds_selection_not_using_dialect
24
+ config = { :driver => 'net.sourceforge.jtds.Driver' }
25
+ adapt = JdbcAdapter.new(MockConnection.new, nil, config)
26
+ assert adapt.kind_of?(ArJdbc::MsSQL), "Should be a MsSQL apdater"
27
+ end
28
+ end
metadata CHANGED
@@ -1,18 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-jdbc-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 1
8
+ - 0
9
+ version: 1.1.0
5
10
  platform: ruby
6
11
  authors:
7
- - Nick Sieger, Ola Bini and JRuby contributors
12
+ - Nick Sieger, Ola Bini and JRuby contributors
8
13
  autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-10-02 00:00:00 -05:00
17
+ date: 2010-12-09 00:00:00 -06:00
13
18
  default_executable:
14
- dependencies: []
15
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rubyforge
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 2
30
+ - 0
31
+ - 4
32
+ version: 2.0.4
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: hoe
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 2
45
+ - 6
46
+ - 2
47
+ version: 2.6.2
48
+ type: :development
49
+ version_requirements: *id002
16
50
  description: |-
17
51
  activerecord-jdbc-adapter is a database adapter for Rails' ActiveRecord
18
52
  component that can be used with JRuby[http://www.jruby.org/]. It allows use of
@@ -23,153 +57,221 @@ executables: []
23
57
  extensions: []
24
58
 
25
59
  extra_rdoc_files:
26
- - History.txt
27
- - Manifest.txt
28
- - README.txt
29
- - LICENSE.txt
60
+ - History.txt
61
+ - Manifest.txt
62
+ - README.txt
63
+ - LICENSE.txt
30
64
  files:
31
- - History.txt
32
- - Manifest.txt
33
- - README.txt
34
- - Rakefile
35
- - LICENSE.txt
36
- - lib/active_record/connection_adapters/cachedb_adapter.rb
37
- - lib/active_record/connection_adapters/derby_adapter.rb
38
- - lib/active_record/connection_adapters/h2_adapter.rb
39
- - lib/active_record/connection_adapters/hsqldb_adapter.rb
40
- - lib/active_record/connection_adapters/informix_adapter.rb
41
- - lib/active_record/connection_adapters/jdbc_adapter.rb
42
- - lib/active_record/connection_adapters/jdbc_adapter_spec.rb
43
- - lib/active_record/connection_adapters/jndi_adapter.rb
44
- - lib/active_record/connection_adapters/mysql_adapter.rb
45
- - lib/active_record/connection_adapters/oracle_adapter.rb
46
- - lib/active_record/connection_adapters/postgresql_adapter.rb
47
- - lib/active_record/connection_adapters/sqlite3_adapter.rb
48
- - lib/jdbc_adapter/jdbc_cachedb.rb
49
- - lib/jdbc_adapter/jdbc_db2.rb
50
- - lib/jdbc_adapter/jdbc_derby.rb
51
- - lib/jdbc_adapter/jdbc_firebird.rb
52
- - lib/jdbc_adapter/jdbc_hsqldb.rb
53
- - lib/jdbc_adapter/jdbc_informix.rb
54
- - lib/jdbc_adapter/jdbc_mimer.rb
55
- - lib/jdbc_adapter/jdbc_mssql.rb
56
- - lib/jdbc_adapter/jdbc_mysql.rb
57
- - lib/jdbc_adapter/jdbc_oracle.rb
58
- - lib/jdbc_adapter/jdbc_postgre.rb
59
- - lib/jdbc_adapter/jdbc_sqlite3.rb
60
- - lib/jdbc_adapter/jdbc_sybase.rb
61
- - lib/jdbc_adapter/missing_functionality_helper.rb
62
- - lib/jdbc_adapter/rake_tasks.rb
63
- - lib/jdbc_adapter/tsql_helper.rb
64
- - lib/jdbc_adapter/version.rb
65
- - lib/jdbc_adapter.rb
66
- - lib/pg.rb
67
- - lib/jdbc_adapter/jdbc_adapter_internal.jar
68
- - test/abstract_db_create.rb
69
- - test/activerecord/connection_adapters/type_conversion_test.rb
70
- - test/activerecord/connections/native_jdbc_mysql/connection.rb
71
- - test/cachedb_simple_test.rb
72
- - test/db/cachedb.rb
73
- - test/db/db2.rb
74
- - test/db/derby.rb
75
- - test/db/h2.rb
76
- - test/db/hsqldb.rb
77
- - test/db/informix.rb
78
- - test/db/jdbc.rb
79
- - test/db/jndi_config.rb
80
- - test/db/logger.rb
81
- - test/db/mssql.rb
82
- - test/db/mysql.rb
83
- - test/db/oracle.rb
84
- - test/db/postgres.rb
85
- - test/db/sqlite3.rb
86
- - test/db2_simple_test.rb
87
- - test/derby_migration_test.rb
88
- - test/derby_multibyte_test.rb
89
- - test/derby_simple_test.rb
90
- - test/generic_jdbc_connection_test.rb
91
- - test/h2_simple_test.rb
92
- - test/has_many_through.rb
93
- - test/helper.rb
94
- - test/hsqldb_simple_test.rb
95
- - test/informix_simple_test.rb
96
- - test/jdbc_adapter/jdbc_db2_test.rb
97
- - test/jdbc_adapter/jdbc_sybase_test.rb
98
- - test/jdbc_common.rb
99
- - test/jndi_callbacks_test.rb
100
- - test/jndi_test.rb
101
- - test/manualTestDatabase.rb
102
- - test/minirunit/testConnect.rb
103
- - test/minirunit/testH2.rb
104
- - test/minirunit/testHsqldb.rb
105
- - test/minirunit/testLoadActiveRecord.rb
106
- - test/minirunit/testMysql.rb
107
- - test/minirunit/testRawSelect.rb
108
- - test/minirunit.rb
109
- - test/models/add_not_null_column_to_table.rb
110
- - test/models/auto_id.rb
111
- - test/models/data_types.rb
112
- - test/models/entry.rb
113
- - test/models/mixed_case.rb
114
- - test/models/reserved_word.rb
115
- - test/models/validates_uniqueness_of_string.rb
116
- - test/mssql_simple_test.rb
117
- - test/mysql_db_create_test.rb
118
- - test/mysql_multibyte_test.rb
119
- - test/mysql_nonstandard_primary_key_test.rb
120
- - test/mysql_simple_test.rb
121
- - test/oracle_simple_test.rb
122
- - test/postgres_db_create_test.rb
123
- - test/postgres_mixed_case_test.rb
124
- - test/postgres_nonseq_pkey_test.rb
125
- - test/postgres_reserved_test.rb
126
- - test/postgres_simple_test.rb
127
- - test/simple.rb
128
- - test/sqlite3_simple_test.rb
129
- - test/sybase_jtds_simple_test.rb
130
- - lib/jdbc_adapter/jdbc.rake
131
- - src/java/jdbc_adapter/JdbcAdapterInternalService.java
132
- - src/java/jdbc_adapter/JdbcConnectionFactory.java
133
- - src/java/jdbc_adapter/JdbcDerbySpec.java
134
- - src/java/jdbc_adapter/JdbcMySQLSpec.java
135
- - src/java/jdbc_adapter/MssqlRubyJdbcConnection.java
136
- - src/java/jdbc_adapter/PostgresRubyJdbcConnection.java
137
- - src/java/jdbc_adapter/RubyJdbcConnection.java
138
- - src/java/jdbc_adapter/SQLBlock.java
139
- - src/java/jdbc_adapter/Sqlite3RubyJdbcConnection.java
140
- - rakelib/compile.rake
141
- - rakelib/package.rake
142
- - rakelib/rails.rake
143
- - rakelib/test.rake
144
- - rails_generators/jdbc_generator.rb
145
- - rails_generators/templates/jdbc.rake
146
- - rails_generators/templates/jdbc.rb
65
+ - History.txt
66
+ - Manifest.txt
67
+ - README.txt
68
+ - Rakefile
69
+ - LICENSE.txt
70
+ - lib/activerecord-jdbc-adapter.rb
71
+ - lib/arjdbc.rb
72
+ - lib/jdbc_adapter.rb
73
+ - lib/pg.rb
74
+ - lib/active_record/connection_adapters/derby_adapter.rb
75
+ - lib/active_record/connection_adapters/h2_adapter.rb
76
+ - lib/active_record/connection_adapters/hsqldb_adapter.rb
77
+ - lib/active_record/connection_adapters/informix_adapter.rb
78
+ - lib/active_record/connection_adapters/jdbc_adapter.rb
79
+ - lib/active_record/connection_adapters/jndi_adapter.rb
80
+ - lib/active_record/connection_adapters/mssql_adapter.rb
81
+ - lib/active_record/connection_adapters/mysql2_adapter.rb
82
+ - lib/active_record/connection_adapters/mysql_adapter.rb
83
+ - lib/active_record/connection_adapters/oracle_adapter.rb
84
+ - lib/active_record/connection_adapters/postgresql_adapter.rb
85
+ - lib/active_record/connection_adapters/sqlite3_adapter.rb
86
+ - lib/arel/engines/sql/compilers/db2_compiler.rb
87
+ - lib/arel/engines/sql/compilers/derby_compiler.rb
88
+ - lib/arel/engines/sql/compilers/h2_compiler.rb
89
+ - lib/arel/engines/sql/compilers/hsqldb_compiler.rb
90
+ - lib/arel/engines/sql/compilers/jdbc_compiler.rb
91
+ - lib/arel/engines/sql/compilers/mssql_compiler.rb
92
+ - lib/arel/visitors/db2.rb
93
+ - lib/arel/visitors/derby.rb
94
+ - lib/arel/visitors/hsqldb.rb
95
+ - lib/arel/visitors/mssql.rb
96
+ - lib/arjdbc/db2.rb
97
+ - lib/arjdbc/derby.rb
98
+ - lib/arjdbc/discover.rb
99
+ - lib/arjdbc/firebird.rb
100
+ - lib/arjdbc/h2.rb
101
+ - lib/arjdbc/hsqldb.rb
102
+ - lib/arjdbc/informix.rb
103
+ - lib/arjdbc/jdbc.rb
104
+ - lib/arjdbc/mimer.rb
105
+ - lib/arjdbc/mssql.rb
106
+ - lib/arjdbc/mysql.rb
107
+ - lib/arjdbc/oracle.rb
108
+ - lib/arjdbc/postgresql.rb
109
+ - lib/arjdbc/sqlite3.rb
110
+ - lib/arjdbc/sybase.rb
111
+ - lib/arjdbc/version.rb
112
+ - lib/arjdbc/db2/adapter.rb
113
+ - lib/arjdbc/derby/adapter.rb
114
+ - lib/arjdbc/derby/connection_methods.rb
115
+ - lib/arjdbc/firebird/adapter.rb
116
+ - lib/arjdbc/h2/adapter.rb
117
+ - lib/arjdbc/h2/connection_methods.rb
118
+ - lib/arjdbc/hsqldb/adapter.rb
119
+ - lib/arjdbc/hsqldb/connection_methods.rb
120
+ - lib/arjdbc/informix/adapter.rb
121
+ - lib/arjdbc/informix/connection_methods.rb
122
+ - lib/arjdbc/jdbc/adapter.rb
123
+ - lib/arjdbc/jdbc/callbacks.rb
124
+ - lib/arjdbc/jdbc/column.rb
125
+ - lib/arjdbc/jdbc/compatibility.rb
126
+ - lib/arjdbc/jdbc/connection.rb
127
+ - lib/arjdbc/jdbc/connection_methods.rb
128
+ - lib/arjdbc/jdbc/core_ext.rb
129
+ - lib/arjdbc/jdbc/discover.rb
130
+ - lib/arjdbc/jdbc/driver.rb
131
+ - lib/arjdbc/jdbc/extension.rb
132
+ - lib/arjdbc/jdbc/java.rb
133
+ - lib/arjdbc/jdbc/missing_functionality_helper.rb
134
+ - lib/arjdbc/jdbc/quoted_primary_key.rb
135
+ - lib/arjdbc/jdbc/railtie.rb
136
+ - lib/arjdbc/jdbc/rake_tasks.rb
137
+ - lib/arjdbc/jdbc/require_driver.rb
138
+ - lib/arjdbc/jdbc/type_converter.rb
139
+ - lib/arjdbc/mimer/adapter.rb
140
+ - lib/arjdbc/mssql/adapter.rb
141
+ - lib/arjdbc/mssql/connection_methods.rb
142
+ - lib/arjdbc/mssql/limit_helpers.rb
143
+ - lib/arjdbc/mssql/tsql_helper.rb
144
+ - lib/arjdbc/mysql/adapter.rb
145
+ - lib/arjdbc/mysql/connection_methods.rb
146
+ - lib/arjdbc/oracle/adapter.rb
147
+ - lib/arjdbc/oracle/connection_methods.rb
148
+ - lib/arjdbc/postgresql/adapter.rb
149
+ - lib/arjdbc/postgresql/connection_methods.rb
150
+ - lib/arjdbc/sqlite3/adapter.rb
151
+ - lib/arjdbc/sqlite3/connection_methods.rb
152
+ - lib/arjdbc/sybase/adapter.rb
153
+ - lib/generators/jdbc/jdbc_generator.rb
154
+ - lib/jdbc_adapter/rake_tasks.rb
155
+ - lib/jdbc_adapter/version.rb
156
+ - lib/arjdbc/jdbc/adapter_java.jar
157
+ - test/abstract_db_create.rb
158
+ - test/db2_simple_test.rb
159
+ - test/derby_migration_test.rb
160
+ - test/derby_multibyte_test.rb
161
+ - test/derby_simple_test.rb
162
+ - test/generic_jdbc_connection_test.rb
163
+ - test/h2_simple_test.rb
164
+ - test/has_many_through.rb
165
+ - test/helper.rb
166
+ - test/hsqldb_simple_test.rb
167
+ - test/informix_simple_test.rb
168
+ - test/jdbc_common.rb
169
+ - test/jndi_callbacks_test.rb
170
+ - test/jndi_test.rb
171
+ - test/manualTestDatabase.rb
172
+ - test/mssql_db_create_test.rb
173
+ - test/mssql_identity_insert_test.rb
174
+ - test/mssql_legacy_types_test.rb
175
+ - test/mssql_limit_offset_test.rb
176
+ - test/mssql_multibyte_test.rb
177
+ - test/mssql_simple_test.rb
178
+ - test/mysql_db_create_test.rb
179
+ - test/mysql_info_test.rb
180
+ - test/mysql_multibyte_test.rb
181
+ - test/mysql_nonstandard_primary_key_test.rb
182
+ - test/mysql_simple_test.rb
183
+ - test/oracle_simple_test.rb
184
+ - test/oracle_specific_test.rb
185
+ - test/pick_rails_version.rb
186
+ - test/postgres_db_create_test.rb
187
+ - test/postgres_drop_db_test.rb
188
+ - test/postgres_mixed_case_test.rb
189
+ - test/postgres_nonseq_pkey_test.rb
190
+ - test/postgres_reserved_test.rb
191
+ - test/postgres_schema_search_path_test.rb
192
+ - test/postgres_simple_test.rb
193
+ - test/postgres_table_alias_length_test.rb
194
+ - test/simple.rb
195
+ - test/sqlite3_simple_test.rb
196
+ - test/sybase_jtds_simple_test.rb
197
+ - test/activerecord/connection_adapters/type_conversion_test.rb
198
+ - test/activerecord/connections/native_jdbc_mysql/connection.rb
199
+ - test/db/db2.rb
200
+ - test/db/derby.rb
201
+ - test/db/h2.rb
202
+ - test/db/hsqldb.rb
203
+ - test/db/informix.rb
204
+ - test/db/jdbc.rb
205
+ - test/db/jndi_config.rb
206
+ - test/db/logger.rb
207
+ - test/db/mssql.rb
208
+ - test/db/mysql.rb
209
+ - test/db/oracle.rb
210
+ - test/db/postgres.rb
211
+ - test/db/sqlite3.rb
212
+ - test/models/add_not_null_column_to_table.rb
213
+ - test/models/auto_id.rb
214
+ - test/models/data_types.rb
215
+ - test/models/entry.rb
216
+ - test/models/mixed_case.rb
217
+ - test/models/reserved_word.rb
218
+ - test/models/string_id.rb
219
+ - test/models/validates_uniqueness_of_string.rb
220
+ - lib/arjdbc/jdbc/jdbc.rake
221
+ - src/java/arjdbc/derby/DerbyModule.java
222
+ - src/java/arjdbc/h2/H2RubyJdbcConnection.java
223
+ - src/java/arjdbc/informix/InformixRubyJdbcConnection.java
224
+ - src/java/arjdbc/jdbc/AdapterJavaService.java
225
+ - src/java/arjdbc/jdbc/JdbcConnectionFactory.java
226
+ - src/java/arjdbc/jdbc/RubyJdbcConnection.java
227
+ - src/java/arjdbc/jdbc/SQLBlock.java
228
+ - src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java
229
+ - src/java/arjdbc/mysql/MySQLModule.java
230
+ - src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java
231
+ - src/java/arjdbc/oracle/OracleRubyJdbcConnection.java
232
+ - src/java/arjdbc/postgresql/PostgresqlRubyJdbcConnection.java
233
+ - src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java
234
+ - rakelib/compile.rake
235
+ - rakelib/db.rake
236
+ - rakelib/package.rake
237
+ - rakelib/rails.rake
238
+ - rakelib/test.rake
239
+ - rails_generators/jdbc_generator.rb
240
+ - rails_generators/templates/config/initializers/jdbc.rb
241
+ - rails_generators/templates/lib/tasks/jdbc.rake
147
242
  has_rdoc: true
148
243
  homepage: http://jruby-extras.rubyforge.org/activerecord-jdbc-adapter
149
244
  licenses: []
150
245
 
151
246
  post_install_message:
152
247
  rdoc_options:
153
- - --main
154
- - README.txt
248
+ - --main
249
+ - README.txt
250
+ - -SHN
251
+ - -f
252
+ - darkfish
155
253
  require_paths:
156
- - lib
254
+ - lib
157
255
  required_ruby_version: !ruby/object:Gem::Requirement
256
+ none: false
158
257
  requirements:
159
- - - ">="
160
- - !ruby/object:Gem::Version
161
- version: "0"
162
- version:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ segments:
261
+ - 0
262
+ version: "0"
163
263
  required_rubygems_version: !ruby/object:Gem::Requirement
264
+ none: false
164
265
  requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: "0"
168
- version:
266
+ - - ">="
267
+ - !ruby/object:Gem::Version
268
+ segments:
269
+ - 0
270
+ version: "0"
169
271
  requirements: []
170
272
 
171
273
  rubyforge_project: jruby-extras
172
- rubygems_version: 1.3.5
274
+ rubygems_version: 1.3.7
173
275
  signing_key:
174
276
  specification_version: 3
175
277
  summary: JDBC adapter for ActiveRecord, for use within JRuby on Rails.