diff --git a/src/gausskernel/runtime/executor/nodeModifyTable.cpp b/src/gausskernel/runtime/executor/nodeModifyTable.cpp index f6ef4ff8e..b3821d0a8 100644 --- a/src/gausskernel/runtime/executor/nodeModifyTable.cpp +++ b/src/gausskernel/runtime/executor/nodeModifyTable.cpp @@ -2212,14 +2212,6 @@ TupleTableSlot* ExecUpdate(ItemPointer tupleid, Assert(RELATION_HAS_BUCKET(result_relation_desc) == (bucketid != InvalidBktId)); lreplace: - /* - * Compute stored generated columns - */ - if (result_relation_desc->rd_att->constr && result_relation_desc->rd_att->constr->has_generated_stored) { - ExecComputeStoredGenerated(result_rel_info, estate, slot, tuple, CMD_UPDATE); - tuple = slot->tts_tuple; - } - /* acquire Form_pg_attrdef ad_on_update */ if (result_relation_desc->rd_att->constr && result_relation_desc->rd_att->constr->has_on_update) { bool update_fix_result = ExecComputeStoredUpdateExpr(result_rel_info, estate, slot, tuple, CMD_UPDATE, tupleid, oldPartitionOid, bucketid); @@ -2228,6 +2220,14 @@ lreplace: } } + /* + * Compute stored generated columns + */ + if (result_relation_desc->rd_att->constr && result_relation_desc->rd_att->constr->has_generated_stored) { + ExecComputeStoredGenerated(result_rel_info, estate, slot, tuple, CMD_UPDATE); + tuple = slot->tts_tuple; + } + if (result_relation_desc->rd_att->constr) { TupleTableSlot *tmp_slot = node->mt_update_constr_slot == NULL ? slot : node->mt_update_constr_slot; if (!ExecConstraints(result_rel_info, tmp_slot, estate)) {