#pragma once #include #include #include #include #include #include #include #include #include #include namespace DB { using Poco::SharedPtr; /// имя функции -> функция typedef std::map Functions; /// имя таблицы -> таблица typedef std::map Tables; /// имя БД -> таблицы typedef std::map Databases; /** Набор известных объектов, которые могут быть использованы в запросе. */ struct Context { String path; /// Путь к директории с данными, со слешем на конце. SharedPtr databases; /// Список БД и таблиц в них. String current_database; /// Текущая БД. SharedPtr functions; /// Обычные функции. AggregateFunctionFactoryPtr aggregate_function_factory; /// Агрегатные функции. DataTypeFactoryPtr data_type_factory; /// Типы данных. StorageFactoryPtr storage_factory; /// Движки таблиц. NamesAndTypesList columns; /// Столбцы текущей обрабатываемой таблицы. SharedPtr mutex; /// Для доступа и модификации разделяемых объектов. Context() : databases(new Databases), functions(new Functions), mutex(new Poco::FastMutex) {} }; }