diff --git a/src/backend/distributed/executor/citus_custom_scan.c b/src/backend/distributed/executor/citus_custom_scan.c index 95df92f94fa..e2704577eec 100644 --- a/src/backend/distributed/executor/citus_custom_scan.c +++ b/src/backend/distributed/executor/citus_custom_scan.c @@ -955,6 +955,10 @@ IsCitusCustomScan(Plan *plan) } Node *privateNode = (Node *) linitial(customScan->custom_private); + //shoud check privateNode is null ptr + if (privateNode == NULL){ + return false; + } if (!CitusIsA(privateNode, DistributedPlan)) { return false; diff --git a/src/backend/distributed/executor/local_executor.c b/src/backend/distributed/executor/local_executor.c index 90752ea69b0..7b69d563844 100644 --- a/src/backend/distributed/executor/local_executor.c +++ b/src/backend/distributed/executor/local_executor.c @@ -1019,7 +1019,14 @@ TaskAccessesLocalNode(Task *task) { if (taskPlacement->groupId == localGroupId) { - return true; + //check if it's running on standby node + if( (task->taskType == MODIFY_TASK|| + task->taskType ==DDL_TASK) && RecoveryInProgress()) + { + return false; + }else{ + return true; + } } }