[jira] [Created] (FLINK-14409) MapType doesn't accept any subclass of java.util.Map

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-14409) MapType doesn't accept any subclass of java.util.Map

Shang Yuanchun (Jira)
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)