@@ -7,14 +7,14 @@ class TSerializedChunkAccessor {
7
7
private:
8
8
const std::vector<TDeserializeChunkedArray::TChunk>& Chunks;
9
9
const std::shared_ptr<TColumnLoader>& Loader;
10
- TDeserializeChunkedArray::TChunkCacheInfo* CachedDataOwner ;
10
+ std::optional<IChunkedArray::TLocalChunkedArrayAddress>& Result ;
11
11
12
12
public:
13
13
TSerializedChunkAccessor (const std::vector<TDeserializeChunkedArray::TChunk>& chunks, const std::shared_ptr<TColumnLoader>& loader,
14
- TDeserializeChunkedArray::TChunkCacheInfo* cachedDataOwner )
14
+ std::optional<IChunkedArray::TLocalChunkedArrayAddress>& result )
15
15
: Chunks(chunks)
16
16
, Loader(loader)
17
- , CachedDataOwner(cachedDataOwner ) {
17
+ , Result(result ) {
18
18
}
19
19
ui64 GetChunksCount () const {
20
20
return Chunks.size ();
@@ -23,11 +23,7 @@ class TSerializedChunkAccessor {
23
23
return Chunks[idx].GetRecordsCount ();
24
24
}
25
25
void OnArray (const ui32 chunkIdx, const ui32 startPosition) const {
26
- if (!CachedDataOwner->GetChunk () || CachedDataOwner->GetIndex () != chunkIdx) {
27
- CachedDataOwner->SetChunk (Chunks[chunkIdx].GetArrayVerified (Loader));
28
- CachedDataOwner->SetIndex (chunkIdx);
29
- CachedDataOwner->SetStartPosition (startPosition);
30
- }
26
+ Result = IChunkedArray::TLocalChunkedArrayAddress (Chunks[chunkIdx].GetArrayVerified (Loader), startPosition, chunkIdx);
31
27
}
32
28
};
33
29
} // namespace
@@ -40,10 +36,11 @@ IChunkedArray::TLocalDataAddress TDeserializeChunkedArray::DoGetLocalData(
40
36
41
37
IChunkedArray::TLocalChunkedArrayAddress TDeserializeChunkedArray::DoGetLocalChunkedArray (
42
38
const std::optional<TCommonChunkAddress>& chunkCurrent, const ui64 position) const {
43
- TSerializedChunkAccessor accessor (Chunks, Loader, CurrentChunkCache.get ());
39
+ std::optional<IChunkedArray::TLocalChunkedArrayAddress> result;
40
+ TSerializedChunkAccessor accessor (Chunks, Loader, result);
44
41
SelectChunk (chunkCurrent, position, accessor);
45
- return IChunkedArray::TLocalChunkedArrayAddress (
46
- CurrentChunkCache-> GetChunk (), CurrentChunkCache-> GetStartPosition (), CurrentChunkCache-> GetIndex ()) ;
42
+ AFL_VERIFY (result);
43
+ return *result ;
47
44
}
48
45
49
46
} // namespace NKikimr::NArrow::NAccessor
0 commit comments