activerecord-jdbc-adapter 1.0.3-java → 50.1-java

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 (268) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +33 -0
  3. data/.travis.yml +79 -0
  4. data/.yardopts +4 -0
  5. data/CONTRIBUTING.md +50 -0
  6. data/Gemfile +91 -0
  7. data/History.md +1191 -0
  8. data/LICENSE.txt +22 -17
  9. data/README.md +169 -0
  10. data/RUNNING_TESTS.md +127 -0
  11. data/Rakefile +294 -5
  12. data/Rakefile.jdbc +20 -0
  13. data/activerecord-jdbc-adapter.gemspec +55 -0
  14. data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
  15. data/lib/active_record/connection_adapters/db2_adapter.rb +1 -0
  16. data/lib/active_record/connection_adapters/firebird_adapter.rb +1 -0
  17. data/lib/active_record/connection_adapters/mariadb_adapter.rb +1 -0
  18. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
  19. data/lib/activerecord-jdbc-adapter.rb +0 -5
  20. data/lib/arel/visitors/compat.rb +60 -0
  21. data/lib/arel/visitors/db2.rb +128 -6
  22. data/lib/arel/visitors/derby.rb +103 -10
  23. data/lib/arel/visitors/firebird.rb +79 -0
  24. data/lib/arel/visitors/h2.rb +25 -0
  25. data/lib/arel/visitors/hsqldb.rb +18 -10
  26. data/lib/arel/visitors/postgresql_jdbc.rb +6 -0
  27. data/lib/arel/visitors/sql_server.rb +225 -0
  28. data/lib/arel/visitors/sql_server/ng42.rb +293 -0
  29. data/lib/arjdbc.rb +11 -21
  30. data/lib/arjdbc/abstract/connection_management.rb +35 -0
  31. data/lib/arjdbc/abstract/core.rb +64 -0
  32. data/lib/arjdbc/abstract/database_statements.rb +64 -0
  33. data/lib/arjdbc/abstract/statement_cache.rb +58 -0
  34. data/lib/arjdbc/abstract/transaction_support.rb +86 -0
  35. data/lib/arjdbc/db2.rb +3 -1
  36. data/lib/arjdbc/db2/adapter.rb +630 -250
  37. data/lib/arjdbc/db2/as400.rb +130 -0
  38. data/lib/arjdbc/db2/column.rb +167 -0
  39. data/lib/arjdbc/db2/connection_methods.rb +44 -0
  40. data/lib/arjdbc/derby.rb +1 -5
  41. data/lib/arjdbc/derby/active_record_patch.rb +13 -0
  42. data/lib/arjdbc/derby/adapter.rb +409 -217
  43. data/lib/arjdbc/derby/connection_methods.rb +16 -14
  44. data/lib/arjdbc/derby/schema_creation.rb +15 -0
  45. data/lib/arjdbc/discover.rb +62 -50
  46. data/lib/arjdbc/firebird.rb +3 -1
  47. data/lib/arjdbc/firebird/adapter.rb +365 -62
  48. data/lib/arjdbc/firebird/connection_methods.rb +23 -0
  49. data/lib/arjdbc/h2.rb +2 -3
  50. data/lib/arjdbc/h2/adapter.rb +273 -6
  51. data/lib/arjdbc/h2/connection_methods.rb +23 -8
  52. data/lib/arjdbc/hsqldb.rb +2 -3
  53. data/lib/arjdbc/hsqldb/adapter.rb +204 -77
  54. data/lib/arjdbc/hsqldb/connection_methods.rb +24 -10
  55. data/lib/arjdbc/hsqldb/explain_support.rb +35 -0
  56. data/lib/arjdbc/hsqldb/schema_creation.rb +11 -0
  57. data/lib/arjdbc/informix.rb +4 -2
  58. data/lib/arjdbc/informix/adapter.rb +78 -54
  59. data/lib/arjdbc/informix/connection_methods.rb +8 -9
  60. data/lib/arjdbc/jdbc.rb +59 -2
  61. data/lib/arjdbc/jdbc/adapter.rb +356 -166
  62. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  63. data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
  64. data/lib/arjdbc/jdbc/base_ext.rb +15 -0
  65. data/lib/arjdbc/jdbc/callbacks.rb +27 -18
  66. data/lib/arjdbc/jdbc/column.rb +79 -20
  67. data/lib/arjdbc/jdbc/connection.rb +5 -119
  68. data/lib/arjdbc/jdbc/connection_methods.rb +32 -4
  69. data/lib/arjdbc/jdbc/error.rb +65 -0
  70. data/lib/arjdbc/jdbc/extension.rb +41 -29
  71. data/lib/arjdbc/jdbc/java.rb +5 -6
  72. data/lib/arjdbc/jdbc/jdbc.rake +3 -126
  73. data/lib/arjdbc/jdbc/railtie.rb +2 -9
  74. data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
  75. data/lib/arjdbc/jdbc/serialized_attributes_helper.rb +3 -0
  76. data/lib/arjdbc/jdbc/type_cast.rb +166 -0
  77. data/lib/arjdbc/jdbc/type_converter.rb +35 -19
  78. data/lib/arjdbc/mssql.rb +6 -3
  79. data/lib/arjdbc/mssql/adapter.rb +630 -298
  80. data/lib/arjdbc/mssql/column.rb +200 -0
  81. data/lib/arjdbc/mssql/connection_methods.rb +66 -17
  82. data/lib/arjdbc/mssql/explain_support.rb +99 -0
  83. data/lib/arjdbc/mssql/limit_helpers.rb +189 -50
  84. data/lib/arjdbc/mssql/lock_methods.rb +77 -0
  85. data/lib/arjdbc/mssql/types.rb +343 -0
  86. data/lib/arjdbc/mssql/utils.rb +82 -0
  87. data/lib/arjdbc/mysql.rb +2 -3
  88. data/lib/arjdbc/mysql/adapter.rb +86 -356
  89. data/lib/arjdbc/mysql/connection_methods.rb +159 -23
  90. data/lib/arjdbc/oracle/adapter.rb +714 -263
  91. data/lib/arjdbc/postgresql.rb +2 -3
  92. data/lib/arjdbc/postgresql/_bc_time_cast_patch.rb +24 -0
  93. data/lib/arjdbc/postgresql/adapter.rb +570 -400
  94. data/lib/arjdbc/postgresql/base/array_decoder.rb +26 -0
  95. data/lib/arjdbc/postgresql/base/array_encoder.rb +25 -0
  96. data/lib/arjdbc/postgresql/base/array_parser.rb +95 -0
  97. data/lib/arjdbc/postgresql/base/pgconn.rb +11 -0
  98. data/lib/arjdbc/postgresql/column.rb +51 -0
  99. data/lib/arjdbc/postgresql/connection_methods.rb +57 -18
  100. data/lib/arjdbc/postgresql/name.rb +24 -0
  101. data/lib/arjdbc/postgresql/oid_types.rb +192 -0
  102. data/lib/arjdbc/railtie.rb +11 -0
  103. data/lib/arjdbc/sqlite3.rb +2 -3
  104. data/lib/arjdbc/sqlite3/adapter.rb +518 -198
  105. data/lib/arjdbc/sqlite3/connection_methods.rb +49 -24
  106. data/lib/arjdbc/sybase.rb +2 -2
  107. data/lib/arjdbc/sybase/adapter.rb +7 -6
  108. data/lib/arjdbc/tasks.rb +13 -0
  109. data/lib/arjdbc/tasks/database_tasks.rb +52 -0
  110. data/lib/arjdbc/tasks/databases.rake +91 -0
  111. data/lib/arjdbc/tasks/databases3.rake +215 -0
  112. data/lib/arjdbc/tasks/databases4.rake +39 -0
  113. data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
  114. data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
  115. data/lib/arjdbc/tasks/h2_database_tasks.rb +31 -0
  116. data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
  117. data/lib/arjdbc/tasks/jdbc_database_tasks.rb +169 -0
  118. data/lib/arjdbc/tasks/mssql_database_tasks.rb +46 -0
  119. data/lib/arjdbc/util/quoted_cache.rb +60 -0
  120. data/lib/arjdbc/util/serialized_attributes.rb +98 -0
  121. data/lib/arjdbc/util/table_copier.rb +110 -0
  122. data/lib/arjdbc/version.rb +1 -6
  123. data/lib/generators/jdbc/USAGE +9 -0
  124. data/lib/generators/jdbc/jdbc_generator.rb +8 -0
  125. data/lib/jdbc_adapter.rb +1 -1
  126. data/lib/jdbc_adapter/rake_tasks.rb +3 -2
  127. data/lib/jdbc_adapter/version.rb +2 -1
  128. data/pom.xml +114 -0
  129. data/rails_generators/jdbc_generator.rb +1 -1
  130. data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
  131. data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
  132. data/rakelib/01-tomcat.rake +51 -0
  133. data/rakelib/02-test.rake +132 -0
  134. data/rakelib/bundler_ext.rb +11 -0
  135. data/rakelib/compile.rake +67 -22
  136. data/rakelib/db.rake +61 -0
  137. data/rakelib/rails.rake +204 -29
  138. data/src/java/arjdbc/ArJdbcModule.java +286 -0
  139. data/src/java/arjdbc/db2/DB2Module.java +76 -0
  140. data/src/java/arjdbc/db2/DB2RubyJdbcConnection.java +126 -0
  141. data/src/java/arjdbc/derby/DerbyModule.java +99 -243
  142. data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +152 -0
  143. data/src/java/arjdbc/firebird/FirebirdRubyJdbcConnection.java +174 -0
  144. data/src/java/arjdbc/{jdbc/JdbcConnectionFactory.java → h2/H2Module.java} +20 -6
  145. data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +27 -12
  146. data/src/java/arjdbc/hsqldb/HSQLDBModule.java +73 -0
  147. data/src/java/arjdbc/informix/InformixRubyJdbcConnection.java +7 -6
  148. data/src/java/arjdbc/jdbc/AdapterJavaService.java +7 -29
  149. data/src/java/arjdbc/jdbc/Callable.java +44 -0
  150. data/src/java/arjdbc/jdbc/ConnectionFactory.java +132 -0
  151. data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +157 -0
  152. data/src/java/arjdbc/jdbc/DriverConnectionFactory.java +63 -0
  153. data/src/java/arjdbc/jdbc/DriverWrapper.java +119 -0
  154. data/src/java/arjdbc/jdbc/JdbcResult.java +130 -0
  155. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +3622 -948
  156. data/src/java/arjdbc/mssql/MSSQLModule.java +90 -0
  157. data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +181 -0
  158. data/src/java/arjdbc/mysql/MySQLModule.java +99 -81
  159. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +294 -0
  160. data/src/java/arjdbc/oracle/OracleModule.java +80 -0
  161. data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +387 -17
  162. data/src/java/arjdbc/postgresql/ByteaUtils.java +157 -0
  163. data/src/java/arjdbc/postgresql/PgResultSetMetaDataWrapper.java +23 -0
  164. data/src/java/arjdbc/postgresql/PostgreSQLModule.java +77 -0
  165. data/src/java/arjdbc/postgresql/PostgreSQLResult.java +184 -0
  166. data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +952 -0
  167. data/src/java/arjdbc/sqlite3/SQLite3Module.java +73 -0
  168. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +525 -0
  169. data/src/java/arjdbc/util/CallResultSet.java +826 -0
  170. data/src/java/arjdbc/util/DateTimeUtils.java +580 -0
  171. data/src/java/arjdbc/util/ObjectSupport.java +65 -0
  172. data/src/java/arjdbc/util/QuotingUtils.java +138 -0
  173. data/src/java/arjdbc/util/StringCache.java +63 -0
  174. data/src/java/arjdbc/util/StringHelper.java +159 -0
  175. metadata +245 -268
  176. data/History.txt +0 -369
  177. data/Manifest.txt +0 -180
  178. data/README.txt +0 -181
  179. data/lib/active_record/connection_adapters/oracle_adapter.rb +0 -1
  180. data/lib/arel/engines/sql/compilers/db2_compiler.rb +0 -9
  181. data/lib/arel/engines/sql/compilers/derby_compiler.rb +0 -6
  182. data/lib/arel/engines/sql/compilers/h2_compiler.rb +0 -6
  183. data/lib/arel/engines/sql/compilers/hsqldb_compiler.rb +0 -15
  184. data/lib/arel/engines/sql/compilers/jdbc_compiler.rb +0 -6
  185. data/lib/arel/engines/sql/compilers/mssql_compiler.rb +0 -46
  186. data/lib/arel/visitors/mssql.rb +0 -44
  187. data/lib/arjdbc/jdbc/compatibility.rb +0 -51
  188. data/lib/arjdbc/jdbc/core_ext.rb +0 -24
  189. data/lib/arjdbc/jdbc/discover.rb +0 -18
  190. data/lib/arjdbc/jdbc/driver.rb +0 -44
  191. data/lib/arjdbc/jdbc/missing_functionality_helper.rb +0 -87
  192. data/lib/arjdbc/jdbc/quoted_primary_key.rb +0 -28
  193. data/lib/arjdbc/jdbc/require_driver.rb +0 -16
  194. data/lib/arjdbc/mimer.rb +0 -2
  195. data/lib/arjdbc/mimer/adapter.rb +0 -142
  196. data/lib/arjdbc/mssql/tsql_helper.rb +0 -61
  197. data/lib/arjdbc/oracle.rb +0 -3
  198. data/lib/arjdbc/oracle/connection_methods.rb +0 -11
  199. data/lib/pg.rb +0 -4
  200. data/rakelib/package.rake +0 -92
  201. data/rakelib/test.rake +0 -81
  202. data/src/java/arjdbc/jdbc/SQLBlock.java +0 -48
  203. data/src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java +0 -127
  204. data/src/java/arjdbc/postgresql/PostgresqlRubyJdbcConnection.java +0 -57
  205. data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +0 -64
  206. data/test/abstract_db_create.rb +0 -117
  207. data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -31
  208. data/test/activerecord/connections/native_jdbc_mysql/connection.rb +0 -25
  209. data/test/db/db2.rb +0 -11
  210. data/test/db/derby.rb +0 -12
  211. data/test/db/h2.rb +0 -11
  212. data/test/db/hsqldb.rb +0 -13
  213. data/test/db/informix.rb +0 -11
  214. data/test/db/jdbc.rb +0 -11
  215. data/test/db/jndi_config.rb +0 -40
  216. data/test/db/logger.rb +0 -3
  217. data/test/db/mssql.rb +0 -9
  218. data/test/db/mysql.rb +0 -10
  219. data/test/db/oracle.rb +0 -34
  220. data/test/db/postgres.rb +0 -9
  221. data/test/db/sqlite3.rb +0 -11
  222. data/test/db2_simple_test.rb +0 -66
  223. data/test/derby_migration_test.rb +0 -68
  224. data/test/derby_multibyte_test.rb +0 -12
  225. data/test/derby_simple_test.rb +0 -99
  226. data/test/generic_jdbc_connection_test.rb +0 -29
  227. data/test/h2_simple_test.rb +0 -41
  228. data/test/has_many_through.rb +0 -79
  229. data/test/helper.rb +0 -5
  230. data/test/hsqldb_simple_test.rb +0 -6
  231. data/test/informix_simple_test.rb +0 -48
  232. data/test/jdbc_common.rb +0 -25
  233. data/test/jndi_callbacks_test.rb +0 -40
  234. data/test/jndi_test.rb +0 -25
  235. data/test/manualTestDatabase.rb +0 -191
  236. data/test/models/add_not_null_column_to_table.rb +0 -12
  237. data/test/models/auto_id.rb +0 -18
  238. data/test/models/data_types.rb +0 -28
  239. data/test/models/entry.rb +0 -43
  240. data/test/models/mixed_case.rb +0 -25
  241. data/test/models/reserved_word.rb +0 -18
  242. data/test/models/string_id.rb +0 -18
  243. data/test/models/validates_uniqueness_of_string.rb +0 -19
  244. data/test/mssql_db_create_test.rb +0 -26
  245. data/test/mssql_identity_insert_test.rb +0 -19
  246. data/test/mssql_legacy_types_test.rb +0 -58
  247. data/test/mssql_limit_offset_test.rb +0 -136
  248. data/test/mssql_multibyte_test.rb +0 -18
  249. data/test/mssql_simple_test.rb +0 -55
  250. data/test/mysql_db_create_test.rb +0 -27
  251. data/test/mysql_info_test.rb +0 -113
  252. data/test/mysql_multibyte_test.rb +0 -10
  253. data/test/mysql_nonstandard_primary_key_test.rb +0 -42
  254. data/test/mysql_simple_test.rb +0 -49
  255. data/test/oracle_simple_test.rb +0 -18
  256. data/test/oracle_specific_test.rb +0 -83
  257. data/test/pick_rails_version.rb +0 -3
  258. data/test/postgres_db_create_test.rb +0 -32
  259. data/test/postgres_drop_db_test.rb +0 -16
  260. data/test/postgres_mixed_case_test.rb +0 -29
  261. data/test/postgres_nonseq_pkey_test.rb +0 -38
  262. data/test/postgres_reserved_test.rb +0 -22
  263. data/test/postgres_schema_search_path_test.rb +0 -44
  264. data/test/postgres_simple_test.rb +0 -51
  265. data/test/postgres_table_alias_length_test.rb +0 -15
  266. data/test/simple.rb +0 -546
  267. data/test/sqlite3_simple_test.rb +0 -233
  268. data/test/sybase_jtds_simple_test.rb +0 -28
