Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit dc5f9aa

Browse files
author
Alexander Korotkov
committed
Bug on delete/insert of the same key in the same transaction.
1 parent 0d24d16 commit dc5f9aa

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

contrib/in_memory/btree.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,12 @@ btree_modify_internal(BTreeDescr *desc, BTreeModifyAction action,
721721
{
722722
/* If we deleted it ourselves, revert this deletion */
723723
apply_undo(desc, p, offset, false);
724+
725+
/*
726+
* We've already reverted the previous delete, so don't
727+
* consider it as sefl update anymore.
728+
*/
729+
self_update = NoSelfUpdate;
724730
}
725731
replace = true;
726732
}

contrib/in_memory/expected/in_memory.out

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5216,3 +5216,18 @@ SELECT count(*), sum(id) FROM im_test1;
52165216
100 | 5050
52175217
(1 row)
52185218

5219+
-- delete/insert of same key in the same transaction bug
5220+
TRUNCATE im_test1;
5221+
INSERT INTO im_test1 SELECT id, repeat('x', 280) FROM generate_series(1, 3) id;
5222+
BEGIN;
5223+
DELETE FROM im_test1 WHERE id = 3;
5224+
INSERT INTO im_test1 SELECT id, repeat('x', 280) FROM generate_series(3, 4) id;
5225+
ROLLBACK;
5226+
SELECT * FROM im_test1;
5227+
id | val
5228+
----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5229+
1 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5230+
2 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5231+
3 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
5232+
(3 rows)
5233+

contrib/in_memory/sql/in_memory.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,3 +711,12 @@ INSERT INTO im_test1 SELECT id, repeat('x', 200) FROM generate_series(1, 100) id
711711
DELETE FROM im_test1 WHERE id % 2 = 0;
712712
INSERT INTO im_test1 SELECT id, repeat('x', 250) FROM generate_series(2, 100, 2) id;
713713
SELECT count(*), sum(id) FROM im_test1;
714+
715+
-- delete/insert of same key in the same transaction bug
716+
TRUNCATE im_test1;
717+
INSERT INTO im_test1 SELECT id, repeat('x', 280) FROM generate_series(1, 3) id;
718+
BEGIN;
719+
DELETE FROM im_test1 WHERE id = 3;
720+
INSERT INTO im_test1 SELECT id, repeat('x', 280) FROM generate_series(3, 4) id;
721+
ROLLBACK;
722+
SELECT * FROM im_test1;

0 commit comments

Comments
 (0)