aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/ref/alter_tablespace.sgml59
1 files changed, 55 insertions, 4 deletions
diff --git a/doc/src/sgml/ref/alter_tablespace.sgml b/doc/src/sgml/ref/alter_tablespace.sgml
index 7d3ee2ce813..0dfa4652fd7 100644
--- a/doc/src/sgml/ref/alter_tablespace.sgml
+++ b/doc/src/sgml/ref/alter_tablespace.sgml
@@ -12,7 +12,7 @@ PostgreSQL documentation
<refnamediv>
<refname>ALTER TABLESPACE</refname>
- <refpurpose>change the definition of a tablespace</refpurpose>
+ <refpurpose>change the definition of a tablespace or affect objects of a tablespace</refpurpose>
</refnamediv>
<indexterm zone="sql-altertablespace">
@@ -25,6 +25,7 @@ ALTER TABLESPACE <replaceable>name</replaceable> RENAME TO <replaceable>new_name
ALTER TABLESPACE <replaceable>name</replaceable> OWNER TO <replaceable>new_owner</replaceable>
ALTER TABLESPACE <replaceable>name</replaceable> SET ( <replaceable class="PARAMETER">tablespace_option</replaceable> = <replaceable class="PARAMETER">value</replaceable> [, ... ] )
ALTER TABLESPACE <replaceable>name</replaceable> RESET ( <replaceable class="PARAMETER">tablespace_option</replaceable> [, ... ] )
+ALTER TABLESPACE <replaceable>name</replaceable> MOVE { ALL | TABLES | INDEXES | MATERIALIZED VIEWS } TO <replaceable>new_tablespace</replaceable> [ NOWAIT ]
</synopsis>
</refsynopsisdiv>
@@ -32,15 +33,34 @@ ALTER TABLESPACE <replaceable>name</replaceable> RESET ( <replaceable class="PAR
<title>Description</title>
<para>
- <command>ALTER TABLESPACE</command> changes the definition of
- a tablespace.
+ <command>ALTER TABLESPACE</command> can be used to change the definition of
+ a tablespace or to migrate all of the objects in the current database which
+ are owned by the user out of a given tablespace.
</para>
<para>
- You must own the tablespace to use <command>ALTER TABLESPACE</>.
+ You must own the tablespace to change the definition of a tablespace.
To alter the owner, you must also be a direct or indirect member of the new
owning role.
(Note that superusers have these privileges automatically.)
+
+ Users may use ALTER TABLESPACE ... MOVE to move either ALL of their objects,
+ or just TABLES, INDEXES, or MATERIALIZED VIEWS, but they must have CREATE
+ rights on the new tablespace and only objects, directly or indirectly, owned
+ by the user will be moved. Note that the superuser is considered an owner
+ of all objects and therefore an ALTER TABLESPACE ... MOVE ALL issued by the
+ superuser will move all objects in the current database which are in the
+ tablespace.
+
+ All objects to be moved will be locked immediately by the command. The
+ NOWAIT option, if specified, will cause the command to fail if it is unable
+ to acquire the locks.
+
+ System catalogs will not be moved by this command- individuals wishing to
+ move a whole database should use ALTER DATABASE, or call ALTER TABLE on the
+ individual system catalogs. Note that relations in <literal>information_schema</literal>
+ will be moved, just as any other normal database objects, if the user is the
+ superuser or considered an owner of the relations in <literal>information_schema</literal>.
</para>
</refsect1>
@@ -94,6 +114,30 @@ ALTER TABLESPACE <replaceable>name</replaceable> RESET ( <replaceable class="PAR
</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><replaceable class="parameter">new_tablespace</replaceable></term>
+ <listitem>
+ <para>
+ The name of the tablespace to move objects into. The user must have
+ CREATE rights on the new tablespace to move objects into that
+ tablespace, unless the tablespace being moved into is the default
+ tablespace for the database connected to.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><replaceable class="parameter">NOWAIT</replaceable></term>
+ <listitem>
+ <para>
+ The NOWAIT option causes the ALTER TABLESPACE command to fail immediately
+ if it is unable to acquire the necessary lock on all of the objects being
+ move.
+ </para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
</refsect1>
@@ -112,6 +156,13 @@ ALTER TABLESPACE index_space RENAME TO fast_raid;
<programlisting>
ALTER TABLESPACE index_space OWNER TO mary;
</programlisting></para>
+
+ <para>
+ Move all of the objects which I own from the default tablespace to
+ the <literal>fast_raid</literal> tablespace:
+<programlisting>
+ALTER TABLESPACE pg_default MOVE ALL TO fast_raid;
+</programlisting></para>
</refsect1>
<refsect1>