Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,27 @@
@Experimental(eta = "2023-03-31")
public interface FunctionProvider
{
ScalarFunctionImplementation getScalarFunctionImplementation(
default ScalarFunctionImplementation getScalarFunctionImplementation(
FunctionId functionId,
BoundSignature boundSignature,
FunctionDependencies functionDependencies,
InvocationConvention invocationConvention);
InvocationConvention invocationConvention)
{
throw new UnsupportedOperationException("%s does not provide scalar functions".formatted(getClass().getName()));
}

AggregationImplementation getAggregationImplementation(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies);
default AggregationImplementation getAggregationImplementation(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies)
{
throw new UnsupportedOperationException("%s does not provide aggregation functions".formatted(getClass().getName()));
}

WindowFunctionSupplier getWindowFunctionSupplier(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies);
default WindowFunctionSupplier getWindowFunctionSupplier(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies)
{
throw new UnsupportedOperationException("%s does not provide window functions".formatted(getClass().getName()));
}

TableFunctionProcessorProvider getTableFunctionProcessorProvider(SchemaFunctionName name);
default TableFunctionProcessorProvider getTableFunctionProcessorProvider(SchemaFunctionName name)
{
throw new UnsupportedOperationException("%s does not provide table functions".formatted(getClass().getName()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,8 @@
import io.trino.plugin.tpch.TpchPlugin;
import io.trino.spi.connector.FixedSplitSource;
import io.trino.spi.connector.TableFunctionApplicationResult;
import io.trino.spi.function.AggregationImplementation;
import io.trino.spi.function.BoundSignature;
import io.trino.spi.function.FunctionDependencies;
import io.trino.spi.function.FunctionId;
import io.trino.spi.function.FunctionProvider;
import io.trino.spi.function.InvocationConvention;
import io.trino.spi.function.ScalarFunctionImplementation;
import io.trino.spi.function.SchemaFunctionName;
import io.trino.spi.function.WindowFunctionSupplier;
import io.trino.spi.ptf.TableFunctionProcessorProvider;
import io.trino.testing.AbstractTestQueryFramework;
import io.trino.testing.DistributedQueryRunner;
Expand Down Expand Up @@ -113,58 +106,40 @@ public void setUp()
})
.withFunctionProvider(Optional.of(new FunctionProvider()
{
@Override
public ScalarFunctionImplementation getScalarFunctionImplementation(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies, InvocationConvention invocationConvention)
{
return null;
}

@Override
public AggregationImplementation getAggregationImplementation(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies)
{
return null;
}

@Override
public WindowFunctionSupplier getWindowFunctionSupplier(FunctionId functionId, BoundSignature boundSignature, FunctionDependencies functionDependencies)
{
return null;
}

@Override
public TableFunctionProcessorProvider getTableFunctionProcessorProvider(SchemaFunctionName name)
{
if (name.equals(new SchemaFunctionName("system", "identity_function"))) {
return new IdentityFunctionProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "identity_pass_through_function"))) {
if (name.equals(new SchemaFunctionName("system", "identity_pass_through_function"))) {
return new IdentityPassThroughFunctionProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "repeat"))) {
if (name.equals(new SchemaFunctionName("system", "repeat"))) {
return new RepeatFunctionProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "empty_output"))) {
if (name.equals(new SchemaFunctionName("system", "empty_output"))) {
return new EmptyOutputProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "empty_output_with_pass_through"))) {
if (name.equals(new SchemaFunctionName("system", "empty_output_with_pass_through"))) {
return new EmptyOutputWithPassThroughProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "test_inputs_function"))) {
if (name.equals(new SchemaFunctionName("system", "test_inputs_function"))) {
return new TestInputsFunctionProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "pass_through"))) {
if (name.equals(new SchemaFunctionName("system", "pass_through"))) {
return new PassThroughInputProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "test_input"))) {
if (name.equals(new SchemaFunctionName("system", "test_input"))) {
return new TestInputProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "test_single_input_function"))) {
if (name.equals(new SchemaFunctionName("system", "test_single_input_function"))) {
return new TestSingleInputFunctionProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "constant"))) {
if (name.equals(new SchemaFunctionName("system", "constant"))) {
return new ConstantFunctionProcessorProvider();
}
else if (name.equals(new SchemaFunctionName("system", "empty_source"))) {
if (name.equals(new SchemaFunctionName("system", "empty_source"))) {
return new EmptySourceFunctionProcessorProvider();
}

Expand Down