Ticket #6956: change_column_default_to_null.diff
| File change_column_default_to_null.diff, 5.4 kB (added by dcmanges, 2 years ago) |
|---|
-
test/migration_test.rb
old new 433 433 Person.reset_column_information 434 434 assert !Person.new.administrator? 435 435 end 436 437 def test_change_column_with_nil_default 438 Person.connection.add_column "people", "contributor", :boolean, :default => true 439 Person.reset_column_information 440 assert Person.new.contributor? 441 442 assert_nothing_raised { Person.connection.change_column "people", "contributor", :boolean, :default => nil } 443 Person.reset_column_information 444 assert !Person.new.contributor? 445 assert_nil Person.new.contributor 446 end 436 447 437 448 def test_add_table 438 449 assert !Reminder.table_exists? -
lib/active_record/connection_adapters/abstract/schema_statements.rb
old new 276 276 end 277 277 278 278 def add_column_options!(sql, options) #:nodoc: 279 sql << " DEFAULT #{quote(options[:default], options[:column])}" unless options[:default].nil?279 sql << " DEFAULT #{quote(options[:default], options[:column])}" if options.include?(:default) && !(options[:default].nil? && options[:null] == false) 280 280 sql << " NOT NULL" if options[:null] == false 281 281 end 282 282 -
lib/active_record/connection_adapters/sqlite_adapter.rb
old new 267 267 definition[column_name].instance_eval do 268 268 self.type = type 269 269 self.limit = options[:limit] if options[:limit] 270 self.default = options[:default] unless options[:default].nil?270 self.default = options[:default] if options.include?(:default) && !(options[:default].nil? && options[:null] == false) 271 271 end 272 272 end 273 273 end -
lib/active_record/connection_adapters/frontbase_adapter.rb
old new 800 800 default_value = options[:default] == 0 ? quoted_false : quoted_true 801 801 end 802 802 end 803 sql << " DEFAULT #{default_value}" unless options[:default].nil?803 sql << " DEFAULT #{default_value}" if options.include?(:default) && !(options[:default].nil? && options[:null] == false) 804 804 sql << " NOT NULL" if options[:null] == false 805 805 end 806 806 -
lib/active_record/connection_adapters/postgresql_adapter.rb
old new 345 345 rename_column(table_name, "#{column_name}_ar_tmp", column_name) 346 346 commit_db_transaction 347 347 end 348 change_column_default(table_name, column_name, options[:default]) unless options[:default].nil?348 change_column_default(table_name, column_name, options[:default]) if options.include?(:default) && !(options[:default].nil? && options[:null] == false) 349 349 end 350 350 351 351 def change_column_default(table_name, column_name, default) #:nodoc: 352 execute "ALTER TABLE #{table_name} ALTER COLUMN #{quote_column_name(column_name)} SET DEFAULT '#{default}'"352 execute "ALTER TABLE #{table_name} ALTER COLUMN #{quote_column_name(column_name)} SET DEFAULT #{quote(default)}" 353 353 end 354 354 355 355 def rename_column(table_name, column_name, new_column_name) #:nodoc: -
lib/active_record/connection_adapters/mysql_adapter.rb
old new 364 364 end 365 365 366 366 def change_column(table_name, column_name, type, options = {}) #:nodoc: 367 if options[:default].nil?367 unless options.include?(:default) 368 368 options[:default] = select_one("SHOW COLUMNS FROM #{table_name} LIKE '#{column_name}'")["Default"] 369 369 end 370 370 -
lib/active_record/connection_adapters/sqlserver_adapter.rb
old new 458 458 459 459 def change_column(table_name, column_name, type, options = {}) #:nodoc: 460 460 sql_commands = ["ALTER TABLE #{table_name} ALTER COLUMN #{column_name} #{type_to_sql(type, options[:limit], options[:precision], options[:scale])}"] 461 unless options[:default].nil?461 if options.include?(:default) 462 462 remove_default_constraint(table_name, column_name) 463 463 sql_commands << "ALTER TABLE #{table_name} ADD CONSTRAINT DF_#{table_name}_#{column_name} DEFAULT #{quote(options[:default])} FOR #{column_name}" 464 464 end