aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/cluster.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2001-01-01 21:35:00 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2001-01-01 21:35:00 +0000
commitad0169b1b7a16424465ee41d0515d5832a80a382 (patch)
treeeebbb11000242f3b6d6919e366b9223506e0e61b /src/backend/commands/cluster.c
parent9315ff55492b1574db291556cd5d1513c703243e (diff)
downloadpostgresql-ad0169b1b7a16424465ee41d0515d5832a80a382.tar.gz
postgresql-ad0169b1b7a16424465ee41d0515d5832a80a382.zip
CLUSTER forgot to create a TOAST table for the clustered relation.
Diffstat (limited to 'src/backend/commands/cluster.c')
-rw-r--r--src/backend/commands/cluster.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 5c263e4c26c..57ffd12134f 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.60 2000/11/16 22:30:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.61 2001/01/01 21:35:00 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -29,6 +29,7 @@
#include "catalog/pg_index.h"
#include "catalog/pg_proc.h"
#include "commands/cluster.h"
+#include "commands/command.h"
#include "commands/rename.h"
#include "miscadmin.h"
#include "utils/builtins.h"
@@ -106,8 +107,7 @@ cluster(char *oldrelname, char *oldindexname)
OIDNewHeap = copy_heap(OIDOldHeap, NewHeapName);
- /* To make the new heap visible (which is until now empty). */
- CommandCounterIncrement();
+ /* We do not need CommandCounterIncrement() because copy_heap did it. */
/*
* Copy the heap data into the new table in the desired order.
@@ -150,7 +150,7 @@ copy_heap(Oid OIDOldHeap, char *NewName)
/*
* Need to make a copy of the tuple descriptor,
- * heap_create_with_catalog modifies it.
+ * since heap_create_with_catalog modifies it.
*/
tupdesc = CreateTupleDescCopy(OldHeapDesc);
@@ -158,8 +158,19 @@ copy_heap(Oid OIDOldHeap, char *NewName)
RELKIND_RELATION, false,
allowSystemTableMods);
- if (!OidIsValid(OIDNewHeap))
- elog(ERROR, "copy_heap: cannot create temporary heap relation");
+ /*
+ * Advance command counter so that the newly-created
+ * relation's catalog tuples will be visible to heap_open.
+ */
+ CommandCounterIncrement();
+
+ /*
+ * If necessary, create a TOAST table for the new relation.
+ * Note that AlterTableCreateToastTable ends with
+ * CommandCounterIncrement(), so that the TOAST table will
+ * be visible for insertion.
+ */
+ AlterTableCreateToastTable(NewName, true);
heap_close(OldHeap, NoLock);