!886 drop tablespace移到trxn worker去回放,保证该目录下所有的database和table都删除后再处理
Merge pull request !886 from maxiang/tablespace
This commit is contained in:
@ -979,7 +979,18 @@ static bool DispatchDataBaseRecord(XLogReaderState *record, List *expectedTLIs,
|
||||
static bool DispatchTableSpaceRecord(XLogReaderState *record, List *expectedTLIs, TimestampTz recordXTime)
|
||||
{
|
||||
bool isNeedFullSync = false;
|
||||
DispatchRecordWithoutPage(record, expectedTLIs);
|
||||
uint8 info = (XLogRecGetInfo(record) & (~XLR_INFO_MASK));
|
||||
if (info == XLOG_TBLSPC_DROP) {
|
||||
RedoItem *item = GetRedoItemPtr(record);
|
||||
ReferenceRedoItem(item);
|
||||
for (uint32 i = 0; i < g_dispatcher->pageLineNum; ++i) {
|
||||
ReferenceRedoItem(item);
|
||||
AddPageRedoItem(g_dispatcher->pageLines[i].batchThd, item);
|
||||
}
|
||||
AddTxnRedoItem(g_dispatcher->trxnLine.managerThd, item);
|
||||
} else {
|
||||
DispatchRecordWithoutPage(record, expectedTLIs);
|
||||
}
|
||||
g_dispatcher->needImmediateCheckpoint = true;
|
||||
return isNeedFullSync;
|
||||
}
|
||||
|
||||
@ -809,6 +809,9 @@ bool PageManagerRedoDistributeItems(void **eleArry, uint32 eleNum)
|
||||
RedoPageManagerDoDropAction(preState, hashMap);
|
||||
break;
|
||||
case BLOCK_DATA_DROP_TBLSPC_TYPE:
|
||||
/* just make sure any other ddl before drop tblspc is done */
|
||||
XLogBlockParseStateRelease(preState);
|
||||
break;
|
||||
case BLOCK_DATA_CREATE_DATABASE_TYPE:
|
||||
case BLOCK_DATA_CREATE_TBLSPC_TYPE:
|
||||
RedoPageManagerDistributeBlockRecord(hashMap, NULL);
|
||||
|
||||
Reference in New Issue
Block a user