提交 651a3128 编写于 作者: A Alexey Milovidov

Added ProfileEvent for table function executions [#CLICKHOUSE-3615]

上级 eab90633
......@@ -79,7 +79,7 @@ list (APPEND dbms_headers
src/AggregateFunctions/FactoryHelpers.h
src/AggregateFunctions/parseAggregateFunctionParameters.h)
list (APPEND dbms_sources src/TableFunctions/TableFunctionFactory.cpp)
list (APPEND dbms_sources src/TableFunctions/ITableFunction.cpp src/TableFunctions/TableFunctionFactory.cpp)
list (APPEND dbms_headers src/TableFunctions/ITableFunction.h src/TableFunctions/TableFunctionFactory.h)
add_library(clickhouse_common_io ${SPLIT_SHARED} ${clickhouse_common_io_headers} ${clickhouse_common_io_sources})
......
......@@ -30,6 +30,7 @@
M(ArenaAllocChunks) \
M(ArenaAllocBytes) \
M(FunctionExecute) \
M(TableFunctionExecute) \
M(MarkCacheHits) \
M(MarkCacheMisses) \
M(CreatedReadBufferOrdinary) \
......
......@@ -1036,7 +1036,7 @@ void Context::setDefaultFormat(const String & name)
default_format = name;
}
const Macros& Context::getMacros() const
const Macros & Context::getMacros() const
{
return shared->macros;
}
......
include(${ClickHouse_SOURCE_DIR}/cmake/dbms_glob_sources.cmake)
add_headers_and_sources(clickhouse_table_functions .)
list(REMOVE_ITEM clickhouse_table_functions_sources TableFunctionFactory.cpp)
list(REMOVE_ITEM clickhouse_table_functions_sources ITableFunction.cpp TableFunctionFactory.cpp)
list(REMOVE_ITEM clickhouse_table_functions_headers ITableFunction.h TableFunctionFactory.h)
add_library(clickhouse_table_functions ${clickhouse_table_functions_sources})
......
#include <TableFunctions/ITableFunction.h>
#include <Common/ProfileEvents.h>
namespace ProfileEvents
{
extern const Event TableFunctionExecute;
}
namespace DB
{
StoragePtr ITableFunction::execute(const ASTPtr & ast_function, const Context & context) const
{
ProfileEvents::increment(ProfileEvents::TableFunctionExecute);
return executeImpl(ast_function, context);
}
}
......@@ -31,10 +31,13 @@ public:
/// Get the main function name.
virtual std::string getName() const = 0;
/// Create storage according to the query
virtual StoragePtr execute(const ASTPtr & ast_function, const Context & context) const = 0;
/// Create storage according to the query.
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const;
virtual ~ITableFunction() {};
private:
virtual StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const = 0;
};
using TableFunctionPtr = std::shared_ptr<ITableFunction>;
......
......@@ -16,7 +16,7 @@ namespace ErrorCodes
}
StoragePtr TableFunctionCatBoostPool::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionCatBoostPool::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
ASTs & args_func = typeid_cast<ASTFunction &>(*ast_function).children;
......
......@@ -14,7 +14,8 @@ class TableFunctionCatBoostPool : public ITableFunction
public:
static constexpr auto name = "catBoostPool";
std::string getName() const override { return name; }
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
};
}
......@@ -55,7 +55,7 @@ static NamesAndTypesList chooseColumns(const String & source_database, const Str
}
StoragePtr TableFunctionMerge::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionMerge::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
ASTs & args_func = typeid_cast<ASTFunction &>(*ast_function).children;
......
......@@ -15,7 +15,8 @@ class TableFunctionMerge : public ITableFunction
public:
static constexpr auto name = "merge";
std::string getName() const override { return name; }
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
};
......
......@@ -80,7 +80,7 @@ DataTypePtr getDataType(const String & mysql_data_type, bool is_unsigned, size_t
}
StoragePtr TableFunctionMySQL::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionMySQL::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
const ASTFunction & args_func = typeid_cast<const ASTFunction &>(*ast_function);
......
......@@ -18,7 +18,8 @@ public:
{
return name;
}
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
};
}
......@@ -18,7 +18,7 @@ namespace ErrorCodes
}
StoragePtr TableFunctionNumbers::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionNumbers::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
ASTs & args_func = typeid_cast<ASTFunction &>(*ast_function).children;
......
......@@ -15,7 +15,8 @@ class TableFunctionNumbers : public ITableFunction
public:
static constexpr auto name = "numbers";
std::string getName() const override { return name; }
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
};
......
......@@ -59,7 +59,7 @@ DataTypePtr getDataType(SQLSMALLINT type)
}
}
StoragePtr TableFunctionODBC::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionODBC::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
const ASTFunction & args_func = typeid_cast<const ASTFunction &>(*ast_function);
......
......@@ -20,7 +20,8 @@ public:
{
return name;
}
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
};
}
......
......@@ -181,7 +181,7 @@ static std::vector<String> parseDescription(const String & description, size_t l
}
StoragePtr TableFunctionRemote::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionRemote::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
ASTs & args_func = typeid_cast<ASTFunction &>(*ast_function).children;
......
......@@ -16,14 +16,12 @@ namespace DB
class TableFunctionRemote : public ITableFunction
{
public:
explicit TableFunctionRemote(const std::string & name_ = "remote");
std::string getName() const override { return name; }
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
std::string name;
bool is_cluster_function;
......
......@@ -22,7 +22,7 @@ namespace ErrorCodes
extern const int BAD_ARGUMENTS;
}
StoragePtr TableFunctionShardByHash::execute(const ASTPtr & ast_function, const Context & context) const
StoragePtr TableFunctionShardByHash::executeImpl(const ASTPtr & ast_function, const Context & context) const
{
ASTs & args_func = typeid_cast<ASTFunction &>(*ast_function).children;
......
......@@ -16,7 +16,8 @@ class TableFunctionShardByHash : public ITableFunction
public:
static constexpr auto name = "shardByHash";
std::string getName() const override { return name; }
StoragePtr execute(const ASTPtr & ast_function, const Context & context) const override;
private:
StoragePtr executeImpl(const ASTPtr & ast_function, const Context & context) const override;
};
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册