activerecord-sqlserver-adapter 3.2.8 → 3.2.9

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.
data/CHANGELOG CHANGED
@@ -1,7 +1,15 @@
1
1
 
2
+ * 3.2.9 *
3
+
4
+ * The #remove_default_constraint uses #execute_procedure now. Fixes #223. Thanks @gicappa and @clintmiller.
5
+ * Mimic other adapters quoting for empty strings passed to integer columns. Fixes #164.
6
+ * Allow named parameters in stored procedures. Fixes #216. Thanks @sixfeetover.
7
+ * Make sure exclude [__rnt] table names form relation reflection. Fixes #219 and #221. Thanks @sphogan.
8
+
9
+
2
10
  * 3.2.8 *
3
11
 
4
- Include VERSION in gemspec's files.
12
+ * Include VERSION in gemspec's files.
5
13
 
6
14
 
7
15
  * 3.2.7 *
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.2.8
1
+ 3.2.9
@@ -23,7 +23,7 @@ module ActiveRecord
23
23
  executesql_args = executesql.split(', ')
24
24
  found_args = executesql_args.reject! { |arg| arg =~ SQLSERVER_PARAM_MATCHER }
25
25
  executesql_args.pop if found_args && executesql_args.many?
26
- executesql = executesql_args.join(', ').strip.match(/N'(.*)'/)[1]
26
+ executesql = executesql_args.join(', ').strip.match(/N'(.*)'/m)[1]
27
27
  Utils.unquote_string(executesql)
28
28
  else
29
29
  sql
@@ -0,0 +1,19 @@
1
+ module ActiveRecord
2
+ module ConnectionAdapters
3
+ module Sqlserver
4
+ module CoreExt
5
+ module Relation
6
+
7
+ private
8
+
9
+ def tables_in_string(string)
10
+ super - ['__rnt']
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ ActiveRecord::Relation.send :include, ActiveRecord::ConnectionAdapters::Sqlserver::CoreExt::Relation
@@ -93,7 +93,11 @@ module ActiveRecord
93
93
  # === SQLServer Specific ======================================== #
94
94
 
95
95
  def execute_procedure(proc_name, *variables)
96
- vars = variables.map{ |v| quote(v) }.join(', ')
96
+ vars = if variables.any? && variables.first.is_a?(Hash)
97
+ variables.first.map { |k,v| "@#{k} = #{quote(v)}" }
98
+ else
99
+ variables.map { |v| quote(v) }
100
+ end.join(', ')
97
101
  sql = "EXEC #{proc_name} #{vars}".strip
98
102
  name = 'Execute Procedure'
99
103
  log(sql, name) do
@@ -10,7 +10,7 @@ module ActiveRecord
10
10
  case value
11
11
  when String, ActiveSupport::Multibyte::Chars
12
12
  if column && column.type == :integer && value.blank?
13
- nil
13
+ value.to_i.to_s
14
14
  elsif column && column.type == :binary
15
15
  column.class.string_to_binary(value)
16
16
  elsif value.is_utf8? || (column && column.type == :string)
@@ -250,7 +250,7 @@ module ActiveRecord
250
250
 
251
251
  def remove_default_constraint(table_name, column_name)
252
252
  # If their are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
253
- select_all("EXEC sp_helpconstraint '#{quote_string(table_name)}','nomsg'").flatten.select do |row|
253
+ execute_procedure(:sp_helpconstraint, table_name, 'nomsg').flatten.select do |row|
254
254
  row['constraint_type'] == "DEFAULT on column #{column_name}"
255
255
  end.each do |row|
256
256
  do_execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{row['constraint_name']}"
@@ -8,6 +8,7 @@ require 'active_record/connection_adapters/abstract_adapter'
8
8
  require 'active_record/connection_adapters/sqlserver/core_ext/active_record'
9
9
  require 'active_record/connection_adapters/sqlserver/core_ext/database_statements'
10
10
  require 'active_record/connection_adapters/sqlserver/core_ext/explain'
11
+ require 'active_record/connection_adapters/sqlserver/core_ext/relation'
11
12
  require 'active_record/connection_adapters/sqlserver/database_limits'
12
13
  require 'active_record/connection_adapters/sqlserver/database_statements'
13
14
  require 'active_record/connection_adapters/sqlserver/errors'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-sqlserver-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.8
4
+ version: 3.2.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,11 +13,11 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-07-11 00:00:00.000000000 Z
16
+ date: 2012-08-12 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activerecord
20
- requirement: &70299608268660 !ruby/object:Gem::Requirement
20
+ requirement: &70115456563760 !ruby/object:Gem::Requirement
21
21
  none: false
22
22
  requirements:
23
23
  - - ~>
@@ -25,7 +25,7 @@ dependencies:
25
25
  version: 3.2.0
26
26
  type: :runtime
27
27
  prerelease: false
28
- version_requirements: *70299608268660
28
+ version_requirements: *70115456563760
29
29
  description: SQL Server 2005 and 2008 Adapter For ActiveRecord
30
30
  email: ken@metaskills.net
31
31
  executables: []
@@ -39,6 +39,7 @@ files:
39
39
  - lib/active_record/connection_adapters/sqlserver/core_ext/database_statements.rb
40
40
  - lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb
41
41
  - lib/active_record/connection_adapters/sqlserver/core_ext/odbc.rb
42
+ - lib/active_record/connection_adapters/sqlserver/core_ext/relation.rb
42
43
  - lib/active_record/connection_adapters/sqlserver/database_limits.rb
43
44
  - lib/active_record/connection_adapters/sqlserver/database_statements.rb
44
45
  - lib/active_record/connection_adapters/sqlserver/errors.rb