Skip to content

Commit d3a8ff3

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

File tree

14 files changed

+218
-216
lines changed

14 files changed

+218
-216
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: 3 additions & 3 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 metadataFilterProvider;
4545

4646
@Inject
4747
public ClpConnector(
@@ -51,7 +51,7 @@ public ClpConnector(
5151
ClpSplitManager splitManager,
5252
FunctionMetadataManager functionManager,
5353
StandardFunctionResolution functionResolution,
54-
ClpMetadataFilterProvider metadataFilterProvider)
54+
ClpSplitFilterProvider metadataFilterProvider)
5555
{
5656
this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null");
5757
this.metadata = requireNonNull(metadata, "metadata is null");

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: 4 additions & 4 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,9 +48,9 @@ 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 metadataFilterProvider;
5252

53-
public ClpPlanOptimizer(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpMetadataFilterProvider metadataFilterProvider)
53+
public ClpPlanOptimizer(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpSplitFilterProvider metadataFilterProvider)
5454
{
5555
this.functionManager = requireNonNull(functionManager, "functionManager is null");
5656
this.functionResolution = requireNonNull(functionResolution, "functionResolution is null");
@@ -120,7 +120,7 @@ public PlanNode visitFilter(FilterNode node, RewriteContext<Void> context)
120120
// isn't present, we'll return early, skipping subsequent checks).
121121
metadataFilterProvider.checkContainsRequiredFilters(ImmutableSet.of(tableScope), metadataSqlQuery.orElse(""));
122122
if (metadataSqlQuery.isPresent()) {
123-
metadataSqlQuery = Optional.of(metadataFilterProvider.remapMetadataFilterPushDown(tableScope, metadataSqlQuery.get()));
123+
metadataSqlQuery = Optional.of(metadataFilterProvider.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: 3 additions & 3 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,10 +29,10 @@ public class ClpPlanOptimizerProvider
2929
{
3030
private final FunctionMetadataManager functionManager;
3131
private final StandardFunctionResolution functionResolution;
32-
private final ClpMetadataFilterProvider metadataFilterProvider;
32+
private final ClpSplitFilterProvider metadataFilterProvider;
3333

3434
@Inject
35-
public ClpPlanOptimizerProvider(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpMetadataFilterProvider metadataFilterProvider)
35+
public ClpPlanOptimizerProvider(FunctionMetadataManager functionManager, StandardFunctionResolution functionResolution, ClpSplitFilterProvider metadataFilterProvider)
3636
{
3737
this.functionManager = functionManager;
3838
this.functionResolution = functionResolution;
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
}
Lines changed: 19 additions & 19 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.facebook.presto.plugin.clp.ClpConfig;
1717
import com.fasterxml.jackson.annotation.JsonProperty;
@@ -23,26 +23,26 @@
2323
import java.util.Map;
2424
import java.util.Objects;
2525

26-
import static com.facebook.presto.plugin.clp.metadata.filter.ClpMetadataFilterConfig.CustomMetadataFilterOptions;
26+
import static com.facebook.presto.plugin.clp.split.filter.ClpSplitFilterConfig.CustomSplitFilterOptions;
2727
import static com.google.common.collect.ImmutableMap.toImmutableMap;
2828
import static java.lang.String.format;
2929

3030
/**
31-
* Loads and manages metadata filter configurations of MySQL metadata database for the CLP
31+
* Loads and manages split filter configurations of MySQL metadata database for the CLP
3232
* connector.
3333
*/
34-
public class ClpMySqlMetadataFilterProvider
35-
extends ClpMetadataFilterProvider
34+
public class ClpMySqlSplitFilterProvider
35+
extends ClpSplitFilterProvider
3636
{
3737
@Inject
38-
public ClpMySqlMetadataFilterProvider(ClpConfig config)
38+
public ClpMySqlSplitFilterProvider(ClpConfig config)
3939
{
4040
super(config);
4141
}
4242

4343
/**
4444
* This method performs regex-based replacements according to the {@code "rangeMapping"} field
45-
* in {@link ClpMySqlCustomMetadataFilterOptions} to convert numeric filter expressions. For
45+
* in {@link ClpMySqlCustomSplitFilterOptions} to convert numeric filter expressions. For
4646
* example:
4747
* <ul>
4848
* <li>{@code "msg.timestamp" >= 1234} → {@code end_timestamp >= 1234}</li>
@@ -56,11 +56,11 @@ public ClpMySqlMetadataFilterProvider(ClpConfig config)
5656
* @return the rewritten SQL string
5757
*/
5858
@Override
59-
public String remapMetadataFilterPushDown(String scope, String pushDownExpression)
59+
public String remapSplitFilterPushDownExpression(String scope, String pushDownExpression)
6060
{
6161
String[] splitScope = scope.split("\\.");
6262

63-
Map<String, ClpMySqlCustomMetadataFilterOptions.RangeMapping> mappings = new HashMap<>(getAllMappingsFromFilters(filterMap.get(splitScope[0])));
63+
Map<String, ClpMySqlCustomSplitFilterOptions.RangeMapping> mappings = new HashMap<>(getAllMappingsFromFilters(filterMap.get(splitScope[0])));
6464

6565
if (1 < splitScope.length) {
6666
mappings.putAll(getAllMappingsFromFilters(filterMap.get(splitScope[0] + "." + splitScope[1])));
@@ -71,9 +71,9 @@ public String remapMetadataFilterPushDown(String scope, String pushDownExpressio
7171
}
7272

7373
String remappedSql = pushDownExpression;
74-
for (Map.Entry<String, ClpMySqlCustomMetadataFilterOptions.RangeMapping> entry : mappings.entrySet()) {
74+
for (Map.Entry<String, ClpMySqlCustomSplitFilterOptions.RangeMapping> entry : mappings.entrySet()) {
7575
String key = entry.getKey();
76-
ClpMySqlCustomMetadataFilterOptions.RangeMapping value = entry.getValue();
76+
ClpMySqlCustomSplitFilterOptions.RangeMapping value = entry.getValue();
7777
remappedSql = remappedSql.replaceAll(
7878
format("\"(%s)\"\\s(>=?)\\s(-?[0-9]+(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)", key),
7979
format("%s $2 $3", value.upperBound));
@@ -88,21 +88,21 @@ public String remapMetadataFilterPushDown(String scope, String pushDownExpressio
8888
}
8989

9090
@Override
91-
protected Class<? extends CustomMetadataFilterOptions> getMetadataProviderSpecificOptionsClass()
91+
protected Class<? extends CustomSplitFilterOptions> getCustomSplitFilterOptionsClass()
9292
{
93-
return ClpMySqlCustomMetadataFilterOptions.class;
93+
return ClpMySqlCustomSplitFilterOptions.class;
9494
}
9595

96-
private Map<String, ClpMySqlCustomMetadataFilterOptions.RangeMapping> getAllMappingsFromFilters(List<ClpMetadataFilterConfig> filters)
96+
private Map<String, ClpMySqlCustomSplitFilterOptions.RangeMapping> getAllMappingsFromFilters(List<ClpSplitFilterConfig> filters)
9797
{
9898
return null != filters
9999
? filters.stream()
100100
.filter(filter ->
101-
filter.customOptions instanceof ClpMySqlCustomMetadataFilterOptions &&
102-
((ClpMySqlCustomMetadataFilterOptions) filter.customOptions).rangeMapping != null)
101+
filter.customOptions instanceof ClpMySqlCustomSplitFilterOptions &&
102+
((ClpMySqlCustomSplitFilterOptions) filter.customOptions).rangeMapping != null)
103103
.collect(toImmutableMap(
104104
filter -> filter.columnName,
105-
filter -> ((ClpMySqlCustomMetadataFilterOptions) filter.customOptions).rangeMapping))
105+
filter -> ((ClpMySqlCustomSplitFilterOptions) filter.customOptions).rangeMapping))
106106
: ImmutableMap.of();
107107
}
108108

@@ -120,8 +120,8 @@ private Map<String, ClpMySqlCustomMetadataFilterOptions.RangeMapping> getAllMapp
120120
* </li>
121121
* </ul>
122122
*/
123-
protected static class ClpMySqlCustomMetadataFilterOptions
124-
implements CustomMetadataFilterOptions
123+
protected static class ClpMySqlCustomSplitFilterOptions
124+
implements CustomSplitFilterOptions
125125
{
126126
@JsonProperty("rangeMapping")
127127
public RangeMapping rangeMapping;

0 commit comments

Comments
 (0)