Revert temp_tablespaces because of coding problems, per Tom.
authorBruce Momjian <bruce@momjian.us>
Tue, 6 Mar 2007 02:06:15 +0000 (02:06 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 6 Mar 2007 02:06:15 +0000 (02:06 +0000)
doc/src/sgml/config.sgml
src/backend/commands/indexcmds.c
src/backend/commands/tablecmds.c
src/backend/commands/tablespace.c
src/backend/executor/execMain.c
src/backend/storage/file/fd.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/include/commands/tablespace.h
src/include/utils/guc.h

index 2059fed863a4fc119fd8e8f5b1389f0e72546779..17504b3d5e8a00aa358303284b92dd89ad6da16d 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.114 2007/03/03 18:46:40 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.115 2007/03/06 02:06:12 momjian Exp $ -->
 
 <chapter Id="runtime-config">
   <title>Server Configuration</title>
@@ -3440,35 +3440,6 @@ SELECT * FROM parent WHERE key = 2400;
       </listitem>
      </varlistentry>
 
-     <varlistentry id="guc-temp-tablespaces" xreflabel="temp_tablespaces">
-      <term><varname>temp_tablespaces</varname> (<type>string</type>)</term>
-      <indexterm>
-       <primary><varname>temp_tablespaces</> configuration parameter</primary>
-      </indexterm>
-      <indexterm><primary>tablespace</><secondary>temp</></>
-      <listitem>
-       <para>
-        This variable specifies tablespaces in which to create temp
-        objects (temp tables and indexes on temp tables) when a 
-        <command>CREATE</> command does not explicitly specify a tablespace 
-        and temp files when necessary (eg. for sorting operations).
-       </para>
-
-       <para>
-        The value is either a list of names of tablespaces, or an empty 
-        string to specify using the default tablespace of the current database.
-        If the value does not match the name of any existing tablespace,
-        <productname>PostgreSQL</> will automatically use the default
-        tablespace of the current database.
-       </para>
-
-       <para>
-        For more information on tablespaces,
-        see <xref linkend="manage-ag-tablespaces">.
-       </para>
-      </listitem>
-     </varlistentry>
-
      <varlistentry id="guc-check-function-bodies" xreflabel="check_function_bodies">
       <term><varname>check_function_bodies</varname> (<type>boolean</type>)</term>
       <indexterm>
index b01093106c02c49a949dc3dabd98c962470fe4a8..8c5fdbb6c94662e9179475affd5ad320f30cbcc2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.155 2007/02/01 19:10:26 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.156 2007/03/06 02:06:12 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -209,13 +209,7 @@ DefineIndex(RangeVar *heapRelation,
    }
    else
    {
-       /*
-        * if the target table is temporary then use a temp_tablespace
-        */
-       if (!rel->rd_istemp)
-           tablespaceId = GetDefaultTablespace();
-       else
-           tablespaceId = GetTempTablespace();
+       tablespaceId = GetDefaultTablespace();
        /* note InvalidOid is OK in this case */
    }
 
index a4d13f380133412339ac25d52e2c3548195f089b..ebc974f8731018b44b9656bc52721ede707b99d5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.215 2007/02/16 22:04:02 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.216 2007/03/06 02:06:13 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -330,10 +330,6 @@ DefineRelation(CreateStmt *stmt, char relkind)
                     errmsg("tablespace \"%s\" does not exist",
                            stmt->tablespacename)));
    }
-   else if (stmt->relation->istemp)
-   {
-       tablespaceId = GetTempTablespace();
-   }
    else
    {
        tablespaceId = GetDefaultTablespace();
index 80c5a927a3015c1bfb4f99817309deff3b78418d..aa2b33c932641aeabc4ed76ace59900bac6fab38 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.42 2007/02/01 19:10:26 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.43 2007/03/06 02:06:13 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "utils/lsyscache.h"
 
 
-/* GUC variables */
+/* GUC variable */
 char      *default_tablespace = NULL;
-char       *temp_tablespaces = NULL;
 
-int       next_temp_tablespace;
-int       num_temp_tablespaces;
 
 static bool remove_tablespace_directories(Oid tablespaceoid, bool redo);
 static void set_short_version(const char *path);
@@ -933,142 +930,6 @@ GetDefaultTablespace(void)
    return result;
 }
 
