Hello, all Contributors to apache calcite: I am facing a throny issue on calcite-1.38.0, when use the sql following:
```sql``` Select string_10_fun from ( select string_10_fun from ( select string_10_fun from ( select string_10_fun from ( select char_length(string_10) as string_10_fun from table order by double_01 ) ) order by string_10_fun ) order by string_10_fun ) order by string_10_fun ``` At this point, the query executed to Druid generates a result, which column name is string_10_fun, is valued type DruidType.Long, However, in the method where the physical plan is generated, the sort function’s parameter string_10, as the same name as char_length(string_10), is defined as an integer type ( which definition is in core/org/apache/calcite/sql/fun/SqlStdOperatorTable.java). Since Java does not allow automatic conversion from a higher precision type long to a lower type integer, the result returned by Druid(type long) cannot be used as a valid parameter to sort and causing an error. To fix this question, I tried to change the SqlStdOperatorTable.char_length to ReturnTypes.BIGINT_NULLABLE, but it will cause a series of new question, such as function lpad and function road. Both of them are supported to use Type integer as the second parameter but not long. If the result of char_length need to be used as lpad or rpad. It will also causing errors. I was wonder that if there are any solution could help solving this thorny issue. Thanks for your reading!