Skip to content

Commit 1a4f7c0

Browse files
committed
Resolve all signatures before fetching functions
1 parent d4f1cc1 commit 1a4f7c0

File tree

228 files changed

+2518
-2261
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

228 files changed

+2518
-2261
lines changed

presto-benchmark/src/main/java/io/prestosql/benchmark/CountAggregationBenchmark.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,19 @@
1414
package io.prestosql.benchmark;
1515

1616
import com.google.common.collect.ImmutableList;
17-
import io.prestosql.metadata.Signature;
17+
import io.prestosql.metadata.Metadata;
1818
import io.prestosql.operator.AggregationOperator.AggregationOperatorFactory;
1919
import io.prestosql.operator.OperatorFactory;
2020
import io.prestosql.operator.aggregation.InternalAggregationFunction;
2121
import io.prestosql.sql.planner.plan.AggregationNode.Step;
2222
import io.prestosql.sql.planner.plan.PlanNodeId;
23+
import io.prestosql.sql.tree.QualifiedName;
2324
import io.prestosql.testing.LocalQueryRunner;
2425

2526
import java.util.List;
2627
import java.util.Optional;
2728

2829
import static io.prestosql.benchmark.BenchmarkQueryRunner.createLocalQueryRunner;
29-
import static io.prestosql.metadata.FunctionKind.AGGREGATE;
30-
import static io.prestosql.spi.type.BigintType.BIGINT;
3130

3231
public class CountAggregationBenchmark
3332
extends AbstractSimpleOperatorBenchmark
@@ -41,8 +40,8 @@ public CountAggregationBenchmark(LocalQueryRunner localQueryRunner)
4140
protected List<? extends OperatorFactory> createOperatorFactories()
4241
{
4342
OperatorFactory tableScanOperator = createTableScanOperator(0, new PlanNodeId("test"), "orders", "orderkey");
44-
InternalAggregationFunction countFunction = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
45-
new Signature("count", AGGREGATE, BIGINT.getTypeSignature()));
43+
Metadata metadata = localQueryRunner.getMetadata();
44+
InternalAggregationFunction countFunction = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("count"), ImmutableList.of()));
4645
AggregationOperatorFactory aggregationOperator = new AggregationOperatorFactory(1, new PlanNodeId("test"), Step.SINGLE, ImmutableList.of(countFunction.bind(ImmutableList.of(0), Optional.empty())), false);
4746
return ImmutableList.of(tableScanOperator, aggregationOperator);
4847
}

presto-benchmark/src/main/java/io/prestosql/benchmark/DoubleSumAggregationBenchmark.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,22 @@
1414
package io.prestosql.benchmark;
1515

1616
import com.google.common.collect.ImmutableList;
17-
import io.prestosql.metadata.Signature;
17+
import io.prestosql.metadata.Metadata;
1818
import io.prestosql.operator.AggregationOperator.AggregationOperatorFactory;
1919
import io.prestosql.operator.OperatorFactory;
2020
import io.prestosql.operator.aggregation.InternalAggregationFunction;
2121
import io.prestosql.sql.planner.plan.AggregationNode.Step;
2222
import io.prestosql.sql.planner.plan.PlanNodeId;
23+
import io.prestosql.sql.tree.QualifiedName;
2324
import io.prestosql.testing.LocalQueryRunner;
2425

2526
import java.util.List;
2627
import java.util.Optional;
2728

2829
import static io.prestosql.benchmark.BenchmarkQueryRunner.createLocalQueryRunner;
29-
import static io.prestosql.metadata.FunctionKind.AGGREGATE;
3030
import static io.prestosql.metadata.MetadataManager.createTestMetadataManager;
3131
import static io.prestosql.spi.type.DoubleType.DOUBLE;
32+
import static io.prestosql.sql.analyzer.TypeSignatureProvider.fromTypes;
3233

