Skip to content

Commit 8da79b3

Browse files
reshkereshke
and
reshke
authored
Show pax relation relfilenode in pg_waldump (#1048)
* Show pax relation relfilenode in pg_waldump Currenly, pax_desc prints only pax file numver, not relfilenode * fix --------- Co-authored-by: reshke <[email protected]>
1 parent 112667c commit 8da79b3

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

contrib/pax_storage/src/cpp/storage/wal/paxc_desc.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#else
3131
#include "storage/wal/paxc_desc.h"
3232
#endif
33+
#include "common/relpath.h"
3334

3435
void pax_rmgr_desc(StringInfo buf, XLogReaderState *record) {
3536
char *rec = XLogRecGetData(record);
@@ -38,14 +39,24 @@ void pax_rmgr_desc(StringInfo buf, XLogReaderState *record) {
3839
switch (info) {
3940
case XLOG_PAX_INSERT: {
4041
char filename[MAX_PATH_FILE_NAME_LEN];
42+
char *relpathPart;
43+
size_t relpathPartSz;
4144

4245
char *rec = XLogRecGetData(record);
4346
xl_pax_insert *xlrec = (xl_pax_insert *)rec;
4447

4548
Assert(xlrec->target.file_name_len < MAX_PATH_FILE_NAME_LEN);
4649

47-
memcpy(filename, rec + SizeOfPAXInsert, xlrec->target.file_name_len);
48-
filename[xlrec->target.file_name_len] = '\0';
50+
relpathPart = relpathbackend(xlrec->target.node, InvalidBackendId, MAIN_FORKNUM);
51+
relpathPartSz = strlen(relpathPart);
52+
53+
memcpy(filename, relpathPart, relpathPartSz);
54+
55+
#define PAX_DIR_SUFFIX "_pax/"
56+
57+
memcpy(filename + relpathPartSz, PAX_DIR_SUFFIX, strlen(PAX_DIR_SUFFIX));
58+
memcpy(filename + relpathPartSz + strlen(PAX_DIR_SUFFIX), rec + SizeOfPAXInsert, xlrec->target.file_name_len);
59+
filename[relpathPartSz + xlrec->target.file_name_len + strlen(PAX_DIR_SUFFIX)] = '\0';
4960

5061
int32 bufferLen = XLogRecGetDataLen(record) - SizeOfPAXInsert -
5162
xlrec->target.file_name_len;

0 commit comments

Comments
 (0)