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

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