caicancai commented on code in PR #3721: URL: https://github.com/apache/calcite/pull/3721#discussion_r1579547887
########## core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java: ########## @@ -1163,6 +1163,52 @@ private static RelDataType mapReturnType(SqlOperatorBinding opBinding) { false); } + @SuppressWarnings("argument.type.incompatible") + private static RelDataType mapKeyReturnType(SqlOperatorBinding opBinding) { + List<RelDataType> operandType = new ArrayList<>(); + + operandType.add(opBinding.collectOperandTypes().get(0).getKeyType()); + operandType.add(opBinding.collectOperandTypes().get(0).getValueType()); + Pair<@Nullable RelDataType, @Nullable RelDataType> type = + getComponentTypes( + opBinding.getTypeFactory(), operandType); + + requireNonNull(type.left, () -> "type left of " + type.left); + requireNonNull(type.right, () -> "type right of " + type.right); + if (type.left.getSqlTypeName() != SqlTypeName.UNKNOWN + && type.right.getSqlTypeName() != SqlTypeName.UNKNOWN) { + SqlValidatorUtil.adjustTypeForMapFunctionConstructor(type, opBinding); Review Comment: @mihaibudiu It seems that many functions have this situation, such as map_concat and map_entries. When the key/value types in the map are not equal, all keytype/valuetype will be converted to the largest keytype by default. I just tested it briefly and did not test all map functions. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@calcite.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org