From 516657c8c7936410ffebcd22aa28e6df1808aaa7 Mon Sep 17 00:00:00 2001 From: Vinoth Veeraraghavan Date: Thu, 10 Sep 2020 19:19:05 +0800 Subject: [PATCH] Allow delete operations in MOT even if memory limit is reached --- .../storage/mot/fdw_adapter/src/mot_fdw.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/gausskernel/storage/mot/fdw_adapter/src/mot_fdw.cpp b/src/gausskernel/storage/mot/fdw_adapter/src/mot_fdw.cpp index 4fa053ea6..2350d1f75 100644 --- a/src/gausskernel/storage/mot/fdw_adapter/src/mot_fdw.cpp +++ b/src/gausskernel/storage/mot/fdw_adapter/src/mot_fdw.cpp @@ -965,7 +965,14 @@ static void MOTBeginForeignModify( if (MOTAdaptor::m_engine->IsSoftMemoryLimitReached()) { CleanQueryStatesOnError(festate->m_currTxn); } - isMemoryLimitReached(); + switch (mtstate->operation) { + case CMD_INSERT: + case CMD_UPDATE: + isMemoryLimitReached(); + break; + default: + break; + } // bring all attributes int len = BITMAP_GETLEN(festate->m_numAttrs); if (fdwPrivate != nullptr) { @@ -1320,7 +1327,14 @@ static bool MOTAnalyzeForeignTable(Relation relation, AcquireSampleRowsFunc* fun List* MOTPlanForeignModify(PlannerInfo* root, ModifyTable* plan, ::Index resultRelation, int subplanIndex) { - isMemoryLimitReached(); + switch (plan->operation) { + case CMD_INSERT: + case CMD_UPDATE: + isMemoryLimitReached(); + break; + default: + break; + } MOTFdwStateSt* fdwState = nullptr; RangeTblEntry* rte = planner_rt_fetch(resultRelation, root);