提交 59e89442 编写于 作者: A Alexey Arno

dbms: Server: Added version function. [#METR-16386]

上级 ac80e39c
#pragma once
#include <Poco/Net/DNS.h>
#include <Yandex/Revision.h>
#include <math.h>
#include <DB/Core/Defines.h>
#include <DB/IO/WriteBufferFromString.h>
#include <DB/DataTypes/DataTypesNumberFixed.h>
#include <DB/DataTypes/DataTypeString.h>
......@@ -25,6 +25,7 @@
#include <DB/Interpreters/ExpressionActions.h>
#include <statdaemons/ext/range.hpp>
#include <cmath>
namespace DB
{
......@@ -887,5 +888,34 @@ using FunctionIsFinite = FunctionNumericPredicate<IsFiniteImpl>;
using FunctionIsInfinite = FunctionNumericPredicate<IsInfiniteImpl>;
using FunctionIsNaN = FunctionNumericPredicate<IsNaNImpl>;
class FunctionVersion : public IFunction
{
public:
static constexpr auto name = "version";
static IFunction * create(const Context & context) { return new FunctionVersion; }
String getName() const override { return name; }
DataTypePtr getReturnType(const DataTypes & arguments) const override
{
if (!arguments.empty())
throw Exception("Function " + getName() + " must be called without arguments", ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH);
return new DataTypeString;
}
void execute(Block & block, const ColumnNumbers & arguments, size_t result) override
{
static const std::string version = getVersion();
block.getByPosition(result).column = new ColumnConstString(version.length(), version);
}
private:
std::string getVersion() const
{
std::ostringstream os;
os << DBMS_VERSION_MAJOR << "." << DBMS_VERSION_MINOR << "." << Revision::get();
return os.str();
}
};
}
......@@ -338,6 +338,8 @@ void registerFunctionsMiscellaneous(FunctionFactory & factory)
factory.registerFunction<FunctionIsFinite>();
factory.registerFunction<FunctionIsInfinite>();
factory.registerFunction<FunctionIsNaN>();
factory.registerFunction<FunctionVersion>();
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册