Skip to content

Commit 9289bd7

Browse files
committed
Renmae the metadata filter and metadata query to split filter and split query
1 parent 6925011 commit 9289bd7

File tree

14 files changed

+227
-225
lines changed

14 files changed

+227
-225
lines changed

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

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ public class ClpConfig
2424

2525
private boolean polymorphicTypeEnabled = true;
2626

27-
private MetadataFilterProviderType metadataFilterProviderType = MetadataFilterProviderType.MYSQL;
2827
private MetadataProviderType metadataProviderType = MetadataProviderType.MYSQL;
2928
private String metadataDbUrl;
3029
private String metadataDbName;
3130
private String metadataDbUser;
3231
private String metadataDbPassword;
33-
private String metadataFilterConfig;
3432
private String metadataTablePrefix;
3533
private long metadataRefreshInterval = 60;
3634
private long metadataExpireInterval = 600;
3735

36+
private String splitFilterConfig;
37+
private SplitFilterProviderType splitFilterProviderType = SplitFilterProviderType.MYSQL;
3838
private SplitProviderType splitProviderType = SplitProviderType.MYSQL;
3939

4040
public boolean isPolymorphicTypeEnabled()
@@ -49,18 +49,6 @@ public ClpConfig setPolymorphicTypeEnabled(boolean polymorphicTypeEnabled)
4949
return this;
5050
}
5151

52-
public MetadataFilterProviderType getMetadataFilterProviderType()
53-
{
54-
return metadataFilterProviderType;
55-
}
56-
57-
@Config("clp.metadata-filter-provider-type")
58-
public ClpConfig setMetadataFilterProviderType(MetadataFilterProviderType metadataFilterProviderType)
59-
{
60-
this.metadataFilterProviderType = metadataFilterProviderType;
61-
return this;
62-
}
63-
6452
public MetadataProviderType getMetadataProviderType()
6553
{
6654
return metadataProviderType;
@@ -121,18 +109,6 @@ public ClpConfig setMetadataDbPassword(String metadataDbPassword)
121109
return this;
122110
}
123111

124-
public String getMetadataFilterConfig()
125-
{
126-
return metadataFilterConfig;
127-
}
128-
129-
@Config("clp.metadata-filter-config")
130-
public ClpConfig setMetadataFilterConfig(String metadataFilterConfig)
131-
{
132-
this.metadataFilterConfig = metadataFilterConfig;
133-
return this;
134-
}
135-
136112
public String getMetadataTablePrefix()
137113
{
138114
return metadataTablePrefix;
@@ -175,6 +151,30 @@ public ClpConfig setMetadataExpireInterval(long metadataExpireInterval)
175151
return this;
176152
}
177153

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+
178178
public SplitProviderType getSplitProviderType()
179179
{
180180
return splitProviderType;
@@ -187,12 +187,12 @@ public ClpConfig setSplitProviderType(SplitProviderType splitProviderType)
187187
return this;
188188
}
189189

190-
public enum MetadataFilterProviderType
190+
public enum MetadataProviderType
191191
{
192192
MYSQL
193193
}
194194

195-
public enum MetadataProviderType
195+
public enum SplitFilterProviderType
196196
{
197197
MYSQL
198198
}

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

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

1616
import com.facebook.airlift.bootstrap.LifeCycleManager;
1717
import com.facebook.airlift.log.Logger;
18-
import com.facebook.presto.plugin.clp.metadata.filter.ClpMetadataFilterProvider;
18+
import com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterProvider;
1919
import com.facebook.presto.spi.connector.Connector;
2020
import com.facebook.presto.spi.connector.ConnectorMetadata;
2121
import com.facebook.presto.spi.connector.ConnectorPlanOptimizerProvider;
@@ -41,7 +41,7 @@ public class ClpConnector
4141
private final ClpSplitManager splitManager;
4242
private final FunctionMetadataManager functionManager;
4343
private final StandardFunctionResolution functionResolution;
44-
private final ClpMetadataFilterProvider metadataFilterProvider;
44+
private final ClpSplitFilterProvider splitFilterProvider;
4545

