#pragma once #include #include #include namespace DB { template class DataTypeNumber final : public DataTypeNumberBase { bool equals(const IDataType & rhs) const override { return typeid(rhs) == typeid(*this); } bool canBeUsedAsVersion() const override { return true; } bool isSummable() const override { return true; } bool canBeUsedInBitOperations() const override { return true; } bool canBeUsedInBooleanContext() const override { return true; } bool canBeInsideNullable() const override { return true; } bool canBePromoted() const override { return true; } DataTypePtr promoteNumericType() const override { using PromotedType = DataTypeNumber>; return std::make_shared(); } }; using DataTypeUInt8 = DataTypeNumber; using DataTypeUInt16 = DataTypeNumber; using DataTypeUInt32 = DataTypeNumber; using DataTypeUInt64 = DataTypeNumber; using DataTypeInt8 = DataTypeNumber; using DataTypeInt16 = DataTypeNumber; using DataTypeInt32 = DataTypeNumber; using DataTypeInt64 = DataTypeNumber; using DataTypeFloat32 = DataTypeNumber; using DataTypeFloat64 = DataTypeNumber; }