-/*
- * Routines for handling the GUC variable 'temp_tablespaces'.
- */
-
-/* assign_hook: validate new temp_tablespaces, do extra actions as needed */
-const char *
-assign_temp_tablespaces(const char *newval, bool doit, GucSource source)
-{
-   char       *rawname;
-   List       *namelist;
-   ListCell   *l;
-
-   /* Need a modifiable copy of string */
-   rawname = pstrdup(newval);
-
-   /* Parse string into list of identifiers */
-   if (!SplitIdentifierString(rawname, ',', &namelist))
-   {
-       /* syntax error in name list */
-       pfree(rawname);
-       list_free(namelist);
-       return NULL;
-   }
-
-   num_temp_tablespaces = 0;
-   foreach(l, namelist)
-   {
-       char       *curname = (char *) lfirst(l);
-
-       /*
-        * If we aren't inside a transaction, we cannot do database access so
-        * cannot verify the individual names.  Must accept the list on faith.
-        */
-       if (source >= PGC_S_INTERACTIVE && IsTransactionState())
-       {
-           /*
-            * Verify that all the names are valid tablspace names 
-            * We do not check for USAGE rights should we?
-            */
-           if (get_tablespace_oid(curname) == InvalidOid)
-               ereport((source == PGC_S_TEST) ? NOTICE : ERROR,
-                       (errcode(ERRCODE_UNDEFINED_OBJECT),
-                       errmsg("tablespace \"%s\" does not exist", curname)));
-       }
-       num_temp_tablespaces++;
-   }
-
-   /*
-    * Select the first tablespace to use
-    */
-   next_temp_tablespace = MyProcPid % num_temp_tablespaces;
-
-   pfree(rawname);
-   list_free(namelist);
-   return newval;
-}
-
-/*
- * GetTempTablespace -- get the OID of the tablespace for temporary objects
- *
- * May return InvalidOid to indicate "use the database's default tablespace"
- *
- * This exists to hide the temp_tablespace GUC variable.
- */
-Oid
-GetTempTablespace(void)
-{
-   Oid         result;
-   char *curname = NULL;
-   char *rawname;
-   List *namelist;
-   ListCell *l;
-   int i = 0;
-   
-   if ( temp_tablespaces == NULL )
-       return InvalidOid;
-
-   /* Need a modifiable version of temp_tablespaces */
-   rawname = pstrdup(temp_tablespaces);
-
-   /* Parse string into list of identifiers */
-   if (!SplitIdentifierString(rawname, ',', &namelist))
-   {
-       /* syntax error in name list */
-       pfree(rawname);
-       list_free(namelist);
-       return InvalidOid;
-   }
-
-   /* 
-    * Iterate through the list of namespaces until the one we need 
-    * (next_temp_tablespace) 
-    */
-   foreach(l, namelist)
-   {
-       curname = (char *) lfirst(l);
-       if ( i == next_temp_tablespace )
-           break;
-       i++;
-   }
-
-
-   /* Prepare for the next time the function is called */
-   next_temp_tablespace++;
-   if (next_temp_tablespace == num_temp_tablespaces)
-       next_temp_tablespace = 0;
-
-   /* Fast path for temp_tablespaces == "" */
-   if ( curname == NULL || curname[0] == '\0') {
-       list_free(namelist);
-       pfree(rawname);
-       return InvalidOid;
-   }
-
-   /*
-    * It is tempting to cache this lookup for more speed, but then we would
-    * fail to detect the case where the tablespace was dropped since the GUC
-    * variable was set.  Note also that we don't complain if the value fails
-    * to refer to an existing tablespace; we just silently return InvalidOid,
-    * causing the new object to be created in the database's tablespace.
-    */
-   result = get_tablespace_oid(curname);
-
-   /* We don't free rawname before because curname points to a part of it */
-   pfree(rawname);
-
-   /*
-    * Allow explicit specification of database's default tablespace in
-    * default_tablespace without triggering permissions checks.
-    */
-   if (result == MyDatabaseTableSpace)
-       result = InvalidOid;
-   
-   list_free(namelist);
-   return result;
-}
 
 /*
  * get_tablespace_oid - given a tablespace name, look up the OID
index 333edf6944146bcae0539d172efe86440cdfbfd8..239656dd06b945f477f8c1c471f8555da7be1dc9 100644 (file)
@@ -26,7 +26,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.289 2007/02/27 01:11:25 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.290 2007/03/06 02:06:13 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2440,10 +2440,6 @@ OpenIntoRel(QueryDesc *queryDesc)
                     errmsg("tablespace \"%s\" does not exist",
                            into->tableSpaceName)));
    }
-   else if (into->rel->istemp)
-   {
-       tablespaceId = GetTempTablespace();
-   }
    else
    {
        tablespaceId = GetDefaultTablespace();
index 7af361adf0c9cb11032d7408bdc496511badfc59..1d04caad4f270ed7b241a4d889eae92b691440eb 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.136 2007/02/28 15:59:30 mha Exp $
+ *   $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.137 2007/03/06 02:06:14 momjian Exp $
  *
  * NOTES:
  *
@@ -46,8 +46,6 @@
 #include <unistd.h>
 #include <fcntl.h>
 
-#include "commands/tablespace.h"
-
 #include "miscadmin.h"
 #include "access/xact.h"
 #include "storage/fd.h"
@@ -78,7 +76,6 @@
  */
 #define FD_MINFREE             10
 
-#define OIDCHARS        10                      /* max chars printed by %u */
 
 /*
  * A number of platforms allow individual processes to open many more files
@@ -883,51 +880,13 @@ OpenTemporaryFile(bool interXact)
 {
    char        tempfilepath[MAXPGPATH];
    File        file;
-   Oid     oid;
-   char        *path;
-   int     pathlen;
 
    /*
-    * Take a look what should be the path of the temporary file
+    * Generate a tempfile name that should be unique within the current
+    * database instance.
     */
