Ticket #6999: rename_table_with_null_and_default.diff
| File rename_table_with_null_and_default.diff, 2.2 kB (added by manfred, 2 years ago) |
|---|
-
test/migration_test.rb
old new 360 360 end 361 361 end 362 362 363 def test_rename_column_not_null_with_default 364 begin 365 Person.connection.add_column "people", "hair_clor", :string, :default => "Black", :null => false 366 Person.reset_column_information 367 columns = Person.connection.columns(:people) 368 hair_color = columns.detect { |c| c.name == "hair_clor" } 369 assert_equal "Black", hair_color.default 370 assert !hair_color.null 371 372 Person.connection.rename_column("people", "hair_clor", "hair_color") 373 Person.reset_column_information 374 columns = Person.connection.columns(:people) 375 hair_color = columns.detect { |c| c.name == "hair_color" } 376 assert_equal "Black", hair_color.default 377 assert !hair_color.null 378 ensure 379 Person.connection.remove_column("people", "hair_clor") rescue ActiveRecord::StatementInvalid 380 Person.connection.remove_column("people", "hair_color") rescue ActiveRecord::StatementInvalid 381 end 382 end 383 363 384 def test_rename_table 364 385 begin 365 386 ActiveRecord::Base.connection.create_table :octopuses do |t| -
lib/active_record/connection_adapters/mysql_adapter.rb
old new 374 374 end 375 375 376 376 def rename_column(table_name, column_name, new_column_name) #:nodoc: 377 current_type = select_one("SHOW COLUMNS FROM #{table_name} LIKE '#{column_name}'")["Type"] 378 execute "ALTER TABLE #{table_name} CHANGE #{column_name} #{new_column_name} #{current_type}" 377 options = select_one("SHOW COLUMNS FROM #{table_name} LIKE '#{column_name}'") 378 rename_column_sql = "ALTER TABLE #{table_name} CHANGE #{column_name} #{new_column_name} #{options["Type"]}" 379 add_column_options!(rename_column_sql, :default => options["Default"], :null => (options["Null"] == "YES")) 380 execute(rename_column_sql) 379 381 end 380 382 381 383