From 1939f82fc67d218b6990b8a694709f0a7cb59430 Mon Sep 17 00:00:00 2001 From: Paul Guo Date: Mon, 6 Jul 2020 21:20:15 +0800 Subject: [PATCH v11 4/4] Fix database create/drop wal description. Previously the description messages are wrong since the database path is not simply tablespce_oid/database_oid. Now we call GetDatabasePath() to get the correct database path. Authored by Paul Guo --- src/backend/access/rmgrdesc/dbasedesc.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/backend/access/rmgrdesc/dbasedesc.c b/src/backend/access/rmgrdesc/dbasedesc.c index 26609845aa..873737161c 100644 --- a/src/backend/access/rmgrdesc/dbasedesc.c +++ b/src/backend/access/rmgrdesc/dbasedesc.c @@ -23,14 +23,17 @@ dbase_desc(StringInfo buf, XLogReaderState *record) { char *rec = XLogRecGetData(record); uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK; + char *dbpath1, *dbpath2; if (info == XLOG_DBASE_CREATE) { xl_dbase_create_rec *xlrec = (xl_dbase_create_rec *) rec; - appendStringInfo(buf, "copy dir %u/%u to %u/%u", - xlrec->src_tablespace_id, xlrec->src_db_id, - xlrec->tablespace_id, xlrec->db_id); + dbpath1 = GetDatabasePath(xlrec->src_db_id, xlrec->src_tablespace_id); + dbpath2 = GetDatabasePath(xlrec->db_id, xlrec->tablespace_id); + appendStringInfo(buf, "copy dir %s to %s", dbpath1, dbpath2); + pfree(dbpath2); + pfree(dbpath1); } else if (info == XLOG_DBASE_DROP) { @@ -39,8 +42,11 @@ dbase_desc(StringInfo buf, XLogReaderState *record) appendStringInfoString(buf, "dir"); for (i = 0; i < xlrec->ntablespaces; i++) - appendStringInfo(buf, " %u/%u", - xlrec->tablespace_ids[i], xlrec->db_id); + { + dbpath1 = GetDatabasePath(xlrec->db_id, xlrec->tablespace_ids[i]); + appendStringInfo(buf, " %s", dbpath1); + pfree(dbpath1); + } } } -- 2.14.3