diff --git a/presto-main-base/src/main/java/com/facebook/presto/FullConnectorSession.java b/presto-main-base/src/main/java/com/facebook/presto/FullConnectorSession.java index d085920337a36..663dcd82976f7 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/FullConnectorSession.java +++ b/presto-main-base/src/main/java/com/facebook/presto/FullConnectorSession.java @@ -269,6 +269,12 @@ public Optional getSchema() return session.getSchema(); } + @Override + public Optional getConnectorId() + { + return Optional.ofNullable(connectorId); + } + @Override public boolean isReadConstraints() { diff --git a/presto-main-base/src/main/java/com/facebook/presto/sql/planner/optimizations/ApplyConnectorOptimization.java b/presto-main-base/src/main/java/com/facebook/presto/sql/planner/optimizations/ApplyConnectorOptimization.java index 71f432362db46..c4c520d6878d4 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/sql/planner/optimizations/ApplyConnectorOptimization.java +++ b/presto-main-base/src/main/java/com/facebook/presto/sql/planner/optimizations/ApplyConnectorOptimization.java @@ -17,6 +17,7 @@ import com.facebook.presto.SystemSessionProperties; import com.facebook.presto.spi.ConnectorId; import com.facebook.presto.spi.ConnectorPlanOptimizer; +import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.VariableAllocator; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.spi.plan.AggregationNode; @@ -183,7 +184,9 @@ public PlanOptimizerResult optimize(PlanNode plan, Session session, TypeProvider // the returned node is still a max closure (only if there is no new connector added, which does happen but ignored here) for (ConnectorPlanOptimizer optimizer : entry.getValue()) { long start = System.nanoTime(); - newNode = optimizer.optimize(newNode, session.toConnectorSession(connectorId), variableAllocator, idAllocator); + ConnectorSession connectorSession = session.toConnectorSession(connectorId); + checkState(connectorSession.getConnectorId().isPresent()); + newNode = optimizer.optimize(newNode, connectorSession, variableAllocator, idAllocator); if (enableVerboseRuntimeStats || trackOptimizerRuntime(session, optimizer)) { session.getRuntimeStats().addMetricValue(String.format("optimizer%sTimeNanos", getOptimizerNameForLog(optimizer)), NANO, System.nanoTime() - start); } diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/ConnectorSession.java b/presto-spi/src/main/java/com/facebook/presto/spi/ConnectorSession.java index 58c18232ef886..bfde64f141376 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/ConnectorSession.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/ConnectorSession.java @@ -72,4 +72,9 @@ default boolean isReadConstraints() * @return */ ConnectorSession forConnectorId(ConnectorId connectorId); + + default Optional getConnectorId() + { + return Optional.empty(); + } }