activerecord-sqlserver-adapter 2.2.19 → 2.2.20

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,6 +1,25 @@
1
1
 
2
2
  MASTER
3
3
 
4
+ *
5
+
6
+
7
+ * 2.2.20 * (September 10th, 2009)
8
+
9
+ * Implement a new remove_default_constraint method that uses sp_helpconstraint [Ken Collins]
10
+
11
+ * Use a lazy match in add_order_by_for_association_limiting! to allow sub selects to be used. Resolves
12
+ ticket #11.
13
+
14
+ * Add default rake task back for testing. Runs the namespaced sqlserver:test_sqlserver_odbc.
15
+ Resolves ticket #10 [Ken Collins]
16
+
17
+ * Default value detection in column_definitions is kinder to badly formatted, or long winded user
18
+ defined functions, for default values. Resolves ticket #8 [Ken Collins]
19
+
20
+ * Make sure bigint SQL Server data type can be used and converted back to Bignum as expected. [Ken Collins]
21
+
22
+
4
23
  * 2.2.19 * (June 19th, 2009)
5
24
 
6
25
  * Leave quoted column names as is. Resolves ticket #36 [Vince Puzzella]
@@ -5,12 +5,19 @@ The default names for the test databases are "activerecord_unittest" and
5
5
  to update the connection adapter setups you want to test with in
6
6
  test/connections/<your database>/connection.rb.
7
7
 
8
+ The connection files make certain assumptions. For instance, the ODBC connection
9
+ assumes you have a DSN setup that matches the name of the default database names.
10
+
8
11
 
9
12
  == Requirements
10
13
 
11
14
  The following gems need to be installed. Make sure you have gems.github.com as a
12
- source. http://github.com/blog/97-github-loves-rubygems-1-2
15
+ source. Info here. http://gems.github.com/
16
+
17
+ We use echoe for packagemanagement to rubyforge. Not needed really for the tests
18
+ but since we need it... you need to install it.
13
19
 
20
+ * gem install echoe
14
21
  * gem install thoughtbot-shoulda -s http://gems.github.com
15
22
  * gem install mocha
16
23
 
@@ -21,11 +28,8 @@ is assumed to exist:
21
28
  #{RAILS_ROOT}/vendor/plugins/adapters/sqlserver
22
29
  #{RAILS_ROOT}/vendor/rails/activerecord/test
23
30
 
24
- Define a user named 'rails' in SQL Server with all privileges granted. Use an empty
25
- password for user 'rails', or alternatively use the OSQLPASSWORD environment variable
26
- which allows you to set a default password for the current session.
27
-
28
- Then run "rake create_databases".
31
+ Define a user named 'rails' in SQL Server with all privileges granted for the
32
+ test databases. Use an empty password for said user.
29
33
 
30
34
 
31
35
  == Running with Rake
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake'
3
3
  require 'rake/testtask'
4
4
  require 'echoe'
5
5
 
6
- Echoe.new('activerecord-sqlserver-adapter','2.2.19') do |p|
6
+ Echoe.new('activerecord-sqlserver-adapter','2.2.20') do |p|
7
7
  p.summary = "SQL Server 2000, 2005 and 2008 Adapter For Rails."
8
8
  p.description = "SQL Server 2000, 2005 and 2008 Adapter For Rails."
9
9
  p.author = ["Ken Collins","Murray Steele","Shawn Balestracci","Joe Rafaniello","Tom Ward"]
@@ -183,7 +183,7 @@ module ActiveRecord
183
183
  class SQLServerAdapter < AbstractAdapter
184
184
 
185
185
  ADAPTER_NAME = 'SQLServer'.freeze
186
- VERSION = '2.2.19'.freeze
186
+ VERSION = '2.2.20'.freeze
187
187
  DATABASE_VERSION_REGEXP = /Microsoft SQL Server\s+(\d{4})/
188
188
  SUPPORTED_VERSIONS = [2000,2005,2008].freeze
189
189
  LIMITABLE_TYPES = ['string','integer','float','char','nchar','varchar','nvarchar'].freeze
@@ -698,7 +698,7 @@ module ActiveRecord
698
698
  # Disertation http://gist.github.com/24073
699
699
  # Information http://weblogs.sqlteam.com/jeffs/archive/2007/12/13/select-distinct-order-by-error.aspx
700
700
  return sql if options[:order].blank?
701
- columns = sql.match(/SELECT\s+DISTINCT(.*)FROM/)[1].strip
701
+ columns = sql.match(/SELECT\s+DISTINCT(.*?)FROM/)[1].strip
702
702
  sql.sub!(/SELECT\s+DISTINCT/,'SELECT')
