1#include <AggregateFunctions/AggregateFunctionFactory.h>
2#include <AggregateFunctions/HelpersMinMaxAny.h>
3#include <AggregateFunctions/FactoryHelpers.h>
4#include "registerAggregateFunctions.h"
5
6
7namespace DB
8{
9
10namespace
11{
12
13AggregateFunctionPtr createAggregateFunctionAny(const std::string & name, const DataTypes & argument_types, const Array & parameters)
14{
15 return AggregateFunctionPtr(createAggregateFunctionSingleValue<AggregateFunctionsSingleValue, AggregateFunctionAnyData>(name, argument_types, parameters));
16}
17
18AggregateFunctionPtr createAggregateFunctionAnyLast(const std::string & name, const DataTypes & argument_types, const Array & parameters)
19{
20 return AggregateFunctionPtr(createAggregateFunctionSingleValue<AggregateFunctionsSingleValue, AggregateFunctionAnyLastData>(name, argument_types, parameters));
21}
22
23AggregateFunctionPtr createAggregateFunctionAnyHeavy(const std::string & name, const DataTypes & argument_types, const Array & parameters)
24{
25 return AggregateFunctionPtr(createAggregateFunctionSingleValue<AggregateFunctionsSingleValue, AggregateFunctionAnyHeavyData>(name, argument_types, parameters));
26}
27
28AggregateFunctionPtr createAggregateFunctionMin(const std::string & name, const DataTypes & argument_types, const Array & parameters)
29{
30 return AggregateFunctionPtr(createAggregateFunctionSingleValue<AggregateFunctionsSingleValue, AggregateFunctionMinData>(name, argument_types, parameters));
31}
32
33AggregateFunctionPtr createAggregateFunctionMax(const std::string & name, const DataTypes & argument_types, const Array & parameters)
34{
35 return AggregateFunctionPtr(createAggregateFunctionSingleValue<AggregateFunctionsSingleValue, AggregateFunctionMaxData>(name, argument_types, parameters));
36}
37
38AggregateFunctionPtr createAggregateFunctionArgMin(const std::string & name, const DataTypes & argument_types, const Array & parameters)
39{
40 return AggregateFunctionPtr(createAggregateFunctionArgMinMax<AggregateFunctionMinData>(name, argument_types, parameters));
41}
42
43AggregateFunctionPtr createAggregateFunctionArgMax(const std::string & name, const DataTypes & argument_types, const Array & parameters)
44{
45 return AggregateFunctionPtr(createAggregateFunctionArgMinMax<AggregateFunctionMaxData>(name, argument_types, parameters));
46}
47
48}
49
50void registerAggregateFunctionsMinMaxAny(AggregateFunctionFactory & factory)
51{
52 factory.registerFunction("any", createAggregateFunctionAny);
53 factory.registerFunction("anyLast", createAggregateFunctionAnyLast);
54 factory.registerFunction("anyHeavy", createAggregateFunctionAnyHeavy);
55 factory.registerFunction("min", createAggregateFunctionMin, AggregateFunctionFactory::CaseInsensitive);
56 factory.registerFunction("max", createAggregateFunctionMax, AggregateFunctionFactory::CaseInsensitive);
57 factory.registerFunction("argMin", createAggregateFunctionArgMin);
58 factory.registerFunction("argMax", createAggregateFunctionArgMax);
59}
60
61}
62