3334
public class DoubleSumAggregationBenchmark
3435
extends AbstractSimpleOperatorBenchmark
@@ -42,8 +43,8 @@ public DoubleSumAggregationBenchmark(LocalQueryRunner localQueryRunner)
4243
protected List<? extends OperatorFactory> createOperatorFactories()
4344
{
4445
OperatorFactory tableScanOperator = createTableScanOperator(0, new PlanNodeId("test"), "orders", "totalprice");
45-
InternalAggregationFunction doubleSum = createTestMetadataManager().getAggregateFunctionImplementation(
46-
new Signature("sum", AGGREGATE, DOUBLE.getTypeSignature(), DOUBLE.getTypeSignature()));
46+
Metadata metadata = createTestMetadataManager();
47+
InternalAggregationFunction doubleSum = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("sum"), fromTypes(DOUBLE)));
4748
AggregationOperatorFactory aggregationOperator = new AggregationOperatorFactory(1, new PlanNodeId("test"), Step.SINGLE, ImmutableList.of(doubleSum.bind(ImmutableList.of(0), Optional.empty())), false);
4849
return ImmutableList.of(tableScanOperator, aggregationOperator);
4950
}

presto-benchmark/src/main/java/io/prestosql/benchmark/HandTpchQuery1.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import com.google.common.primitives.Ints;
1818
import io.airlift.units.DataSize;
1919
import io.prestosql.benchmark.HandTpchQuery1.TpchQuery1Operator.TpchQuery1OperatorFactory;
20-
import io.prestosql.metadata.Signature;
20+
import io.prestosql.metadata.Metadata;
2121
import io.prestosql.operator.DriverContext;
2222
import io.prestosql.operator.HashAggregationOperator.HashAggregationOperatorFactory;
2323
import io.prestosql.operator.Operator;
@@ -30,6 +30,7 @@
3030
import io.prestosql.spi.type.Type;
3131
import io.prestosql.sql.planner.plan.AggregationNode.Step;
3232
import io.prestosql.sql.planner.plan.PlanNodeId;
33+
import io.prestosql.sql.tree.QualifiedName;
3334
import io.prestosql.testing.LocalQueryRunner;
3435
import io.prestosql.util.DateTimeUtils;
3536

@@ -39,11 +40,11 @@
3940
import static com.google.common.base.Preconditions.checkState;
4041
import static io.airlift.units.DataSize.Unit.MEGABYTE;
4142
import static io.prestosql.benchmark.BenchmarkQueryRunner.createLocalQueryRunner;
42-
import static io.prestosql.metadata.FunctionKind.AGGREGATE;
4343
import static io.prestosql.spi.type.BigintType.BIGINT;
4444
import static io.prestosql.spi.type.DateType.DATE;
4545
import static io.prestosql.spi.type.DoubleType.DOUBLE;
4646
import static io.prestosql.spi.type.VarcharType.VARCHAR;
47+
import static io.prestosql.sql.analyzer.TypeSignatureProvider.fromTypes;
4748
import static java.util.Objects.requireNonNull;
4849

4950
public class HandTpchQuery1
@@ -58,14 +59,11 @@ public HandTpchQuery1(LocalQueryRunner localQueryRunner)
5859
{
5960
super(localQueryRunner, "hand_tpch_query_1", 1, 5);
6061

61-
longAverage = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
62-
new Signature("avg", AGGREGATE, DOUBLE.getTypeSignature(), BIGINT.getTypeSignature()));
63-
doubleAverage = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
64-
new Signature("avg", AGGREGATE, DOUBLE.getTypeSignature(), DOUBLE.getTypeSignature()));
65-
doubleSum = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
66-
new Signature("sum", AGGREGATE, DOUBLE.getTypeSignature(), DOUBLE.getTypeSignature()));
67-
countFunction = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
68-
new Signature("count", AGGREGATE, BIGINT.getTypeSignature()));
62+
Metadata metadata = localQueryRunner.getMetadata();
63+
longAverage = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("avg"), fromTypes(BIGINT)));
64+
doubleAverage = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("avg"), fromTypes(DOUBLE)));
65+
doubleSum = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("sum"), fromTypes(DOUBLE)));
66+
countFunction = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("count"), ImmutableList.of()));
6967
}
7068

7169
@Override

