aboutsummaryrefslogtreecommitdiff
path: root/src/include/commands/dbcommands.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-08-29 21:08:48 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-08-29 21:08:48 +0000
commit50742aed68b7a3a8d1a0c8ef8d970c97fc74dd9b (patch)
treec60891419eb5cb4e2c73296f973d91bba13f9e03 /src/include/commands/dbcommands.h
parentee66401f3176e32c884ce98c09c8383cfa453dbc (diff)
downloadpostgresql-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.h28
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 */