PostgreSQL Source Code
git master
|
#include "postgres.h"
#include "commands/tablespace.h"
#include "executor/instrument.h"
#include "miscadmin.h"
#include "pgstat.h"
#include "storage/buffile.h"
#include "storage/bufmgr.h"
#include "storage/fd.h"
#include "utils/resowner.h"
Go to the source code of this file.
Data Structures | |
struct | BufFile |
Macros | |
#define | MAX_PHYSICAL_FILESIZE 0x40000000 |
#define | BUFFILE_SEG_SIZE (MAX_PHYSICAL_FILESIZE / BLCKSZ) |
Functions | |
static BufFile * | makeBufFileCommon (int nfiles) |
static BufFile * | makeBufFile (File firstfile) |
static void | extendBufFile (BufFile *file) |
static void | BufFileLoadBuffer (BufFile *file) |
static void | BufFileDumpBuffer (BufFile *file) |
static void | BufFileFlush (BufFile *file) |
static File | MakeNewFileSetSegment (BufFile *buffile, int segment) |
BufFile * | BufFileCreateTemp (bool interXact) |
static void | FileSetSegmentName (char *name, const char *buffile_name, int segment) |
BufFile * | BufFileCreateFileSet (FileSet *fileset, const char *name) |
BufFile * | BufFileOpenFileSet (FileSet *fileset, const char *name, int mode, bool missing_ok) |
void | BufFileDeleteFileSet (FileSet *fileset, const char *name, bool missing_ok) |
void | BufFileExportFileSet (BufFile *file) |
void | BufFileClose (BufFile *file) |
static size_t | BufFileReadCommon (BufFile *file, void *ptr, size_t size, bool exact, bool eofOK) |
size_t | BufFileRead (BufFile *file, void *ptr, size_t size) |
void | BufFileReadExact (BufFile *file, void *ptr, size_t size) |
size_t | BufFileReadMaybeEOF (BufFile *file, void *ptr, size_t size, bool eofOK) |
void | BufFileWrite (BufFile *file, const void *ptr, size_t size) |
int | BufFileSeek (BufFile *file, int fileno, off_t offset, int whence) |
void | BufFileTell (BufFile *file, int *fileno, off_t *offset) |
int | BufFileSeekBlock (BufFile *file, int64 blknum) |
int64 | BufFileSize (BufFile *file) |
int64 | BufFileAppend (BufFile *target, BufFile *source) |
void | BufFileTruncateFileSet (BufFile *file, int fileno, off_t offset) |
#define BUFFILE_SEG_SIZE (MAX_PHYSICAL_FILESIZE / BLCKSZ) |
Definition at line 902 of file buffile.c.
References Assert, BUFFILE_SEG_SIZE, elog, ERROR, BufFile::files, i, BufFile::numFiles, repalloc(), BufFile::resowner, and source.
Referenced by LogicalTapeImport().
void BufFileClose | ( | BufFile * | file | ) |
Definition at line 412 of file buffile.c.
References BufFileFlush(), FileClose(), BufFile::files, i, BufFile::numFiles, and pfree().
Referenced by ensure_last_message(), ExecHashJoinNewBatch(), ExecHashTableDestroy(), gistFreeBuildBuffers(), LogicalTapeSetClose(), SendBackupManifest(), stream_abort_internal(), stream_close_file(), sts_end_parallel_scan(), sts_end_write(), sts_parallel_scan_next(), subxact_info_read(), subxact_info_write(), tuplestore_clear(), and tuplestore_end().
Definition at line 267 of file buffile.c.
References BufFile::files, BufFile::fileset, makeBufFileCommon(), MakeNewFileSetSegment(), BufFile::name, name, palloc(), pstrdup(), and BufFile::readOnly.
Referenced by LogicalTapeSetCreate(), stream_open_file(), sts_puttuple(), and subxact_info_write().
Definition at line 193 of file buffile.c.
References Assert, BufFile::isInterXact, makeBufFile(), OpenTemporaryFile(), and PrepareTempTablespaces().
Referenced by ExecHashJoinSaveTuple(), gistInitBuildBuffers(), InitializeBackupManifest(), LogicalTapeSetCreate(), and tuplestore_puttuple_common().
Definition at line 364 of file buffile.c.
References CHECK_FOR_INTERRUPTS, elog, ERROR, FileSetDelete(), FileSetSegmentName(), MAXPGPATH, and name.
Referenced by stream_cleanup_files(), and subxact_info_write().
|
static |
Definition at line 494 of file buffile.c.
References Assert, BufFile::buffer, BufFile::curFile, BufFile::curOffset, PGAlignedBlock::data, BufFile::dirty, ereport, errcode_for_file_access(), errmsg(), ERROR, extendBufFile(), FilePathName(), BufFile::files, FileWrite(), INSTR_TIME_ACCUM_DIFF, INSTR_TIME_SET_CURRENT, INSTR_TIME_SET_ZERO, MAX_PHYSICAL_FILESIZE, BufFile::nbytes, BufFile::numFiles, pgBufferUsage, BufFile::pos, BufferUsage::temp_blk_write_time, BufferUsage::temp_blks_written, track_io_timing, and wpos.
Referenced by BufFileFlush(), and BufFileWrite().
void BufFileExportFileSet | ( | BufFile * | file | ) |
Definition at line 394 of file buffile.c.
References Assert, BufFileFlush(), BufFile::fileset, and BufFile::readOnly.
Referenced by LogicalTapeFreeze().
|
static |
Definition at line 720 of file buffile.c.
References Assert, BufFileDumpBuffer(), and BufFile::dirty.
Referenced by BufFileClose(), BufFileExportFileSet(), BufFileReadCommon(), and BufFileSeek().
|
static |
Definition at line 434 of file buffile.c.
References BufFile::buffer, BufFile::curFile, BufFile::curOffset, PGAlignedBlock::data, ereport, errcode_for_file_access(), errmsg(), ERROR, FilePathName(), FileRead(), BufFile::files, INSTR_TIME_ACCUM_DIFF, INSTR_TIME_SET_CURRENT, INSTR_TIME_SET_ZERO, MAX_PHYSICAL_FILESIZE, BufFile::nbytes, BufFile::numFiles, pgBufferUsage, BufferUsage::temp_blk_read_time, BufferUsage::temp_blks_read, and track_io_timing.
Referenced by BufFileReadCommon().
Definition at line 291 of file buffile.c.
References CHECK_FOR_INTERRUPTS, ereport, errcode_for_file_access(), errmsg(), ERROR, BufFile::files, BufFile::fileset, FileSetOpen(), FileSetSegmentName(), makeBufFileCommon(), MAXPGPATH, mode, BufFile::name, name, palloc(), pfree(), pstrdup(), BufFile::readOnly, and repalloc().
Referenced by apply_spooled_messages(), ensure_last_message(), LogicalTapeImport(), stream_abort_internal(), stream_open_file(), sts_parallel_scan_next(), subxact_info_read(), and subxact_info_write().
size_t BufFileRead | ( | BufFile * | file, |
void * | ptr, | ||
size_t | size | ||
) |
Definition at line 645 of file buffile.c.
References BufFileReadCommon(), and size.
|
static |
Definition at line 593 of file buffile.c.
References Assert, BufFile::buffer, BufFileFlush(), BufFileLoadBuffer(), BufFile::curOffset, PGAlignedBlock::data, ereport, errcode_for_file_access(), errmsg(), ERROR, BufFile::name, BufFile::nbytes, BufFile::pos, and size.
Referenced by BufFileRead(), BufFileReadExact(), and BufFileReadMaybeEOF().
void BufFileReadExact | ( | BufFile * | file, |
void * | ptr, | ||
size_t | size | ||
) |
Definition at line 654 of file buffile.c.
References BufFileReadCommon(), and size.
Referenced by apply_spooled_messages(), ExecHashJoinGetSavedTuple(), ltsReadBlock(), ReadTempFileBlock(), readtup_heap(), SendBackupManifest(), sts_parallel_scan_next(), sts_read_tuple(), and subxact_info_read().
Definition at line 664 of file buffile.c.
References BufFileReadCommon(), and size.
Referenced by apply_spooled_messages(), ExecHashJoinGetSavedTuple(), and getlen().
int BufFileSeek | ( | BufFile * | file, |
int | fileno, | ||
off_t | offset, | ||
int | whence | ||
) |
Definition at line 740 of file buffile.c.
References BufFileFlush(), BufFile::curFile, BufFile::curOffset, elog, ereport, errcode_for_file_access(), errmsg(), ERROR, FilePathName(), BufFile::files, FileSize(), MAX_PHYSICAL_FILESIZE, BufFile::name, BufFile::nbytes, BufFile::numFiles, and BufFile::pos.
Referenced by BufFileSeekBlock(), ensure_last_message(), ExecHashJoinNewBatch(), SendBackupManifest(), stream_open_file(), tuplestore_copy_read_pointer(), tuplestore_gettuple(), tuplestore_puttuple_common(), tuplestore_rescan(), and tuplestore_select_read_pointer().
int BufFileSeekBlock | ( | BufFile * | file, |
int64 | blknum | ||
) |
Definition at line 851 of file buffile.c.
References BUFFILE_SEG_SIZE, and BufFileSeek().
Referenced by ltsReadBlock(), ltsWriteBlock(), ReadTempFileBlock(), sts_parallel_scan_next(), and WriteTempFileBlock().
int64 BufFileSize | ( | BufFile * | file | ) |
Definition at line 866 of file buffile.c.
References ereport, errcode_for_file_access(), errmsg(), ERROR, FilePathName(), BufFile::files, FileSize(), MAX_PHYSICAL_FILESIZE, BufFile::name, and BufFile::numFiles.
Referenced by LogicalTapeImport(), and tuplestore_updatemax().
void BufFileTell | ( | BufFile * | file, |
int * | fileno, | ||
off_t * | offset | ||
) |
Definition at line 833 of file buffile.c.
References BufFile::curFile, BufFile::curOffset, and BufFile::pos.
Referenced by apply_spooled_messages(), dumptuples(), ensure_last_message(), subxact_info_add(), tuplestore_copy_read_pointer(), tuplestore_gettuple(), tuplestore_puttuple_common(), and tuplestore_select_read_pointer().
void BufFileTruncateFileSet | ( | BufFile * | file, |
int | fileno, | ||
off_t | offset | ||
) |
Definition at line 928 of file buffile.c.
References BufFile::curFile, BufFile::curOffset, ereport, errcode_for_file_access(), errmsg(), ERROR, FileClose(), FilePathName(), BufFile::files, BufFile::fileset, FileSetDelete(), FileSetSegmentName(), FileTruncate(), i, MAX_PHYSICAL_FILESIZE, MAXPGPATH, BufFile::name, BufFile::nbytes, BufFile::numFiles, and BufFile::pos.
Referenced by stream_abort_internal().
void BufFileWrite | ( | BufFile * | file, |
const void * | ptr, | ||
size_t | size | ||
) |
Definition at line 676 of file buffile.c.
References Assert, BufFile::buffer, BufFileDumpBuffer(), BufFile::curOffset, PGAlignedBlock::data, BufFile::dirty, BufFile::nbytes, BufFile::pos, BufFile::readOnly, and size.
Referenced by AppendStringToManifest(), ExecHashJoinSaveTuple(), ltsWriteBlock(), stream_write_change(), sts_flush_chunk(), subxact_info_write(), WriteTempFileBlock(), and writetup_heap().
|
static |
Definition at line 156 of file buffile.c.
References Assert, CurrentResourceOwner, BufFile::files, BufFile::fileset, BufFile::isInterXact, MakeNewFileSetSegment(), BufFile::numFiles, OpenTemporaryFile(), repalloc(), and BufFile::resowner.
Referenced by BufFileDumpBuffer().
|
static |
Definition at line 222 of file buffile.c.
References MAXPGPATH, name, and snprintf.
Referenced by BufFileDeleteFileSet(), BufFileOpenFileSet(), BufFileTruncateFileSet(), and MakeNewFileSetSegment().
Definition at line 139 of file buffile.c.
References BufFile::files, BufFile::fileset, makeBufFileCommon(), BufFile::name, palloc(), and BufFile::readOnly.
Referenced by BufFileCreateTemp().
|
static |
Definition at line 118 of file buffile.c.
References BufFile::curFile, BufFile::curOffset, CurrentResourceOwner, BufFile::dirty, BufFile::isInterXact, BufFile::nbytes, BufFile::numFiles, palloc(), BufFile::pos, and BufFile::resowner.
Referenced by BufFileCreateFileSet(), BufFileOpenFileSet(), and makeBufFile().
Definition at line 231 of file buffile.c.
References Assert, BufFile::fileset, FileSetCreate(), FileSetDelete(), FileSetSegmentName(), MAXPGPATH, BufFile::name, and name.
Referenced by BufFileCreateFileSet(), and extendBufFile().