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

{
                        ResultDataType type = decimalResultType(left, right, is_multiply, is_division);
                        typename ResultDataType::FieldType scale_a = type.scaleFactorFor(left, is_multiply);
                        typename ResultDataType::FieldType scale_b = type.scaleFactorFor(right, is_multiply || is_division);
                        if constexpr (IsDataTypeDecimal<RightDataType> && is_division)
                            scale_a = right.getScaleMultiplier();
                        auto res = OpImpl::constantConstant(col_left->template getValue<T0>(), col_right->template getValue<T1>(),
                                                                scale_a, scale_b, check_decimal_overflow);
                        block.getByPosition(result).column =
                            ResultDataType(type.getPrecision(), type.getScale()).createColumnConst(
                                col_left->size(), toField(res, type.getScale()));
                    }
                    else
                    {
                        auto res = OpImpl::constantConstant(col_left->template getValue<T0>(), col_right->template getValue<T1>());
                        block.getByPosition(result).column = ResultDataType().createColumnConst(col_left->size(), toField(res));
                    }
                    return true;
                }
            }
            typename ColVecResult::MutablePtr col_res = nullptr;
            if constexpr (result_is_decimal)
            {
                ResultDataType type = decimalResultType(left, right, is_multiply, is_division);
                col_res = ColVecResult::create(0, type.getScale());
            }
            else
                col_res = ColVecResult::create();
            auto & vec_res = col_res->getData();
            vec_res.resize(block.rows());