diff --git a/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java b/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java index 7d0a86bc4cae2..54358d678a96a 100644 --- a/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java +++ b/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java @@ -127,6 +127,12 @@ private static Object fixValue(TypeSignature signature, Object value) if (signature.isVarcharEnum()) { return String.class.cast(value); } + if (signature.isLongEnum()) { + if (value instanceof String) { + return Long.parseLong((String) value); + } + return ((Number) value).longValue(); + } switch (signature.getBase()) { case BIGINT: if (value instanceof String) { diff --git a/presto-tests/src/test/java/com/facebook/presto/tests/TestEnums.java b/presto-tests/src/test/java/com/facebook/presto/tests/TestEnums.java index 845a1e8fe787a..30fbbcb2317d9 100644 --- a/presto-tests/src/test/java/com/facebook/presto/tests/TestEnums.java +++ b/presto-tests/src/test/java/com/facebook/presto/tests/TestEnums.java @@ -111,6 +111,10 @@ public void testEnumLiterals() "SELECT test.enum.testEnum.TEST, test.enum.testEnum.TEST2, test.enum.testEnum.TEST3, array[test.enum.testEnum.TEST4]", singletonList(ImmutableList.of("\"}\"", "", " ", ImmutableList.of(")))\"\"")))); + assertQueryResultUnordered( + "SELECT MAP(ARRAY[test.enum.mood.HAPPY], ARRAY[1])", + singletonList(ImmutableList.of(ImmutableMap.of(0L, 1)))); + assertQueryFails("SELECT test.enum.mood.hello", ".*No key 'HELLO' in enum 'test.enum.mood'"); }