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/tablespace.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/tablespace.h')
-rw-r--r-- | src/include/commands/tablespace.h | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/include/commands/tablespace.h b/src/include/commands/tablespace.h index 42093c51505..8aba919ab3a 100644 --- a/src/include/commands/tablespace.h +++ b/src/include/commands/tablespace.h @@ -1,32 +1,49 @@ /*------------------------------------------------------------------------- * * tablespace.h - * prototypes for tablespace.c. + * Tablespace management commands (create/drop tablespace). * * * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/commands/tablespace.h,v 1.3 2004/07/11 19:52:52 tgl Exp $ + * $PostgreSQL: pgsql/src/include/commands/tablespace.h,v 1.4 2004/08/29 21:08:47 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef TABLESPACE_H #define TABLESPACE_H +#include "access/xlog.h" #include "nodes/parsenodes.h" -extern void CreateTableSpace(CreateTableSpaceStmt *stmt); +/* XLOG stuff */ +#define XLOG_TBLSPC_CREATE 0x00 +#define XLOG_TBLSPC_DROP 0x10 + +typedef struct xl_tblspc_create_rec +{ + Oid ts_id; + char ts_path[1]; /* VARIABLE LENGTH STRING */ +} xl_tblspc_create_rec; + +typedef struct xl_tblspc_drop_rec +{ + Oid ts_id; +} xl_tblspc_drop_rec; +extern void CreateTableSpace(CreateTableSpaceStmt *stmt); extern void DropTableSpace(DropTableSpaceStmt *stmt); +extern void RenameTableSpace(const char *oldname, const char *newname); +extern void AlterTableSpaceOwner(const char *name, AclId newOwnerSysId); extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo); extern Oid get_tablespace_oid(const char *tablespacename); - extern char *get_tablespace_name(Oid spc_oid); -extern void RenameTableSpace(const char *oldname, const char *newname); -extern void AlterTableSpaceOwner(const char *name, AclId newOwnerSysId); +extern void tblspc_redo(XLogRecPtr lsn, XLogRecord *rptr); +extern void tblspc_undo(XLogRecPtr lsn, XLogRecord *rptr); +extern void tblspc_desc(char *buf, uint8 xl_info, char *rec); #endif /* TABLESPACE_H */ |