activerecord-jdbc-adapter 1.2.8 → 1.2.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/.travis.yml +1 -1
  2. data/Gemfile +2 -1
  3. data/Gemfile.lock +5 -6
  4. data/History.txt +11 -0
  5. data/gemfiles/rails23.gemfile +2 -1
  6. data/gemfiles/rails23.gemfile.lock +5 -2
  7. data/gemfiles/rails30.gemfile +2 -1
  8. data/gemfiles/rails30.gemfile.lock +5 -2
  9. data/gemfiles/rails31.gemfile +2 -1
  10. data/gemfiles/rails31.gemfile.lock +5 -2
  11. data/gemfiles/rails32.gemfile +2 -1
  12. data/gemfiles/rails32.gemfile.lock +5 -2
  13. data/lib/arel/engines/sql/compilers/mssql_compiler.rb +1 -1
  14. data/lib/arel/visitors/sql_server.rb +4 -4
  15. data/lib/arjdbc/db2/adapter.rb +14 -3
  16. data/lib/arjdbc/discover.rb +1 -1
  17. data/lib/arjdbc/jdbc/adapter.rb +1 -0
  18. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  19. data/lib/arjdbc/jdbc/connection.rb +73 -63
  20. data/lib/arjdbc/jdbc/extension.rb +1 -1
  21. data/lib/arjdbc/mssql.rb +3 -0
  22. data/lib/arjdbc/mssql/adapter.rb +132 -115
  23. data/lib/arjdbc/mssql/connection_methods.rb +1 -1
  24. data/lib/arjdbc/mssql/limit_helpers.rb +62 -66
  25. data/lib/arjdbc/mssql/lock_helpers.rb +2 -2
  26. data/lib/arjdbc/mssql/tsql_methods.rb +58 -0
  27. data/lib/arjdbc/mssql/utils.rb +53 -0
  28. data/lib/arjdbc/oracle/adapter.rb +61 -39
  29. data/lib/arjdbc/sqlite3/adapter.rb +3 -6
  30. data/lib/arjdbc/version.rb +1 -1
  31. data/src/java/arjdbc/jdbc/AdapterJavaService.java +4 -2
  32. data/src/java/arjdbc/mssql/MSSQLModule.java +70 -0
  33. data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +128 -0
  34. data/src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java +25 -112
  35. data/test/db/mssql.rb +8 -8
  36. data/test/db2_simple_test.rb +7 -0
  37. data/test/models/entry.rb +2 -1
  38. data/test/mssql_binary_test.rb +6 -0
  39. data/test/mssql_db_create_test.rb +5 -2
  40. data/test/mssql_identity_insert_test.rb +1 -2
  41. data/test/mssql_ignore_system_views_test.rb +5 -5
  42. data/test/mssql_limit_offset_test.rb +51 -55
  43. data/test/mssql_multibyte_test.rb +1 -2
  44. data/test/mssql_row_locking_test.rb +1 -1
  45. data/test/mssql_simple_test.rb +6 -10
  46. data/test/{mssql_row_locking_sql_test.rb → mssql_test.rb} +110 -18
  47. data/test/mysql_db_create_test.rb +13 -7
  48. data/test/oracle_simple_test.rb +18 -0
  49. data/test/postgres_db_create_test.rb +26 -13
  50. data/test/simple.rb +45 -15
  51. data/test/sqlite3_schema_dump_test.rb +6 -0
  52. data/test/sqlite3_type_conversion_test.rb +20 -17
  53. data/test/test_helper.rb +44 -2
  54. metadata +9 -4
  55. data/lib/arjdbc/mssql/tsql_helper.rb +0 -53
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: activerecord-jdbc-adapter
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.2.8
5
+ version: 1.2.9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nick Sieger, Ola Bini and JRuby contributors
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2013-03-13 00:00:00 Z
13
+ date: 2013-03-20 00:00:00 Z
14
14
  dependencies: []
15
15
 
16
16
  description: |-
@@ -127,7 +127,8 @@ files:
127
127
  - lib/arjdbc/mssql/connection_methods.rb
128
128
  - lib/arjdbc/mssql/limit_helpers.rb
129
129
  - lib/arjdbc/mssql/lock_helpers.rb
130
- - lib/arjdbc/mssql/tsql_helper.rb
130
+ - lib/arjdbc/mssql/tsql_methods.rb
131
+ - lib/arjdbc/mssql/utils.rb
131
132
  - lib/arjdbc/mysql.rb
132
133
  - lib/arjdbc/mysql/adapter.rb
133
134
  - lib/arjdbc/mysql/connection_methods.rb
