62 #define MAX_PHYSICAL_FILESIZE 0x40000000 63 #define BUFFILE_SEG_SIZE (MAX_PHYSICAL_FILESIZE / BLCKSZ) 139 file->
files[0] = firstfile;
301 if (nfiles + 1 > capacity)
309 if (files[nfiles] <= 0)
323 errmsg(
"could not open temporary file \"%s\" from BufFile \"%s\": %m",
324 segment_name, name)));
328 file->
readOnly = (mode == O_RDONLY) ?
true :
false;
370 elog(
ERROR,
"could not delete unknown shared BufFile \"%s\"", name);
402 for (i = 0; i < file->
numFiles; i++)
445 errmsg(
"could not read file \"%s\": %m",
473 while (wpos < file->
nbytes)
494 if ((off_t) bytestowrite > availbytes)
495 bytestowrite = (int) availbytes;
503 if (bytestowrite <= 0)
506 errmsg(
"could not write to file \"%s\": %m",
509 wpos += bytestowrite;
564 if (nthistime > size)
570 file->
pos += nthistime;
571 ptr = (
void *) ((
char *) ptr + nthistime);
594 if (file->
pos >= BLCKSZ)
608 nthistime = BLCKSZ - file->
pos;
609 if (nthistime > size)
616 file->
pos += nthistime;
619 ptr = (
void *) ((
char *) ptr + nthistime);
684 errmsg(
"could not determine size of temporary file \"%s\" from BufFile \"%s\": %m",
689 elog(
ERROR,
"invalid whence: %d", whence);
692 while (newOffset < 0)
698 if (newFile == file->
curFile &&
721 if (newFile == file->
numFiles && newOffset == 0)
776 BufFileTellBlock(
BufFile *file)
802 if (lastFileSize < 0)
805 errmsg(
"could not determine size of temporary file \"%s\" from BufFile \"%s\": %m",
845 elog(
ERROR,
"could not append BufFile with non-matching resource owner");
849 for (i = target->
numFiles; i < newNumFiles; i++)
864 int newFile = fileno;
875 for (i = file->
numFiles - 1; i >= fileno; i--)
877 if ((i != fileno || offset == 0) && i != 0)
884 errmsg(
"could not delete shared fileset \"%s\": %m",
902 errmsg(
"could not truncate file \"%s\": %m",
914 if (newFile == file->
curFile &&
925 else if (newFile == file->
curFile &&
937 else if (newFile < file->
curFile)
static PgChecksumMode mode
static void BufFileFlush(BufFile *file)
int BufFileSeek(BufFile *file, int fileno, off_t offset, int whence)
bool SharedFileSetDelete(SharedFileSet *fileset, const char *name, bool error_on_failure)
ResourceOwner CurrentResourceOwner
char * pstrdup(const char *in)
int64 BufFileSize(BufFile *file)
void BufFileTruncateShared(BufFile *file, int fileno, off_t offset)
off_t FileSize(File file)
#define MAX_PHYSICAL_FILESIZE
void BufFileDeleteShared(SharedFileSet *fileset, const char *name)
static void extendBufFile(BufFile *file)
char * FilePathName(File file)
void BufFileClose(BufFile *file)
void pfree(void *pointer)
void PrepareTempTablespaces(void)
static void SharedSegmentName(char *name, const char *buffile_name, int segment)
BufFile * BufFileCreateTemp(bool interXact)
BufFile * BufFileCreateShared(SharedFileSet *fileset, const char *name)
int errcode_for_file_access(void)
static File MakeNewSharedSegment(BufFile *file, int segment)
static BufFile * makeBufFile(File firstfile)
static void BufFileDumpBuffer(BufFile *file)
BufFile * BufFileOpenShared(SharedFileSet *fileset, const char *name, int mode)
int FileWrite(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info)
int BufFileSeekBlock(BufFile *file, long blknum)
#define ereport(elevel,...)
void BufFileTell(BufFile *file, int *fileno, off_t *offset)
void FileClose(File file)
#define Assert(condition)
File OpenTemporaryFile(bool interXact)
static rewind_source * source
void BufFileExportShared(BufFile *file)
void * repalloc(void *pointer, Size size)
File SharedFileSetCreate(SharedFileSet *fileset, const char *name)
int errmsg(const char *fmt,...)
size_t BufFileRead(BufFile *file, void *ptr, size_t size)
static void BufFileLoadBuffer(BufFile *file)
#define CHECK_FOR_INTERRUPTS()
void BufFileWrite(BufFile *file, void *ptr, size_t size)
File SharedFileSetOpen(SharedFileSet *fileset, const char *name, int mode)
long BufFileAppend(BufFile *target, BufFile *source)
int FileRead(File file, char *buffer, int amount, off_t offset, uint32 wait_event_info)
int FileTruncate(File file, off_t offset, uint32 wait_event_info)
BufferUsage pgBufferUsage
static BufFile * makeBufFileCommon(int nfiles)