4646
@Inject
4747
public ClpConnector(
@@ -51,21 +51,21 @@ public ClpConnector(
5151
ClpSplitManager splitManager,
5252
FunctionMetadataManager functionManager,
5353
StandardFunctionResolution functionResolution,
54-
ClpMetadataFilterProvider metadataFilterProvider)
54+
ClpSplitFilterProvider splitFilterProvider)
5555
{
5656
this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null");
5757
this.metadata = requireNonNull(metadata, "metadata is null");
5858
this.recordSetProvider = requireNonNull(recordSetProvider, "recordSetProvider is null");
5959
this.splitManager = requireNonNull(splitManager, "splitManager is null");
6060
this.functionManager = requireNonNull(functionManager, "functionManager is null");
6161
this.functionResolution = requireNonNull(functionResolution, "functionResolution is null");
62-
this.metadataFilterProvider = requireNonNull(metadataFilterProvider, "metadataFilterProvider is null");
62+
this.splitFilterProvider = requireNonNull(splitFilterProvider, "splitFilterProvider is null");
6363
}
6464

6565
@Override
6666
public ConnectorPlanOptimizerProvider getConnectorPlanOptimizerProvider()
6767
{
68-
return new ClpPlanOptimizerProvider(functionManager, functionResolution, metadataFilterProvider);
68+
return new ClpPlanOptimizerProvider(functionManager, functionResolution, splitFilterProvider);
6969
}
7070

7171
@Override

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ 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);
3434

3535
private final ErrorCode errorCode;
3636

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
import com.facebook.airlift.configuration.AbstractConfigurationAwareModule;
1717
import com.facebook.presto.plugin.clp.metadata.ClpMetadataProvider;
1818
import com.facebook.presto.plugin.clp.metadata.ClpMySqlMetadataProvider;
19-
import com.facebook.presto.plugin.clp.metadata.filter.ClpMetadataFilterProvider;
20-
import com.facebook.presto.plugin.clp.metadata.filter.ClpMySqlMetadataFilterProvider;
19+
import com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterProvider;
20+
import com.facebook.presto.plugin.clp.split.filter.ClpMySqlSplitFilterProvider;
2121
import com.facebook.presto.plugin.clp.split.ClpMySqlSplitProvider;
2222
import com.facebook.presto.plugin.clp.split.ClpSplitProvider;
2323
import com.facebook.presto.spi.PrestoException;
2424
import com.google.inject.Binder;
2525
import com.google.inject.Scopes;
2626

2727
import static com.facebook.airlift.configuration.ConfigBinder.configBinder;
28-
import static com.facebook.presto.plugin.clp.ClpConfig.MetadataFilterProviderType;
28+
import static com.facebook.presto.plugin.clp.ClpConfig.SplitFilterProviderType;
2929
import static com.facebook.presto.plugin.clp.ClpConfig.MetadataProviderType;
3030
import static com.facebook.presto.plugin.clp.ClpConfig.SplitProviderType;
3131
import static com.facebook.presto.plugin.clp.ClpErrorCode.CLP_UNSUPPORTED_METADATA_SOURCE;
@@ -45,8 +45,8 @@ protected void setup(Binder binder)
4545

4646
ClpConfig config = buildConfigObject(ClpConfig.class);
4747

