mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-25 18:00:51 +00:00
39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
|
#pragma once
|
|||
|
|
|||
|
#include <Poco/SharedPtr.h>
|
|||
|
|
|||
|
#include <DB/Storages/IStorage.h>
|
|||
|
#include <DB/Parsers/ASTFunction.h>
|
|||
|
#include <DB/Interpreters/Context.h>
|
|||
|
|
|||
|
namespace DB
|
|||
|
{
|
|||
|
|
|||
|
/** Интерфейс для табличных функций.
|
|||
|
*
|
|||
|
* Табличные функции не имеют отношения к другим функциям.
|
|||
|
* Табличная функция может быть указана в секции FROM вместо [db.]table
|
|||
|
* Табличная функция возвращает временный объект StoragePtr, который используется для выполнения запроса.
|
|||
|
*
|
|||
|
* Пример:
|
|||
|
* SELECT count() FROM remote('mtlog01-01-1', merge, hits)
|
|||
|
* - пойти на mtlog01-01-1, в БД merge, таблицу hits.
|
|||
|
*/
|
|||
|
|
|||
|
class ITableFunction
|
|||
|
{
|
|||
|
public:
|
|||
|
/// Получить основное имя функции.
|
|||
|
virtual std::string getName() const = 0;
|
|||
|
|
|||
|
/// Создать storage в соответствии с запросом
|
|||
|
virtual StoragePtr execute(ASTPtr ast_function, Context & context) const = 0;
|
|||
|
|
|||
|
virtual ~ITableFunction() {};
|
|||
|
};
|
|||
|
|
|||
|
typedef SharedPtr<ITableFunction> TableFunctionPtr;
|
|||
|
|
|||
|
|
|||
|
}
|