@@ -43,7 +43,6 @@ class TColumnChunkRestoreInfo {
43
43
THashMap<TString, TSubColumnChunkRestoreInfo> Chunks;
44
44
YDB_ACCESSOR_DEF (std::optional<TBlobRange>, HeaderRange);
45
45
std::shared_ptr<NArrow::NAccessor::TSubColumnsPartialArray> PartialArray;
46
- YDB_READONLY (bool , NeedToAddResource, false );
47
46
YDB_READONLY_DEF (TBlobRange, FullChunkRange);
48
47
YDB_ACCESSOR_DEF (std::optional<TBlobRange>, OthersReadData);
49
48
YDB_READONLY_DEF (std::optional<TString>, OthersBlobs);
@@ -115,15 +114,13 @@ class TColumnChunkRestoreInfo {
115
114
AFL_VERIFY (!!HeaderRange);
116
115
AFL_VERIFY (!PartialArray);
117
116
HeaderRange = std::nullopt;
118
- NeedToAddResource = true ;
119
117
PartialArray = NArrow::NAccessor::NSubColumns::TConstructor::BuildPartialReader (blob, ChunkExternalInfo).DetachResult ();
120
118
}
121
119
122
120
void InitPartialReader (
123
121
const ui32 columnId, const ui32 positionStart, const std::shared_ptr<NArrow::NAccessor::TAccessorsCollection>& resources) {
124
122
AFL_VERIFY (!HeaderRange);
125
123
AFL_VERIFY (!PartialArray);
126
- NeedToAddResource = false ;
127
124
auto columnAccessor = resources->GetAccessorVerified (columnId);
128
125
auto partialArray = columnAccessor->GetArraySlow (positionStart, columnAccessor);
129
126
AFL_VERIFY (partialArray.GetArray ()->GetType () == NArrow::NAccessor::IChunkedArray::EType::SubColumnsPartialArray);
@@ -164,16 +161,9 @@ class TSubColumnsFetchLogic: public IKernelFetchLogic {
164
161
165
162
std::vector<TColumnChunkRestoreInfo> ColumnChunks;
166
163
std::optional<TString> StorageId;
164
+ bool NeedToAddResource = false ;
167
165
virtual void DoOnDataCollected () override {
168
- std::optional<bool > needToAddResource;
169
- for (auto && i : ColumnChunks) {
170
- if (!needToAddResource) {
171
- needToAddResource = i.GetNeedToAddResource ();
172
- } else {
173
- AFL_VERIFY (needToAddResource == i.GetNeedToAddResource ());
174
- }
175
- }
176
- if (*needToAddResource) {
166
+ if (NeedToAddResource) {
177
167
NArrow::NAccessor::TCompositeChunkedArray::TBuilder compositeBuilder (ChunkExternalInfo.GetColumnType ());
178
168
for (auto && i : ColumnChunks) {
179
169
i.Finish (nullptr );
@@ -241,14 +231,14 @@ class TSubColumnsFetchLogic: public IKernelFetchLogic {
241
231
auto itFilter = cFilter.GetIterator (false , Source->GetRecordsCount ());
242
232
bool itFinished = false ;
243
233
244
- const bool hasColumn = Resources->HasColumn (GetColumnId ());
234
+ NeedToAddResource = ! Resources->HasColumn (GetColumnId ());
245
235
ui32 posCurrent = 0 ;
246
236
for (auto && c : columnChunks) {
247
237
AFL_VERIFY (!itFinished);
248
238
if (!itFilter.IsBatchForSkip (c->GetMeta ().GetRecordsCount ())) {
249
239
const TBlobRange range = Source->RestoreBlobRange (c->BlobRange );
250
240
ColumnChunks.emplace_back (range, ChunkExternalInfo.GetSubset (c->GetMeta ().GetRecordsCount ()));
251
- if (hasColumn ) {
241
+ if (!NeedToAddResource ) {
252
242
ColumnChunks.back ().InitPartialReader (GetColumnId (), posCurrent, Resources);
253
243
}
254
244
ColumnChunks.back ().InitReading (reading, SubColumns);
0 commit comments