Reduce lock level for CREATE STATISTICS
In line with other lock reductions related to planning. Simon Riggs
This commit is contained in:
parent
2686ee1b7c
commit
68ea2b7f9b
@ -923,7 +923,8 @@ ERROR: could not serialize access due to read/write dependencies among transact
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
Acquired by <command>VACUUM</command> (without <option>FULL</option>),
|
Acquired by <command>VACUUM</command> (without <option>FULL</option>),
|
||||||
<command>ANALYZE</>, <command>CREATE INDEX CONCURRENTLY</>, and
|
<command>ANALYZE</>, <command>CREATE INDEX CONCURRENTLY</>,
|
||||||
|
<command>CREATE STATISTICS</> and
|
||||||
<command>ALTER TABLE VALIDATE</command> and other
|
<command>ALTER TABLE VALIDATE</command> and other
|
||||||
<command>ALTER TABLE</command> variants (for full details see
|
<command>ALTER TABLE</command> variants (for full details see
|
||||||
<xref linkend="SQL-ALTERTABLE">).
|
<xref linkend="SQL-ALTERTABLE">).
|
||||||
|
@ -96,7 +96,13 @@ CreateStatistics(CreateStatsStmt *stmt)
|
|||||||
errmsg("statistics \"%s\" already exist", namestr)));
|
errmsg("statistics \"%s\" already exist", namestr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
rel = heap_openrv(stmt->relation, AccessExclusiveLock);
|
/*
|
||||||
|
* CREATE STATISTICS will influence future execution plans but does
|
||||||
|
* not interfere with currently executing plans so it is safe to
|
||||||
|
* take only ShareUpdateExclusiveLock on relation, conflicting with
|
||||||
|
* ANALYZE and other DDL that sets statistical information.
|
||||||
|
*/
|
||||||
|
rel = heap_openrv(stmt->relation, ShareUpdateExclusiveLock);
|
||||||
relid = RelationGetRelid(rel);
|
relid = RelationGetRelid(rel);
|
||||||
|
|
||||||
if (rel->rd_rel->relkind != RELKIND_RELATION &&
|
if (rel->rd_rel->relkind != RELKIND_RELATION &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user