1#include <Databases/IDatabase.h>
2#include <DataTypes/DataTypeString.h>
3#include <Interpreters/Context.h>
4#include <Storages/System/StorageSystemDatabases.h>
5
6
7namespace DB
8{
9
10NamesAndTypesList StorageSystemDatabases::getNamesAndTypes()
11{
12 return {
13 {"name", std::make_shared<DataTypeString>()},
14 {"engine", std::make_shared<DataTypeString>()},
15 {"data_path", std::make_shared<DataTypeString>()},
16 {"metadata_path", std::make_shared<DataTypeString>()},
17 };
18}
19
20void StorageSystemDatabases::fillData(MutableColumns & res_columns, const Context & context, const SelectQueryInfo &) const
21{
22 auto databases = context.getDatabases();
23 for (const auto & database : databases)
24 {
25 if (context.hasDatabaseAccessRights(database.first))
26 {
27 res_columns[0]->insert(database.first);
28 res_columns[1]->insert(database.second->getEngineName());
29 res_columns[2]->insert(context.getPath() + database.second->getDataPath());
30 res_columns[3]->insert(database.second->getMetadataPath());
31 }
32 }
33}
34
35}
36