mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Add DROP INDEX CONCURRENTLY [IF EXISTS], uses ShareUpdateExclusiveLock
This commit is contained in:
@@ -21,7 +21,7 @@ PostgreSQL documentation
|
||||
|
||||
<refsynopsisdiv>
|
||||
<synopsis>
|
||||
DROP INDEX [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
|
||||
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
|
||||
</synopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
@@ -49,6 +49,29 @@ DROP INDEX [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> [, ..
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>CONCURRENTLY</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
When this option is used, <productname>PostgreSQL</> will drop the
|
||||
index without taking any locks that prevent concurrent selects, inserts,
|
||||
updates, or deletes on the table; whereas a standard index drop
|
||||
waits for a lock that locks out everything on the table until it's done.
|
||||
Concurrent drop index is a two stage process. First, we mark the index
|
||||
both invalid and not ready then commit the change. Next we wait until
|
||||
there are no users locking the table who can see the index.
|
||||
</para>
|
||||
<para>
|
||||
There are several caveats to be aware of when using this option.
|
||||
Only one index name can be specified if the <literal>CONCURRENTLY</literal>
|
||||
parameter is specified. Regular <command>DROP INDEX</> command can be
|
||||
performed within a transaction block, but
|
||||
<command>DROP INDEX CONCURRENTLY</> cannot.
|
||||
The CASCADE option is not supported when dropping an index concurrently.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="PARAMETER">name</replaceable></term>
|
||||
<listitem>
|
||||
|
Reference in New Issue
Block a user