```
SET compile_expressions = 1
SELECT GREATEST(2,0)
```

{
        if constexpr (OverBigInt<T> || OverBigInt<U>)
        {
            if constexpr (IsDecimalNumber<T>)
                return applyScaled<scale_left>(a.value, b, scale);
            else if constexpr (IsDecimalNumber<U>)
                return applyScaled<scale_left>(a, b.value, scale);
            else if constexpr (std::is_same_v<T, UInt8>)
                return applyScaled<scale_left>(UInt16(a), b, scale);
            else if constexpr (std::is_same_v<U, UInt8>)
                return applyScaled<scale_left>(a, UInt16(b), scale);
            else
                return applyNativeScaled<scale_left>(static_cast<NativeResultType>(a), static_cast<NativeResultType>(b), scale);
        }
        else
            return applyNativeScaled<scale_left>(a, b, scale);
    }
    template <typename T, typename U>
    static NativeResultType applyScaledDiv(const T & a, const U & b, NativeResultType scale)