!3178 修复replace同时插入多行的报错问题

Merge pull request !3178 from zong/master
This commit is contained in:
opengauss-bot
2023-03-20 02:41:23 +00:00
committed by Gitee
4 changed files with 28 additions and 2 deletions

View File

@ -3182,7 +3182,7 @@ ltrmark:
lockmode,
LockWaitBlock,
&tmfd,
false, // fake params below are for uheap implementation
true, // fake params below are for uheap implementation
false, false, NULL, NULL, false);
switch (test) {
case TM_SelfUpdated:

View File

@ -1766,7 +1766,8 @@ ldelete:
estate->es_snapshot,
true /* wait for commit */,
&oldslot,
&tmfd);
&tmfd,
node->isReplace);
switch (result) {
case TM_SelfUpdated:

View File

@ -93,6 +93,29 @@ select * from replace_test;
1 | aaaaa | ddddd
(4 rows)
replace into replace_test values(3,'ccccc','ccccc'),(3,'ddddd','ccccc'),(3,'eeeee','eeeee');
NOTICE: before delete trigger
NOTICE: before insert trigger
NOTICE: before delete trigger
NOTICE: before insert trigger
NOTICE: before delete trigger
NOTICE: before delete trigger
NOTICE: before insert trigger
NOTICE: after delete trigger
NOTICE: after insert trigger
NOTICE: after delete trigger
NOTICE: after insert trigger
NOTICE: after delete trigger
NOTICE: after delete trigger
NOTICE: after insert trigger
select * from replace_test;
id | name | key
----+-------+-------
2 | bbbbb | bbbbb
1 | aaaaa | ddddd
3 | eeeee | eeeee
(3 rows)
explain analyze REPLACE INTO replace_test values(2,'aaaa','bbbb');
NOTICE: before delete trigger
NOTICE: before insert trigger

View File

@ -49,6 +49,8 @@ replace into replace_test values(3,'ccccc','ccccc'),(4,'ddddd','ddddd'),(5,'eeee
select * from replace_test;
replace into replace_test values(1,'aaaaa','ddddd');
select * from replace_test;
replace into replace_test values(3,'ccccc','ccccc'),(3,'ddddd','ccccc'),(3,'eeeee','eeeee');
select * from replace_test;
explain analyze REPLACE INTO replace_test values(2,'aaaa','bbbb');
explain performance REPLACE INTO replace_test values(2,'ddddd','fffff');
truncate replace_test;