From 422957ffa9522ce757f82830db80abbb4952453d Mon Sep 17 00:00:00 2001 From: reshke Date: Mon, 14 Apr 2025 19:50:18 +0000 Subject: [PATCH 1/2] Show pax relation relfilenode in pg_waldump Currenly, pax_desc prints only pax file numver, not relfilenode --- contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c b/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c index c1457fc4787..81b398f1762 100644 --- a/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c +++ b/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c @@ -30,6 +30,7 @@ #else #include "storage/wal/paxc_desc.h" #endif +#include "common/relpath.h" void pax_rmgr_desc(StringInfo buf, XLogReaderState *record) { char *rec = XLogRecGetData(record); @@ -38,14 +39,22 @@ void pax_rmgr_desc(StringInfo buf, XLogReaderState *record) { switch (info) { case XLOG_PAX_INSERT: { char filename[MAX_PATH_FILE_NAME_LEN]; + char *relpathPart; + size_t relpathPartSz; char *rec = XLogRecGetData(record); xl_pax_insert *xlrec = (xl_pax_insert *)rec; Assert(xlrec->target.file_name_len < MAX_PATH_FILE_NAME_LEN); - memcpy(filename, rec + SizeOfPAXInsert, xlrec->target.file_name_len); - filename[xlrec->target.file_name_len] = '\0'; + relpathPart = relpathbackend(xlrec->target.node, InvalidBackendId, MAIN_FORKNUM); + relpathPartSz = strlen(relpathPart); + + memcpy(filename, relpathPart, relpathPartSz); + + memcpy(filename + relpathPartSz, ".", 1); + memcpy(filename + relpathPartSz + 1, rec + SizeOfPAXInsert, xlrec->target.file_name_len); + filename[relpathPartSz + xlrec->target.file_name_len + 1] = '\0'; int32 bufferLen = XLogRecGetDataLen(record) - SizeOfPAXInsert - xlrec->target.file_name_len; From 09de8eb42d7f274ba8c2a1e109d9a13c1d6b1772 Mon Sep 17 00:00:00 2001 From: reshke Date: Wed, 16 Apr 2025 13:07:08 +0000 Subject: [PATCH 2/2] fix --- contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c b/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c index 81b398f1762..8900f0bc8a7 100644 --- a/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c +++ b/contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c @@ -52,9 +52,11 @@ void pax_rmgr_desc(StringInfo buf, XLogReaderState *record) { memcpy(filename, relpathPart, relpathPartSz); - memcpy(filename + relpathPartSz, ".", 1); - memcpy(filename + relpathPartSz + 1, rec + SizeOfPAXInsert, xlrec->target.file_name_len); - filename[relpathPartSz + xlrec->target.file_name_len + 1] = '\0'; +#define PAX_DIR_SUFFIX "_pax/" + + memcpy(filename + relpathPartSz, PAX_DIR_SUFFIX, strlen(PAX_DIR_SUFFIX)); + memcpy(filename + relpathPartSz + strlen(PAX_DIR_SUFFIX), rec + SizeOfPAXInsert, xlrec->target.file_name_len); + filename[relpathPartSz + xlrec->target.file_name_len + strlen(PAX_DIR_SUFFIX)] = '\0'; int32 bufferLen = XLogRecGetDataLen(record) - SizeOfPAXInsert - xlrec->target.file_name_len;