修复表上有BRU触发器时的一些问题。

BRU触发器中可能更新分区键,此时我们需要重新计算元组所属的分区;
    当UPDATE时遇到CONCURRENTLY UPDATE/DELETE场景时,MERGE INTO需要
    重新判断是否匹配,触发器中执行EPQ后投影的结果错误,可能导致宕机。
This commit is contained in:
April01xxx
2023-09-22 19:44:25 +08:00
parent 4e532edf45
commit b3b833b510
17 changed files with 1303 additions and 106 deletions

View File

@ -46,7 +46,7 @@ extern TupleTableSlot* ExecDelete(ItemPointer tupleid, Oid deletePartitionOid, i
extern TupleTableSlot* ExecUpdate(ItemPointer tupleid, Oid oldPartitionOid, int2 bucketid, HeapTupleHeader oldtuple,
TupleTableSlot* slot, TupleTableSlot* planSlot, EPQState* epqstate, ModifyTableState* node, bool canSetTag,
bool partKeyUpdate, TM_Result* out_result, char* partExprKeyStr = NULL);
bool partKeyUpdate, TM_Result* uresultp = NULL, char* partExprKeyStr = NULL, TM_FailureData* tmfd = NULL);
template <bool useHeapMultiInsert>
extern TupleTableSlot* ExecInsertT(ModifyTableState* state, TupleTableSlot* slot, TupleTableSlot* planSlot,