ClickHouse

Форк
0
40 строк · 1.1 Кб
1
#include <DataTypes/DataTypesNumber.h>
2
#include <Functions/FunctionFactory.h>
3
#include <Functions/FunctionHelpers.h>
4
#include <Functions/IFunction.h>
5

6
#include <base/getThreadId.h>
7

8
namespace DB
9
{
10
namespace
11
{
12
    class FunctionTid : public IFunction
13
    {
14
    public:
15
        static constexpr auto name = "tid";
16
        static FunctionPtr create(ContextPtr) { return std::make_shared<FunctionTid>(); }
17

18
        String getName() const override { return name; }
19

20
        size_t getNumberOfArguments() const override { return 0; }
21

22
        DataTypePtr getReturnTypeImpl(const DataTypes &) const override { return std::make_shared<DataTypeUInt64>(); }
23

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

26
        ColumnPtr executeImpl(const ColumnsWithTypeAndName &, const DataTypePtr &, size_t input_rows_count) const override
27
        {
28
            auto current_tid = getThreadId();
29
            return DataTypeUInt64().createColumnConst(input_rows_count, current_tid);
30
        }
31
    };
32

33
}
34

35
REGISTER_FUNCTION(Tid)
36
{
37
    factory.registerFunction<FunctionTid>();
38
}
39

40
}
41

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

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

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

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