@@ -172,6 +173,8 @@ files:
172
173
  - src/java/arjdbc/jdbc/JdbcConnectionFactory.java
173
174
  - src/java/arjdbc/jdbc/RubyJdbcConnection.java
174
175
  - src/java/arjdbc/jdbc/SQLBlock.java
176
+ - src/java/arjdbc/mssql/MSSQLModule.java
177
+ - src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java
175
178
  - src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java
176
179
  - src/java/arjdbc/mysql/MySQLModule.java
177
180
  - src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java
@@ -253,6 +256,7 @@ files:
253
256
  - test/models/thing.rb
254
257
  - test/models/topic.rb
255
258
  - test/models/validates_uniqueness_of_string.rb
259
+ - test/mssql_binary_test.rb
256
260
  - test/mssql_db_create_test.rb
257
261
  - test/mssql_identity_insert_test.rb
258
262
  - test/mssql_ignore_system_views_test.rb
@@ -261,10 +265,10 @@ files:
261
265
  - test/mssql_multibyte_test.rb
262
266
  - test/mssql_null_test.rb
263
267
  - test/mssql_reset_column_information_test.rb
264
- - test/mssql_row_locking_sql_test.rb
265
268
  - test/mssql_row_locking_test.rb
266
269
  - test/mssql_serialize_test.rb
267
270
  - test/mssql_simple_test.rb
271
+ - test/mssql_test.rb
268
272
  - test/mysql_binary_test.rb
269
273
  - test/mysql_db_create_test.rb
270
274
  - test/mysql_index_length_test.rb
@@ -302,6 +306,7 @@ files:
302
306
  - test/serialize.rb
303
307
  - test/simple.rb
304
308
  - test/sqlite3_reset_column_information_test.rb
309
+ - test/sqlite3_schema_dump_test.rb
305
310
  - test/sqlite3_serialize_test.rb
306
311
  - test/sqlite3_simple_test.rb
307
312
  - test/sqlite3_type_conversion_test.rb
@@ -1,53 +0,0 @@
1
- # Common methods for handling TSQL databases.
2
- module TSqlMethods
3
-
4
- def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc:
5
- limit = nil if %w(text binary).include? type.to_s
6
- return 'uniqueidentifier' if (type.to_s == 'uniqueidentifier')
7
- return super unless type.to_s == 'integer'
8
-
9
- if limit.nil? || limit == 4
10
- 'int'
11
- elsif limit == 2
12
- 'smallint'
13
- elsif limit == 1
14
- 'tinyint'
15
- else
16
- 'bigint'
17
- end
18
- end
19
-
20
- def add_limit_offset!(sql, options)
21
- if options[:limit] and options[:offset]
22
- total_rows = select_all("SELECT count(*) as TotalRows from (#{sql.gsub(/\bSELECT(\s+DISTINCT)?\b/i, "SELECT\\1 TOP 1000000000")}) tally")[0]["TotalRows"].to_i
23
- if (options[:limit] + options[:offset]) >= total_rows
24
- options[:limit] = (total_rows - options[:offset] >= 0) ? (total_rows - options[:offset]) : 0
25
- end
26
- sql.sub!(/^\s*SELECT(\s+DISTINCT)?/i, "SELECT * FROM (SELECT TOP #{options[:limit]} * FROM (SELECT\\1 TOP #{options[:limit] + options[:offset]} ")
27
- sql << ") AS tmp1"
28
- if options[:order]
29
- options[:order] = options[:order].split(',').map do |field|
30
- parts = field.split(" ")
31
- tc = parts[0]
32
- if sql =~ /\.\[/ and tc =~ /\./ # if column quoting used in query
33
- tc.gsub!(/\./, '\\.\\[')
34
- tc << '\\]'
35
- end
36
- if sql =~ /#{tc} AS (t\d_r\d\d?)/
37
- parts[0] = $1
38
- elsif parts[0] =~ /\w+\.(\w+)/
39
- parts[0] = $1
40
- end
41
- parts.join(' ')
42
- end.join(', ')
43
- sql << " ORDER BY #{change_order_direction(options[:order])}) AS tmp2 ORDER BY #{options[:order]}"
44
- else
45
- sql << " ) AS tmp2"
46
- end
47
- elsif sql !~ /^\s*SELECT (@@|COUNT\()/i
48
- sql.sub!(/^\s*SELECT(\s+DISTINCT)?/i) do
49
- "SELECT#{$1} TOP #{options[:limit]}"
50
- end unless options[:limit].nil?
51
- end
52
- end
53
- end