Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Incomplete
-
Affects Version/s: JRuby 1.4
-
Fix Version/s: None
-
Component/s: JRuby-extras
-
Labels:None
-
Environment:osx 10.6.3
JRuby 1.4.0
activerecord-jdbc-adapter 0.9.4
-
Patch Submitted:Yes
-
Number of attachments :
Description
The migration method change_column_null is missing form the derby adapter. Here is an implementation:
module ::JdbcSpec::Derby
def change_column_null(table_name, column_name, null, default = nil)
unless null || default.nil?
execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL")
end
execute("ALTER TABLE #{quote_table_name(table_name)} ALTER COLUMN #{quote_column_name(column_name)} #{'NOT ' unless null}NULL")
end
end
Please add.
Here is a testcase to verify. Just modify to alter a non-nullable column:
class ActiveRecordTest < Test::Unit::TestCase
class TestMigrateChangeColumnNull < ActiveRecord::Migration
def self.up
change_column_null :assignments, :order_id, true
change_count = execute "UPDATE assignments SET order_id = NULL WHERE id = 'started'"
raise "update failure" unless change_count == 1
end
def self.down
change_count = execute "UPDATE assignments SET order_id = 'started' WHERE id = 'started'"
raise "update failure" unless change_count == 1
change_column_null :assignments, :order_id, false
begin
execute "UPDATE assignments SET order_id = NULL WHERE id = 'started'"
raise "Should raise exception"
rescue
# expected
end
end
end
def test_migrate_change_column_null
TestMigrateChangeColumnNull.up
TestMigrateChangeColumnNull.down
end
end
Is this still valid?