From c2b75c83f341cf06f6594235b40281ec3956538e Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 17 May 1999 18:24:48 +0000
Subject: [PATCH] All works on linux now by my tests and regression(with patch
 below).

ALTER TABLE RENAME with extents.
Ole Gjerde
---
 src/backend/commands/rename.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/backend/commands/rename.c b/src/backend/commands/rename.c
index 2b77b250a12..457facdd8fc 100644
--- a/src/backend/commands/rename.c
+++ b/src/backend/commands/rename.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.23 1999/05/10 00:44:59 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.24 1999/05/17 18:24:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -201,10 +201,13 @@ renameatt(char *relname,
 void
 renamerel(char *oldrelname, char *newrelname)
 {
+	int		i;
 	Relation	relrelation;	/* for RELATION relation */
 	HeapTuple	oldreltup;
 	char		oldpath[MAXPGPATH],
-				newpath[MAXPGPATH];
+				newpath[MAXPGPATH],
+				toldpath[MAXPGPATH + 10],
+				tnewpath[MAXPGPATH + 10];
 	Relation	irelations[Num_pg_class_indices];
 
 	if (!allowSystemTableMods && IsSystemRelationName(oldrelname))
@@ -230,6 +233,14 @@ renamerel(char *oldrelname, char *newrelname)
 	if (rename(oldpath, newpath) < 0)
 		elog(ERROR, "renamerel: unable to rename file: %s", oldpath);
 
+	for (i = 1;; i++)
+	{
+		sprintf(toldpath, "%s.%d", oldpath, i);
+		sprintf(tnewpath, "%s.%d", newpath, i);
+		if(rename(toldpath, tnewpath) < 0)
+			break;
+	}
+
 	StrNCpy((((Form_pg_class) GETSTRUCT(oldreltup))->relname.data),
 			newrelname, NAMEDATALEN);
 
-- 
GitLab