diff options
author | Fredrik Gustafsson <[email protected]> | 2012-08-27 11:30:15 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2012-08-27 11:30:15 +0200 |
commit | 1e27e69bfb2f119aac822937cb2625313de1a6cd (patch) | |
tree | 3467d81bf5ae079257f7a284825547a8cd56450f /lib/mnesia/test | |
parent | 8db887dec9d864eb6276e432d6159716a4316100 (diff) | |
parent | fade3d414f2a052fc810eb4aa9b681c70fc94575 (diff) | |
download | otp-1e27e69bfb2f119aac822937cb2625313de1a6cd.tar.gz otp-1e27e69bfb2f119aac822937cb2625313de1a6cd.tar.bz2 otp-1e27e69bfb2f119aac822937cb2625313de1a6cd.zip |
Merge branch 'bp/fix_mnesia_index_drop/OTP-10220' into maint
* bp/fix_mnesia_index_drop/OTP-10220:
Bumped version nr
Prevent index from being corrupted if a nonexistent item is deleted
Add tests showing that trying to delete non-existing object may corrupt the table index
Diffstat (limited to 'lib/mnesia/test')
-rw-r--r-- | lib/mnesia/test/mnesia_dirty_access_test.erl | 3 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_trans_access_test.erl | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/mnesia/test/mnesia_dirty_access_test.erl b/lib/mnesia/test/mnesia_dirty_access_test.erl index abbdab48c0..a57adefbac 100644 --- a/lib/mnesia/test/mnesia_dirty_access_test.erl +++ b/lib/mnesia/test/mnesia_dirty_access_test.erl @@ -527,6 +527,9 @@ dirty_index_update_bag(Config, Storage) -> ?match(ok, mnesia:dirty_write(Rec1)), ?match([Rec1], mnesia:dirty_index_read(Tab, 2, ValPos)), + ?match(ok, mnesia:dirty_delete_object(Rec5)), + ?match([Rec1], mnesia:dirty_index_read(Tab, 2, ValPos)), + ?match({atomic, ok}, mnesia:transaction(fun() -> mnesia:write(Rec2) end)), R1 = mnesia:dirty_index_read(Tab, 2, ValPos), ?match([Rec1, Rec2], lists:sort(R1)), diff --git a/lib/mnesia/test/mnesia_trans_access_test.erl b/lib/mnesia/test/mnesia_trans_access_test.erl index c040d0ca3f..73c3fe0362 100644 --- a/lib/mnesia/test/mnesia_trans_access_test.erl +++ b/lib/mnesia/test/mnesia_trans_access_test.erl @@ -896,6 +896,10 @@ index_update_bag(Config)when is_list(Config) -> ?match({atomic, [Rec1]}, mnesia:transaction(fun() -> mnesia:index_read(Tab, 2, ValPos) end)), + ?match({atomic, ok}, mnesia:transaction(fun() -> mnesia:delete_object(Rec5) end)), + ?match({atomic, [Rec1]}, + mnesia:transaction(fun() -> mnesia:index_read(Tab, 2, ValPos) end)), + ?match({atomic, ok}, mnesia:transaction(fun() -> mnesia:write(Rec2) end)), {atomic, R1} = mnesia:transaction(fun() -> mnesia:index_read(Tab, 2, ValPos) end), |