diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-08-29 21:08:48 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-08-29 21:08:48 +0000 |
commit | 50742aed68b7a3a8d1a0c8ef8d970c97fc74dd9b (patch) | |
tree | c60891419eb5cb4e2c73296f973d91bba13f9e03 /src/include/commands/dbcommands.h | |
parent | ee66401f3176e32c884ce98c09c8383cfa453dbc (diff) | |
download | postgresql-50742aed68b7a3a8d1a0c8ef8d970c97fc74dd9b.tar.gz postgresql-50742aed68b7a3a8d1a0c8ef8d970c97fc74dd9b.zip |
Add WAL logging for CREATE/DROP DATABASE and CREATE/DROP TABLESPACE.
Fix TablespaceCreateDbspace() to be able to create a dummy directory
in place of a dropped tablespace's symlink. This eliminates the open
problem of a PANIC during WAL replay when a replayed action attempts
to touch a file in a since-deleted tablespace. It also makes for a
significant improvement in the usability of PITR replay.
Diffstat (limited to 'src/include/commands/dbcommands.h')
-rw-r--r-- | src/include/commands/dbcommands.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/include/commands/dbcommands.h b/src/include/commands/dbcommands.h index f036a38247d..d684511a297 100644 --- a/src/include/commands/dbcommands.h +++ b/src/include/commands/dbcommands.h @@ -1,21 +1,41 @@ /*------------------------------------------------------------------------- * * dbcommands.h - * + * Database management commands (create/drop database). * * * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/commands/dbcommands.h,v 1.33 2004/08/29 04:13:05 momjian Exp $ + * $PostgreSQL: pgsql/src/include/commands/dbcommands.h,v 1.34 2004/08/29 21:08:47 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef DBCOMMANDS_H #define DBCOMMANDS_H +#include "access/xlog.h" #include "nodes/parsenodes.h" +/* XLOG stuff */ +#define XLOG_DBASE_CREATE 0x00 +#define XLOG_DBASE_DROP 0x10 + +typedef struct xl_dbase_create_rec +{ + /* Records copying of a single subdirectory incl. contents */ + Oid db_id; + char src_path[1]; /* VARIABLE LENGTH STRING */ + /* dst_path follows src_path */ +} xl_dbase_create_rec; + +typedef struct xl_dbase_drop_rec +{ + /* Records dropping of a single subdirectory incl. contents */ + Oid db_id; + char dir_path[1]; /* VARIABLE LENGTH STRING */ +} xl_dbase_drop_rec; + extern void createdb(const CreatedbStmt *stmt); extern void dropdb(const char *dbname); extern void RenameDatabase(const char *oldname, const char *newname); @@ -25,4 +45,8 @@ extern void AlterDatabaseOwner(const char *dbname, AclId newOwnerSysId); extern Oid get_database_oid(const char *dbname); extern char *get_database_name(Oid dbid); +extern void dbase_redo(XLogRecPtr lsn, XLogRecord *rptr); +extern void dbase_undo(XLogRecPtr lsn, XLogRecord *rptr); +extern void dbase_desc(char *buf, uint8 xl_info, char *rec); + #endif /* DBCOMMANDS_H */ |