]> granicus.if.org Git - postgresql/commitdiff
Remove BufFile's isTemp flag.
authorAndres Freund <andres@anarazel.de>
Fri, 17 Nov 2017 01:52:57 +0000 (17:52 -0800)
committerAndres Freund <andres@anarazel.de>
Fri, 17 Nov 2017 01:52:57 +0000 (17:52 -0800)
The isTemp flag controls whether buffile.c chops BufFile data up into
1GB segments on disk.  Since it was badly named and always true, get
rid of it.

Author: Thomas Munro (based on suggestion by Peter Geoghegan)
Reviewed-By: Peter Geoghegan, Andres Freund
Discussion: https://postgr.es/m/CAH2-Wz%3D%2B9Rfqh5UdvdW9rGezdhrMGGH-JL1X9FXXVZdeeGeOJA%40mail.gmail.com

src/backend/storage/file/buffile.c

index a73c025c81591757edbd51d4fe5a751994046b50..b527d38b05b0c4ebe51d93ee712aba0313cc9d04 100644 (file)
@@ -68,7 +68,6 @@ struct BufFile
         * avoid making redundant FileSeek calls.
         */
 
-       bool            isTemp;                 /* can only add files if this is true */
        bool            isInterXact;    /* keep open over transactions? */
        bool            dirty;                  /* does buffer need to be written? */
 
@@ -99,7 +98,7 @@ static int    BufFileFlush(BufFile *file);
 
 /*
  * Create a BufFile given the first underlying physical file.
- * NOTE: caller must set isTemp and isInterXact if appropriate.
+ * NOTE: caller must set isInterXact if appropriate.
  */
 static BufFile *
 makeBufFile(File firstfile)
@@ -111,7 +110,6 @@ makeBufFile(File firstfile)
        file->files[0] = firstfile;
        file->offsets = (off_t *) palloc(sizeof(off_t));
        file->offsets[0] = 0L;
-       file->isTemp = false;
        file->isInterXact = false;
        file->dirty = false;
        file->resowner = CurrentResourceOwner;
@@ -136,7 +134,6 @@ extendBufFile(BufFile *file)
        oldowner = CurrentResourceOwner;
        CurrentResourceOwner = file->resowner;
 
-       Assert(file->isTemp);
        pfile = OpenTemporaryFile(file->isInterXact);
        Assert(pfile >= 0);
 
@@ -173,7 +170,6 @@ BufFileCreateTemp(bool interXact)
        Assert(pfile >= 0);
 
        file = makeBufFile(pfile);
-       file->isTemp = true;
        file->isInterXact = interXact;
 
        return file;
@@ -288,10 +284,12 @@ BufFileDumpBuffer(BufFile *file)
         */
        while (wpos < file->nbytes)
        {
+               off_t           availbytes;
+
                /*
                 * Advance to next component file if necessary and possible.
                 */
-               if (file->curOffset >= MAX_PHYSICAL_FILESIZE && file->isTemp)
+               if (file->curOffset >= MAX_PHYSICAL_FILESIZE)
                {
                        while (file->curFile + 1 >= file->numFiles)
                                extendBufFile(file);
@@ -304,13 +302,10 @@ BufFileDumpBuffer(BufFile *file)
                 * write as much as asked...
                 */
                bytestowrite = file->nbytes - wpos;
-               if (file->isTemp)
-               {
-                       off_t           availbytes = MAX_PHYSICAL_FILESIZE - file->curOffset;
+               availbytes = MAX_PHYSICAL_FILESIZE - file->curOffset;
 
-                       if ((off_t) bytestowrite > availbytes)
-                               bytestowrite = (int) availbytes;
-               }
+               if ((off_t) bytestowrite > availbytes)
+                       bytestowrite = (int) availbytes;
 
                /*
                 * May need to reposition physical file.
@@ -543,20 +538,18 @@ BufFileSeek(BufFile *file, int fileno, off_t offset, int whence)
         * above flush could have created a new segment, so checking sooner would
         * not work (at least not with this code).
         */
-       if (file->isTemp)
+
+       /* convert seek to "start of next seg" to "end of last seg" */
+       if (newFile == file->numFiles && newOffset == 0)
        {
-               /* convert seek to "start of next seg" to "end of last seg" */
-               if (newFile == file->numFiles && newOffset == 0)
-               {
-                       newFile--;
-                       newOffset = MAX_PHYSICAL_FILESIZE;
-               }
-               while (newOffset > MAX_PHYSICAL_FILESIZE)
-               {
-                       if (++newFile >= file->numFiles)
-                               return EOF;
-                       newOffset -= MAX_PHYSICAL_FILESIZE;
-               }
+               newFile--;
+               newOffset = MAX_PHYSICAL_FILESIZE;
+       }
+       while (newOffset > MAX_PHYSICAL_FILESIZE)
+       {
+               if (++newFile >= file->numFiles)
+                       return EOF;
+               newOffset -= MAX_PHYSICAL_FILESIZE;
        }
        if (newFile >= file->numFiles)
                return EOF;