<para>
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</command> variants (for full details see
<xref linkend="SQL-ALTERTABLE">).
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);
if (rel->rd_rel->relkind != RELKIND_RELATION &&