mirror of
https://github.com/postgres/postgres.git
synced 2026-04-10 03:26:23 -04:00
Fix the database-wide version of CLUSTER to silently skip temp tables of
remote sessions, instead of erroring out in the middle of the operation. This is a backpatch of a previous fix applied to CLUSTER to HEAD and 8.2, all the way back that it is relevant to.
This commit is contained in:
parent
d48f8ab8e1
commit
bf476b94b1
1 changed files with 13 additions and 1 deletions
|
|
@ -11,7 +11,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.131.4.1 2005/02/06 20:19:24 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.131.4.2 2007/09/12 15:16:23 alvherre Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
|
@ -291,6 +291,18 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
|
|||
*/
|
||||
OldHeap = heap_open(rvtc->tableOid, AccessExclusiveLock);
|
||||
|
||||
/*
|
||||
* Don't allow cluster on temp tables of other backends ... their
|
||||
* local buffer manager is not going to cope. In the recheck case,
|
||||
* silently skip it. Otherwise continue -- there is a hard error
|
||||
* in check_index_is_clusterable.
|
||||
*/
|
||||
if (recheck && isOtherTempNamespace(RelationGetNamespace(OldHeap)))
|
||||
{
|
||||
heap_close(OldHeap, AccessExclusiveLock);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check index is valid to cluster on */
|
||||
check_index_is_clusterable(OldHeap, rvtc->indexOid);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue