@ -99,6 +99,7 @@ struct BufFile
char buffer [ BLCKSZ ] ;
} ;
static BufFile * makeBufFileCommon ( int nfiles ) ;
static BufFile * makeBufFile ( File firstfile ) ;
static void extendBufFile ( BufFile * file ) ;
static void BufFileLoadBuffer ( BufFile * file ) ;
@ -106,21 +107,16 @@ static void BufFileDumpBuffer(BufFile *file);
static int BufFileFlush ( BufFile * file ) ;
static File MakeNewSharedSegment ( BufFile * file , int segment ) ;
/*
* Create a BufFile given the first underlying physical file .
* NOTE : caller must set isInterXact if appropriate .
* Create BufFile and perform the common initialization .
*/
static BufFile *
makeBufFile ( File firstfile )
makeBufFileCommon ( int nfiles )
{
BufFile * file = ( BufFile * ) palloc ( sizeof ( BufFile ) ) ;
file - > numFiles = 1 ;
file - > files = ( File * ) palloc ( sizeof ( File ) ) ;
file - > files [ 0 ] = firstfile ;
file - > offsets = ( off_t * ) palloc ( sizeof ( off_t ) ) ;
file - > offsets [ 0 ] = 0L ;
file - > numFiles = nfiles ;
file - > offsets = ( off_t * ) palloc0 ( sizeof ( off_t ) * nfiles ) ;
file - > isInterXact = false ;
file - > dirty = false ;
file - > resowner = CurrentResourceOwner ;
@ -128,6 +124,21 @@ makeBufFile(File firstfile)
file - > curOffset = 0L ;
file - > pos = 0 ;
file - > nbytes = 0 ;
return file ;
}
/*
* Create a BufFile given the first underlying physical file .
* NOTE : caller must set isInterXact if appropriate .
*/
static BufFile *
makeBufFile ( File firstfile )
{
BufFile * file = makeBufFileCommon ( 1 ) ;
file - > files = ( File * ) palloc ( sizeof ( File ) ) ;
file - > files [ 0 ] = firstfile ;
file - > readOnly = false ;
file - > fileset = NULL ;
file - > name = NULL ;
@ -246,23 +257,12 @@ BufFileCreateShared(SharedFileSet *fileset, const char *name)
{
BufFile * file ;
file = ( BufFile * ) palloc ( sizeof ( BufFile ) ) ;
file = makeBufFileCommon ( 1 ) ;
file - > fileset = fileset ;
file - > name = pstrdup ( name ) ;
file - > numFiles = 1 ;
file - > files = ( File * ) palloc ( sizeof ( File ) ) ;
file - > files [ 0 ] = MakeNewSharedSegment ( file , 0 ) ;
file - > offsets = ( off_t * ) palloc ( sizeof ( off_t ) ) ;
file - > offsets [ 0 ] = 0L ;
file - > isInterXact = false ;
file - > dirty = false ;
file - > resowner = CurrentResourceOwner ;
file - > curFile = 0 ;
file - > curOffset = 0L ;
file - > pos = 0 ;
file - > nbytes = 0 ;
file - > readOnly = false ;
file - > name = pstrdup ( name ) ;
return file ;
}
@ -283,7 +283,6 @@ BufFileOpenShared(SharedFileSet *fileset, const char *name)
File * files ;
int nfiles = 0 ;
file = ( BufFile * ) palloc ( sizeof ( BufFile ) ) ;
files = palloc ( sizeof ( File ) * capacity ) ;
/*
@ -317,16 +316,8 @@ BufFileOpenShared(SharedFileSet *fileset, const char *name)
( errcode_for_file_access ( ) ,
errmsg ( " could not open BufFile \" %s \" " , name ) ) ) ;
file - > numFiles = nfiles ;
file = makeBufFileCommon ( nfiles ) ;
file - > files = files ;
file - > offsets = ( off_t * ) palloc0 ( sizeof ( off_t ) * nfiles ) ;
file - > isInterXact = false ;
file - > dirty = false ;
file - > resowner = CurrentResourceOwner ; /* Unused, can't extend */
file - > curFile = 0 ;
file - > curOffset = 0L ;
file - > pos = 0 ;
file - > nbytes = 0 ;
file - > readOnly = true ; /* Can't write to files opened this way */
file - > fileset = fileset ;
file - > name = pstrdup ( name ) ;