@@ -568,13 +568,13 @@ def tables(name = nil)
568568 end
569569
570570 def views ( name = nil )
571- @sqlserver_views_cache ||=
571+ @@ sqlserver_views_cache ||=
572572 info_schema_query { select_values ( "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME NOT IN ('sysconstraints','syssegments')" ) }
573573 end
574574
575575 def view_information ( table_name )
576576 table_name = unqualify_table_name ( table_name )
577- @sqlserver_view_information_cache [ table_name ] ||= begin
577+ @@ sqlserver_view_information_cache [ table_name ] ||= begin
578578 view_info = info_schema_query { select_one ( "SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = '#{ table_name } '" ) }
579579 if view_info
580580 if view_info [ 'VIEW_DEFINITION' ] . blank? || view_info [ 'VIEW_DEFINITION' ] . length == 4000
@@ -615,15 +615,15 @@ def indexes(table_name, name = nil)
615615 def columns ( table_name , name = nil )
616616 return [ ] if table_name . blank?
617617 cache_key = unqualify_table_name ( table_name )
618- @sqlserver_columns_cache [ cache_key ] ||= column_definitions ( table_name ) . collect do |ci |
618+ @@ sqlserver_columns_cache [ cache_key ] ||= column_definitions ( table_name ) . collect do |ci |
619619 sqlserver_options = ci . except ( :name , :default_value , :type , :null )
620620 SQLServerColumn . new ci [ :name ] , ci [ :default_value ] , ci [ :type ] , ci [ :null ] , sqlserver_options
621621 end
622622 end
623623
624624 def create_table ( table_name , options = { } )
625625 super
626- remove_sqlserver_columns_cache_for ( table_name )
626+ initialize_sqlserver_caches
627627 end
628628
629629 def rename_table ( table_name , new_name )
@@ -632,12 +632,12 @@ def rename_table(table_name, new_name)
632632
633633 def drop_table ( table_name , options = { } )
634634 super
635- remove_sqlserver_columns_cache_for ( table_name )
635+ initialize_sqlserver_caches
636636 end
637637
638638 def add_column ( table_name , column_name , type , options = { } )
639639 super
640- remove_sqlserver_columns_cache_for ( table_name )
640+ initialize_sqlserver_caches
641641 end
642642
643643 def remove_column ( table_name , *column_names )
@@ -647,32 +647,32 @@ def remove_column(table_name, *column_names)
647647 remove_indexes ( table_name , column_name )
648648 do_execute "ALTER TABLE #{ quote_table_name ( table_name ) } DROP COLUMN #{ quote_column_name ( column_name ) } "
649649 end
650- remove_sqlserver_columns_cache_for ( table_name )
650+ initialize_sqlserver_caches
651651 end
652652
653653 def change_column ( table_name , column_name , type , options = { } )
654654 sql_commands = [ ]
655+ remove_default_constraint ( table_name , column_name )
655656 change_column_sql = "ALTER TABLE #{ quote_table_name ( table_name ) } ALTER COLUMN #{ quote_column_name ( column_name ) } #{ type_to_sql ( type , options [ :limit ] , options [ :precision ] , options [ :scale ] ) } "
656657 change_column_sql << " NOT NULL" if options [ :null ] == false
657658 sql_commands << change_column_sql
658659 if options_include_default? ( options )
659- remove_default_constraint ( table_name , column_name )
660660 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 ) } "
661661 end
662662 sql_commands . each { |c | do_execute ( c ) }
663- remove_sqlserver_columns_cache_for ( table_name )
663+ initialize_sqlserver_caches
664664 end
665665
666666 def change_column_default ( table_name , column_name , default )
667667 remove_default_constraint ( table_name , column_name )
668668 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 ) } "
669- remove_sqlserver_columns_cache_for ( table_name )
669+ initialize_sqlserver_caches
670670 end
671671
672672 def rename_column ( table_name , column_name , new_column_name )
673673 column_for ( table_name , column_name )
674674 do_execute "EXEC sp_rename '#{ table_name } .#{ column_name } ', '#{ new_column_name } ', 'COLUMN'"
675- remove_sqlserver_columns_cache_for ( table_name )
675+ initialize_sqlserver_caches
676676 end
677677
678678 def remove_index ( table_name , options = { } )
@@ -1020,16 +1020,10 @@ def sql_for_association_limiting?(sql)
10201020 end
10211021 end
10221022
1023- def remove_sqlserver_columns_cache_for ( table_name )
1024- cache_key = unqualify_table_name ( table_name )
1025- @sqlserver_columns_cache [ cache_key ] = nil
1026- initialize_sqlserver_caches ( false )
1027- end
1028-
1029- def initialize_sqlserver_caches ( reset_columns = true )
1030- @sqlserver_columns_cache = { } if reset_columns
1031- @sqlserver_views_cache = nil
1032- @sqlserver_view_information_cache = { }
1023+ def initialize_sqlserver_caches
1024+ @@sqlserver_columns_cache = { }
1025+ @@sqlserver_views_cache = nil
1026+ @@sqlserver_view_information_cache = { }
10331027 end
10341028
10351029 def column_definitions ( table_name )
0 commit comments