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

Reply via email to