Skip to content

Commit 73342c6

Browse files
authored
refactor: Extract split filter provider interface to improve flexibility for user customization. (#46)
1 parent b00627f commit 73342c6

File tree

15 files changed

+724
-433
lines changed

15 files changed

+724
-433
lines changed

presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConfig.java

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ public class ClpConfig
2929
private String metadataDbName;
3030
private String metadataDbUser;
3131
private String metadataDbPassword;
32-
private String metadataFilterConfig;
3332
private String metadataTablePrefix;
3433
private long metadataRefreshInterval = 60;
3534
private long metadataExpireInterval = 600;
3635

36+
private String splitFilterConfig;
37+
private SplitFilterProviderType splitFilterProviderType = SplitFilterProviderType.MYSQL;
3738
private SplitProviderType splitProviderType = SplitProviderType.MYSQL;
3839

3940
public boolean isPolymorphicTypeEnabled()
@@ -108,18 +109,6 @@ public ClpConfig setMetadataDbPassword(String metadataDbPassword)
108109
return this;
109110
}
110111

111-
public String getMetadataFilterConfig()
112-
{
113-
return metadataFilterConfig;
114-
}
115-
116-
@Config("clp.metadata-filter-config")
117-
public ClpConfig setMetadataFilterConfig(String metadataFilterConfig)
118-
{
119-
this.metadataFilterConfig = metadataFilterConfig;
120-
return this;
121-
}
122-
123112
public String getMetadataTablePrefix()
124113
{
125114
return metadataTablePrefix;
@@ -162,6 +151,30 @@ public ClpConfig setMetadataExpireInterval(long metadataExpireInterval)
162151
return this;
163152
}
164153

154+
public String getSplitFilterConfig()
155+
{
156+
return splitFilterConfig;
157+
}
158+
159+
@Config("clp.split-filter-config")
160+
public ClpConfig setSplitFilterConfig(String splitFilterConfig)
161+
{
162+
this.splitFilterConfig = splitFilterConfig;
163+
return this;
164+
}
165+
166+
public SplitFilterProviderType getSplitFilterProviderType()
167+
{
168+
return splitFilterProviderType;
169+
}
170+
171+
@Config("clp.split-filter-provider-type")
172+
public ClpConfig setSplitFilterProviderType(SplitFilterProviderType splitFilterProviderType)
173+
{
174+
this.splitFilterProviderType = splitFilterProviderType;
175+
return this;
176+
}
177+
165178
public SplitProviderType getSplitProviderType()
166179
{
167180
return splitProviderType;
@@ -179,6 +192,11 @@ public enum MetadataProviderType
179192
MYSQL
180193
}
181194

195+
public enum SplitFilterProviderType
196+
{
197+
MYSQL
198+
}
199+
182200
public enum SplitProviderType
183201
{
184202
MYSQL

presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpConnector.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.facebook.airlift.bootstrap.LifeCycleManager;
1717
import com.facebook.airlift.log.Logger;
18+
import com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterProvider;
1819
import com.facebook.presto.spi.connector.Connector;
1920
import com.facebook.presto.spi.connector.ConnectorMetadata;
2021
import com.facebook.presto.spi.connector.ConnectorPlanOptimizerProvider;
@@ -40,7 +41,7 @@ public class ClpConnector
4041
private final ClpSplitManager splitManager;
4142
private final FunctionMetadataManager functionManager;
4243
private final StandardFunctionResolution functionResolution;
43-
private final ClpMetadataFilterProvider metadataFilterProvider;
44+
private final ClpSplitFilterProvider splitFilterProvider;
4445

4546
@Inject
4647
public ClpConnector(
@@ -50,21 +51,21 @@ public ClpConnector(
5051
ClpSplitManager splitManager,
5152
FunctionMetadataManager functionManager,
5253
StandardFunctionResolution functionResolution,
53-
ClpMetadataFilterProvider metadataFilterProvider)
54+
ClpSplitFilterProvider splitFilterProvider)
5455
{
5556
this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null");
5657
this.metadata = requireNonNull(metadata, "metadata is null");
5758
this.recordSetProvider = requireNonNull(recordSetProvider, "recordSetProvider is null");
5859
this.splitManager = requireNonNull(splitManager, "splitManager is null");
5960
this.functionManager = requireNonNull(functionManager, "functionManager is null");
6061
this.functionResolution = requireNonNull(functionResolution, "functionResolution is null");
61-
this.metadataFilterProvider = requireNonNull(metadataFilterProvider, "metadataFilterProvider is null");
62+
this.splitFilterProvider = requireNonNull(splitFilterProvider, "splitFilterProvider is null");
6263
}
6364

6465
@Override
6566
public ConnectorPlanOptimizerProvider getConnectorPlanOptimizerProvider()
6667
{
67-
return new ClpPlanOptimizerProvider(functionManager, functionResolution, metadataFilterProvider);
68+
return new ClpPlanOptimizerProvider(functionManager, functionResolution, splitFilterProvider);
6869
}
6970

7071
@Override

presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpErrorCode.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ public enum ClpErrorCode
2929
CLP_UNSUPPORTED_TYPE(3, EXTERNAL),
3030
CLP_UNSUPPORTED_CONFIG_OPTION(4, EXTERNAL),
3131

32-
CLP_METADATA_FILTER_CONFIG_NOT_FOUND(10, USER_ERROR),
33-
CLP_MANDATORY_METADATA_FILTER_NOT_VALID(11, USER_ERROR);
32+
CLP_SPLIT_FILTER_CONFIG_NOT_FOUND(10, USER_ERROR),
33+
CLP_MANDATORY_SPLIT_FILTER_NOT_VALID(11, USER_ERROR),
34+
CLP_UNSUPPORTED_SPLIT_FILTER_SOURCE(12, EXTERNAL);
3435

3536
private final ErrorCode errorCode;
3637

presto-clp/src/main/java/com/facebook/presto/plugin/clp/ClpMetadataFilterProvider.java

Lines changed: 0 additions & 268 deletions
This file was deleted.

0 commit comments

Comments
 (0)