Skip to content

Commit 3257215

Browse files
committed
[native] Use subscript operator to retrieve function handle
1 parent 0d75bc3 commit 3257215

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

presto-main-base/src/main/java/com/facebook/presto/sql/relational/FunctionResolution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ public boolean isEqualsFunction(FunctionHandle functionHandle)
281281
@Override
282282
public FunctionHandle subscriptFunction(Type baseType, Type indexType)
283283
{
284-
return functionAndTypeResolver.lookupFunction(SUBSCRIPT.getFunctionName().getObjectName(), fromTypes(baseType, indexType));
284+
return functionAndTypeResolver.resolveOperator(SUBSCRIPT, fromTypes(baseType, indexType));
285285
}
286286

287287
@Override

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.facebook.presto.sidecar;
1515

1616
import com.facebook.airlift.units.DataSize;
17+
import com.facebook.presto.Session;
1718
import com.facebook.presto.nativeworker.PrestoNativeQueryRunnerUtils;
1819
import com.facebook.presto.sidecar.functionNamespace.FunctionDefinitionProvider;
1920
import com.facebook.presto.sidecar.functionNamespace.NativeFunctionDefinitionProvider;
@@ -44,6 +45,7 @@
4445
import java.util.stream.Collectors;
4546

4647
import static com.facebook.airlift.units.DataSize.Unit.MEGABYTE;
48+
import static com.facebook.presto.SystemSessionProperties.REMOVE_MAP_CAST;
4749
import static com.facebook.presto.common.Utils.checkArgument;
4850
import static com.facebook.presto.common.type.BigintType.BIGINT;
4951
import static com.facebook.presto.nativeworker.NativeQueryRunnerUtils.createLineitem;
@@ -405,6 +407,22 @@ public void testGeometryQueries()
405407
"Error from native plan checker: .SpatialJoinNode no abstract type PlanNode ");
406408
}
407409

410+
@Test
411+
public void testRemoveMapCast()
412+
{
413+
Session enableOptimization = Session.builder(getSession())
414+
.setSystemProperty(REMOVE_MAP_CAST, "true")
415+
.build();
416+
assertQuery(enableOptimization, "select feature[key] from (values (map(array[cast(1 as integer), 2, 3, 4], array[0.3, 0.5, 0.9, 0.1]), cast(2 as bigint)), (map(array[cast(1 as integer), 2, 3, 4], array[0.3, 0.5, 0.9, 0.1]), 4)) t(feature, key)",
417+
"values 0.5, 0.1");
418+
assertQuery(enableOptimization, "select element_at(feature, key) from (values (map(array[cast(1 as integer), 2, 3, 4], array[0.3, 0.5, 0.9, 0.1]), cast(2 as bigint)), (map(array[cast(1 as integer), 2, 3, 4], array[0.3, 0.5, 0.9, 0.1]), 4)) t(feature, key)",
419+
"values 0.5, 0.1");
420+
assertQuery(enableOptimization, "select element_at(feature, key) from (values (map(array[cast(1 as integer), 2, 3, 4], array[0.3, 0.5, 0.9, 0.1]), cast(2 as bigint)), (map(array[cast(1 as integer), 2, 3, 4], array[0.3, 0.5, 0.9, 0.1]), 400000000000)) t(feature, key)",
421+
"values 0.5, null");
422+
assertQuery(enableOptimization, "select feature[key] from (values (map(array[cast(1 as varchar), '2', '3', '4'], array[0.3, 0.5, 0.9, 0.1]), cast('2' as varchar)), (map(array[cast(1 as varchar), '2', '3', '4'], array[0.3, 0.5, 0.9, 0.1]), '4')) t(feature, key)",
423+
"values 0.5, 0.1");
424+
}
425+
408426
private String generateRandomTableName()
409427
{
410428
String tableName = "tmp_presto_" + UUID.randomUUID().toString().replace("-", "");

0 commit comments

Comments
 (0)