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.
- data/.travis.yml +1 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +5 -6
- data/History.txt +11 -0
- data/gemfiles/rails23.gemfile +2 -1
- data/gemfiles/rails23.gemfile.lock +5 -2
- data/gemfiles/rails30.gemfile +2 -1
- data/gemfiles/rails30.gemfile.lock +5 -2
- data/gemfiles/rails31.gemfile +2 -1
- data/gemfiles/rails31.gemfile.lock +5 -2
- data/gemfiles/rails32.gemfile +2 -1
- data/gemfiles/rails32.gemfile.lock +5 -2
- data/lib/arel/engines/sql/compilers/mssql_compiler.rb +1 -1
- data/lib/arel/visitors/sql_server.rb +4 -4
- data/lib/arjdbc/db2/adapter.rb +14 -3
- data/lib/arjdbc/discover.rb +1 -1
- data/lib/arjdbc/jdbc/adapter.rb +1 -0
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/jdbc/connection.rb +73 -63
- data/lib/arjdbc/jdbc/extension.rb +1 -1
- data/lib/arjdbc/mssql.rb +3 -0
- data/lib/arjdbc/mssql/adapter.rb +132 -115
- data/lib/arjdbc/mssql/connection_methods.rb +1 -1
- data/lib/arjdbc/mssql/limit_helpers.rb +62 -66
- data/lib/arjdbc/mssql/lock_helpers.rb +2 -2
- data/lib/arjdbc/mssql/tsql_methods.rb +58 -0
- data/lib/arjdbc/mssql/utils.rb +53 -0
- data/lib/arjdbc/oracle/adapter.rb +61 -39
- data/lib/arjdbc/sqlite3/adapter.rb +3 -6
- data/lib/arjdbc/version.rb +1 -1
- data/src/java/arjdbc/jdbc/AdapterJavaService.java +4 -2
- data/src/java/arjdbc/mssql/MSSQLModule.java +70 -0
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +128 -0
- data/src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java +25 -112
- data/test/db/mssql.rb +8 -8
- data/test/db2_simple_test.rb +7 -0
- data/test/models/entry.rb +2 -1
- data/test/mssql_binary_test.rb +6 -0
- data/test/mssql_db_create_test.rb +5 -2
- data/test/mssql_identity_insert_test.rb +1 -2
- data/test/mssql_ignore_system_views_test.rb +5 -5
- data/test/mssql_limit_offset_test.rb +51 -55
- data/test/mssql_multibyte_test.rb +1 -2
- data/test/mssql_row_locking_test.rb +1 -1
- data/test/mssql_simple_test.rb +6 -10
- data/test/{mssql_row_locking_sql_test.rb → mssql_test.rb} +110 -18
- data/test/mysql_db_create_test.rb +13 -7
- data/test/oracle_simple_test.rb +18 -0
- data/test/postgres_db_create_test.rb +26 -13
- data/test/simple.rb +45 -15
- data/test/sqlite3_schema_dump_test.rb +6 -0
- data/test/sqlite3_type_conversion_test.rb +20 -17
- data/test/test_helper.rb +44 -2
- metadata +9 -4
- 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.
|
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
|
+
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/
|
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
|