diff options
| author | atarasov5 <[email protected]> | 2026-05-20 11:09:21 +0300 |
|---|---|---|
| committer | atarasov5 <[email protected]> | 2026-05-20 11:36:16 +0300 |
| commit | 7610b2d650b671e194c00a54ec5a7950ae81e957 (patch) | |
| tree | 52e7a96d2c18e42ab9ee44d95b292b653750c563 /yql/essentials/core | |
| parent | 22fa9f58b3d741847907a1263cb5f0ad30106a18 (diff) | |
YQL-19813: Save and load qplayer
**Режим capture** (qContext.CanWrite())
1. Проходим по всем элементам source с индексом idx.
2. Для каждого элемента вызываем filter(item) ровно один раз (фильтр может иметь побочные эффекты — например, запись статистики об активации).
3. Элементы, прошедшие фильтр, добавляются в возвращаемый результат.
4. Сохраняем индексы всех прошедших фильтр элементов в QStorage в формате V2:
\{"version": "v2", "indexes": \[0, 2, 5, ...\]\}
---
**Режим replay** (qContext.CanRead())
1. Читаем YSON-запись из QStorage по ключу \{Component="Activation", Label=label\}.
2. Определяем версию формата по наличию ключа "version":
**Формат V1** (старый, обратная совместимость) — ключ "version" отсутствует:
- Структура: \{"имя\_флага": сериализованный\_proto, ...\}
- Десериализуем каждый флаг через ParseFromString, возвращаем список напрямую.
- Фильтр не вызывается. Список source игнорируется.
**Формат V2 (текущий)** — "version": "v2":
- Структура: \{"version": "v2", "indexes": \[0, 2, 5, ...\]\}
- Читаем сохранённое множество индексов.
- Проходим по source с *индексом* idx:
- Элемент без условия активации (!HasActivation()) → всегда включается (такие элементы не зависят от активации).
- Элемент с условием активации (HasActivation()) → включается только если его idx есть в сохранённом множестве.
- Фильтр не вызывается.
commit_hash:306113465bcd614cd3c0cd311ab20542d1f8e254
Diffstat (limited to 'yql/essentials/core')
| -rw-r--r-- | yql/essentials/core/facade/yql_facade.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/yql/essentials/core/facade/yql_facade.cpp b/yql/essentials/core/facade/yql_facade.cpp index 3ca85ea29ff..e2f6cc5343b 100644 --- a/yql/essentials/core/facade/yql_facade.cpp +++ b/yql/essentials/core/facade/yql_facade.cpp @@ -2089,7 +2089,7 @@ TTypeAnnotationContextPtr TProgram::BuildTypeAnnotationContext(const TString& us typeAnnotationContext->AddRemoteLayersProvider(alias, provider); } if (GatewaysConfig_) { - typeAnnotationContext->RuntimeSettings = CreateRuntimeSettingsFromProto(GatewaysConfig_->GetRuntimeSettings(), username, Credentials_); + typeAnnotationContext->RuntimeSettings = CreateRuntimeSettingsFromProto(GatewaysConfig_->GetRuntimeSettings(), username, Credentials_, QContext_); } if (UdfIndex_ && UdfIndexPackageSet_) { // setup default versions at the beginning |