48-
if (MetadataFilterProviderType.MYSQL == config.getMetadataFilterProviderType()) {
49-
binder.bind(ClpMetadataFilterProvider.class).to(ClpMySqlMetadataFilterProvider.class).in(Scopes.SINGLETON);
48+
if (SplitFilterProviderType.MYSQL == config.getSplitFilterProviderType()) {
49+
binder.bind(ClpSplitFilterProvider.class).to(ClpMySqlSplitFilterProvider.class).in(Scopes.SINGLETON);
5050
}
5151

5252
if (config.getMetadataProviderType() == MetadataProviderType.MYSQL) {

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
package com.facebook.presto.plugin.clp;
1515

1616
import com.facebook.airlift.log.Logger;
17-
import com.facebook.presto.plugin.clp.metadata.filter.ClpMetadataFilterProvider;
17+
import com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterProvider;
1818
import com.facebook.presto.spi.ColumnHandle;
1919
import com.facebook.presto.spi.ConnectorPlanOptimizer;
2020
import com.facebook.presto.spi.ConnectorPlanRewriter;
@@ -48,13 +48,13 @@ public class ClpPlanOptimizer
4848
private static final Logger log = Logger.get(ClpPlanOptimizer.class);
4949
private final FunctionMetadataManager functionManager;
5050
private final StandardFunctionResolution functionResolution;
51-
private final ClpMetadataFilterProvider metadataFilterProvider;
51+
private final ClpSplitFilterProvider splitFilterProvider;
5252

53-
public ClpPlanOptimizer(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpMetadataFilterProvider metadataFilterProvider)
53+
public ClpPlanOptimizer(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpSplitFilterProvider splitFilterProvider)
5454
{
5555
this.functionManager = requireNonNull(functionManager, "functionManager is null");
5656
this.functionResolution = requireNonNull(functionResolution, "functionResolution is null");
57-
this.metadataFilterProvider = requireNonNull(metadataFilterProvider, "metadataFilterProvider is null");
57+
this.splitFilterProvider = requireNonNull(splitFilterProvider, "splitFilterProvider is null");
5858
}
5959

6060
@Override
@@ -63,9 +63,9 @@ public PlanNode optimize(PlanNode maxSubplan, ConnectorSession session, Variable
6363
Rewriter rewriter = new Rewriter(idAllocator);
6464
PlanNode optimizedPlanNode = rewriteWith(rewriter, maxSubplan);
6565

66-
// Throw exception if any required metadata filters are missing
66+
// Throw exception if any required split filters are missing
6767
if (!rewriter.tableScopeSet.isEmpty() && !rewriter.hasVisitedFilter) {
68-
metadataFilterProvider.checkContainsRequiredFilters(rewriter.tableScopeSet, "");
68+
splitFilterProvider.checkContainsRequiredFilters(rewriter.tableScopeSet, "");
6969
}
7070
return optimizedPlanNode;
7171
}
@@ -110,17 +110,17 @@ public PlanNode visitFilter(FilterNode node, RewriteContext<Void> context)
110110
new ClpFilterToKqlConverter(
111111
functionResolution,
112112
functionManager,
113-
metadataFilterProvider.getColumnNames(tableScope)),
113+
splitFilterProvider.getColumnNames(tableScope)),
114114
assignments);
115115
Optional<String> kqlQuery = clpExpression.getPushDownExpression();
116116
Optional<String> metadataSqlQuery = clpExpression.getMetadataSqlQuery();
117117
Optional<RowExpression> remainingPredicate = clpExpression.getRemainingExpression();
118118

119119
// Perform required metadata filter checks before handling the KQL query (if kqlQuery
120120
// isn't present, we'll return early, skipping subsequent checks).
121-
metadataFilterProvider.checkContainsRequiredFilters(ImmutableSet.of(tableScope), metadataSqlQuery.orElse(""));
121+
splitFilterProvider.checkContainsRequiredFilters(ImmutableSet.of(tableScope), metadataSqlQuery.orElse(""));
122122
if (metadataSqlQuery.isPresent()) {
123-
metadataSqlQuery = Optional.of(metadataFilterProvider.remapMetadataFilterPushDown(tableScope, metadataSqlQuery.get()));
123+
metadataSqlQuery = Optional.of(splitFilterProvider.remapSplitFilterPushDownExpression(tableScope, metadataSqlQuery.get()));
124124
log.debug("Metadata SQL query: %s", metadataSqlQuery);
125125
}
126126

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*/
1414
package com.facebook.presto.plugin.clp;
1515

