]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Reindex of shared system indexes must be overwrite mode.
authorHiroshi Inoue <inoue@tpf.co.jp>
Fri, 23 Feb 2001 09:26:14 +0000 (09:26 +0000)
committerHiroshi Inoue <inoue@tpf.co.jp>
Fri, 23 Feb 2001 09:26:14 +0000 (09:26 +0000)
src/backend/catalog/index.c
src/backend/commands/indexcmds.c

index 1c2d6324cfc24431bdb09ae5d7065208813600ba..4d35ddeee8faed81c31b49bea5633ce555d34ab1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.140 2001/01/29 00:39:16 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.141 2001/02/23 09:26:14 inoue Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -2087,7 +2087,12 @@ reindex_index(Oid indexId, bool force, bool inplace)
 
 #ifndef OLD_FILE_NAMING
        if (!inplace)
-               setNewRelfilenode(iRel);
+        {
+                inplace = IsSharedSystemRelationName(NameStr(iRel->rd_rel->relna
+me));
+               if (!inplace)
+                       setNewRelfilenode(iRel);
+       }
 #endif /* OLD_FILE_NAMING */
        /* Obtain exclusive lock on it, just to be sure */
        LockRelation(iRel, AccessExclusiveLock);
@@ -2196,6 +2201,20 @@ reindex_relation(Oid relid, bool force)
                        elog(ERROR, "the target relation %u is nailed", relid);
        }
 #endif /* ENABLE_REINDEX_NAILED_RELATIONS */
+       /*
+        * Shared system indexes must be overwritten because it's
+        * impossible to update pg_class tuples of all databases.
+        */
+       if (IsSharedSystemRelationName(NameStr(rel->rd_rel->relname)))
+       {
+               if (IsIgnoringSystemIndexes())
+               {
+                       overwrite = true;
+                       deactivate_needed = true;
+               }
+               else
+                       elog(ERROR, "the target relation %u is shared", relid);
+       }
        RelationClose(rel);
 #endif /* OLD_FILE_NAMING */
        old = SetReindexProcessing(true);
index 173c3a3d551db4b0c8b082b8d9a216f0f80a0cda..6497da615b8425f0360086607f8207bbca17d702 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.44 2001/01/24 19:42:52 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.45 2001/02/23 09:26:14 inoue Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -633,6 +633,7 @@ void
 ReindexIndex(const char *name, bool force /* currently unused */ )
 {
        HeapTuple       tuple;
+       bool            overwrite = false;
 
        /* ----------------
         *      REINDEX within a transaction block is dangerous, because
@@ -656,7 +657,9 @@ ReindexIndex(const char *name, bool force /* currently unused */ )
 #ifdef OLD_FILE_NAMING
        if (!reindex_index(tuple->t_data->t_oid, force, false))
 #else
-       if (!reindex_index(tuple->t_data->t_oid, force, false))
+       if (IsIgnoringSystemIndexes())
+               overwrite = true;
+       if (!reindex_index(tuple->t_data->t_oid, force, overwrite))
 #endif /* OLD_FILE_NAMING */
                elog(NOTICE, "index \"%s\" wasn't reindexed", name);