diff --git a/presto-main/src/main/java/com/facebook/presto/type/UuidOperators.java b/presto-main/src/main/java/com/facebook/presto/type/UuidOperators.java index e81d14bcc6339..d7236a659ccfe 100644 --- a/presto-main/src/main/java/com/facebook/presto/type/UuidOperators.java +++ b/presto-main/src/main/java/com/facebook/presto/type/UuidOperators.java @@ -199,7 +199,7 @@ public static boolean isDistinctFrom( if (left.isNull(leftPosition)) { return false; } - return left.compareTo(leftPosition, 0, UUID.getFixedSize(), right, rightPosition, 0, UUID.getFixedSize()) != 0; + return !UUID.equalTo(left, leftPosition, right, rightPosition); } } diff --git a/presto-main/src/test/java/com/facebook/presto/sql/query/TestDistinctAggregations.java b/presto-main/src/test/java/com/facebook/presto/sql/query/TestDistinctAggregations.java index eeda5789acfd8..26c8955ea39ce 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/query/TestDistinctAggregations.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/query/TestDistinctAggregations.java @@ -272,4 +272,14 @@ public void testMixedDistinctWithFilter() "FROM (VALUES (1, 3), (2, 4), (2, 4), (4, 5)) t (x, y)", "VALUES (BIGINT '0', CAST(NULL AS BIGINT))"); } + + @Test + public void testUuidDistinct() + { + assertions.assertQuery( + "SELECT DISTINCT uuid_col " + + "FROM (VALUES (UUID'be0b0518-35a1-4d10-b7f1-1b61355fa741')," + + " (UUID'be0b0518-35a1-4d10-b7f1-1b61355fa741')) AS t (uuid_col)", + "VALUES UUID'be0b0518-35a1-4d10-b7f1-1b61355fa741'"); + } }