presto-benchmark/src/main/java/io/prestosql/benchmark/HandTpchQuery6.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import com.google.common.collect.ImmutableList;
1717
import io.airlift.units.DataSize;
18-
import io.prestosql.metadata.Signature;
18+
import io.prestosql.metadata.Metadata;
1919
import io.prestosql.operator.AggregationOperator.AggregationOperatorFactory;
2020
import io.prestosql.operator.FilterAndProjectOperator;
2121
import io.prestosql.operator.OperatorFactory;
@@ -31,6 +31,7 @@
3131
import io.prestosql.sql.gen.PageFunctionCompiler;
3232
import io.prestosql.sql.planner.plan.AggregationNode.Step;
3333
import io.prestosql.sql.planner.plan.PlanNodeId;
34+
import io.prestosql.sql.tree.QualifiedName;
3435
import io.prestosql.testing.LocalQueryRunner;
3536
import io.prestosql.util.DateTimeUtils;
3637

@@ -40,10 +41,10 @@
4041

4142
import static io.airlift.units.DataSize.Unit.BYTE;
4243
import static io.prestosql.benchmark.BenchmarkQueryRunner.createLocalQueryRunner;
43-
import static io.prestosql.metadata.FunctionKind.AGGREGATE;
4444
import static io.prestosql.spi.type.BigintType.BIGINT;
4545
import static io.prestosql.spi.type.DateType.DATE;
4646
import static io.prestosql.spi.type.DoubleType.DOUBLE;
47+
import static io.prestosql.sql.analyzer.TypeSignatureProvider.fromTypes;
4748
import static io.prestosql.sql.relational.Expressions.field;
4849

4950
public class HandTpchQuery6
@@ -55,8 +56,8 @@ public HandTpchQuery6(LocalQueryRunner localQueryRunner)
5556
{
5657
super(localQueryRunner, "hand_tpch_query_6", 10, 100);
5758

58-
doubleSum = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
59-
new Signature("sum", AGGREGATE, DOUBLE.getTypeSignature(), DOUBLE.getTypeSignature()));
59+
Metadata metadata = localQueryRunner.getMetadata();
60+
doubleSum = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("sum"), fromTypes(DOUBLE)));
6061
}
6162

6263
@Override

presto-benchmark/src/main/java/io/prestosql/benchmark/HashAggregationBenchmark.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,23 @@
1616
import com.google.common.collect.ImmutableList;
1717
import com.google.common.primitives.Ints;
1818
import io.airlift.units.DataSize;
19-
import io.prestosql.metadata.Signature;
19+
import io.prestosql.metadata.Metadata;
2020
import io.prestosql.operator.HashAggregationOperator.HashAggregationOperatorFactory;
2121
import io.prestosql.operator.OperatorFactory;
2222
import io.prestosql.operator.aggregation.InternalAggregationFunction;
2323
import io.prestosql.spi.type.Type;
2424
import io.prestosql.sql.planner.plan.AggregationNode.Step;
2525
import io.prestosql.sql.planner.plan.PlanNodeId;
26+
import io.prestosql.sql.tree.QualifiedName;
2627
import io.prestosql.testing.LocalQueryRunner;
2728

2829
import java.util.List;
2930
import java.util.Optional;
3031

3132
import static io.airlift.units.DataSize.Unit.MEGABYTE;
3233
import static io.prestosql.benchmark.BenchmarkQueryRunner.createLocalQueryRunner;
33-
import static io.prestosql.metadata.FunctionKind.AGGREGATE;
3434
import static io.prestosql.spi.type.DoubleType.DOUBLE;
35+
import static io.prestosql.sql.analyzer.TypeSignatureProvider.fromTypes;
3536

3637
public class HashAggregationBenchmark
3738
extends AbstractSimpleOperatorBenchmark
@@ -42,8 +43,8 @@ public HashAggregationBenchmark(LocalQueryRunner localQueryRunner)
4243
{
4344
super(localQueryRunner, "hash_agg", 5, 25);
4445

45-
doubleSum = localQueryRunner.getMetadata().getAggregateFunctionImplementation(
46-
new Signature("sum", AGGREGATE, DOUBLE.getTypeSignature(), DOUBLE.getTypeSignature()));
46+
Metadata metadata = localQueryRunner.getMetadata();
47+
doubleSum = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(QualifiedName.of("sum"), fromTypes(DOUBLE)));
4748
}
4849

