diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/relation/LambdaDefinitionExpression.java b/presto-spi/src/main/java/com/facebook/presto/spi/relation/LambdaDefinitionExpression.java index 79421ea0734d1..0786712571fcd 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/relation/LambdaDefinitionExpression.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/relation/LambdaDefinitionExpression.java @@ -133,7 +133,7 @@ public CanonicalizeExpression(List arguments, List argumentTypes) @Override public String visitCall(CallExpression call, Void context) { - return format("%s.%s(%s)", call.getFunctionHandle().getFunctionNamespace(), call.getDisplayName(), String.join(", ", call.getArguments().stream().map(e -> e.accept(this, null)).collect(Collectors.toList()))); + return format("%s.%s(%s):%s", call.getFunctionHandle().getFunctionNamespace(), call.getDisplayName(), String.join(", ", call.getArguments().stream().map(e -> e.accept(this, null)).collect(Collectors.toList())), call.getType()); } @Override diff --git a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java index 4889637f591f8..52f7ae823ec29 100644 --- a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java +++ b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java @@ -281,6 +281,14 @@ public void testTryLambdaRepeated() assertQuery("SELECT try(10 / a), try(10 / a) FROM (VALUES 5) t(a)", "SELECT 2, 2"); } + @Test + public void testTryLambdaWithCast() + { + assertQuery( + "SELECT IF(TRY(CAST(a AS INT)) IN (1, 5), TRY(CAST(b AS DOUBLE)), 0.0) FROM (VALUES (varchar'1', varchar'2.1'), (varchar'5', varchar'3.4')) t(a, b)", + "VALUES 2.1, 3.4"); + } + @Test public void testNonDeterministicFilter() {