Jark Wu created FLINK-14409: ------------------------------- Summary: MapType doesn't accept any subclass of java.util.Map Key: FLINK-14409 URL: https://issues.apache.org/jira/browse/FLINK-14409 Project: Flink Issue Type: Bug Reporter: Jark Wu
Currently the conversion class of MapType is {{java.util.Map}}, but {{java.util.Map}} is an interface not a concrete class. So when verifying an instance of {{HashMap}} for MapType, it fails. For example: {code:java} Map<String, Integer> map = new HashMap<>(); map.put("key1", 1); map.put("key2", 2); map.put("key3", 3); assertEquals( "{key1=1, key2=2, key3=3}", new ValueLiteralExpression( map, DataTypes.MAP(DataTypes.STRING(), DataTypes.INT())) .toString()); {code} throws exception: {code} org.apache.flink.table.api.ValidationException: Data type 'MAP<STRING, INT>' does not support a conversion from class 'java.util.HashMap'. at org.apache.flink.table.expressions.ValueLiteralExpression.validateValueDataType(ValueLiteralExpression.java:236) at org.apache.flink.table.expressions.ValueLiteralExpression.<init>(ValueLiteralExpression.java:66) {code} It's easy to fix this by considering whether it's a subclass of Map. But I'm wondering what the default conversion class should be? -- This message was sent by Atlassian Jira (v8.3.4#803005)