@@ -67,12 +67,6 @@ struct BufFile
67
67
int numFiles ; /* number of physical files in set */
68
68
/* all files except the last have length exactly MAX_PHYSICAL_FILESIZE */
69
69
File * files ; /* palloc'd array with numFiles entries */
70
- off_t * offsets ; /* palloc'd array with numFiles entries */
71
-
72
- /*
73
- * offsets[i] is the current seek position of files[i]. We use this to
74
- * avoid making redundant FileSeek calls.
75
- */
76
70
77
71
bool isInterXact ; /* keep open over transactions? */
78
72
bool dirty ; /* does buffer need to be written? */
@@ -116,7 +110,6 @@ makeBufFileCommon(int nfiles)
116
110
BufFile * file = (BufFile * ) palloc (sizeof (BufFile ));
117
111
118
112
file -> numFiles = nfiles ;
119
- file -> offsets = (off_t * ) palloc0 (sizeof (off_t ) * nfiles );
120
113
file -> isInterXact = false;
121
114
file -> dirty = false;
122
115
file -> resowner = CurrentResourceOwner ;
@@ -170,10 +163,7 @@ extendBufFile(BufFile *file)
170
163
171
164
file -> files = (File * ) repalloc (file -> files ,
172
165
(file -> numFiles + 1 ) * sizeof (File ));
173
- file -> offsets = (off_t * ) repalloc (file -> offsets ,
174
- (file -> numFiles + 1 ) * sizeof (off_t ));
175
166
file -> files [file -> numFiles ] = pfile ;
176
- file -> offsets [file -> numFiles ] = 0L ;
177
167
file -> numFiles ++ ;
178
168
}
179
169
@@ -396,7 +386,6 @@ BufFileClose(BufFile *file)
396
386
FileClose (file -> files [i ]);
397
387
/* release the buffer space */
398
388
pfree (file -> files );
399
- pfree (file -> offsets );
400
389
pfree (file );
401
390
}
402
391
@@ -422,27 +411,17 @@ BufFileLoadBuffer(BufFile *file)
422
411
file -> curOffset = 0L ;
423
412
}
424
413
425
- /*
426
- * May need to reposition physical file.
427
- */
428
- thisfile = file -> files [file -> curFile ];
429
- if (file -> curOffset != file -> offsets [file -> curFile ])
430
- {
431
- if (FileSeek (thisfile , file -> curOffset , SEEK_SET ) != file -> curOffset )
432
- return ; /* seek failed, read nothing */
433
- file -> offsets [file -> curFile ] = file -> curOffset ;
434
- }
435
-
436
414
/*
437
415
* Read whatever we can get, up to a full bufferload.
438
416
*/
417
+ thisfile = file -> files [file -> curFile ];
439
418
file -> nbytes = FileRead (thisfile ,
440
419
file -> buffer .data ,
441
420
sizeof (file -> buffer ),
421
+ file -> curOffset ,
442
422
WAIT_EVENT_BUFFILE_READ );
443
423
if (file -> nbytes < 0 )
444
424
file -> nbytes = 0 ;
445
- file -> offsets [file -> curFile ] += file -> nbytes ;
446
425
/* we choose not to advance curOffset here */
447
426
448
427
if (file -> nbytes > 0 )
@@ -491,23 +470,14 @@ BufFileDumpBuffer(BufFile *file)
491
470
if ((off_t ) bytestowrite > availbytes )
492
471
bytestowrite = (int ) availbytes ;
493
472
494
- /*
495
- * May need to reposition physical file.
496
- */
497
473
thisfile = file -> files [file -> curFile ];
498
- if (file -> curOffset != file -> offsets [file -> curFile ])
499
- {
500
- if (FileSeek (thisfile , file -> curOffset , SEEK_SET ) != file -> curOffset )
501
- return ; /* seek failed, give up */
502
- file -> offsets [file -> curFile ] = file -> curOffset ;
503
- }
504
474
bytestowrite = FileWrite (thisfile ,
505
475
file -> buffer .data + wpos ,
506
476
bytestowrite ,
477
+ file -> curOffset ,
507
478
WAIT_EVENT_BUFFILE_WRITE );
508
479
if (bytestowrite <= 0 )
509
480
return ; /* failed to write */
510
- file -> offsets [file -> curFile ] += bytestowrite ;
511
481
file -> curOffset += bytestowrite ;
512
482
wpos += bytestowrite ;
513
483
@@ -803,11 +773,10 @@ BufFileSize(BufFile *file)
803
773
{
804
774
off_t lastFileSize ;
805
775
806
- /* Get the size of the last physical file by seeking to end . */
807
- lastFileSize = FileSeek (file -> files [file -> numFiles - 1 ], 0 , SEEK_END );
776
+ /* Get the size of the last physical file. */
777
+ lastFileSize = FileSize (file -> files [file -> numFiles - 1 ]);
808
778
if (lastFileSize < 0 )
809
779
return -1 ;
810
- file -> offsets [file -> numFiles - 1 ] = lastFileSize ;
811
780
812
781
return ((file -> numFiles - 1 ) * (off_t ) MAX_PHYSICAL_FILESIZE ) +
813
782
lastFileSize ;
@@ -849,13 +818,8 @@ BufFileAppend(BufFile *target, BufFile *source)
849
818
850
819
target -> files = (File * )
851
820
repalloc (target -> files , sizeof (File ) * newNumFiles );
852
- target -> offsets = (off_t * )
853
- repalloc (target -> offsets , sizeof (off_t ) * newNumFiles );
854
821
for (i = target -> numFiles ; i < newNumFiles ; i ++ )
855
- {
856
822
target -> files [i ] = source -> files [i - target -> numFiles ];
857
- target -> offsets [i ] = source -> offsets [i - target -> numFiles ];
858
- }
859
823
target -> numFiles = newNumFiles ;
860
824
861
825
return startBlock ;
0 commit comments