Skip to content

Commit 377e3fe

Browse files
committed
Pass ConnectorSession to PlanChecker.validate
This allows the planchecker to pass the ConnectorSession to any connector calls that it makes.
1 parent e3d4de9 commit 377e3fe

File tree

5 files changed

+25
-19
lines changed

5 files changed

+25
-19
lines changed

presto-main/src/main/java/com/facebook/presto/sql/planner/sanity/PlanChecker.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void validateFinalPlan(PlanNode planNode, Session session, Metadata metad
8787
checkers.get(Stage.FINAL).forEach(checker -> checker.validate(planNode, session, metadata, warningCollector));
8888
for (PlanCheckerProvider provider : planCheckerProviderManager.getPlanCheckerProviders()) {
8989
for (com.facebook.presto.spi.plan.PlanChecker checker : provider.getFinalPlanCheckers()) {
90-
checker.validate(planNode, warningCollector);
90+
checker.validate(planNode, warningCollector, session.toConnectorSession());
9191
}
9292
}
9393
}
@@ -97,7 +97,7 @@ public void validateIntermediatePlan(PlanNode planNode, Session session, Metadat
9797
checkers.get(Stage.INTERMEDIATE).forEach(checker -> checker.validate(planNode, session, metadata, warningCollector));
9898
for (PlanCheckerProvider provider : planCheckerProviderManager.getPlanCheckerProviders()) {
9999
for (com.facebook.presto.spi.plan.PlanChecker checker : provider.getIntermediatePlanCheckers()) {
100-
checker.validate(planNode, warningCollector);
100+
checker.validate(planNode, warningCollector, session.toConnectorSession());
101101
}
102102
}
103103
}
@@ -107,15 +107,18 @@ public void validatePlanFragment(PlanFragment planFragment, Session session, Met
107107
checkers.get(Stage.FRAGMENT).forEach(checker -> checker.validateFragment(planFragment, session, metadata, warningCollector));
108108
for (PlanCheckerProvider provider : planCheckerProviderManager.getPlanCheckerProviders()) {
109109
for (com.facebook.presto.spi.plan.PlanChecker checker : provider.getFragmentPlanCheckers()) {
110-
checker.validateFragment(new SimplePlanFragment(
111-
planFragment.getId(),
112-
planFragment.getRoot(),
113-
planFragment.getVariables(),
114-
planFragment.getPartitioning(),
115-
planFragment.getTableScanSchedulingOrder(),
116-
planFragment.getPartitioningScheme(),
117-
planFragment.getStageExecutionDescriptor(),
118-
planFragment.isOutputTableWriterFragment()), warningCollector);
110+
checker.validateFragment(
111+
new SimplePlanFragment(
112+
planFragment.getId(),
113+
planFragment.getRoot(),
114+
planFragment.getVariables(),
115+
planFragment.getPartitioning(),
116+
planFragment.getTableScanSchedulingOrder(),
117+
planFragment.getPartitioningScheme(),
118+
planFragment.getStageExecutionDescriptor(),
119+
planFragment.isOutputTableWriterFragment()),
120+
warningCollector,
121+
session.toConnectorSession());
119122
}
120123
}
121124
}

presto-native-sidecar-plugin/src/main/java/com/facebook/presto/sidecar/nativechecker/NativePlanChecker.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.facebook.airlift.json.JsonCodec;
1717
import com.facebook.airlift.log.Logger;
1818
import com.facebook.presto.spi.ConnectorId;
19+
import com.facebook.presto.spi.ConnectorSession;
1920
import com.facebook.presto.spi.NodeManager;
2021
import com.facebook.presto.spi.PrestoException;
2122
import com.facebook.presto.spi.TableHandle;
@@ -61,13 +62,13 @@ public NativePlanChecker(NodeManager nodeManager, JsonCodec<SimplePlanFragment>
6162
}
6263

6364
@Override
64-
public void validate(PlanNode planNode, WarningCollector warningCollector)
65+
public void validate(PlanNode planNode, WarningCollector warningCollector, ConnectorSession session)
6566
{
6667
// NO-OP, only validating fragments
6768
}
6869

6970
@Override
70-
public void validateFragment(SimplePlanFragment planFragment, WarningCollector warningCollector)
71+
public void validateFragment(SimplePlanFragment planFragment, WarningCollector warningCollector, ConnectorSession session)
7172
{
7273
if (!planFragment.getPartitioning().isCoordinatorOnly() && !isInternalSystemConnector(planFragment.getRoot())) {
7374
runValidation(planFragment);

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,15 @@ public void testNativePlanMockValidate()
9393
PlanConversionResponse responseOk = new PlanConversionResponse(ImmutableList.of());
9494
String responseOkString = PLAN_CONVERSION_RESPONSE_JSON_CODEC.toJson(responseOk);
9595
server.enqueue(new MockResponse().setBody(responseOkString));
96-
checker.validateFragment(fragment, null);
96+
checker.validateFragment(fragment, null, null);
9797

9898
String errorMessage = "native conversion error";
9999
ErrorCode errorCode = StandardErrorCode.NOT_SUPPORTED.toErrorCode();
100100
PlanConversionResponse responseError = new PlanConversionResponse(ImmutableList.of(new PlanConversionFailureInfo("MockError", errorMessage, null, ImmutableList.of(), ImmutableList.of(), errorCode)));
101101
String responseErrorString = PLAN_CONVERSION_RESPONSE_JSON_CODEC.toJson(responseError);
102102
server.enqueue(new MockResponse().setResponseCode(500).setBody(responseErrorString));
103103
PrestoException error = expectThrows(PrestoException.class,
104-
() -> checker.validateFragment(fragment, null));
104+
() -> checker.validateFragment(fragment, null, null));
105105
assertEquals(error.getErrorCode(), errorCode);
106106
assertTrue(error.getMessage().contains(errorMessage));
107107
}

presto-spi/src/main/java/com/facebook/presto/spi/plan/PlanChecker.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@
1414

1515
package com.facebook.presto.spi.plan;
1616

17+
import com.facebook.presto.spi.ConnectorSession;
1718
import com.facebook.presto.spi.WarningCollector;
1819

1920
public interface PlanChecker
2021
{
21-
void validate(PlanNode planNode, WarningCollector warningCollector);
22+
void validate(PlanNode planNode, WarningCollector warningCollector, ConnectorSession session);
2223

23-
default void validateFragment(SimplePlanFragment planFragment, WarningCollector warningCollector)
24+
default void validateFragment(SimplePlanFragment planFragment, WarningCollector warningCollector, ConnectorSession session)
2425
{
25-
validate(planFragment.getRoot(), warningCollector);
26+
validate(planFragment.getRoot(), warningCollector, session);
2627
}
2728
}

presto-tests/src/test/java/com/facebook/presto/execution/TriggerFailurePlanChecker.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
*/
1414
package com.facebook.presto.execution;
1515

16+
import com.facebook.presto.spi.ConnectorSession;
1617
import com.facebook.presto.spi.PrestoException;
1718
import com.facebook.presto.spi.StandardErrorCode;
1819
import com.facebook.presto.spi.WarningCollector;
@@ -36,7 +37,7 @@ public TriggerFailurePlanChecker(AtomicBoolean triggerValidationFailure)
3637
}
3738

3839
@Override
39-
public void validate(PlanNode planNode, WarningCollector warningCollector)
40+
public void validate(PlanNode planNode, WarningCollector warningCollector, ConnectorSession session)
4041
{
4142
if (triggerValidationFailure.get()) {
4243
throw new PrestoException(FAILURE_ERROR_CODE, FAILURE_MESSAGE);

0 commit comments

Comments
 (0)