ClickHouse/src/Interpreters/AggregateDescription.h

58 lines
1.4 KiB
C++
Raw Normal View History

#pragma once
2020-12-09 11:14:40 +00:00
#include <AggregateFunctions/IAggregateFunction.h>
#include <DataTypes/IDataType.h>
#include <Core/ColumnNumbers.h>
#include <Core/Names.h>
2020-12-09 11:14:40 +00:00
#include <Core/SortDescription.h>
#include <Parsers/IAST_fwd.h>
namespace DB
{
2020-12-09 11:14:40 +00:00
class ASTFunction;
struct AggregateDescription
{
AggregateFunctionPtr function;
2017-06-02 21:37:28 +00:00
Array parameters; /// Parameters of the (parametric) aggregate function.
ColumnNumbers arguments;
2017-06-02 21:37:28 +00:00
Names argument_names; /// used if no `arguments` are specified.
String column_name; /// What name to use for a column with aggregate function values
2020-07-07 19:51:32 +00:00
void explain(WriteBuffer & out, size_t indent) const; /// Get description for EXPLAIN query.
};
using AggregateDescriptions = std::vector<AggregateDescription>;
2020-12-09 11:14:40 +00:00
struct WindowFunctionDescription
{
std::string window_name;
std::string column_name;
const IAST * wrapper_node;
const ASTFunction * function_node;
AggregateFunctionPtr aggregate_function;
Array function_parameters;
DataTypes argument_types;
Names argument_names;
std::string dump() const;
};
struct WindowDescription
{
std::string window_name;
// Always ASC for now.
std::vector<std::string> partition_by;
std::vector<std::string> order_by;
// No frame info as of yet.
};
using WindowFunctionDescriptions = std::vector<WindowFunctionDescription>;
using WindowDescriptions = std::unordered_map<std::string, WindowDescription>;
}