16-
import com.facebook.presto.plugin.clp.metadata.filter.ClpMetadataFilterProvider;
16+
import com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterProvider;
1717
import com.facebook.presto.spi.ConnectorPlanOptimizer;
1818
import com.facebook.presto.spi.connector.ConnectorPlanOptimizerProvider;
1919
import com.facebook.presto.spi.function.FunctionMetadataManager;
@@ -29,14 +29,14 @@ public class ClpPlanOptimizerProvider
2929
{
3030
private final FunctionMetadataManager functionManager;
3131
private final StandardFunctionResolution functionResolution;
32-
private final ClpMetadataFilterProvider metadataFilterProvider;
32+
private final ClpSplitFilterProvider splitFilterProvider;
3333

3434
@Inject
35-
public ClpPlanOptimizerProvider(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpMetadataFilterProvider metadataFilterProvider)
35+
public ClpPlanOptimizerProvider(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpSplitFilterProvider splitFilterProvider)
3636
{
3737
this.functionManager = functionManager;
3838
this.functionResolution = functionResolution;
39-
this.metadataFilterProvider = metadataFilterProvider;
39+
this.splitFilterProvider = splitFilterProvider;
4040
}
4141

4242
@Override
@@ -48,6 +48,6 @@ public Set<ConnectorPlanOptimizer> getLogicalPlanOptimizers()
4848
@Override
4949
public Set<ConnectorPlanOptimizer> getPhysicalPlanOptimizers()
5050
{
51-
return ImmutableSet.of(new ClpPlanOptimizer(functionManager, functionResolution, metadataFilterProvider));
51+
return ImmutableSet.of(new ClpPlanOptimizer(functionManager, functionResolution, splitFilterProvider));
5252
}
5353
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* See the License for the specific language governing permissions and
1212
* limitations under the License.
1313
*/
14-
package com.facebook.presto.plugin.clp.metadata.filter;
14+
package com.facebook.presto.plugin.clp.split.filter;
1515

1616
import com.fasterxml.jackson.core.JsonParser;
1717
import com.fasterxml.jackson.databind.DeserializationContext;
@@ -21,29 +21,29 @@
2121

2222
import java.io.IOException;
2323

24-
import static com.facebook.presto.plugin.clp.metadata.filter.ClpMetadataFilterConfig.CustomMetadataFilterOptions;
24+
import static com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterConfig.CustomSplitFilterOptions;
2525

2626
/**
27-
* Uses the given implementation of {@link CustomMetadataFilterOptions} to deserialize the
27+
* Uses the given implementation of {@link CustomSplitFilterOptions} to deserialize the
2828
* {@code "customOptions"} field in the filter. The implementation is originally chosen
29-
* by the {@code clp.metadata-provider-type} config option.
29+
* by the {@code clp.split-filter-provider-type} config option.
3030
*/
31-
public class ClpCustomMetadataFilterOptionsDeserializer
32-
extends JsonDeserializer<CustomMetadataFilterOptions>
31+
public class ClpCustomSplitFilterOptionsDeserializer
32+
extends JsonDeserializer<CustomSplitFilterOptions>
3333
{
34-
private final Class<? extends CustomMetadataFilterOptions> actualCustomMetadataFilterOptionsClass;
34+
private final Class<? extends CustomSplitFilterOptions> actualCustomSplitFilterOptionsClass;
3535

36-
public ClpCustomMetadataFilterOptionsDeserializer(Class<? extends CustomMetadataFilterOptions> actualCustomMetadataFilterOptionsClass)
36+
public ClpCustomSplitFilterOptionsDeserializer(Class<? extends CustomSplitFilterOptions> actualCustomSplitFilterOptionsClass)
3737
{
38-
this.actualCustomMetadataFilterOptionsClass = actualCustomMetadataFilterOptionsClass;
38+
this.actualCustomSplitFilterOptionsClass = actualCustomSplitFilterOptionsClass;
3939
}
4040

4141
@Override
42-
public CustomMetadataFilterOptions deserialize(JsonParser p, DeserializationContext ctxt) throws IOException
42+
public CustomSplitFilterOptions deserialize(JsonParser p, DeserializationContext ctxt) throws IOException
4343
{
4444
ObjectNode node = p.getCodec().readTree(p);
4545
ObjectMapper mapper = (ObjectMapper) p.getCodec();
4646

47-
return mapper.treeToValue(node, actualCustomMetadataFilterOptionsClass);
47+
return mapper.treeToValue(node, actualCustomSplitFilterOptionsClass);
4848
}
4949
}

0 commit comments

Comments
 (0)