703
703
  sql << "GROUP BY #{columns} ORDER BY #{order_to_min_set(options[:order])}"
704
704
  end
@@ -908,9 +908,10 @@ module ActiveRecord
908
908
  end
909
909
 
910
910
  def remove_default_constraint(table_name, column_name)
911
- constraints = select_values("SELECT def.name FROM sysobjects def, syscolumns col, sysobjects tab WHERE col.cdefault = def.id AND col.name = '#{quote_string(column_name)}' AND tab.name = '#{quote_string(table_name)}' AND col.id = tab.id")
912
- constraints.each do |constraint|
913
- do_execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{quote_column_name(constraint)}"
911
+ select_all("EXEC sp_helpconstraint '#{quote_string(table_name)}','nomsg'").select do |row|
912
+ row['constraint_type'] == "DEFAULT on column #{column_name}"
913
+ end.each do |row|
914
+ do_execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{row['constraint_name']}"
914
915
  end
915
916
  end
916
917
 
@@ -1081,7 +1082,8 @@ module ActiveRecord
1081
1082
  when nil, '(null)', '(NULL)'
1082
1083
  nil
1083
1084
  else
1084
- ci[:default_value].match(/\A\(+N?'?(.*?)'?\)+\Z/)[1]
1085
+ match_data = ci[:default_value].match(/\A\(+N?'?(.*?)'?\)+\Z/)
1086
+ match_data ? match_data[1] : nil
1085
1087
  end
1086
1088
  ci[:null] = ci[:is_nullable].to_i == 1 ; ci.delete(:is_nullable)
1087
1089
  ci
@@ -1,4 +1,5 @@
1
1
 
2
+
2
3
  namespace :sqlserver do
3
4
 
4
5
  ['sqlserver','sqlserver_odbc'].each do |adapter|
@@ -29,3 +30,10 @@ namespace :sqlserver do
29
30
 
30
31
  end
31
32
 
33
+
34
+ desc 'Test the default ODBC mode, taks sqlserver:test_sqlserver_odbc.'
35
+ task :test do
36
+ test = Rake::Task['sqlserver:test_sqlserver_odbc']
37
+ test.invoke
38
+ end
39
+
@@ -50,7 +50,24 @@ class SpecificSchemaTestSqlserver < ActiveRecord::TestCase
50
50
 
51
51
  end
52
52
 
53
+ context 'with bigint column' do
53
54
 
55
+ setup do
56
+ @b5k = 5000
57
+ @bi5k = @edge_class.create! :bigint => @b5k, :description => 'Five Thousand'
58
+ @bnum = 9_000_000_000_000_000_000
59
+ @bimjr = @edge_class.create! :bigint => @bnum, :description => 'Close to max bignum'
60
+ end
61
+
62
+ should 'can find by biginit' do
63
+ assert_equal @bi5k, @edge_class.find_by_bigint(@b5k)
64
+ assert_equal @b5k, @edge_class.find(:first, :select => 'bigint', :conditions => {:bigint => @b5k}).bigint
65
+ assert_equal @bimjr, @edge_class.find_by_bigint(@bnum)
66
+ assert_equal @bnum, @edge_class.find(:first, :select => 'bigint', :conditions => {:bigint => @bnum}).bigint
67
+ end
68
+
69
+ end
70
+
54
71
  end
55
72
 
56
73
 
@@ -64,6 +64,7 @@ ActiveRecord::Schema.define do
64
64
 
65
65
  create_table :sql_server_edge_schemas, :force => true do |t|
66
66
  t.string :description
67
+ t.column :bigint, :bigint
67
68
  end
68
69
 
69
70
  execute "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'customers_view') DROP VIEW customers_view"
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: 2.2.19
4
+ version: 2.2.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins, Murray Steele, Shawn Balestracci, Joe Rafaniello, Tom Ward
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-18 00:00:00 -04:00
12
+ date: 2009-09-10 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -85,6 +85,8 @@ files:
85
85
  - test/schema/sqlserver_specific_schema.rb
86
86
  has_rdoc: true
87
87
  homepage: http://github.com/rails-sqlserver
88
+ licenses: []
89
+
88
90
  post_install_message:
89
91
  rdoc_options:
90
92
  - --line-numbers
@@ -110,9 +112,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
112
  requirements: []
111
113
 
112
114
  rubyforge_project: arsqlserver
113
- rubygems_version: 1.3.1
115
+ rubygems_version: 1.3.4
114
116
  signing_key:
115
- specification_version: 2
117
+ specification_version: 3
116
118
  summary: SQL Server 2000, 2005 and 2008 Adapter For Rails.
117
119
  test_files: []
118
120