@@ -1,55 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mssql'
3
-
4
- class MsSQLSimpleTest < Test::Unit::TestCase
5
-
6
- include SimpleTestMethods
7
-
8
- # MS SQL 2005 doesn't have a DATE class, only TIMESTAMP.
9
- undef_method :test_save_date
10
-
11
- # String comparisons are insensitive by default
12
- undef_method :test_validates_uniqueness_of_strings_case_sensitive
13
-
14
- def test_does_not_munge_quoted_strings
15
- example_quoted_values = [%{'quoted'}, %{D\'oh!}]
16
- example_quoted_values.each do |value|
17
- entry = Entry.create!(:title => value)
18
- entry.reload
19
- assert_equal(value, entry.title)
20
- end
21
- end
22
-
23
- def test_change_column_default
24
-
25
- Entry.connection.change_column "entries", "title", :string, :default => "new default"
26
- Entry.reset_column_information
27
- assert_equal("new default", Entry.new.title)
28
-
29
- Entry.connection.change_column "entries", "title", :string, :default => nil
30
- Entry.reset_column_information
31
- assert_equal(nil, Entry.new.title)
32
-
33
- end
34
-
35
- def test_change_column_nullability
36
-
37
- Entry.connection.change_column "entries", "title", :string, :null => true
38
- Entry.reset_column_information
39
- title_column = Entry.columns.find { |c| c.name == "title" }
40
- assert(title_column.null)
41
-
42
- Entry.connection.change_column "entries", "title", :string, :null => false
43
- Entry.reset_column_information
44
- title_column = Entry.columns.find { |c| c.name == "title" }
45
- assert(!title_column.null)
46
-
47
- end
48
-
49
- # ACTIVERECORD_JDBC-124
50
- def test_model_does_not_have_row_num_column
51
- entry = Entry.first
52
- assert !entry.attributes.keys.include?("_row_num")
53
- assert !entry.respond_to?(:_row_num)
54
- end
55
- end
@@ -1,27 +0,0 @@
1
- require 'abstract_db_create'
2
- require 'db/mysql'
3
-
4
- class MysqlDbCreateTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- MYSQL_CONFIG
9
- end
10
-
11
- def test_rake_db_create
12
- Rake::Task["db:create"].invoke
13
- if find_executable?("mysql")
14
- output = nil
15
- IO.popen("mysql -u #{MYSQL_CONFIG[:username]} --password=#{MYSQL_CONFIG[:password]}", "r+") do |mysql|
16
- mysql << "show databases where `Database` = '#{@db_name}';"
17
- mysql.close_write
18
- assert mysql.read =~ /#{@db_name}/m
19
- end
20
- end
21
- end
22
-
23
- def test_rake_db_test_purge
24
- Rake::Task["db:create"].invoke
25
- Rake::Task["db:test:purge"].invoke
26
- end
27
- end
@@ -1,113 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mysql'
3
- begin; require 'active_support/core_ext/numeric/bytes'; rescue LoadError; end
4
-
5
- class DBSetup < ActiveRecord::Migration
6
-
7
- def self.up
8
- create_table :books do |t|
9
- t.string :title
10
- t.timestamps
11
- end
12
-
13
- create_table :cars, :primary_key => 'legacy_id' do |t|
14
- t.string :name
15
- t.date :production_started_on
16
- end
17
-
18
- create_table :cats, :id => false do |t|
19
- t.string :name
20
- end
21
-
22
- create_table :memos do |t|
23
- t.text :text, :limit => 16.megabytes
24
- end
25
- end
26
-
27
- def self.down
28
- drop_table :books
29
- drop_table :cars
30
- drop_table :cats
31
- drop_table :memos
32
- end
33
-
34
- end
35
-
36
- class MysqlInfoTest < Test::Unit::TestCase
37
-
38
- def setup
39
- DBSetup.up
40
- @connection = ActiveRecord::Base.connection
41
- end
42
-
43
- def teardown
44
- DBSetup.down
45
- end
46
-
47
- ## primary_key
48
- def test_should_return_the_primary_key_of_a_table
49
- assert_equal 'id', @connection.primary_key('books')
50
- end
51
-
52
- def test_should_be_able_to_return_a_custom_primary_key
53
- assert_equal 'legacy_id', @connection.primary_key('cars')
54
- end
55
-
56
- def test_should_return_nil_for_a_table_without_a_primary_key
57
- assert_nil @connection.primary_key('cats')
58
- end
59
-
60
- ## structure_dump
61
- def test_should_include_the_tables_in_a_structure_dump
62
- # TODO: Improve these tests, I added this one because no other tests exists for this method.
63
- dump = @connection.structure_dump
64
- assert dump.include?('CREATE TABLE `books`')
65
- assert dump.include?('CREATE TABLE `cars`')
66
- assert dump.include?('CREATE TABLE `cats`')
67
- assert dump.include?('CREATE TABLE `memos`')
68
- end
69
-
70
- def test_should_include_longtext_in_schema_dump
71
- strio = StringIO.new
72
- ActiveRecord::SchemaDumper::dump(@connection, strio)
73
- dump = strio.string
74
- assert_match %r{t.text\s+"text",\s+:limit => 2147483647$}, dump
75
- end
76
-
77
- # JRUBY-5040
78
- def test_schema_dump_should_not_have_limits_on_datetime
79
- strio = StringIO.new
80
- ActiveRecord::SchemaDumper::dump(@connection, strio)
81
- dump = strio.string
82
- dump.grep(/datetime/).each {|line| assert line !~ /limit/ }
83
- end
84
-
85
- def test_schema_dump_should_not_have_limits_on_date
86
- strio = StringIO.new
87
- ActiveRecord::SchemaDumper::dump(@connection, strio)
88
- dump = strio.string
89
- dump.grep(/date/).each {|line| assert line !~ /limit/ }
90
- end
91
-
92
- def test_should_include_limit
93
- text_column = @connection.columns('memos').find { |c| c.name == 'text' }
94
- assert_equal 2147483647, text_column.limit
95
- end
96
-
97
- def test_should_set_sqltype_to_longtext
98
- text_column = @connection.columns('memos').find { |c| c.name == 'text' }
99
- assert text_column.sql_type =~ /^longtext/
100
- end
101
-
102
- def test_should_set_type_to_text
103
- text_column = @connection.columns('memos').find { |c| c.name == 'text' }
104
- assert_equal :text, text_column.type
105
- end
106
-
107
- def test_verify_url_has_options
108
- url = @connection.config[:url]
109
- assert url =~ /characterEncoding=utf8/
110
- assert url =~ /useUnicode=true/
111
- assert url =~ /zeroDateTimeBehavior=convertToNull/
112
- end
113
- end
@@ -1,10 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mysql'
3
-
4
- class MySQLMultibyteTest < Test::Unit::TestCase
5
- include MultibyteTestMethods
6
- end
7
-
8
- class MySQLNonUTF8EncodingTest < Test::Unit::TestCase
9
- include NonUTF8EncodingMethods
10
- end
@@ -1,42 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mysql'
3
-
4
- class Project < ActiveRecord::Migration
5
- def self.up
6
- create_table :project, :primary_key => "project_id" do |t|
7
- t.string :projectType, :limit => 31
8
- t.boolean :published
9
- t.datetime :created_date
10
- t.text :abstract, :title
11
- end
12
- end
13
-
14
- def self.down
15
- drop_table :project
16
- end
17
-
18
- end
19
-
20
- class MysqlNonstandardPrimaryKeyTest < Test::Unit::TestCase
21
-
22
- def setup
23
- Project.up
24
- end
25
-
26
- def teardown
27
- Project.down
28
- end
29
-
30
- def standard_dump
31
- stream = StringIO.new
32
- ActiveRecord::SchemaDumper.ignore_tables = []
33
- ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
34
- stream.string
35
- end
36
-
37
- def test_nonstandard_primary_key
38
- output = standard_dump
39
- assert_match %r(:primary_key => "project_id"), output, "non-standard primary key not preserved"
40
- end
41
-
42
- end
@@ -1,49 +0,0 @@
1
- # To run this script, run the following in a mysql instance:
2
- #
3
- # drop database if exists weblog_development;
4
- # create database weblog_development;
5
- # grant all on weblog_development.* to blog@localhost;
6
- # flush privileges;
7
-
8
- require 'jdbc_common'
9
- require 'db/mysql'
10
-
11
- class MysqlSimpleTest < Test::Unit::TestCase
12
- include SimpleTestMethods
13
- include ActiveRecord3TestMethods
14
-
15
- def test_string_quoting_oddity
16
- s = "0123456789a'a"
17
- assert_equal "'0123456789a\\'a'", ActiveRecord::Base.connection.quote(s)
18
-
19
- s2 = s[10,3]
20
- assert_equal "a'a", s2
21
- assert_equal "'a\\'a'", ActiveRecord::Base.connection.quote(s2)
22
- end
23
-
24
- def test_table_name_quoting_with_dot
25
- s = "weblog_development.posts"
26
- assert_equal "`weblog_development`.`posts`", ActiveRecord::Base.connection.quote_table_name(s)
27
- end
28
-
29
- def test_update_all_with_limit
30
- assert_nothing_raised { Entry.update_all({:title => "test"}, {}, {:limit => 1}) }
31
- end
32
-
33
- def test_find_in_other_schema_with_include
34
- old_entries_table_name = Entry.table_name
35
- old_users_table_name = User.table_name
36
- begin
37
- User.set_table_name 'weblog_development.users'
38
- Entry.set_table_name 'weblog_development.entries'
39
- assert !Entry.all(:include => :user).empty?
40
- ensure
41
- Entry.set_table_name old_entries_table_name
42
- User.set_table_name old_users_table_name
43
- end
44
- end
45
- end
46
-
47
- class MysqlHasManyThroughTest < Test::Unit::TestCase
48
- include HasManyThroughMethods
49
- end
@@ -1,18 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/oracle'
3
-
4
- class OracleSimpleTest < Test::Unit::TestCase
5
- include SimpleTestMethods
6
-
7
- def test_default_id_type_is_integer
8
- assert Integer === Entry.first.id
9
- end
10
-
11
- def test_sequences_are_not_cached
12
- ActiveRecord::Base.transaction do
13
- e1 = Entry.create :title => "hello1"
14
- e2 = Entry.create :title => "hello2"
15
- assert e1.id != e2.id
16
- end
17
- end
18
- end
@@ -1,83 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/oracle'
3
-
4
- class DefaultNumber < ActiveRecord::Base
5
- end
6
-
7
- class OracleSpecificTest < Test::Unit::TestCase
8
- include MultibyteTestMethods # so we can get @java_con
9
-
10
- def setup
11
- super
12
- @java_con.createStatement.execute "
13
- CREATE TABLE DEFAULT_NUMBERS (
14
- ID INTEGER NOT NULL PRIMARY KEY, VALUE NUMBER, DATUM DATE, FPOINT NUMBER(10,2), VALUE2 NUMBER(15)
15
- )"
16
- @java_con.createStatement.execute "
17
- INSERT INTO DEFAULT_NUMBERS (ID, VALUE, DATUM, FPOINT, VALUE2)
18
- VALUES (1, 0.076, TIMESTAMP'2009-11-05 00:00:00', 1000.01, 1234)"
19
- @java_con.createStatement.execute "CREATE SYNONYM POSTS FOR ENTRIES"
20
- end
21
-
22
- def teardown
23
- @java_con.createStatement.execute "DROP TABLE DEFAULT_NUMBERS"
24
- @java_con.createStatement.execute "DROP SYNONYM POSTS"
25
- super
26
- end
27
-
28
- def test_default_number_precision
29
- assert_equal 0.076, DefaultNumber.find(:first).value
30
- end
31
-
32
- def test_number_with_precision_and_scale
33
- assert_equal 1000.01, DefaultNumber.find(:first).fpoint
34
- end
35
-
36
- def test_number_with_precision
37
- assert_equal 1234, DefaultNumber.find(:first).value2
38
- end
39
-
40
- def test_number_type_with_precision_and_scale_is_reported_correctly
41
- assert_equal 'NUMBER', DefaultNumber.columns_hash['value'].sql_type
42
- assert_equal 'NUMBER(10,2)', DefaultNumber.columns_hash['fpoint'].sql_type
43
- assert_equal 'NUMBER(15)', DefaultNumber.columns_hash['value2'].sql_type
44
- end
45
-
46
- # JRUBY-3675, ACTIVERECORD_JDBC-22
47
- def test_load_date
48
- obj = DefaultNumber.find(:first)
49
- assert_not_nil obj.datum, "no date"
50
- end
51
-
52
- # ACTIVERECORD_JDBC-127
53
- def test_save_date
54
- obj = DefaultNumber.find(:first)
55
- obj.datum = '01Jan2010'
56
- obj.save!
57
- end
58
-
59
- def test_save_timestamp
60
- obj = DefaultNumber.find(:first)
61
- obj.datum = Time.now
62
- obj.save!
63
- end
64
-
65
- def test_load_null_date
66
- @java_con.createStatement.execute "UPDATE DEFAULT_NUMBERS SET DATUM = NULL"
67
- obj = DefaultNumber.find(:first)
68
- assert obj.datum.nil?
69
- end
70
-
71
- def test_model_access_by_synonym
72
- @klass = Class.new(ActiveRecord::Base)
73
- @klass.set_table_name "POSTS"
74
- entry_columns = Entry.columns_hash
75
- @klass.columns.each do |c|
76
- ec = entry_columns[c.name]
77
- assert ec
78
- assert_equal ec.sql_type, c.sql_type
79
- assert_equal ec.type, c.type
80
- end
81
- end
82
-
83
- end if defined?(JRUBY_VERSION)
@@ -1,3 +0,0 @@
1
- # Specify version of activerecord with ENV['AR_VERSION'] if desired
2
- gem 'rails', ENV['AR_VERSION'] if ENV['AR_VERSION']
3
- require 'active_record/version'
@@ -1,32 +0,0 @@
1
- require 'abstract_db_create'
2
- require 'db/postgres'
3
-
4
- class PostgresDbCreateTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- POSTGRES_CONFIG
9
- end
10
-
11
- if find_executable?("psql")
12
- def test_rake_db_create
13
- Rake::Task["db:create"].invoke
14
- output = `psql -c '\\l'`
15
- assert output =~ /#{@db_name}/m
16
- end
17
-
18
- def test_rake_db_test_purge
19
- Rake::Task["db:create"].invoke
20
- Rake::Task["db:test:purge"].invoke
21
- end
22
- else
23
- def test_skipped
24
- end
25
- end
26
-
27
- def test_rake_db_create_does_not_load_full_environment
28
- Rake::Task["db:create"].invoke
29
- assert @rails_env_set
30
- assert !@full_environment_loaded
31
- end
32
- end
@@ -1,16 +0,0 @@
1
- require 'abstract_db_create'
2
- require 'db/postgres'
3
-
4
- class PostgresDbDropTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- POSTGRES_CONFIG
9
- end
10
-
11
- def test_dropping_nonexistent_database_does_not_raise_exception
12
- assert_nothing_raised do
13
- Rake::Task["db:drop"].invoke
14
- end
15
- end
16
- end