Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix temporary tablespaces for shared filesets
authorMagnus Hagander <magnus@hagander.net>
Fri, 3 Jul 2020 13:09:06 +0000 (15:09 +0200)
committerMagnus Hagander <magnus@hagander.net>
Fri, 3 Jul 2020 13:10:41 +0000 (15:10 +0200)
A likely copy/paste error in 98e8b480532 from  back in 2004 would
cause temp tablespace to be reset to InvalidOid if temp_tablespaces
was set to the same value as the primary tablespace in the database.
This would cause shared filesets (such as for parallel hash joins)
to ignore them, putting the temporary files in the default tablespace
instead of the configured one. The bug is in the old code, but it
appears to have been exposed only once we had shared filesets.

Reviewed-By: Daniel Gustafsson
Discussion: https://postgr.es/m/CABUevExg5YEsOvqMxrjoNvb3ApVyH+9jggWGKwTDFyFCVWczGQ@mail.gmail.com
Backpatch-through: 9.5

src/backend/commands/tablespace.c

index 946777f48b29b6d71210ae2bafba23cd7bb81756..3105efe0403a05b90338030dc9a3db06e8f726c4 100644 (file)
@@ -1354,7 +1354,7 @@ PrepareTempTablespaces(void)
         */
        if (curoid == MyDatabaseTableSpace)
        {
-           tblSpcs[numSpcs++] = InvalidOid;
+           tblSpcs[numSpcs++] = curoid;
            continue;
        }