MCPcopy
hub / github.com/wal-g/wal-g / NewIncrementalPageReader

Function NewIncrementalPageReader

internal/databases/greenplum/ao_increment.go:136–157  ·  view source on GitHub ↗
(file io.ReadSeekCloser, eof, offset int64)

Source from the content-addressed store, hash-verified

134}
135
136func NewIncrementalPageReader(file io.ReadSeekCloser, eof, offset int64) (io.ReadCloser, error) {
137 if eof <= offset {
138 return nil, fmt.Errorf("file eof %d is less or equal than offset %d", eof, offset)
139 }
140 var headerBuffer bytes.Buffer
141 headerBuffer.Write(IncrementFileHeader)
142 headerBuffer.Write(utility.ToBytes(uint64(eof)))
143 headerBuffer.Write(utility.ToBytes(uint64(offset)))
144
145 if _, err := file.Seek(offset, io.SeekStart); err != nil {
146 utility.LoggedClose(file, "")
147 return nil, err
148 }
149
150 return &ioextensions.ReadCascadeCloser{
151 Reader: &io.LimitedReader{
152 R: io.MultiReader(&headerBuffer, limiters.NewDiskLimitReader(file)),
153 N: int64(headerBuffer.Len()) + eof - offset,
154 },
155 Closer: file,
156 }, nil
157}

Callers 3

gpReadIncrementFunction · 0.92
incrementalAoUploadMethod · 0.85

Calls 7

WriteMethod · 0.95
LenMethod · 0.95
ToBytesFunction · 0.92
LoggedCloseFunction · 0.92
NewDiskLimitReaderFunction · 0.92
ErrorfMethod · 0.80
SeekMethod · 0.45

Tested by 2

gpReadIncrementFunction · 0.74