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

Function LogLogicalInvalidations

src/backend/utils/cache/inval.c:1617–1654  ·  view source on GitHub ↗

* LogLogicalInvalidations * * Emit WAL for invalidations. This is currently only used for logging * invalidations at the command end or at commit time if any invalidations * are pending. */

Source from the content-addressed store, hash-verified

1615 * are pending.
1616 */
1617void
1618LogLogicalInvalidations()
1619{
1620 xl_xact_invals xlrec;
1621 SharedInvalidationMessage *invalMessages;
1622 int nmsgs = 0;
1623
1624 /* Quick exit if we haven't done anything with invalidation messages. */
1625 if (transInvalInfo == NULL)
1626 return;
1627
1628 ProcessInvalidationMessagesMulti(&transInvalInfo->CurrentCmdInvalidMsgs,
1629 MakeSharedInvalidMessagesArray);
1630
1631 Assert(!(numSharedInvalidMessagesArray > 0 &&
1632 SharedInvalidMessagesArray == NULL));
1633
1634 invalMessages = SharedInvalidMessagesArray;
1635 nmsgs = numSharedInvalidMessagesArray;
1636 SharedInvalidMessagesArray = NULL;
1637 numSharedInvalidMessagesArray = 0;
1638
1639 if (nmsgs > 0)
1640 {
1641 /* prepare record */
1642 memset(&xlrec, 0, MinSizeOfXactInvals);
1643 xlrec.nmsgs = nmsgs;
1644
1645 /* perform insertion */
1646 XLogBeginInsert();
1647 XLogRegisterData((char *) (&xlrec), MinSizeOfXactInvals);
1648 XLogRegisterData((char *) invalMessages,
1649 nmsgs * sizeof(SharedInvalidationMessage));
1650 XLogInsert(RM_XACT_ID, XLOG_XACT_INVALIDATIONS);
1651
1652 pfree(invalMessages);
1653 }
1654}

Callers 2

RecordTransactionCommitFunction · 0.85

Calls 5

XLogBeginInsertFunction · 0.85
XLogRegisterDataFunction · 0.85
XLogInsertFunction · 0.85
pfreeFunction · 0.50

Tested by

no test coverage detected