activerecord-sqlserver-adapter 2.3.2 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,6 +1,12 @@
1
1
 
2
2
  MASTER
3
3
 
4
+ 2.3.3
5
+
6
+ * Revert #ad83df82 and again cache column information at the connection's instance. The
7
+ previous commit was causing all sorts of view and schema reflection problems. [Ken Collins]
8
+
9
+
4
10
  2.3.2
5
11
 
6
12
  * Insert queries that include the word "insert" as a partial column name with the word
@@ -159,7 +159,7 @@ module ActiveRecord
159
159
  class SQLServerAdapter < AbstractAdapter
160
160
 
161
161
  ADAPTER_NAME = 'SQLServer'.freeze
162
- VERSION = '2.3.2'.freeze
162
+ VERSION = '2.3.3'.freeze
163
163
  DATABASE_VERSION_REGEXP = /Microsoft SQL Server\s+(\d{4})/
164
164
  SUPPORTED_VERSIONS = [2000,2005,2008].freeze
165
165
  LIMITABLE_TYPES = ['string','integer','float','char','nchar','varchar','nvarchar'].freeze
@@ -565,13 +565,13 @@ module ActiveRecord
565
565
  end
566
566
 
567
567
  def views(name = nil)
568
- @@sqlserver_views_cache ||=
568
+ @sqlserver_views_cache ||=
569
569
  info_schema_query { select_values("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME NOT IN ('sysconstraints','syssegments')") }
570
570
  end
571
571
 
572
572
  def view_information(table_name)
573
573
  table_name = unqualify_table_name(table_name)
574
- @@sqlserver_view_information_cache[table_name] ||= begin
574
+ @sqlserver_view_information_cache[table_name] ||= begin
575
575
  view_info = info_schema_query { select_one("SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = '#{table_name}'") }
576
576
  if view_info
577
577
  if view_info['VIEW_DEFINITION'].blank? || view_info['VIEW_DEFINITION'].length == 4000
@@ -612,7 +612,7 @@ module ActiveRecord
612
612
  def columns(table_name, name = nil)
613
613
  return [] if table_name.blank?
614
614
  cache_key = unqualify_table_name(table_name)
615
- @@sqlserver_columns_cache[cache_key] ||= column_definitions(table_name).collect do |ci|
615
+ @sqlserver_columns_cache[cache_key] ||= column_definitions(table_name).collect do |ci|
616
616
  sqlserver_options = ci.except(:name,:default_value,:type,:null)
617
617
  SQLServerColumn.new ci[:name], ci[:default_value], ci[:type], ci[:null], sqlserver_options
618
618
  end
@@ -620,7 +620,7 @@ module ActiveRecord
620
620
 
621
621
  def create_table(table_name, options = {})
622
622
  super
623
- initialize_sqlserver_caches
623
+ remove_sqlserver_columns_cache_for(table_name)
624
624
  end
625
625
 
626
626
  def rename_table(table_name, new_name)
@@ -629,12 +629,12 @@ module ActiveRecord
629
629
 
630
630
  def drop_table(table_name, options = {})
631
631
  super
632
- initialize_sqlserver_caches
632
+ remove_sqlserver_columns_cache_for(table_name)
633
633
  end
634
634
 
635
635
  def add_column(table_name, column_name, type, options = {})
636
636
  super
637
- initialize_sqlserver_caches
637
+ remove_sqlserver_columns_cache_for(table_name)
638
638
  end
639
639
 
640
640
  def remove_column(table_name, *column_names)
@@ -644,7 +644,7 @@ module ActiveRecord
644
644
  remove_indexes(table_name, column_name)
645
645
  do_execute "ALTER TABLE #{quote_table_name(table_name)} DROP COLUMN #{quote_column_name(column_name)}"
646
646
  end
647
- initialize_sqlserver_caches
647
+ remove_sqlserver_columns_cache_for(table_name)
648
648
  end
649
649
 
650
650
  def change_column(table_name, column_name, type, options = {})
@@ -654,22 +654,23 @@ module ActiveRecord
654
654
  change_column_sql << " NOT NULL" if options[:null] == false
655
655
  sql_commands << change_column_sql
656
656
  if options_include_default?(options)
657
+ remove_sqlserver_columns_cache_for(table_name)
657
658
  sql_commands << "ALTER TABLE #{quote_table_name(table_name)} ADD CONSTRAINT #{default_name(table_name,column_name)} DEFAULT #{quote(options[:default])} FOR #{quote_column_name(column_name)}"
658
659
  end
659
660
  sql_commands.each { |c| do_execute(c) }
660
- initialize_sqlserver_caches
661
+ remove_sqlserver_columns_cache_for(table_name)
661
662
  end
662
663
 
663
664
  def change_column_default(table_name, column_name, default)
664
665
  remove_default_constraint(table_name, column_name)
665
666
  do_execute "ALTER TABLE #{quote_table_name(table_name)} ADD CONSTRAINT #{default_name(table_name, column_name)} DEFAULT #{quote(default)} FOR #{quote_column_name(column_name)}"
666
- initialize_sqlserver_caches
667
+ remove_sqlserver_columns_cache_for(table_name)
667
668
  end
668
669
 
669
670
  def rename_column(table_name, column_name, new_column_name)
670
671
  column_for(table_name,column_name)
671
672
  do_execute "EXEC sp_rename '#{table_name}.#{column_name}', '#{new_column_name}', 'COLUMN'"
672
- initialize_sqlserver_caches
673
+ remove_sqlserver_columns_cache_for(table_name)
673
674
  end
674
675
 
675
676
  def remove_index(table_name, options = {})
@@ -1016,10 +1017,16 @@ module ActiveRecord
1016
1017
  end
1017
1018
  end
1018
1019
 
1019
- def initialize_sqlserver_caches
1020
- @@sqlserver_columns_cache = {}
1021
- @@sqlserver_views_cache = nil
1022
- @@sqlserver_view_information_cache = {}
1020
+ def remove_sqlserver_columns_cache_for(table_name)
1021
+ cache_key = unqualify_table_name(table_name)
1022
+ @sqlserver_columns_cache[cache_key] = nil
1023
+ initialize_sqlserver_caches(false)
1024
+ end
1025
+
1026
+ def initialize_sqlserver_caches(reset_columns=true)
1027
+ @sqlserver_columns_cache = {} if reset_columns
1028
+ @sqlserver_views_cache = nil
1029
+ @sqlserver_view_information_cache = {}
1023
1030
  end
1024
1031
 
1025
1032
  def column_definitions(table_name)
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.3.2
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Collins