-   oid = GetTempTablespace();
-   if (oid != InvalidOid)
-   {
-       /*
-        * As we got a valid tablespace, try to create the
-        * file there
-        */
-
-       pathlen = strlen("pg_tblspc/") + OIDCHARS + 1;
-       path = (char *) palloc(pathlen);
-       snprintf(path, pathlen, "pg_tblspc/%u", oid );
-
-       /*
-        * Generate a tempfile name that should be unique within the current
-        * database instance.
-        */
-       snprintf(tempfilepath, sizeof(tempfilepath),
-                "%s/%s%d.%ld", path, PG_TEMP_FILE_PREFIX,
-                MyProcPid, tempFileCounter++);
-       pfree(path);
-       file = PathNameOpenFile(tempfilepath,
-                           O_RDWR | O_CREAT | O_TRUNC | PG_BINARY,
-                           0600);
-   }
-
-   /*
-    * Create a normal temporary file if no tablespace returned or
-    * couldn't create the file in the tablespace "oid"
-    */
-   if (oid == InvalidOid || file <= 0) 
-   {
-       path = PG_TEMP_FILES_DIR;
-       /*
-        * Generate a tempfile name that should be unique within the current
-        * database instance.
-        */
-       snprintf(tempfilepath, sizeof(tempfilepath),
-                "%s/%s%d.%ld", path, PG_TEMP_FILE_PREFIX,
+   snprintf(tempfilepath, sizeof(tempfilepath),
+            "%s/%s%d.%ld", PG_TEMP_FILES_DIR, PG_TEMP_FILE_PREFIX,
             MyProcPid, tempFileCounter++);
 
    /*
@@ -959,8 +918,7 @@ OpenTemporaryFile(bool interXact)
        if (file <= 0)
            elog(ERROR, "could not create temporary file \"%s\": %m",
                 tempfilepath);
-       }
-   }
+   }
 
    /* Mark it for deletion at close */
    VfdCache[file].fdstate |= FD_TEMPORARY;
index 173e9903c50e800a5719cc234c5e2d80df1da7e8..0fa3489fb62ed6cf811840f8256ba5be2d217d4e 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.378 2007/03/03 18:46:40 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.379 2007/03/06 02:06:14 momjian Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -99,7 +99,6 @@ extern bool Log_disconnections;
 extern int CommitDelay;
 extern int CommitSiblings;
 extern char *default_tablespace;
-extern char *temp_tablespaces;
 extern bool fullPageWrites;
 
 #ifdef TRACE_SORT
@@ -2317,16 +2316,6 @@ static struct config_string ConfigureNamesString[] =
        "content", assign_xmloption, NULL
    },
 
-   {
-       {"temp_tablespaces", PGC_USERSET, PGC_S_FILE,
-           gettext_noop("Sets the tablespaces suitable for creating new objects and sort files."),
-           NULL,
-           GUC_LIST_INPUT | GUC_LIST_QUOTE 
-       },
-       &temp_tablespaces,
-       NULL, assign_temp_tablespaces, NULL
-   },
-
 #ifdef USE_SSL
    {
        {"ssl_ciphers", PGC_POSTMASTER, CONN_AUTH_SECURITY,
index 7ee8d417c00944b687e96280151e8e303719a05d..cf2dfdc099e07211e7bc1e48be80c9ce924ce5e2 100644 (file)
 #search_path = '"$user",public'        # schema names
 #default_tablespace = ''       # a tablespace name, '' uses
                    # the default
-#temp_tablespaces = ''         # a list of tablespace names,
-                   # '' uses default_tablespace
 #check_function_bodies = on
 #default_transaction_isolation = 'read committed'
 #default_transaction_read_only = off
index 6d3a333cf29cb4c9932416e05b5ba5795335e5b8..47e4beb255ccc8324cb9c4956540a6393314f163 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/commands/tablespace.h,v 1.15 2007/01/25 04:35:11 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/commands/tablespace.h,v 1.16 2007/03/06 02:06:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -41,7 +41,6 @@ extern void AlterTableSpaceOwner(const char *name, Oid newOwnerId);
 extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo);
 
 extern Oid GetDefaultTablespace(void);
-extern Oid GetTempTablespace(void);
 
 extern Oid get_tablespace_oid(const char *tablespacename);
 extern char *get_tablespace_name(Oid spc_oid);
index 51cc05a7a733a3b9e609a4f4de2ee36fb10aa714..3efb8618938017b9a9a83f77170766c4ad6abb4e 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (c) 2000-2007, PostgreSQL Global Development Group
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
- * $PostgreSQL: pgsql/src/include/utils/guc.h,v 1.79 2007/01/25 04:35:11 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/guc.h,v 1.80 2007/03/06 02:06:15 momjian Exp $
  *--------------------------------------------------------------------
  */
 #ifndef GUC_H
@@ -238,8 +238,4 @@ extern const char *assign_search_path(const char *newval,
 extern const char *assign_xlog_sync_method(const char *method,
                        bool doit, GucSource source);
 
-/* in commands/tablespace.c */
-extern const char *assign_temp_tablespaces(const char *newval,
-                         bool doit, GucSource source);
-
 #endif   /* GUC_H */