]> granicus.if.org Git - postgresql/commitdiff
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 */