assert-that-temp-tablespaces-are-prepared.patch
text/x-diff
Filename: assert-that-temp-tablespaces-are-prepared.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/access/gist/gistbuildbuffers.c | 3 | 0 |
| src/backend/storage/file/fd.c | 5 | 1 |
diff --git a/src/backend/access/gist/gistbuildbuffers.c b/src/backend/access/gist/gistbuildbuffers.c
index 4f2363e..1d008ec 100644
--- a/src/backend/access/gist/gistbuildbuffers.c
+++ b/src/backend/access/gist/gistbuildbuffers.c
@@ -17,6 +17,7 @@
#include "access/genam.h"
#include "access/gist_private.h"
#include "catalog/index.h"
+#include "commands/tablespace.h"
#include "miscadmin.h"
#include "storage/buffile.h"
#include "storage/bufmgr.h"
@@ -58,6 +59,8 @@ gistInitBuildBuffers(int pagesPerBuffer, int levelStep, int maxLevel)
* Create a temporary file to hold buffer pages that are swapped out of
* memory.
*/
+ PrepareTempTablespaces();
+
gfbb->pfile = BufFileCreateTemp(false);
gfbb->nFileBlocks = 0;
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index fdac985..a4463ba 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -1459,6 +1459,9 @@ PathNameDeleteTemporaryDir(const char *dirname)
* outlive the transaction that created them, so this should be false -- but
* if you need "somewhat" temporary storage, this might be useful. In either
* case, the file is removed when the File is explicitly closed.
+ *
+ * Unless interXact is true, some caller function should have done
+ * PrepareTempTablespaces().
*/
File
OpenTemporaryFile(bool interXact)
@@ -1481,7 +1484,7 @@ OpenTemporaryFile(bool interXact)
* force it into the database's default tablespace, so that it will not
* pose a threat to possible tablespace drop attempts.
*/
- if (numTempTableSpaces > 0 && !interXact)
+ if (!interXact)
{
Oid tblspcOid = GetNextTempTableSpace();
@@ -2732,6 +2735,7 @@ GetTempTablespaces(Oid *tableSpaces, int numSpaces)
Oid
GetNextTempTableSpace(void)
{
+ Assert(TempTablespacesAreSet());
if (numTempTableSpaces > 0)
{
/* Advance nextTempTableSpace counter with wraparound */