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,12 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- class AddNotNullColumnToTable < ActiveRecord::Migration
5
- def self.up
6
- add_column :entries, :color, :string, :null => false, :default => "blue"
7
- end
8
-
9
- def self.down
10
- remove_column :entries, :color
11
- end
12
- end
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- class CreateAutoIds < ActiveRecord::Migration
5
- def self.up
6
- create_table "auto_ids", :force => true do |t|
7
- t.column :value, :integer
8
- end
9
- end
10
-
11
- def self.down
12
- drop_table "auto_ids"
13
- end
14
- end
15
-
16
- class AutoId < ActiveRecord::Base
17
- def self.table_name () "auto_ids" end
18
- end
@@ -1,28 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- class DbTypeMigration < ActiveRecord::Migration
5
- def self.up
6
- create_table "db_types", :force => true do |t|
7
- t.column :sample_timestamp, :timestamp
8
- t.column :sample_datetime, :datetime
9
- t.column :sample_date, :date
10
- t.column :sample_time, :time
11
- t.column :sample_decimal, :decimal, :precision => 15, :scale => 0
12
- t.column :sample_small_decimal, :decimal, :precision => 3, :scale => 2
13
- t.column :sample_float, :float
14
- t.column :sample_binary, :binary
15
- t.column :sample_boolean, :boolean
16
- t.column :sample_string, :string, :default => ''
17
- t.column :sample_integer, :integer, :limit => 5
18
- t.column :sample_text, :text
19
- end
20
- end
21
-
22
- def self.down
23
- drop_table "db_types"
24
- end
25
- end
26
-
27
- class DbType < ActiveRecord::Base
28
- end
@@ -1,43 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- class CreateEntries < ActiveRecord::Migration
5
- def self.up
6
- create_table "entries", :force => true do |t|
7
- t.column :title, :string, :limit => 100
8
- t.column :updated_on, :datetime
9
- t.column :content, :text
10
- t.column :rating, :decimal, :precision => 10, :scale => 2
11
- t.column :user_id, :integer
12
- end
13
- end
14
-
15
- def self.down
16
- drop_table "entries"
17
- end
18
- end
19
-
20
- class Entry < ActiveRecord::Base
21
- belongs_to :user
22
-
23
- def to_param
24
- "#{id}-#{title.gsub(/[^a-zA-Z0-9]/, '-')}"
25
- end
26
- end
27
-
28
- class CreateUsers < ActiveRecord::Migration
29
- def self.up
30
- create_table "users", :force => true do |t|
31
- t.column :login, :string, :limit => 100
32
- end
33
- end
34
-
35
- def self.down
36
- drop_table "users"
37
- end
38
- end
39
-
40
- class User < ActiveRecord::Base
41
- has_many :entries
42
- end
43
-
@@ -1,25 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- module Migration
5
- class MixedCase < ActiveRecord::Migration
6
-
7
- def self.up
8
- create_table "mixed_cases" do |t|
9
- t.column :SOME_value, :string
10
- end
11
- create_table "tblUsers" do |t|
12
- t.column :firstName, :string
13
- t.column :lastName, :string
14
- end
15
- end
16
-
17
- def self.down
18
- drop_table "mixed_cases"
19
- drop_table "tblUsers"
20
- end
21
- end
22
- end
23
-
24
- class MixedCase < ActiveRecord::Base
25
- end
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- class CreateReservedWords < ActiveRecord::Migration
5
- def self.up
6
- create_table "reserved_words", :force => true do |t|
7
- t.column :position, :integer
8
- t.column :select, :integer
9
- end
10
- end
11
-
12
- def self.down
13
- drop_table "reserved_words"
14
- end
15
- end
16
-
17
- class ReservedWord < ActiveRecord::Base
18
- end
@@ -1,18 +0,0 @@
1
- require 'rubygems'
2
- require 'active_record'
3
-
4
- class CreateStringIds < ActiveRecord::Migration
5
- def self.up
6
- create_table "string_ids", :force => true, :id => false do |t|
7
- t.string :id
8
- end
9
- end
10
-
11
- def self.down
12
- drop_table "string_ids"
13
- end
14
- end
15
-
16
- class StringId < ActiveRecord::Base
17
- def self.table_name () "string_ids" end
18
- end
@@ -1,19 +0,0 @@
1
- class CreateValidatesUniquenessOf < ActiveRecord::Migration
2
- def self.up
3
- create_table "validates_uniqueness_of", :force => true do |t|
4
- t.column :cs_string, :string
5
- t.column :ci_string, :string
6
- t.column :content, :text
7
- end
8
- end
9
-
10
- def self.down
11
- drop_table "validates_uniqueness_of"
12
- end
13
- end
14
-
15
- class ValidatesUniquenessOfString < ActiveRecord::Base
16
- self.set_table_name "validates_uniqueness_of"
17
- validates_uniqueness_of :cs_string, :case_sensitive => true
18
- validates_uniqueness_of :ci_string, :case_sensitive => false
19
- end
@@ -1,26 +0,0 @@
1
- require 'abstract_db_create'
2
- require 'db/mssql'
3
-
4
- class MysqlDbCreateTest < Test::Unit::TestCase
5
- include AbstractDbCreate
6
-
7
- def db_config
8
- MSSQL_CONFIG
9
- end
10
-
11
- def test_rake_db_create
12
- begin
13
- Rake::Task["db:create"].invoke
14
- rescue => e
15
- if e.message =~ /CREATE DATABASE permission denied/
16
- puts "\nwarning: db:create test skipped; add 'dbcreator' role to user '#{db_config[:username]}' to run"
17
- return
18
- end
19
- end
20
- ActiveRecord::Base.establish_connection(db_config.merge(:database => "master"))
21
- select = "SELECT NAME FROM sys.sysdatabases"
22
- select = "SELECT name FROM master..sysdatabases ORDER BY name" if ActiveRecord::Base.connection.sqlserver_version == "2000"
23
- databases = ActiveRecord::Base.connection.select_rows(select).flatten
24
- assert databases.include?(@db_name)
25
- end
26
- end
@@ -1,19 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mssql'
3
-
4
- class MsSQLIdentityInsertTest < Test::Unit::TestCase
5
-
6
- include MigrationSetup
7
-
8
- def test_enable_identity_insert_when_necessary
9
- Entry.connection.execute("INSERT INTO entries([id], [title]) VALUES (333, 'Title')")
10
- Entry.connection.execute("INSERT INTO entries([title], [id]) VALUES ('Title', 344)")
11
- Entry.connection.execute("INSERT INTO entries(id, title) VALUES (666, 'Title')")
12
- Entry.connection.execute("INSERT INTO entries(id, title) (SELECT id+123, title FROM entries)")
13
- end
14
-
15
- def test_dont_enable_identity_insert_when_unnecessary
16
- Entry.connection.execute("INSERT INTO entries([title]) VALUES ('[id]')")
17
- end
18
-
19
- end
@@ -1,58 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mssql'
3
-
4
- ActiveRecord::Schema.verbose = false
5
-
6
- class CreateArticles < ActiveRecord::Migration
7
-
8
- def self.up
9
- execute <<-SQL
10
- CREATE TABLE articles (
11
- [id] int NOT NULL IDENTITY(1, 1) PRIMARY KEY,
12
- [title] VARCHAR(100),
13
- [author] VARCHAR(60) DEFAULT 'anonymous',
14
- [body] TEXT
15
- )
16
- SQL
17
- end
18
-
19
- def self.down
20
- drop_table "articles"
21
- end
22
-
23
- end
24
-
25
- class Article < ActiveRecord::Base
26
- end
27
-
28
- class MsSQLLegacyTypesTest < Test::Unit::TestCase
29
-
30
- def setup
31
- CreateArticles.up
32
- @connection = ActiveRecord::Base.connection
33
- end
34
-
35
- def teardown
36
- CreateArticles.down
37
- ActiveRecord::Base.clear_active_connections!
38
- end
39
-
40
- def test_varchar_column
41
- Article.create!(:title => "Blah blah")
42
- article = Article.first
43
- assert_equal("Blah blah", article.title)
44
- end
45
-
46
- SAMPLE_TEXT = "Lorem ipsum dolor sit amet ..."
47
-
48
- def test_text_column
49
- Article.create!(:body => SAMPLE_TEXT)
50
- article = Article.first
51
- assert_equal(SAMPLE_TEXT, article.body)
52
- end
53
-
54
- def test_varchar_default_value
55
- assert_equal("anonymous", Article.new.author)
56
- end
57
-
58
- end
@@ -1,136 +0,0 @@
1
- require 'jdbc_common'
2
- require 'db/mssql'
3
-
4
- ActiveRecord::Schema.verbose = false
5
-
6
- class CreateLongShips < ActiveRecord::Migration
7
-
8
- def self.up
9
- create_table "long_ships", :force => true do |t|
10
- t.string "name", :limit => 50, :null => false
11
- t.integer "width", :default => 123
12
- t.integer "length", :default => 456
13
- end
14
- end
15
-
16
- def self.down
17
- drop_table "long_ships"
18
- end
19
-
20
- end
21
-
22
- class LongShip < ActiveRecord::Base
23
- has_many :vikings
24
- end
25
-
26
- class CreateVikings < ActiveRecord::Migration
27
-
28
- def self.up
29
- create_table "vikings", :force => true do |t|
30
- t.integer "long_ship_id", :null => false
31
- t.string "name", :limit => 50, :default => "Sven"
32
- end
33
- end
34
-
35
- def self.down
36
- drop_table "vikings"
37
- end
38
-
39
- end
40
-
41
- class Viking < ActiveRecord::Base
42
- belongs_to :long_ship
43
- end
44
-
45
-
46
- class CreateNoIdVikings < ActiveRecord::Migration
47
- def self.up
48
- create_table "no_id_vikings", :force => true do |t|
49
- t.string "name", :limit => 50, :default => "Sven"
50
- end
51
- remove_column "no_id_vikings", "id"
52
- end
53
-
54
- def self.down
55
- drop_table "no_id_vikings"
56
- end
57
- end
58
-
59
- class NoIdViking < ActiveRecord::Base
60
- end
61
-
62
-
63
-
64
- class MsSQLLimitOffsetTest < Test::Unit::TestCase
65
-
66
- def setup
67
- CreateLongShips.up
68
- CreateVikings.up
69
- CreateNoIdVikings.up
70
- @connection = ActiveRecord::Base.connection
71
- end
72
-
73
- def teardown
74
- CreateVikings.down
75
- CreateLongShips.down
76
- CreateNoIdVikings.down
77
- ActiveRecord::Base.clear_active_connections!
78
- end
79
-
80
- def test_limit_with_no_id_column_available
81
- NoIdViking.create!(:name => 'Erik')
82
- assert_nothing_raised(ActiveRecord::StatementInvalid) do
83
- NoIdViking.find(:first)
84
- end
85
- end
86
-
87
- def test_limit_and_offset
88
- %w(one two three four five six seven eight).each do |name|
89
- LongShip.create!(:name => name)
90
- end
91
- ship_names = LongShip.find(:all, :offset => 2, :limit => 3).map(&:name)
92
- assert_equal(%w(three four five), ship_names)
93
- end
94
-
95
- def test_limit_and_offset_with_order
96
- %w(one two three four five six seven eight).each do |name|
97
- LongShip.create!(:name => name)
98
- end
99
- ship_names = LongShip.find(:all, :order => "name", :offset => 4, :limit => 2).map(&:name)
100
- assert_equal(%w(seven six), ship_names)
101
- end
102
-
103
- # TODO: work out how to fix DISTINCT support without breaking :include
104
- # def test_limit_and_offset_with_distinct
105
- # %w(c a b a b a c d c d).each do |name|
106
- # LongShip.create!(:name => name)
107
- # end
108
- # ship_names = LongShip.find(:all, :select => "DISTINCT name", :order => "name", :offset => 1, :limit => 2).map(&:name)
109
- # assert_equal(%w(b c), ship_names)
110
- # end
111
-
112
- def test_limit_and_offset_with_include
113
- skei = LongShip.create!(:name => "Skei")
114
- skei.vikings.create!(:name => "Bob")
115
- skei.vikings.create!(:name => "Ben")
116
- skei.vikings.create!(:name => "Basil")
117
- ships = Viking.find(:all, :include => :long_ship, :offset => 1, :limit => 2)
118
- assert_equal(2, ships.size)
119
- end
120
-
121
- def test_limit_and_offset_with_include_and_order
122
-
123
- boat1 = LongShip.create!(:name => "1-Skei")
124
- boat2 = LongShip.create!(:name => "2-Skei")
125
-
126
- boat1.vikings.create!(:name => "Adam")
127
- boat2.vikings.create!(:name => "Ben")
128
- boat1.vikings.create!(:name => "Carl")
129
- boat2.vikings.create!(:name => "Donald")
130
-
131
- vikings = Viking.find(:all, :include => :long_ship, :order => "long_ships.name, vikings.name", :offset => 0, :limit => 3)
132
- assert_equal(["Adam", "Carl", "Ben"], vikings.map(&:name))
133
-
134
- end
135
-
136
- end
@@ -1,18 +0,0 @@
1
- #! /usr/bin/env jruby
2
-
3
- require 'jdbc_common'
4
- require 'db/mssql'
5
-
6
- class MsSQLMultibyteTest < Test::Unit::TestCase
7
-
8
- include MultibyteTestMethods
9
-
10
- def test_select_multibyte_string
11
- Entry.create!(:title => 'テスト', :content => '本文')
12
- entry = Entry.find(:last)
13
- assert_equal "テスト", entry.title
14
- assert_equal "本文", entry.content
15
- assert_equal entry, Entry.find_by_title("テスト")
16
- end
17
-
18
- end