Skip to content

Commit c57f657

Browse files
committed
Maintain compatibility with custom connector-provided serialization
1 parent 527aa52 commit c57f657

File tree

4 files changed

+49
-3
lines changed

4 files changed

+49
-3
lines changed

presto-main-base/src/main/java/com/facebook/presto/metadata/DistributedProcedureHandleJacksonModule.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,46 @@
1313
*/
1414
package com.facebook.presto.metadata;
1515

16+
import com.facebook.presto.connector.ConnectorManager;
17+
import com.facebook.presto.spi.ConnectorCodec;
1618
import com.facebook.presto.spi.ConnectorDistributedProcedureHandle;
19+
import com.facebook.presto.spi.ConnectorId;
20+
import com.facebook.presto.spi.connector.ConnectorCodecProvider;
21+
import com.facebook.presto.sql.analyzer.FeaturesConfig;
22+
import jakarta.inject.Provider;
1723

1824
import javax.inject.Inject;
1925

26+
import java.util.Optional;
27+
import java.util.function.Function;
28+
2029
public class DistributedProcedureHandleJacksonModule
2130
extends AbstractTypedJacksonModule<ConnectorDistributedProcedureHandle>
2231
{
2332
@Inject
24-
public DistributedProcedureHandleJacksonModule(HandleResolver handleResolver)
33+
public DistributedProcedureHandleJacksonModule(
34+
HandleResolver handleResolver,
35+
Provider<ConnectorManager> connectorManagerProvider,
36+
FeaturesConfig featuresConfig)
37+
{
38+
super(ConnectorDistributedProcedureHandle.class,
39+
handleResolver::getId,
40+
handleResolver::getDistributedProcedureHandleClass,
41+
featuresConfig.isUseConnectorProvidedSerializationCodecs(),
42+
connectorId -> connectorManagerProvider.get()
43+
.getConnectorCodecProvider(connectorId)
44+
.flatMap(ConnectorCodecProvider::getConnectorDistributedProcedureHandleCodec));
45+
}
46+
47+
public DistributedProcedureHandleJacksonModule(
48+
HandleResolver handleResolver,
49+
FeaturesConfig featuresConfig,
50+
Function<ConnectorId, Optional<ConnectorCodec<ConnectorDistributedProcedureHandle>>> codecExtractor)
2551
{
2652
super(ConnectorDistributedProcedureHandle.class,
2753
handleResolver::getId,
28-
handleResolver::getDistributedProcedureHandleClass);
54+
handleResolver::getDistributedProcedureHandleClass,
55+
featuresConfig.isUseConnectorProvidedSerializationCodecs(),
56+
codecExtractor);
2957
}
3058
}

presto-main-base/src/test/java/com/facebook/presto/metadata/TestAbstractTypedJacksonModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,8 @@ public static class TestHandle
372372
com.facebook.presto.spi.ConnectorDeleteTableHandle,
373373
com.facebook.presto.spi.ConnectorIndexHandle,
374374
com.facebook.presto.spi.connector.ConnectorPartitioningHandle,
375-
com.facebook.presto.spi.connector.ConnectorTransactionHandle
375+
com.facebook.presto.spi.connector.ConnectorTransactionHandle,
376+
com.facebook.presto.spi.ConnectorDistributedProcedureHandle
376377
{
377378
private final String connectorId;
378379
private final String id;
@@ -529,6 +530,12 @@ public Class<? extends com.facebook.presto.spi.connector.ConnectorTransactionHan
529530
{
530531
return TestHandle.class;
531532
}
533+
534+
@Override
535+
public Class<? extends com.facebook.presto.spi.ConnectorDistributedProcedureHandle> getDistributedProcedureHandleClass()
536+
{
537+
return TestHandle.class;
538+
}
532539
}
533540

534541
// Test HandleResolver implementation

presto-main/src/test/java/com/facebook/presto/server/remotetask/TestHttpRemoteTaskConnectorCodec.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import com.facebook.presto.metadata.ColumnHandleJacksonModule;
5656
import com.facebook.presto.metadata.DeleteTableHandle;
5757
import com.facebook.presto.metadata.DeleteTableHandleJacksonModule;
58+
import com.facebook.presto.metadata.DistributedProcedureHandleJacksonModule;
5859
import com.facebook.presto.metadata.FunctionAndTypeManager;
5960
import com.facebook.presto.metadata.FunctionHandleJacksonModule;
6061
import com.facebook.presto.metadata.HandleResolver;
@@ -81,6 +82,7 @@
8182
import com.facebook.presto.spi.ColumnHandle;
8283
import com.facebook.presto.spi.ConnectorCodec;
8384
import com.facebook.presto.spi.ConnectorDeleteTableHandle;
85+
import com.facebook.presto.spi.ConnectorDistributedProcedureHandle;
8486
import com.facebook.presto.spi.ConnectorHandleResolver;
8587
import com.facebook.presto.spi.ConnectorId;
8688
import com.facebook.presto.spi.ConnectorIndexHandle;
@@ -662,6 +664,8 @@ public void configure(Binder binder)
662664
connectorId -> Optional.empty();
663665
Function<ConnectorId, Optional<ConnectorCodec<ConnectorPartitioningHandle>>> noOpPartitioningCodec =
664666
connectorId -> Optional.empty();
667+
Function<ConnectorId, Optional<ConnectorCodec<ConnectorDistributedProcedureHandle>>> noOpDistributedProcedureCodec =
668+
connectorId -> Optional.empty();
665669
Function<ConnectorId, Optional<ConnectorCodec<ConnectorSplit>>> splitCodecExtractor =
666670
connectorId -> Optional.ofNullable(splitCodecMap.get(connectorId.getCatalogName()));
667671

@@ -676,6 +680,7 @@ public void configure(Binder binder)
676680
jsonBinder(binder).addModuleBinding().toInstance(new PartitioningHandleJacksonModule(handleResolver, featuresConfig, noOpPartitioningCodec));
677681
jsonBinder(binder).addModuleBinding().toInstance(new FunctionHandleJacksonModule(handleResolver));
678682
jsonBinder(binder).addModuleBinding().toInstance(new SplitJacksonModule(handleResolver, featuresConfig, splitCodecExtractor));
683+
jsonBinder(binder).addModuleBinding().toInstance(new DistributedProcedureHandleJacksonModule(handleResolver, featuresConfig, noOpDistributedProcedureCodec));
679684

680685
FunctionAndTypeManager functionAndTypeManager = createTestFunctionAndTypeManager();
681686
binder.bind(TypeManager.class).toInstance(functionAndTypeManager);

presto-spi/src/main/java/com/facebook/presto/spi/connector/ConnectorCodecProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.facebook.presto.spi.ColumnHandle;
1717
import com.facebook.presto.spi.ConnectorCodec;
1818
import com.facebook.presto.spi.ConnectorDeleteTableHandle;
19+
import com.facebook.presto.spi.ConnectorDistributedProcedureHandle;
1920
import com.facebook.presto.spi.ConnectorIndexHandle;
2021
import com.facebook.presto.spi.ConnectorInsertTableHandle;
2122
import com.facebook.presto.spi.ConnectorOutputTableHandle;
@@ -76,4 +77,9 @@ default Optional<ConnectorCodec<ConnectorIndexHandle>> getConnectorIndexHandleCo
7677
{
7778
return Optional.empty();
7879
}
80+
81+
default Optional<ConnectorCodec<ConnectorDistributedProcedureHandle>> getConnectorDistributedProcedureHandleCodec()
82+
{
83+
return Optional.empty();
84+
}
7985
}

0 commit comments

Comments
 (0)