@@ -6564,18 +6564,24 @@ InsteadofTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo,
65646564
65656565 if (event == TRIGGER_EVENT_DELETE )
65666566 {
6567- old_tuplestore = transition_capture -> tcs_private -> old_del_tuplestore ;
6567+ old_tuplestore = transition_capture -> tcs_delete_private -> old_tuplestore ;
65686568 }
65696569 else if (event == TRIGGER_EVENT_UPDATE )
65706570 {
6571- old_tuplestore = transition_capture -> tcs_private -> old_upd_tuplestore ;
6571+ old_tuplestore = transition_capture -> tcs_update_private -> old_tuplestore ;
65726572 }
65736573
65746574 if (map != NULL )
65756575 {
6576- AfterTriggersTableData * table = transition_capture -> tcs_private ;
6576+ AfterTriggersTableData * table ;
65776577 TupleTableSlot * storeslot ;
65786578
6579+ /* Use appropriate private based on event type */
6580+ if (event == TRIGGER_EVENT_DELETE )
6581+ table = transition_capture -> tcs_delete_private ;
6582+ else
6583+ table = transition_capture -> tcs_update_private ;
6584+
65796585 storeslot = GetAfterTriggersStoreSlot (table , map -> outdesc );
65806586 execute_attr_map_slot (map -> attrMap , oldslot , storeslot );
65816587 tuplestore_puttupleslot (old_tuplestore , storeslot );
@@ -6592,21 +6598,27 @@ InsteadofTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo,
65926598
65936599 if (event == TRIGGER_EVENT_INSERT )
65946600 {
6595- new_tuplestore = transition_capture -> tcs_private -> new_ins_tuplestore ;
6601+ new_tuplestore = transition_capture -> tcs_insert_private -> new_tuplestore ;
65966602 }
65976603 else if (event == TRIGGER_EVENT_UPDATE )
65986604 {
6599- new_tuplestore = transition_capture -> tcs_private -> new_upd_tuplestore ;
6605+ new_tuplestore = transition_capture -> tcs_update_private -> new_tuplestore ;
66006606 }
66016607
66026608 if (original_insert_tuple != NULL )
66036609 tuplestore_puttupleslot (new_tuplestore ,
66046610 original_insert_tuple );
66056611 else if (map != NULL )
66066612 {
6607- AfterTriggersTableData * table = transition_capture -> tcs_private ;
6613+ AfterTriggersTableData * table ;
66086614 TupleTableSlot * storeslot ;
66096615
6616+ /* Use appropriate private based on event type */
6617+ if (event == TRIGGER_EVENT_INSERT )
6618+ table = transition_capture -> tcs_insert_private ;
6619+ else
6620+ table = transition_capture -> tcs_update_private ;
6621+
66106622 storeslot = GetAfterTriggersStoreSlot (table , map -> outdesc );
66116623 execute_attr_map_slot (map -> attrMap , newslot , storeslot );
66126624 tuplestore_puttupleslot (new_tuplestore , storeslot );
@@ -6688,7 +6700,24 @@ InsteadofTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo,
66886700 new_shared .ats_firing_id = 0 ;
66896701 if ((trigger -> tgoldtable || trigger -> tgnewtable ) &&
66906702 transition_capture != NULL )
6691- new_shared .ats_table = transition_capture -> tcs_private ;
6703+ {
6704+ /* Use appropriate private based on event type */
6705+ switch (event )
6706+ {
6707+ case TRIGGER_EVENT_INSERT :
6708+ new_shared .ats_table = transition_capture -> tcs_insert_private ;
6709+ break ;
6710+ case TRIGGER_EVENT_UPDATE :
6711+ new_shared .ats_table = transition_capture -> tcs_update_private ;
6712+ break ;
6713+ case TRIGGER_EVENT_DELETE :
6714+ new_shared .ats_table = transition_capture -> tcs_delete_private ;
6715+ break ;
6716+ default :
6717+ new_shared .ats_table = NULL ;
6718+ break ;
6719+ }
6720+ }
66926721 else
66936722 new_shared .ats_table = NULL ;
66946723 new_shared .ats_modifiedcols = modifiedCols ;
0 commit comments