void spg_redo(XLogRecPtr lsn, XLogRecord *record) { uint8 info = record->xl_info & ~XLR_INFO_MASK; MemoryContext oldCxt; /* * SP-GiST indexes do not require any conflict processing. NB: If we ever * implement a similar optimization as we have in b-tree, and remove * killed tuples outside VACUUM, we'll need to handle that here. */ RestoreBkpBlocks(lsn, record, false); oldCxt = MemoryContextSwitchTo(opCtx); switch (info) { case XLOG_SPGIST_CREATE_INDEX: spgRedoCreateIndex(lsn, record); break; case XLOG_SPGIST_ADD_LEAF: spgRedoAddLeaf(lsn, record); break; case XLOG_SPGIST_MOVE_LEAFS: spgRedoMoveLeafs(lsn, record); break; case XLOG_SPGIST_ADD_NODE: spgRedoAddNode(lsn, record); break; case XLOG_SPGIST_SPLIT_TUPLE: spgRedoSplitTuple(lsn, record); break; case XLOG_SPGIST_PICKSPLIT: spgRedoPickSplit(lsn, record); break; case XLOG_SPGIST_VACUUM_LEAF: spgRedoVacuumLeaf(lsn, record); break; case XLOG_SPGIST_VACUUM_ROOT: spgRedoVacuumRoot(lsn, record); break; case XLOG_SPGIST_VACUUM_REDIRECT: spgRedoVacuumRedirect(lsn, record); break; default: elog(PANIC, "spg_redo: unknown op code %u", info); } MemoryContextSwitchTo(oldCxt); MemoryContextReset(opCtx); }
void spg_redo(XLogRecPtr lsn, XLogRecord *record) { uint8 info = record->xl_info & ~XLR_INFO_MASK; MemoryContext oldCxt; oldCxt = MemoryContextSwitchTo(opCtx); switch (info) { case XLOG_SPGIST_CREATE_INDEX: spgRedoCreateIndex(lsn, record); break; case XLOG_SPGIST_ADD_LEAF: spgRedoAddLeaf(lsn, record); break; case XLOG_SPGIST_MOVE_LEAFS: spgRedoMoveLeafs(lsn, record); break; case XLOG_SPGIST_ADD_NODE: spgRedoAddNode(lsn, record); break; case XLOG_SPGIST_SPLIT_TUPLE: spgRedoSplitTuple(lsn, record); break; case XLOG_SPGIST_PICKSPLIT: spgRedoPickSplit(lsn, record); break; case XLOG_SPGIST_VACUUM_LEAF: spgRedoVacuumLeaf(lsn, record); break; case XLOG_SPGIST_VACUUM_ROOT: spgRedoVacuumRoot(lsn, record); break; case XLOG_SPGIST_VACUUM_REDIRECT: spgRedoVacuumRedirect(lsn, record); break; default: elog(PANIC, "spg_redo: unknown op code %u", info); } MemoryContextSwitchTo(oldCxt); MemoryContextReset(opCtx); }