生成列应该在on update执行后,再执行,否则生成列取的是on update之前的老数据,影响逻辑
This commit is contained in:
@ -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)) {
|
||||
|
Reference in New Issue
Block a user