2014-12-30 12:58:02 +00:00
|
|
|
#pragma once
|
|
|
|
|
2020-12-09 11:14:40 +00:00
|
|
|
#include <AggregateFunctions/IAggregateFunction.h>
|
|
|
|
#include <DataTypes/IDataType.h>
|
2017-04-01 09:19:00 +00:00
|
|
|
#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>
|
2014-12-30 12:58:02 +00:00
|
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
2020-12-09 11:14:40 +00:00
|
|
|
class ASTFunction;
|
|
|
|
|
2014-12-30 12:58:02 +00:00
|
|
|
struct AggregateDescription
|
|
|
|
{
|
2017-04-01 07:20:54 +00:00
|
|
|
AggregateFunctionPtr function;
|
2017-06-02 21:37:28 +00:00
|
|
|
Array parameters; /// Parameters of the (parametric) aggregate function.
|
2017-04-01 07:20:54 +00:00
|
|
|
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-06-23 16:06:56 +00:00
|
|
|
|
2020-07-07 19:51:32 +00:00
|
|
|
void explain(WriteBuffer & out, size_t indent) const; /// Get description for EXPLAIN query.
|
2014-12-30 12:58:02 +00:00
|
|
|
};
|
|
|
|
|
2016-05-28 10:35:44 +00:00
|
|
|
using AggregateDescriptions = std::vector<AggregateDescription>;
|
2014-12-30 12:58:02 +00:00
|
|
|
|
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>;
|
|
|
|
|
2014-12-30 12:58:02 +00:00
|
|
|
}
|