ClickHouse
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
8namespace DB9{
10namespace
11{
12class FunctionTid : public IFunction13{14public:15static constexpr auto name = "tid";16static FunctionPtr create(ContextPtr) { return std::make_shared<FunctionTid>(); }17
18String getName() const override { return name; }19
20size_t getNumberOfArguments() const override { return 0; }21
22DataTypePtr getReturnTypeImpl(const DataTypes &) const override { return std::make_shared<DataTypeUInt64>(); }23
24bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & /*arguments*/) const override { return false; }25
26ColumnPtr executeImpl(const ColumnsWithTypeAndName &, const DataTypePtr &, size_t input_rows_count) const override27{28auto current_tid = getThreadId();29return DataTypeUInt64().createColumnConst(input_rows_count, current_tid);30}31};32
33}
34
35REGISTER_FUNCTION(Tid)36{
37factory.registerFunction<FunctionTid>();38}
39
40}
41