activerecord-sqlserver-adapter 2.3.2 → 2.3.3

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,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