diff --git a/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnector.java b/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnector.java index 335bc50b96f50..50ba67c8d6200 100644 --- a/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnector.java +++ b/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnector.java @@ -17,9 +17,12 @@ import com.facebook.airlift.log.Logger; import com.facebook.presto.spi.connector.Connector; import com.facebook.presto.spi.connector.ConnectorMetadata; +import com.facebook.presto.spi.connector.ConnectorPlanOptimizerProvider; import com.facebook.presto.spi.connector.ConnectorRecordSetProvider; import com.facebook.presto.spi.connector.ConnectorSplitManager; import com.facebook.presto.spi.connector.ConnectorTransactionHandle; +import com.facebook.presto.spi.function.FunctionMetadataManager; +import com.facebook.presto.spi.function.StandardFunctionResolution; import com.facebook.presto.spi.transaction.IsolationLevel; import javax.inject.Inject; @@ -35,14 +38,33 @@ public class ClpConnector private final ClpMetadata metadata; private final ClpRecordSetProvider recordSetProvider; private final ClpSplitManager splitManager; + private final FunctionMetadataManager functionManager; + private final StandardFunctionResolution functionResolution; + private final ClpMetadataFilterProvider metadataFilterProvider; @Inject - public ClpConnector(LifeCycleManager lifeCycleManager, ClpMetadata metadata, ClpRecordSetProvider recordSetProvider, ClpSplitManager splitManager) + public ClpConnector( + LifeCycleManager lifeCycleManager, + ClpMetadata metadata, + ClpRecordSetProvider recordSetProvider, + ClpSplitManager splitManager, + FunctionMetadataManager functionManager, + StandardFunctionResolution functionResolution, + ClpMetadataFilterProvider metadataFilterProvider) { this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null"); this.metadata = requireNonNull(metadata, "metadata is null"); this.recordSetProvider = requireNonNull(recordSetProvider, "recordSetProvider is null"); this.splitManager = requireNonNull(splitManager, "splitManager is null"); + this.functionManager = requireNonNull(functionManager, "functionManager is null"); + this.functionResolution = requireNonNull(functionResolution, "functionResolution is null"); + this.metadataFilterProvider = requireNonNull(metadataFilterProvider, "metadataFilterProvider is null"); + } + + @Override + public ConnectorPlanOptimizerProvider getConnectorPlanOptimizerProvider() + { + return new ClpPlanOptimizerProvider(functionManager, functionResolution, metadataFilterProvider); } @Override diff --git a/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnectorFactory.java b/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnectorFactory.java index 990b4bbc7c83f..b3b802e058f58 100644 --- a/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnectorFactory.java +++ b/presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnectorFactory.java @@ -23,7 +23,6 @@ import com.facebook.presto.spi.connector.ConnectorFactory; import com.facebook.presto.spi.function.FunctionMetadataManager; import com.facebook.presto.spi.function.StandardFunctionResolution; -import com.facebook.presto.spi.relation.RowExpressionService; import com.google.inject.Injector; import java.util.Map; @@ -56,7 +55,6 @@ public Connector create(String catalogName, Map config, Connecto Bootstrap app = new Bootstrap(new JsonModule(), new ClpModule(), binder -> { binder.bind(FunctionMetadataManager.class).toInstance(context.getFunctionMetadataManager()); binder.bind(NodeManager.class).toInstance(context.getNodeManager()); - binder.bind(RowExpressionService.class).toInstance(context.getRowExpressionService()); binder.bind(StandardFunctionResolution.class).toInstance(context.getStandardFunctionResolution()); binder.bind(TypeManager.class).toInstance(context.getTypeManager()); });