aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Storages/System/StorageSystemUserProcesses.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/StorageSystemUserProcesses.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/StorageSystemUserProcesses.cpp')
-rw-r--r--contrib/clickhouse/src/Storages/System/StorageSystemUserProcesses.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/contrib/clickhouse/src/Storages/System/StorageSystemUserProcesses.cpp b/contrib/clickhouse/src/Storages/System/StorageSystemUserProcesses.cpp
new file mode 100644
index 0000000000..de34fede0a
--- /dev/null
+++ b/contrib/clickhouse/src/Storages/System/StorageSystemUserProcesses.cpp
@@ -0,0 +1,57 @@
+#include <Columns/ColumnArray.h>
+#include <Columns/ColumnsNumber.h>
+#include <Core/Settings.h>
+#include <DataTypes/DataTypeArray.h>
+#include <DataTypes/DataTypeMap.h>
+#include <DataTypes/DataTypeString.h>
+#include <DataTypes/DataTypesNumber.h>
+#include <Interpreters/Context.h>
+#include <Interpreters/ProcessList.h>
+#include <Interpreters/ProfileEventsExt.h>
+#include <Storages/System/StorageSystemUserProcesses.h>
+
+
+namespace DB
+{
+
+NamesAndTypesList StorageSystemUserProcesses::getNamesAndTypes()
+{
+ return {
+ {"user", std::make_shared<DataTypeString>()},
+ {"memory_usage", std::make_shared<DataTypeInt64>()},
+ {"peak_memory_usage", std::make_shared<DataTypeInt64>()},
+ {"ProfileEvents", std::make_shared<DataTypeMap>(std::make_shared<DataTypeString>(), std::make_shared<DataTypeUInt64>())},
+ };
+}
+
+NamesAndAliases StorageSystemUserProcesses::getNamesAndAliases()
+{
+ return {
+ {"ProfileEvents.Names", {std::make_shared<DataTypeArray>(std::make_shared<DataTypeString>())}, "mapKeys(ProfileEvents)"},
+ {"ProfileEvents.Values", {std::make_shared<DataTypeArray>(std::make_shared<DataTypeUInt64>())}, "mapValues(ProfileEvents)"}};
+}
+
+void StorageSystemUserProcesses::fillData(MutableColumns & res_columns, ContextPtr context, const SelectQueryInfo &) const
+{
+ const auto user_info = context->getProcessList().getUserInfo(true);
+
+ for (const auto & [user, info] : user_info)
+ {
+ size_t i = 0;
+
+ res_columns[i++]->insert(user);
+ res_columns[i++]->insert(info.memory_usage);
+ res_columns[i++]->insert(info.peak_memory_usage);
+ {
+ IColumn * column = res_columns[i++].get();
+
+ if (info.profile_counters)
+ ProfileEvents::dumpToMapColumn(*info.profile_counters, column, true);
+ else
+ {
+ column->insertDefault();
+ }
+ }
+ }
+}
+}