summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/replication/logical/decode.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/backend/replication/logical/decode.c b/src/backend/replication/logical/decode.c
index fafbd5f0ec2..7ce1d619e18 100644
--- a/src/backend/replication/logical/decode.c
+++ b/src/backend/replication/logical/decode.c
@@ -702,16 +702,16 @@ DecodeUpdate(LogicalDecodingContext *ctx, XLogRecordBuffer *buf)
memcpy(&xlhdr, data, sizeof(xlhdr));
data += offsetof(xl_heap_header_len, header);
- datalen = xlhdr.t_len + SizeOfHeapHeader;
- tuplelen = xlhdr.t_len;
+ /* t_len is inconsistent with other cases, see log_heap_update */
+ tuplelen = xlhdr.t_len - offsetof(HeapTupleHeaderData, t_bits);
+ datalen = tuplelen + SizeOfHeapHeader;
change->data.tp.oldtuple =
ReorderBufferGetTupleBuf(ctx->reorder, tuplelen);
DecodeXLogTuple(data, datalen, change->data.tp.oldtuple);
#ifdef NOT_USED
- data += SizeOfHeapHeader;
- data += xlhdr.t_len;
+ data += datalen;
#endif
}