mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Remove some dead code for handling XLOG_DBASE_CREATE_OLD and
XLOG_DBASE_DROP_OLD WAL records -- these records are no longer created in current sources. Adjust numbering of XLOG_DBASE_CREATE and XLOG_DBASE_DROP and bump the catversion. Patch from Gavin Sherry, adjusted by Neil Conway.
This commit is contained in:
parent
d7207cfc6b
commit
40ffa1a14c
src
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.165 2005/07/07 20:39:58 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.166 2005/07/08 04:12:24 neilc Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1305,79 +1305,6 @@ dbase_redo(XLogRecPtr lsn, XLogRecord *record)
|
|||||||
(errmsg("could not remove database directory \"%s\"",
|
(errmsg("could not remove database directory \"%s\"",
|
||||||
dst_path)));
|
dst_path)));
|
||||||
}
|
}
|
||||||
else if (info == XLOG_DBASE_CREATE_OLD)
|
|
||||||
{
|
|
||||||
xl_dbase_create_rec_old *xlrec = (xl_dbase_create_rec_old *) XLogRecGetData(record);
|
|
||||||
char *dst_path = xlrec->src_path + strlen(xlrec->src_path) + 1;
|
|
||||||
struct stat st;
|
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
char buf[2 * MAXPGPATH + 100];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Our theory for replaying a CREATE is to forcibly drop the
|
|
||||||
* target subdirectory if present, then re-copy the source data.
|
|
||||||
* This may be more work than needed, but it is simple to
|
|
||||||
* implement.
|
|
||||||
*/
|
|
||||||
if (stat(dst_path, &st) == 0 && S_ISDIR(st.st_mode))
|
|
||||||
{
|
|
||||||
if (!rmtree(dst_path, true))
|
|
||||||
ereport(WARNING,
|
|
||||||
(errmsg("could not remove database directory \"%s\"",
|
|
||||||
dst_path)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Force dirty buffers out to disk, to ensure source database is
|
|
||||||
* up-to-date for the copy. (We really only need to flush buffers for
|
|
||||||
* the source database, but bufmgr.c provides no API for that.)
|
|
||||||
*/
|
|
||||||
BufferSync();
|
|
||||||
|
|
||||||
#ifndef WIN32
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copy this subdirectory to the new location
|
|
||||||
*
|
|
||||||
* XXX use of cp really makes this code pretty grotty, particularly
|
|
||||||
* with respect to lack of ability to report errors well. Someday
|
|
||||||
* rewrite to do it for ourselves.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* We might need to use cp -R one day for portability */
|
|
||||||
snprintf(buf, sizeof(buf), "cp -r '%s' '%s'",
|
|
||||||
xlrec->src_path, dst_path);
|
|
||||||
if (system(buf) != 0)
|
|
||||||
ereport(ERROR,
|
|
||||||
(errmsg("could not initialize database directory"),
|
|
||||||
errdetail("Failing system command was: %s", buf),
|
|
||||||
errhint("Look in the postmaster's stderr log for more information.")));
|
|
||||||
#else /* WIN32 */
|
|
||||||
if (copydir(xlrec->src_path, dst_path) != 0)
|
|
||||||
{
|
|
||||||
/* copydir should already have given details of its troubles */
|
|
||||||
ereport(ERROR,
|
|
||||||
(errmsg("could not initialize database directory")));
|
|
||||||
}
|
|
||||||
#endif /* WIN32 */
|
|
||||||
}
|
|
||||||
else if (info == XLOG_DBASE_DROP_OLD)
|
|
||||||
{
|
|
||||||
xl_dbase_drop_rec_old *xlrec = (xl_dbase_drop_rec_old *) XLogRecGetData(record);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Drop pages for this database that are in the shared buffer
|
|
||||||
* cache
|
|
||||||
*/
|
|
||||||
DropBuffers(xlrec->db_id);
|
|
||||||
|
|
||||||
if (!rmtree(xlrec->dir_path, true))
|
|
||||||
ereport(WARNING,
|
|
||||||
(errmsg("could not remove database directory \"%s\"",
|
|
||||||
xlrec->dir_path)));
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
elog(PANIC, "dbase_redo: unknown op code %u", info);
|
elog(PANIC, "dbase_redo: unknown op code %u", info);
|
||||||
}
|
}
|
||||||
@ -1402,21 +1329,6 @@ dbase_desc(char *buf, uint8 xl_info, char *rec)
|
|||||||
sprintf(buf + strlen(buf), "drop db: dir %u/%u",
|
sprintf(buf + strlen(buf), "drop db: dir %u/%u",
|
||||||
xlrec->db_id, xlrec->tablespace_id);
|
xlrec->db_id, xlrec->tablespace_id);
|
||||||
}
|
}
|
||||||
else if (info == XLOG_DBASE_CREATE_OLD)
|
|
||||||
{
|
|
||||||
xl_dbase_create_rec_old *xlrec = (xl_dbase_create_rec_old *) rec;
|
|
||||||
char *dst_path = xlrec->src_path + strlen(xlrec->src_path) + 1;
|
|
||||||
|
|
||||||
sprintf(buf + strlen(buf), "create db: %u copy \"%s\" to \"%s\"",
|
|
||||||
xlrec->db_id, xlrec->src_path, dst_path);
|
|
||||||
}
|
|
||||||
else if (info == XLOG_DBASE_DROP_OLD)
|
|
||||||
{
|
|
||||||
xl_dbase_drop_rec_old *xlrec = (xl_dbase_drop_rec_old *) rec;
|
|
||||||
|
|
||||||
sprintf(buf + strlen(buf), "drop db: %u directory: \"%s\"",
|
|
||||||
xlrec->db_id, xlrec->dir_path);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
strcat(buf, "UNKNOWN");
|
strcat(buf, "UNKNOWN");
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.285 2005/07/07 20:39:59 tgl Exp $
|
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.286 2005/07/08 04:12:26 neilc Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -53,6 +53,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* yyyymmddN */
|
/* yyyymmddN */
|
||||||
#define CATALOG_VERSION_NO 200507071
|
#define CATALOG_VERSION_NO 200507081
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/commands/dbcommands.h,v 1.39 2005/06/28 05:09:12 tgl Exp $
|
* $PostgreSQL: pgsql/src/include/commands/dbcommands.h,v 1.40 2005/07/08 04:12:27 neilc Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -18,17 +18,8 @@
|
|||||||
#include "nodes/parsenodes.h"
|
#include "nodes/parsenodes.h"
|
||||||
|
|
||||||
/* XLOG stuff */
|
/* XLOG stuff */
|
||||||
#define XLOG_DBASE_CREATE_OLD 0x00
|
#define XLOG_DBASE_CREATE 0x00
|
||||||
#define XLOG_DBASE_DROP_OLD 0x10
|
#define XLOG_DBASE_DROP 0x10
|
||||||
#define XLOG_DBASE_CREATE 0x20
|
|
||||||
#define XLOG_DBASE_DROP 0x30
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note: "old" versions are deprecated and need not be supported beyond 8.0.
|
|
||||||
* Not only are they relatively bulky, but they do the Wrong Thing when a
|
|
||||||
* WAL log is replayed in a data area that's at a different absolute path
|
|
||||||
* than the original.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct xl_dbase_create_rec_old
|
typedef struct xl_dbase_create_rec_old
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user