Skip to content

Commit ece0b6f

Browse files
pdabre12Pratik Joseph Dabre
authored and
Pratik Joseph Dabre
committed
Use built-in functions in function invoker
1 parent 9ee9d65 commit ece0b6f

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
*/
1414
package com.facebook.presto.sql.planner;
1515

16+
import com.facebook.presto.common.QualifiedObjectName;
1617
import com.facebook.presto.common.function.SqlFunctionProperties;
1718
import com.facebook.presto.common.type.BigintType;
1819
import com.facebook.presto.common.type.BooleanType;
@@ -73,6 +74,7 @@
7374
import static com.facebook.presto.common.type.JsonType.JSON;
7475
import static com.facebook.presto.common.type.TypeSignature.parseTypeSignature;
7576
import static com.facebook.presto.common.type.VarcharType.VARCHAR;
77+
import static com.facebook.presto.metadata.BuiltInTypeAndFunctionNamespaceManager.JAVA_BUILTIN_NAMESPACE;
7678
import static com.facebook.presto.metadata.CastType.CAST;
7779
import static com.facebook.presto.spi.StandardErrorCode.GENERIC_USER_ERROR;
7880
import static com.facebook.presto.sql.analyzer.SemanticErrorCode.INVALID_LITERAL;
@@ -252,7 +254,7 @@ protected Object visitGenericLiteral(GenericLiteral node, ConnectorSession sessi
252254
}
253255

254256
if (JSON.equals(type)) {
255-
FunctionHandle functionHandle = metadata.getFunctionAndTypeManager().lookupFunction("json_parse", fromTypes(VARCHAR));
257+
FunctionHandle functionHandle = metadata.getFunctionAndTypeManager().lookupFunction(QualifiedObjectName.valueOf(JAVA_BUILTIN_NAMESPACE, "json_parse"), fromTypes(VARCHAR));
256258
return functionInvoker.invoke(functionHandle, session.getSqlFunctionProperties(), ImmutableList.of(utf8Slice(node.getValue())));
257259
}
258260

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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,8 @@ public void testWindowFunctions()
187187
assertQuery("SELECT min(orderkey) OVER (PARTITION BY orderdate ORDER BY orderdate, totalprice) FROM orders");
188188
assertQuery("SELECT sum(rn) FROM (SELECT row_number() over() rn, * from orders) WHERE rn = 10");
189189
assertQuery("SELECT * FROM (SELECT row_number() over(partition by orderstatus order by orderkey) rn, * from orders) WHERE rn = 1");
190+
assertQuery("SELECT first_value(orderdate) OVER (PARTITION BY orderkey ORDER BY totalprice RANGE BETWEEN 5 PRECEDING AND CURRENT ROW) FROM orders");
191+
assertQuery("SELECT lead(orderkey, 5) OVER (PARTITION BY custkey, orderdate ORDER BY totalprice desc ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) FROM orders");
190192
}
191193

192194
@Test

0 commit comments

Comments
 (0)