4950
@Override

presto-benchmark/src/main/java/io/prestosql/benchmark/PredicateFilterBenchmark.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
import static io.airlift.units.DataSize.Unit.BYTE;
3232
import static io.prestosql.benchmark.BenchmarkQueryRunner.createLocalQueryRunner;
33-
import static io.prestosql.metadata.Signature.internalOperator;
3433
import static io.prestosql.spi.function.OperatorType.GREATER_THAN_OR_EQUAL;
3534
import static io.prestosql.spi.type.BooleanType.BOOLEAN;
3635
import static io.prestosql.spi.type.DoubleType.DOUBLE;
@@ -51,7 +50,7 @@ protected List<? extends OperatorFactory> createOperatorFactories()
5150
{
5251
OperatorFactory tableScanOperator = createTableScanOperator(0, new PlanNodeId("test"), "orders", "totalprice");
5352
RowExpression filter = call(
54-
internalOperator(GREATER_THAN_OR_EQUAL, BOOLEAN.getTypeSignature(), ImmutableList.of(DOUBLE.getTypeSignature(), DOUBLE.getTypeSignature())),
53+
localQueryRunner.getMetadata().resolveOperator(GREATER_THAN_OR_EQUAL, ImmutableList.of(DOUBLE, DOUBLE)),
5554
BOOLEAN,
5655
field(0, DOUBLE),
5756
constant(50000.0, DOUBLE));

presto-geospatial/src/test/java/io/prestosql/plugin/geospatial/TestSpatialPartitioningInternalAggregation.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
import io.prestosql.block.BlockAssertions;
2323
import io.prestosql.geospatial.KdbTreeUtils;
2424
import io.prestosql.geospatial.Rectangle;
25-
import io.prestosql.metadata.FunctionKind;
26-
import io.prestosql.metadata.Signature;
25+
import io.prestosql.metadata.Metadata;
2726
import io.prestosql.operator.aggregation.Accumulator;
2827
import io.prestosql.operator.aggregation.AccumulatorFactory;
2928
import io.prestosql.operator.aggregation.GroupedAccumulator;
@@ -32,6 +31,7 @@
3231
import io.prestosql.spi.Page;
3332
import io.prestosql.spi.block.Block;
3433
import io.prestosql.spi.block.BlockBuilder;
34+
import io.prestosql.sql.tree.QualifiedName;
3535
import org.testng.annotations.BeforeClass;
3636
import org.testng.annotations.DataProvider;
3737
import org.testng.annotations.Test;
@@ -47,7 +47,7 @@
4747
import static io.prestosql.operator.aggregation.AggregationTestUtils.getGroupValue;
4848
import static io.prestosql.plugin.geospatial.GeometryType.GEOMETRY;
4949
import static io.prestosql.spi.type.IntegerType.INTEGER;
50-
import static io.prestosql.spi.type.VarcharType.VARCHAR;
50+
import static io.prestosql.sql.analyzer.TypeSignatureProvider.fromTypes;
5151
import static java.math.RoundingMode.CEILING;
5252
import static org.testng.Assert.assertEquals;
5353

@@ -96,12 +96,10 @@ public void test(int partitionCount)
9696

9797
private InternalAggregationFunction getFunction()
9898
{
99-
return functionAssertions.getMetadata().getAggregateFunctionImplementation(new Signature(
100-
"spatial_partitioning",
101-
FunctionKind.AGGREGATE,
102-
VARCHAR.getTypeSignature(),
103-
GEOMETRY.getTypeSignature(),
104-
INTEGER.getTypeSignature()));
99+
Metadata metadata = functionAssertions.getMetadata();
100+
return metadata.getAggregateFunctionImplementation(metadata.resolveFunction(
101+
QualifiedName.of("spatial_partitioning"),
102+
fromTypes(GEOMETRY, INTEGER)));
105103
}
106104

107105
private List<OGCGeometry> makeGeometries()

presto-geospatial/src/test/java/io/prestosql/plugin/geospatial/aggregation/AbstractTestGeoAggregationFunctions.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
import io.airlift.slice.Slice;
1818
import io.prestosql.block.BlockAssertions;
1919
import io.prestosql.geospatial.serde.GeometrySerde;
20-
import io.prestosql.metadata.FunctionKind;
21-
import io.prestosql.metadata.Signature;
20+
import io.prestosql.metadata.Metadata;
2221
import io.prestosql.operator.aggregation.InternalAggregationFunction;
2322
import io.prestosql.operator.scalar.AbstractTestFunctions;
2423
import io.prestosql.plugin.geospatial.GeoPlugin;
2524
import io.prestosql.spi.Page;
2625
import io.prestosql.spi.type.Type;
26+
import io.prestosql.sql.tree.QualifiedName;
2727
import org.testng.annotations.BeforeClass;
2828

2929
import java.util.Arrays;
@@ -35,6 +35,7 @@
3535
import static io.prestosql.metadata.FunctionExtractor.extractFunctions;
3636
import static io.prestosql.operator.aggregation.AggregationTestUtils.assertAggregation;
3737
import static io.prestosql.plugin.geospatial.GeometryType.GEOMETRY;
38+
import static io.prestosql.sql.analyzer.TypeSignatureProvider.fromTypes;
3839

3940
public abstract class AbstractTestGeoAggregationFunctions
4041
extends AbstractTestFunctions
@@ -48,12 +49,11 @@ public void registerFunctions()
4849
for (Type type : plugin.getTypes()) {
4950
functionAssertions.addType(type);
5051
}
51-
functionAssertions.getMetadata().addFunctions(extractFunctions(plugin.getFunctions()));
52-
function = functionAssertions.getMetadata().getAggregateFunctionImplementation(new Signature(
53-
getFunctionName(),
54-
FunctionKind.AGGREGATE,
55-
GEOMETRY.getTypeSignature(),
56-
GEOMETRY.getTypeSignature()));
52+
Metadata metadata = functionAssertions.getMetadata();
53+
metadata.addFunctions(extractFunctions(plugin.getFunctions()));
54+
function = metadata.getAggregateFunctionImplementation(metadata.resolveFunction(
55+
QualifiedName.of(getFunctionName()),
56+
fromTypes(GEOMETRY)));
5757
}
5858

