reshke commented on PR #1044: URL: https://github.com/apache/cloudberry/pull/1044#issuecomment-2800712536
Here is patch for pretty-print PAX_INSERT filenode name in waldump Before: ``` reshke@yezzey-cbdb-bench:~/cloudberry/contrib/pax_storage$ pg_waldump /home/reshke/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/pg_wal/00000001000000000000000D | grep pax rmgr: pax len (rec/tot): 1573014/1573014, tx: 887, lsn: 0/35515F90, prev 0/35515EE0, desc: PAX_INSERT PAX_INSERT, filename = 8, offset = 0, dataLen = 1572960 ``` After: ``` reshke@yezzey-cbdb-bench:~/cloudberry$ pg_waldump /home/reshke/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/pg_wal/00000001000000000000000D | grep pax rmgr: pax len (rec/tot): 1573014/1573014, tx: 887, lsn: 0/35515F90, prev 0/35515EE0, desc: PAX_INSERT PAX_INSERT, filename = base/17068/16389.8, offset = 0, dataLen = 1572960 ``` patch: ``` reshke@yezzey-cbdb-bench:~/cloudberry$ git diff contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c 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; ``` I will open PR later, because current PR is already too big. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@cloudberry.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cloudberry.apache.org For additional commands, e-mail: commits-h...@cloudberry.apache.org