ClickHouse

Форк
0
/
toColumnTypeName.cpp 
63 строки · 1.7 Кб
1
#include <Functions/IFunction.h>
2
#include <Functions/FunctionFactory.h>
3
#include <DataTypes/DataTypeString.h>
4
#include <Core/Field.h>
5

6

7
namespace DB
8
{
9
namespace
10
{
11

12
/// Returns name of IColumn instance.
13
class FunctionToColumnTypeName : public IFunction
14
{
15
public:
16
    static constexpr auto name = "toColumnTypeName";
17
    static FunctionPtr create(ContextPtr)
18
    {
19
        return std::make_shared<FunctionToColumnTypeName>();
20
    }
21

22
    String getName() const override
23
    {
24
        return name;
25
    }
26

27
    bool useDefaultImplementationForNulls() const override { return false; }
28

29
    bool useDefaultImplementationForNothing() const override { return false; }
30

31
    bool useDefaultImplementationForLowCardinalityColumns() const override { return false; }
32

33
    bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & /*arguments*/) const override { return false; }
34

35
    size_t getNumberOfArguments() const override
36
    {
37
        return 1;
38
    }
39

40
    DataTypePtr getReturnTypeImpl(const DataTypes & /*arguments*/) const override
41
    {
42
        return std::make_shared<DataTypeString>();
43
    }
44

45
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr &, size_t input_rows_count) const override
46
    {
47
        return DataTypeString().createColumnConst(input_rows_count, arguments[0].column->getName());
48
    }
49

50
    ColumnPtr getConstantResultForNonConstArguments(const ColumnsWithTypeAndName & arguments, const DataTypePtr &) const override
51
    {
52
        return DataTypeString().createColumnConst(1, arguments[0].type->createColumn()->getName());
53
    }
54
};
55

56
}
57

58
REGISTER_FUNCTION(ToColumnTypeName)
59
{
60
    factory.registerFunction<FunctionToColumnTypeName>();
61
}
62

63
}
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.