aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/cluster.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/cluster.c')
-rw-r--r--src/backend/commands/cluster.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 0361ede0092..4858504f58d 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.103 2002/12/30 18:42:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.104 2002/12/30 19:45:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,7 +26,6 @@
#include "catalog/index.h"
#include "catalog/indexing.h"
#include "catalog/namespace.h"
-#include "catalog/pg_constraint.h"
#include "commands/cluster.h"
#include "commands/tablecmds.h"
#include "miscadmin.h"
@@ -111,9 +110,9 @@ cluster(ClusterStmt *stmt)
RelToCluster rvtc;
/* Find and lock the table */
- tableOid = RangeVarGetRelid(stmt->relation, false);
+ rel = heap_openrv(stmt->relation, AccessExclusiveLock);
- rel = heap_open(tableOid, AccessExclusiveLock);
+ tableOid = RelationGetRelid(rel);
/* Check permissions */
if (!check_cluster_permitted(tableOid))
@@ -325,6 +324,13 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
elog(ERROR, "CLUSTER: cannot cluster system relation \"%s\"",
RelationGetRelationName(OldHeap));
+ /*
+ * Don't allow cluster on temp tables of other backends ... their
+ * local buffer manager is not going to cope.
+ */
+ if (isOtherTempNamespace(RelationGetNamespace(OldHeap)))
+ elog(ERROR, "CLUSTER cannot be used on temp tables of other processes");
+
/* Drop relcache refcnt on OldIndex, but keep lock */
index_close(OldIndex);