From 4be34337c8a50e1aa765120ccdfc9d90c43b0a3a Mon Sep 17 00:00:00 2001 From: Nikolay Shumkov Date: Thu, 3 Oct 2024 14:42:51 +0300 Subject: [PATCH] Fixes --- .../yql/core/pg_settings/guc_settings.cpp | 25 +++++++++++++++++++ .../yql/core/pg_settings/guc_settings.h | 1 + 2 files changed, 26 insertions(+) diff --git a/ydb/library/yql/core/pg_settings/guc_settings.cpp b/ydb/library/yql/core/pg_settings/guc_settings.cpp index 011056c78099..6b38398b7c26 100644 --- a/ydb/library/yql/core/pg_settings/guc_settings.cpp +++ b/ydb/library/yql/core/pg_settings/guc_settings.cpp @@ -50,6 +50,31 @@ void TGUCSettings::ExportToJson(NJson::TJsonValue& value) const { value.InsertValue("guc_settings", std::move(gucSettings)); } +void TGUCSettings::ImportFromJson(const NJson::TJsonValue& value) +{ + Settings_.clear(); + RollbackSettings_.clear(); + SessionSettings_.clear(); + if (value.Has("guc_settings")) { + auto gucSettings = value["guc_settings"]; + if (gucSettings.Has("settings")) { + for (const auto& [settingName, settingValue] : gucSettings["settings"].GetMapSafe()) { + Settings_[settingName] = settingValue.GetStringSafe(); + } + } + if (gucSettings.Has("rollback_settings")) { + for (const auto& [settingName, settingValue] : gucSettings["rollback_settings"].GetMapSafe()) { + RollbackSettings_[settingName] = settingValue.GetStringSafe(); + } + } + if (gucSettings.Has("session_settings")) { + for (const auto& [settingName, settingValue] : gucSettings["session_settings"].GetMapSafe()) { + SessionSettings_[settingName] = settingValue.GetStringSafe(); + } + } + } +} + TString TGUCSettings::SerializeToString() const { NJson::TJsonValue gucJson; this->ExportToJson(gucJson); diff --git a/ydb/library/yql/core/pg_settings/guc_settings.h b/ydb/library/yql/core/pg_settings/guc_settings.h index 3ce055f2d093..8840274a84d2 100644 --- a/ydb/library/yql/core/pg_settings/guc_settings.h +++ b/ydb/library/yql/core/pg_settings/guc_settings.h @@ -19,6 +19,7 @@ struct TGUCSettings { void Commit(); void RollBack(); void ExportToJson(NJson::TJsonValue& value) const; + void ImportFromJson(const NJson::TJsonValue& value); TString SerializeToString() const; size_t GetHash() const noexcept;