mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
Update buffile.h/.c comments for removal of non-temp option.
Commit 11e264517 removed BufFile's isTemp flag, thereby eliminating the possibility of resurrecting BufFileCreate(). But it left that function in place, as well as a bunch of comments describing how things worked for the non-temp-file case. At best, that's now a source of confusion. So remove the long-since-commented-out function and change relevant comments. I (tgl) wanted to rename BufFileCreateTemp() to BufFileCreate(), but that seems not to be the consensus position, so leave it as-is. In passing, fix commit f0828b2fc's failure to update BufFileSeek's comment to match the change of its argument type from long to off_t. (I think that might actually have been intentional at the time, but now that 64-bit off_t is nearly universal, it looks anachronistic.) Thomas Munro and Tom Lane Discussion: https://postgr.es/m/E1eFVyl-0008J1-RO@gemulon.postgresql.org
This commit is contained in:
parent
df3a66e282
commit
ab97aaac8f
@ -1,7 +1,7 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* buffile.c
|
* buffile.c
|
||||||
* Management of large buffered files, primarily temporary files.
|
* Management of large buffered temporary files.
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
@ -20,8 +20,8 @@
|
|||||||
* of opening/closing file descriptors.
|
* of opening/closing file descriptors.
|
||||||
*
|
*
|
||||||
* Note that BufFile structs are allocated with palloc(), and therefore
|
* Note that BufFile structs are allocated with palloc(), and therefore
|
||||||
* will go away automatically at transaction end. If the underlying
|
* will go away automatically at query/transaction end. Since the underlying
|
||||||
* virtual File is made with OpenTemporaryFile, then all resources for
|
* virtual Files are made with OpenTemporaryFile, all resources for
|
||||||
* the file are certain to be cleaned up even if processing is aborted
|
* the file are certain to be cleaned up even if processing is aborted
|
||||||
* by ereport(ERROR). The data structures required are made in the
|
* by ereport(ERROR). The data structures required are made in the
|
||||||
* palloc context that was current when the BufFile was created, and
|
* palloc context that was current when the BufFile was created, and
|
||||||
@ -45,8 +45,8 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* We break BufFiles into gigabyte-sized segments, regardless of RELSEG_SIZE.
|
* We break BufFiles into gigabyte-sized segments, regardless of RELSEG_SIZE.
|
||||||
* The reason is that we'd like large temporary BufFiles to be spread across
|
* The reason is that we'd like large BufFiles to be spread across multiple
|
||||||
* multiple tablespaces when available.
|
* tablespaces when available.
|
||||||
*/
|
*/
|
||||||
#define MAX_PHYSICAL_FILESIZE 0x40000000
|
#define MAX_PHYSICAL_FILESIZE 0x40000000
|
||||||
#define BUFFILE_SEG_SIZE (MAX_PHYSICAL_FILESIZE / BLCKSZ)
|
#define BUFFILE_SEG_SIZE (MAX_PHYSICAL_FILESIZE / BLCKSZ)
|
||||||
@ -175,21 +175,6 @@ BufFileCreateTemp(bool interXact)
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NOT_USED
|
|
||||||
/*
|
|
||||||
* Create a BufFile and attach it to an already-opened virtual File.
|
|
||||||
*
|
|
||||||
* This is comparable to fdopen() in stdio. This is the only way at present
|
|
||||||
* to attach a BufFile to a non-temporary file. Note that BufFiles created
|
|
||||||
* in this way CANNOT be expanded into multiple files.
|
|
||||||
*/
|
|
||||||
BufFile *
|
|
||||||
BufFileCreate(File file)
|
|
||||||
{
|
|
||||||
return makeBufFile(file);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Close a BufFile
|
* Close a BufFile
|
||||||
*
|
*
|
||||||
@ -202,7 +187,7 @@ BufFileClose(BufFile *file)
|
|||||||
|
|
||||||
/* flush any unwritten data */
|
/* flush any unwritten data */
|
||||||
BufFileFlush(file);
|
BufFileFlush(file);
|
||||||
/* close the underlying file(s) (with delete if it's a temp file) */
|
/* close and delete the underlying file(s) */
|
||||||
for (i = 0; i < file->numFiles; i++)
|
for (i = 0; i < file->numFiles; i++)
|
||||||
FileClose(file->files[i]);
|
FileClose(file->files[i]);
|
||||||
/* release the buffer space */
|
/* release the buffer space */
|
||||||
@ -225,10 +210,6 @@ BufFileLoadBuffer(BufFile *file)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Advance to next component file if necessary and possible.
|
* Advance to next component file if necessary and possible.
|
||||||
*
|
|
||||||
* This path can only be taken if there is more than one component, so it
|
|
||||||
* won't interfere with reading a non-temp file that is over
|
|
||||||
* MAX_PHYSICAL_FILESIZE.
|
|
||||||
*/
|
*/
|
||||||
if (file->curOffset >= MAX_PHYSICAL_FILESIZE &&
|
if (file->curOffset >= MAX_PHYSICAL_FILESIZE &&
|
||||||
file->curFile + 1 < file->numFiles)
|
file->curFile + 1 < file->numFiles)
|
||||||
@ -298,8 +279,7 @@ BufFileDumpBuffer(BufFile *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enforce per-file size limit only for temp files, else just try to
|
* Determine how much we need to write into this file.
|
||||||
* write as much as asked...
|
|
||||||
*/
|
*/
|
||||||
bytestowrite = file->nbytes - wpos;
|
bytestowrite = file->nbytes - wpos;
|
||||||
availbytes = MAX_PHYSICAL_FILESIZE - file->curOffset;
|
availbytes = MAX_PHYSICAL_FILESIZE - file->curOffset;
|
||||||
@ -471,8 +451,8 @@ BufFileFlush(BufFile *file)
|
|||||||
* BufFileSeek
|
* BufFileSeek
|
||||||
*
|
*
|
||||||
* Like fseek(), except that target position needs two values in order to
|
* Like fseek(), except that target position needs two values in order to
|
||||||
* work when logical filesize exceeds maximum value representable by long.
|
* work when logical filesize exceeds maximum value representable by off_t.
|
||||||
* We do not support relative seeks across more than LONG_MAX, however.
|
* We do not support relative seeks across more than that, however.
|
||||||
*
|
*
|
||||||
* Result is 0 if OK, EOF if not. Logical position is not moved if an
|
* Result is 0 if OK, EOF if not. Logical position is not moved if an
|
||||||
* impossible seek is attempted.
|
* impossible seek is attempted.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* buffile.h
|
* buffile.h
|
||||||
* Management of large buffered files, primarily temporary files.
|
* Management of large buffered temporary files.
|
||||||
*
|
*
|
||||||
* The BufFile routines provide a partial replacement for stdio atop
|
* The BufFile routines provide a partial replacement for stdio atop
|
||||||
* virtual file descriptors managed by fd.c. Currently they only support
|
* virtual file descriptors managed by fd.c. Currently they only support
|
||||||
|
Loading…
x
Reference in New Issue
Block a user