Skip to content

Commit 675e65e

Browse files
committed
Use Java built-in functions to create failure function
1 parent 76344ab commit 675e65e

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

presto-main-base/src/main/java/com/facebook/presto/sql/planner/RowExpressionInterpreter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.airlift.json.JsonCodec;
1717
import com.facebook.presto.client.FailureInfo;
18+
import com.facebook.presto.common.QualifiedObjectName;
1819
import com.facebook.presto.common.block.BlockBuilder;
1920
import com.facebook.presto.common.block.RowBlockBuilder;
2021
import com.facebook.presto.common.function.OperatorType;
@@ -71,6 +72,7 @@
7172
import static com.facebook.presto.common.type.VarcharType.VARCHAR;
7273
import static com.facebook.presto.common.type.VarcharType.createVarcharType;
7374
import static com.facebook.presto.expressions.DynamicFilters.isDynamicFilter;
75+
import static com.facebook.presto.metadata.BuiltInTypeAndFunctionNamespaceManager.JAVA_BUILTIN_NAMESPACE;
7476
import static com.facebook.presto.metadata.CastType.CAST;
7577
import static com.facebook.presto.metadata.CastType.JSON_TO_ARRAY_CAST;
7678
import static com.facebook.presto.metadata.CastType.JSON_TO_MAP_CAST;
@@ -721,7 +723,7 @@ private RowExpression createFailureFunction(RuntimeException exception, Type typ
721723
requireNonNull(exception, "Exception is null");
722724

723725
String failureInfo = JsonCodec.jsonCodec(FailureInfo.class).toJson(Failures.toFailure(exception).toFailureInfo());
724-
FunctionHandle jsonParse = functionAndTypeManager.lookupFunction("json_parse", fromTypes(VARCHAR));
726+
FunctionHandle jsonParse = functionAndTypeManager.lookupFunction(QualifiedObjectName.valueOf(JAVA_BUILTIN_NAMESPACE, "json_parse"), fromTypes(VARCHAR));
725727
Object json = functionInvoker.invoke(jsonParse, session.getSqlFunctionProperties(), utf8Slice(failureInfo));
726728
FunctionHandle cast = functionAndTypeManager.lookupCast(CAST, UNKNOWN, type);
727729
if (exception instanceof PrestoException) {

presto-native-sidecar-plugin/src/test/java/com/facebook/presto/sidecar/TestNativeSidecarPlugin.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ public void testGeneralQueries()
145145
"date_trunc('hour', from_unixtime(orderkey, '-09:30')), date_trunc('minute', from_unixtime(orderkey, '+05:30')), " +
146146
"date_trunc('second', from_unixtime(orderkey, '+00:00')) FROM orders");
147147
assertQuery("SELECT mod(orderkey, linenumber) FROM lineitem");
148+
assertQueryFails("SELECT IF(true, 0/0, 1)", "[\\s\\S]*/ by zero native.default.fail[\\s\\S]*");
148149
}
149150

150151
@Test
@@ -187,6 +188,8 @@ public void testWindowFunctions()
187188
assertQuery("SELECT min(orderkey) OVER (PARTITION BY orderdate ORDER BY orderdate, totalprice) FROM orders");
188189
assertQuery("SELECT sum(rn) FROM (SELECT row_number() over() rn, * from orders) WHERE rn = 10");
189190
assertQuery("SELECT * FROM (SELECT row_number() over(partition by orderstatus order by orderkey) rn, * from orders) WHERE rn = 1");
191+
assertQuery("SELECT first_value(orderdate) OVER (PARTITION BY orderkey ORDER BY totalprice RANGE BETWEEN 5 PRECEDING AND CURRENT ROW) FROM orders");
192+
assertQuery("SELECT lead(orderkey, 5) OVER (PARTITION BY custkey, orderdate ORDER BY totalprice desc ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) FROM orders");
190193
}
191194

192195
@Test

0 commit comments

Comments
 (0)