From 6da00552749fedf69e68226e1c6b5a171dd7b024 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Wed, 1 Jan 1997 06:01:16 +0000
Subject: [PATCH] Fix for SELECT INTO ... GROUP/ORDER BY where table already
 exists unlink error.

---
 src/backend/access/heap/heapam.c | 10 +++++++++-
 src/backend/catalog/heap.c       |  5 +++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index a98cb2e1770..c6489a3a123 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.8 1996/11/05 09:53:01 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.9 1997/01/01 06:01:03 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -495,6 +495,10 @@ heap_open(Oid relationId)
     IncrHeapAccessStat(global_open);
     
     r = (Relation) RelationIdGetRelation(relationId);
+
+    if(RelationIsValid(r) && r->rd_istemp) {
+        r->rd_tmpunlinked = FALSE; /* now we can unlink it */
+    }
     
     if (RelationIsValid(r) && r->rd_rel->relkind == RELKIND_INDEX) {
 	elog(WARN, "%s is an index relation", r->rd_rel->relname.data);
@@ -524,6 +528,10 @@ heap_openr(char *relationName)
     
     r = RelationNameGetRelation(relationName);
     
+    if(RelationIsValid(r) && r->rd_istemp) {
+        r->rd_tmpunlinked = FALSE; /* now we can unlink it */
+    }
+
     if (RelationIsValid(r) && r->rd_rel->relkind == RELKIND_INDEX) {
 	elog(WARN, "%s is an index relation", r->rd_rel->relname.data);
     }
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 65c48c33365..50609272b6d 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.9 1996/12/31 06:58:27 vadim Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.10 1997/01/01 06:01:16 momjian Exp $
  *
  * INTERFACE ROUTINES
  *	heap_creatr()		- Create an uncataloged heap relation
@@ -303,7 +303,8 @@ heap_creatr(char *name,
      */
 
     rdesc->rd_istemp = isTemp;
-
+    rdesc->rd_tmpunlinked = TRUE;	/* change once table is opened */
+    
     /* ----------------
      *	have the storage manager create the relation.
      * ----------------
-- 
GitLab