5959
protected void assertAggregatedGeometries(String testDescription, String expectedWkt, String... wkts)

presto-hive/src/test/java/io/prestosql/plugin/hive/HiveTestUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import io.airlift.units.DataSize;
2020
import io.prestosql.PagesIndexPageSorter;
2121
import io.prestosql.metadata.Metadata;
22-
import io.prestosql.metadata.Signature;
22+
import io.prestosql.metadata.ResolvedFunction;
2323
import io.prestosql.operator.PagesIndex;
2424
import io.prestosql.plugin.hive.authentication.NoHdfsAuthentication;
2525
import io.prestosql.plugin.hive.gcs.GoogleGcsConfigurationInitializer;
@@ -186,8 +186,8 @@ public static Slice longDecimal(String value)
186186

187187
public static MethodHandle distinctFromOperator(Type type)
188188
{
189-
Signature signature = METADATA.resolveOperator(IS_DISTINCT_FROM, ImmutableList.of(type, type));
190-
return METADATA.getScalarFunctionImplementation(signature).getMethodHandle();
189+
ResolvedFunction function = METADATA.resolveOperator(IS_DISTINCT_FROM, ImmutableList.of(type, type));
190+
return METADATA.getScalarFunctionImplementation(function).getMethodHandle();
191191
}
192192

193193
public static boolean isDistinctFrom(MethodHandle handle, Block left, Block right)

presto-main/src/main/java/io/prestosql/cost/FilterStatsCalculator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ protected PlanNodeStatsEstimate visitComparisonExpression(ComparisonExpression n
393393
@Override
394394
protected PlanNodeStatsEstimate visitFunctionCall(FunctionCall node, Void context)
395395
{
396-
if (isDynamicFilter(node)) {
396+
if (isDynamicFilter(metadata, node)) {
397397
return process(BooleanLiteral.TRUE_LITERAL, context);
398398
}
399399
return PlanNodeStatsEstimate.unknown();

0 commit comments

Comments
 (0)