aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp
diff options
context:
space:
mode:
authorvitalyisaev <vitalyisaev@ydb.tech>2023-11-14 09:58:56 +0300
committervitalyisaev <vitalyisaev@ydb.tech>2023-11-14 10:20:20 +0300
commitc2b2dfd9827a400a8495e172a56343462e3ceb82 (patch)
treecd4e4f597d01bede4c82dffeb2d780d0a9046bd0 /contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp
parentd4ae8f119e67808cb0cf776ba6e0cf95296f2df7 (diff)
downloadydb-c2b2dfd9827a400a8495e172a56343462e3ceb82.tar.gz
YQ Connector: move tests from yql to ydb (OSS)
Перенос папки с тестами на Коннектор из папки yql в папку ydb (синхронизируется с github).
Diffstat (limited to 'contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp')
-rw-r--r--contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp b/contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp
new file mode 100644
index 0000000000..dcb54eac0a
--- /dev/null
+++ b/contrib/clickhouse/src/Storages/System/StorageSystemSettings.cpp
@@ -0,0 +1,79 @@
+#include <Storages/System/StorageSystemSettings.h>
+#include <DataTypes/DataTypeString.h>
+#include <DataTypes/DataTypeNullable.h>
+#include <DataTypes/DataTypesNumber.h>
+#include <Interpreters/Context.h>
+#include <Access/SettingsConstraintsAndProfileIDs.h>
+
+
+namespace DB
+{
+NamesAndTypesList StorageSystemSettings::getNamesAndTypes()
+{
+ return {
+ {"name", std::make_shared<DataTypeString>()},
+ {"value", std::make_shared<DataTypeString>()},
+ {"changed", std::make_shared<DataTypeUInt8>()},
+ {"description", std::make_shared<DataTypeString>()},
+ {"min", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeString>())},
+ {"max", std::make_shared<DataTypeNullable>(std::make_shared<DataTypeString>())},
+ {"readonly", std::make_shared<DataTypeUInt8>()},
+ {"type", std::make_shared<DataTypeString>()},
+ {"default", std::make_shared<DataTypeString>()},
+ {"alias_for", std::make_shared<DataTypeString>()},
+ {"is_obsolete", std::make_shared<DataTypeUInt8>()},
+ };
+}
+
+void StorageSystemSettings::fillData(MutableColumns & res_columns, ContextPtr context, const SelectQueryInfo &) const
+{
+ const Settings & settings = context->getSettingsRef();
+ auto constraints_and_current_profiles = context->getSettingsConstraintsAndCurrentProfiles();
+ const auto & constraints = constraints_and_current_profiles->constraints;
+
+ const auto fill_data_for_setting = [&](std::string_view setting_name, const auto & setting)
+ {
+ res_columns[1]->insert(setting.getValueString());
+ res_columns[2]->insert(setting.isValueChanged());
+ res_columns[3]->insert(setting.getDescription());
+
+ Field min, max;
+ SettingConstraintWritability writability = SettingConstraintWritability::WRITABLE;
+ constraints.get(settings, setting_name, min, max, writability);
+
+ /// These two columns can accept strings only.
+ if (!min.isNull())
+ min = Settings::valueToStringUtil(setting_name, min);
+ if (!max.isNull())
+ max = Settings::valueToStringUtil(setting_name, max);
+
+ res_columns[4]->insert(min);
+ res_columns[5]->insert(max);
+ res_columns[6]->insert(writability == SettingConstraintWritability::CONST);
+ res_columns[7]->insert(setting.getTypeName());
+ res_columns[8]->insert(setting.getDefaultValueString());
+ res_columns[10]->insert(setting.isObsolete());
+ };
+
+ const auto & settings_to_aliases = Settings::Traits::settingsToAliases();
+ for (const auto & setting : settings.all())
+ {
+ const auto & setting_name = setting.getName();
+ res_columns[0]->insert(setting_name);
+
+ fill_data_for_setting(setting_name, setting);
+ res_columns[9]->insert("");
+
+ if (auto it = settings_to_aliases.find(setting_name); it != settings_to_aliases.end())
+ {
+ for (const auto alias : it->second)
+ {
+ res_columns[0]->insert(alias);
+ fill_data_for_setting(alias, setting);
+ res_columns[9]->insert(setting_name);
+ }
+ }
+ }
+}
+
+}