From 0d77d960a4f0071610705c169bf857e3bdb67e6f Mon Sep 17 00:00:00 2001 From: TotaJ Date: Sat, 26 Mar 2022 10:03:32 +0800 Subject: [PATCH] Fix logical core. --- src/gausskernel/storage/replication/logical/decode.cpp | 5 +++++ .../storage/replication/logical/reorderbuffer.cpp | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/storage/replication/logical/decode.cpp b/src/gausskernel/storage/replication/logical/decode.cpp index 8507c741..24a5e625 100644 --- a/src/gausskernel/storage/replication/logical/decode.cpp +++ b/src/gausskernel/storage/replication/logical/decode.cpp @@ -440,6 +440,11 @@ static void DecodeHeap3Op(LogicalDecodingContext *ctx, XLogRecordBuffer *buf) switch (info) { case XLOG_HEAP3_NEW_CID: { + xl_heap_new_cid *xlrec = NULL; + int bucket_id = 0; + xlrec = (xl_heap_new_cid *)buf->record_data; + bucket_id = XLogRecGetBucketId(buf->record); + SnapBuildProcessNewCid(builder, xid, buf->origptr, xlrec, bucket_id); break; } case XLOG_HEAP3_REWRITE: diff --git a/src/gausskernel/storage/replication/logical/reorderbuffer.cpp b/src/gausskernel/storage/replication/logical/reorderbuffer.cpp index 590b93ab..cf96e247 100644 --- a/src/gausskernel/storage/replication/logical/reorderbuffer.cpp +++ b/src/gausskernel/storage/replication/logical/reorderbuffer.cpp @@ -1308,6 +1308,7 @@ void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit Relation relation = NULL; Oid reloid; Oid partitionReltoastrelid = InvalidOid; + bool stopDecoding = false; switch (change->action) { case REORDER_BUFFER_CHANGE_INSERT: @@ -1408,7 +1409,10 @@ void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit case REORDER_BUFFER_CHANGE_INTERNAL_COMMAND_ID: Assert(change->data.command_id != InvalidCommandId); - + if (change->data.command_id != FirstCommandId) { + stopDecoding = true; + break; + } if (command_id < change->data.command_id) { command_id = change->data.command_id; @@ -1436,6 +1440,9 @@ void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid, XLogRecPtr commit ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("tuplecid value in changequeue"))); break; } + if (stopDecoding) { + break; + } } ReorderBufferIterTXNFinish(rb, iterstate);