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

const ColumnsWithTypeAndName & x,
        const ColumnsWithTypeAndName & y,
        size_t tuple_size,
        size_t input_rows_count) const
    {
        Block tmp_block;
        
        
        for (size_t i = 0; i < tuple_size; ++i)
        {
            tmp_block.insert(x[i]);
            tmp_block.insert(y[i]);
            tmp_block.insert(ColumnWithTypeAndName()); 
            if (i + 1 != tuple_size)
            {
                auto impl_head = func_compare_head->build({x[i], y[i]});
                tmp_block.getByPosition(i * 4 + 2).type = impl_head->getReturnType();
                impl_head->execute(tmp_block, {i * 4, i * 4 + 1}, i * 4 + 2, input_rows_count);
                tmp_block.insert(ColumnWithTypeAndName()); 
                auto impl_equals = func_equals->build({x[i], y[i]});
                tmp_block.getByPosition(i * 4 + 3).type = impl_equals->getReturnType();
                impl_equals->execute(tmp_block, {i * 4, i * 4 + 1}, i * 4 + 3, input_rows_count);
            }
            else
            {
                auto impl_tail = func_compare_tail->build({x[i], y[i]});
                tmp_block.getByPosition(i * 4 + 2).type = impl_tail->getReturnType();
                impl_tail->execute(tmp_block, {i * 4, i * 4 + 1}, i * 4 + 2, input_rows_count);
            }
        }