1 /*------------------------------------------------------------------------- 2 * 3 * dbasedesc.c 4 * rmgr descriptor routines for commands/dbcommands.c 5 * 6 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group 7 * Portions Copyright (c) 1994, Regents of the University of California 8 * 9 * 10 * IDENTIFICATION 11 * src/backend/access/rmgrdesc/dbasedesc.c 12 * 13 *------------------------------------------------------------------------- 14 */ 15 #include "postgres.h" 16 17 #include "commands/dbcommands_xlog.h" 18 #include "lib/stringinfo.h" 19 20 21 void 22 dbase_desc(StringInfo buf, XLogReaderState *record) 23 { 24 char *rec = XLogRecGetData(record); 25 uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK; 26 27 if (info == XLOG_DBASE_CREATE) 28 { 29 xl_dbase_create_rec *xlrec = (xl_dbase_create_rec *) rec; 30 31 appendStringInfo(buf, "copy dir %u/%u to %u/%u", 32 xlrec->src_tablespace_id, xlrec->src_db_id, 33 xlrec->tablespace_id, xlrec->db_id); 34 } 35 else if (info == XLOG_DBASE_DROP) 36 { 37 xl_dbase_drop_rec *xlrec = (xl_dbase_drop_rec *) rec; 38 39 appendStringInfo(buf, "dir %u/%u", 40 xlrec->tablespace_id, xlrec->db_id); 41 } 42 } 43 44 const char * 45 dbase_identify(uint8 info) 46 { 47 const char *id = NULL; 48 49 switch (info & ~XLR_INFO_MASK) 50 { 51 case XLOG_DBASE_CREATE: 52 id = "CREATE"; 53 break; 54 case XLOG_DBASE_DROP: 55 id = "DROP"; 56 break; 57 } 58 59 return id; 60 } 61