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

executeTuple(block, result, col_with_type_and_name_left, col_with_type_and_name_right, input_rows_count);
        }
        else if (left_is_string && right_is_string && executeString(block, result, col_left_untyped, col_right_untyped))
        {
        }
        else if (executeWithConstString(
                block, result, col_left_untyped, col_right_untyped,
                left_type, right_type,
                input_rows_count))
        {
        }
        else if (isColumnedAsDecimal(left_type) || isColumnedAsDecimal(right_type))
        {
            
            if (!allowDecimalComparison(left_type, right_type) && !date_and_datetime)
                throw Exception("No operation " + getName() + " between " + left_type->getName() + " and " + right_type->getName(),
                    ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT);
            executeDecimal(block, result, col_with_type_and_name_left, col_with_type_and_name_right);
        }
        else if (left_type->equals(*right_type))
        {
            executeGenericIdenticalTypes(block, result, col_left_untyped, col_right_untyped);
        }
        else
        {
            executeGeneric(block, result, col_with_type_and_name_left, col_with_type_and_name_right);
        }
    }
#if USE_EMBEDDED_COMPILER
    bool isCompilableImpl(const DataTypes & types) const override