ClickHouse

Форк
0
/
dumpColumnStructure.cpp 
62 строки · 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
/// Dump the structure of type and column.
13
class FunctionDumpColumnStructure : public IFunction
14
{
15
public:
16
    static constexpr auto name = "dumpColumnStructure";
17
    static FunctionPtr create(ContextPtr)
18
    {
19
        return std::make_shared<FunctionDumpColumnStructure>();
20
    }
21

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

27
    bool useDefaultImplementationForNulls() const override { return false; }
28
    bool useDefaultImplementationForNothing() const override { return false; }
29
    bool useDefaultImplementationForLowCardinalityColumns() const override { return false; }
30
    bool useDefaultImplementationForSparseColumns() const override { return false; }
31

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

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

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

44
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr &, size_t input_rows_count) const override
45
    {
46
        const auto & elem = arguments[0];
47

48
        /// Note that the result is not a constant, because it contains columns size.
49

50
        return DataTypeString().createColumnConst(input_rows_count,
51
                elem.type->getName() + ", " + elem.column->dumpStructure())->convertToFullColumnIfConst();
52
    }
53
};
54

55
}
56

57
REGISTER_FUNCTION(DumpColumnStructure)
58
{
59
    factory.registerFunction<FunctionDumpColumnStructure>();
60
}
61

62
}
63

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

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

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

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