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

Function _bitmap_log_lovitem

src/backend/access/bitmap/bitmaputil.c:985–1024  ·  view source on GitHub ↗

* _bitmap_log_lovitem() -- log adding a new lov item to a lov page. */

Source from the content-addressed store, hash-verified

983 * _bitmap_log_lovitem() -- log adding a new lov item to a lov page.
984 */
985void
986_bitmap_log_lovitem(Relation rel, ForkNumber fork, Buffer lovBuffer, OffsetNumber offset,
987 BMLOVItem lovItem, Buffer metabuf, bool is_new_lov_blkno)
988{
989 Page lovPage = BufferGetPage(lovBuffer);
990
991 xl_bm_lovitem xlLovItem;
992 XLogRecPtr recptr;
993
994 Assert(BufferGetBlockNumber(lovBuffer) > 0);
995
996 xlLovItem.bm_node = rel->rd_node;
997 xlLovItem.bm_fork = fork;
998 xlLovItem.bm_lov_blkno = BufferGetBlockNumber(lovBuffer);
999 xlLovItem.bm_lov_offset = offset;
1000 memcpy(&(xlLovItem.bm_lovItem), lovItem, sizeof(BMLOVItemData));
1001 xlLovItem.bm_is_new_lov_blkno = is_new_lov_blkno;
1002
1003 XLogBeginInsert();
1004 XLogRegisterData((char*)&xlLovItem, sizeof(xl_bm_lovitem));
1005 XLogRegisterBuffer(0, lovBuffer, REGBUF_STANDARD);
1006
1007 if (is_new_lov_blkno)
1008 XLogRegisterBuffer(1, metabuf, 0);
1009
1010 recptr = XLogInsert(RM_BITMAP_ID,
1011 XLOG_BITMAP_INSERT_LOVITEM);
1012
1013 if (is_new_lov_blkno)
1014 {
1015 Page metapage = BufferGetPage(metabuf);
1016
1017 PageSetLSN(metapage, recptr);
1018 }
1019
1020 PageSetLSN(lovPage, recptr);
1021
1022 elog(DEBUG1, "Insert a new lovItem at (blockno, offset): (%d,%d)",
1023 BufferGetBlockNumber(lovBuffer), offset);
1024}
1025
1026/*
1027 * _bitmap_log_bitmapwords() -- log new bitmap words to be inserted.

Callers 2

create_lovitemFunction · 0.85
_bitmap_initFunction · 0.85

Calls 5

BufferGetBlockNumberFunction · 0.85
XLogBeginInsertFunction · 0.85
XLogRegisterDataFunction · 0.85
XLogRegisterBufferFunction · 0.85
XLogInsertFunction · 0.85

Tested by

no test coverage detected