#if defined(__ELF__) && !defined(__FreeBSD__) #include #include #include #include #include namespace DB { namespace { /** buildId() - returns the compiler build id of the running binary. */ class FunctionBuildId : public IFunction { public: static constexpr auto name = "buildId"; static FunctionPtr create(const Context &) { return std::make_shared(); } String getName() const override { return name; } size_t getNumberOfArguments() const override { return 0; } DataTypePtr getReturnTypeImpl(const DataTypes & /*arguments*/) const override { return std::make_shared(); } ColumnPtr executeImpl(const ColumnsWithTypeAndName &, const DataTypePtr &, size_t input_rows_count) const override { return DataTypeString().createColumnConst(input_rows_count, SymbolIndex::instance()->getBuildIDHex()); } }; } void registerFunctionBuildId(FunctionFactory & factory) { factory.registerFunction(); } } #else namespace DB { class FunctionFactory; void registerFunctionBuildId(FunctionFactory &) {} } #endif