2626
2727namespace NKikimr ::NOlap {
2828
29- TColumnEngineForLogs::TColumnEngineForLogs (const ui64 tabletId,
29+ TColumnEngineForLogs::TColumnEngineForLogs (const ui64 tabletId, const std::shared_ptr<TSchemaObjectsCache>& schemaCache,
3030 const std::shared_ptr<NDataAccessorControl::IDataAccessorsManager>& dataAccessorsManager,
31- const std::shared_ptr<IStoragesManager>& storagesManager, const TSnapshot& snapshot, const TSchemaInitializationData& schema)
31+ const std::shared_ptr<IStoragesManager>& storagesManager, const TSnapshot& snapshot, const ui64 presetId, const TSchemaInitializationData& schema)
3232 : GranulesStorage(std::make_shared<TGranulesStorage>(SignalCounters, dataAccessorsManager, storagesManager))
3333 , DataAccessorsManager(dataAccessorsManager)
3434 , StoragesManager(storagesManager)
35+ , SchemaObjectsCache(schemaCache)
3536 , TabletId(tabletId)
3637 , LastPortion(0 )
3738 , LastGranule(0 ) {
3839 ActualizationController = std::make_shared<NActualizer::TController>();
39- RegisterSchemaVersion (snapshot, schema);
40+ RegisterSchemaVersion (snapshot, presetId, schema);
4041}
4142
42- TColumnEngineForLogs::TColumnEngineForLogs (const ui64 tabletId,
43+ TColumnEngineForLogs::TColumnEngineForLogs (const ui64 tabletId, const std::shared_ptr<TSchemaObjectsCache>& schemaCache,
4344 const std::shared_ptr<NDataAccessorControl::IDataAccessorsManager>& dataAccessorsManager,
44- const std::shared_ptr<IStoragesManager>& storagesManager, const TSnapshot& snapshot, TIndexInfo&& schema)
45+ const std::shared_ptr<IStoragesManager>& storagesManager, const TSnapshot& snapshot, const ui64 presetId, TIndexInfo&& schema)
4546 : GranulesStorage(std::make_shared<TGranulesStorage>(SignalCounters, dataAccessorsManager, storagesManager))
4647 , DataAccessorsManager(dataAccessorsManager)
4748 , StoragesManager(storagesManager)
49+ , SchemaObjectsCache(schemaCache)
4850 , TabletId(tabletId)
4951 , LastPortion(0 )
5052 , LastGranule(0 ) {
5153 ActualizationController = std::make_shared<NActualizer::TController>();
52- RegisterSchemaVersion (snapshot, std::move (schema));
54+ RegisterSchemaVersion (snapshot, presetId, std::move (schema));
5355}
5456
5557const TMap<ui64, std::shared_ptr<TColumnEngineStats>>& TColumnEngineForLogs::GetStats () const {
@@ -138,7 +140,7 @@ void TColumnEngineForLogs::UpdatePortionStats(
138140 }
139141}
140142
141- void TColumnEngineForLogs::RegisterSchemaVersion (const TSnapshot& snapshot, TIndexInfo&& indexInfo) {
143+ void TColumnEngineForLogs::RegisterSchemaVersion (const TSnapshot& snapshot, const ui64 presetId, TIndexInfo&& indexInfo) {
142144 AFL_VERIFY (DataAccessorsManager);
143145 bool switchOptimizer = false ;
144146 bool switchAccessorsManager = false ;
@@ -150,7 +152,7 @@ void TColumnEngineForLogs::RegisterSchemaVersion(const TSnapshot& snapshot, TInd
150152 }
151153
152154 const bool isCriticalScheme = indexInfo.GetSchemeNeedActualization ();
153- auto * indexInfoActual = VersionedIndex.AddIndex (snapshot, std::move (indexInfo));
155+ auto * indexInfoActual = VersionedIndex.AddIndex (snapshot, SchemaObjectsCache-> UpsertIndexInfo (presetId, std::move (indexInfo) ));
154156 if (isCriticalScheme) {
155157 StartActualization ({});
156158 for (auto && i : GranulesStorage->GetTables ()) {
@@ -170,7 +172,7 @@ void TColumnEngineForLogs::RegisterSchemaVersion(const TSnapshot& snapshot, TInd
170172 }
171173}
172174
173- void TColumnEngineForLogs::RegisterSchemaVersion (const TSnapshot& snapshot, const TSchemaInitializationData& schema) {
175+ void TColumnEngineForLogs::RegisterSchemaVersion (const TSnapshot& snapshot, const ui64 presetId, const TSchemaInitializationData& schema) {
174176 AFL_VERIFY (VersionedIndex.IsEmpty () || schema.GetVersion () >= VersionedIndex.GetLastSchema ()->GetVersion ())(" empty" , VersionedIndex.IsEmpty ())(" current" , schema.GetVersion ())(
175177 " last" , VersionedIndex.GetLastSchema ()->GetVersion ());
176178
@@ -184,10 +186,10 @@ void TColumnEngineForLogs::RegisterSchemaVersion(const TSnapshot& snapshot, cons
184186 indexInfoOptional = NOlap::TIndexInfo::BuildFromProto (schema.GetSchemaVerified (), StoragesManager, SchemaObjectsCache);
185187 }
186188 AFL_VERIFY (indexInfoOptional);
187- RegisterSchemaVersion (snapshot, std::move (*indexInfoOptional));
189+ RegisterSchemaVersion (snapshot, presetId, std::move (*indexInfoOptional));
188190}
189191
190- void TColumnEngineForLogs::RegisterOldSchemaVersion (const TSnapshot& snapshot, const TSchemaInitializationData& schema) {
192+ void TColumnEngineForLogs::RegisterOldSchemaVersion (const TSnapshot& snapshot, const ui64 presetId, const TSchemaInitializationData& schema) {
191193 AFL_VERIFY (!VersionedIndex.IsEmpty ());
192194
193195 ui64 version = schema.GetVersion ();
@@ -215,7 +217,7 @@ void TColumnEngineForLogs::RegisterOldSchemaVersion(const TSnapshot& snapshot, c
215217 }
216218
217219 AFL_VERIFY (indexInfoOptional);
218- VersionedIndex.AddIndex (snapshot, std::move (*indexInfoOptional));
220+ VersionedIndex.AddIndex (snapshot, SchemaObjectsCache-> UpsertIndexInfo (presetId, std::move (*indexInfoOptional) ));
219221}
220222
221223std::shared_ptr<ITxReader> TColumnEngineForLogs::BuildLoader (const std::shared_ptr<IBlobGroupSelector>& dsGroupSelector) {
0 commit comments