MCPcopy Create free account
hub / github.com/apache/cloudberry / afterTriggerRestoreEventList

Function afterTriggerRestoreEventList

src/backend/commands/trigger.c:3891–3921  ·  view source on GitHub ↗

---------- * afterTriggerRestoreEventList() * * Restore an event list to its prior length, removing all the events * added since it had the value old_events. * ---------- */

Source from the content-addressed store, hash-verified

3889 * ----------
3890 */
3891static void
3892afterTriggerRestoreEventList(AfterTriggerEventList *events,
3893 const AfterTriggerEventList *old_events)
3894{
3895 AfterTriggerEventChunk *chunk;
3896 AfterTriggerEventChunk *next_chunk;
3897
3898 if (old_events->tail == NULL)
3899 {
3900 /* restoring to a completely empty state, so free everything */
3901 afterTriggerFreeEventList(events);
3902 }
3903 else
3904 {
3905 *events = *old_events;
3906 /* free any chunks after the last one we want to keep */
3907 for (chunk = events->tail->next; chunk != NULL; chunk = next_chunk)
3908 {
3909 next_chunk = chunk->next;
3910 pfree(chunk);
3911 }
3912 /* and clean up the tail chunk to be the right length */
3913 events->tail->next = NULL;
3914 events->tail->freeptr = events->tailfree;
3915
3916 /*
3917 * We don't make any effort to remove now-unused shared data records.
3918 * They might still be useful, anyway.
3919 */
3920 }
3921}
3922
3923/* ----------
3924 * afterTriggerDeleteHeadEventChunk()

Callers 1

AfterTriggerEndSubXactFunction · 0.85

Calls 2

pfreeFunction · 0.50

Tested by

no test coverage detected