Till Westmann has submitted this change and it was merged. ( https://asterix-gerrit.ics.uci.edu/3426 )
Change subject: [NO ISSUE][RT][COMP] Use more components to identify a datasource ...................................................................... [NO ISSUE][RT][COMP] Use more components to identify a datasource - user model changes: no - storage format changes: no - interface changes: additional constructor for DataSourceId Change-Id: If371a6c7f8302ee7a83ddba0f1c6aeecdea4d5ef Reviewed-on: https://asterix-gerrit.ics.uci.edu/3426 Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Reviewed-by: Hussain Towaileb <hussai...@gmail.com> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSDataGeneratorDatasource.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java 2 files changed, 40 insertions(+), 18 deletions(-) Approvals: Jenkins: Verified; No violations found; ; Verified Anon. E. Moose (1000171): Hussain Towaileb: Looks good to me, approved diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSDataGeneratorDatasource.java index d0ff67e..cb7e357 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSDataGeneratorDatasource.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSDataGeneratorDatasource.java @@ -36,7 +36,7 @@ public TPCDSDataGeneratorDatasource(INodeDomain domain, String tableName, double scalingFactor) throws AlgebricksException { - super(createDataSourceId(tableName), domain); + super(createDataSourceId(tableName, scalingFactor), domain); this.tableName = tableName; this.scalingFactor = scalingFactor; } @@ -46,13 +46,15 @@ * DataSourceId. This eliminates the issue of creating a single function even though multiple functions calls * are happening with different parameters and the optimizer understands them as a single function. * - * @param tableName table name to be added as part of the DataSourceId - * + * @param tableName + * table name to be added as part of the DataSourceId + * @param scalingFactor + * scaling factor to be added as part of the DataSourceId * @return A DataSourceId that's based on the function details and its parameters */ - private static DataSourceId createDataSourceId(String tableName) { + private static DataSourceId createDataSourceId(String tableName, double scalingFactor) { return new DataSourceId(TPCDSDataGeneratorRewriter.TPCDS_DATA_GENERATOR.getNamespace(), - TPCDSDataGeneratorRewriter.TPCDS_DATA_GENERATOR.getName() + "." + tableName); + TPCDSDataGeneratorRewriter.TPCDS_DATA_GENERATOR.getName(), tableName, Double.toString(scalingFactor)); } @Override diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java index c96fcd1..d61ae15 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java @@ -19,43 +19,63 @@ package org.apache.asterix.metadata.declared; -import java.util.Objects; +import java.util.Arrays; public final class DataSourceId { - private String dataverseName; - private String datasourceName; + private String[] components; + /** + * The original constructor taking + * + * @param dataverseName + * the dataverse (namespace) for this datasource + * @param datasourceName + * the name for this datasource + */ public DataSourceId(String dataverseName, String datasourceName) { - this.dataverseName = dataverseName; - this.datasourceName = datasourceName; + this(new String[] { dataverseName, datasourceName }); + } + + /** + * An extended constructor taking an arbitrary number of name components. + * This constructor allows the definition of datasources that have the same dataverse name and datasource name but + * that would expose different behavior. It enables the definition of (compile-time) parameterized datasources. + * Please note that the first 2 parameters still need to be 1) a dataverse name and 2) a datasource name. + * + * @param components + * name components used to construct the datasource identifier. + */ + public DataSourceId(String... components) { + this.components = components; } @Override public String toString() { - return dataverseName + "." + datasourceName; + return String.join(".", components); } public String getDataverseName() { - return dataverseName; + return components[0]; } public String getDatasourceName() { - return datasourceName; + return components[1]; } @Override public boolean equals(Object o) { - if (this == o) + if (this == o) { return true; - if (o == null || getClass() != o.getClass()) + } + if (o == null || getClass() != o.getClass()) { return false; - DataSourceId that = (DataSourceId) o; - return Objects.equals(dataverseName, that.dataverseName) && Objects.equals(datasourceName, that.datasourceName); + } + return Arrays.equals(components, ((DataSourceId) o).components); } @Override public int hashCode() { - return Objects.hash(dataverseName, datasourceName); + return Arrays.hashCode(components); } } -- To view, visit https://asterix-gerrit.ics.uci.edu/3426 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: If371a6c7f8302ee7a83ddba0f1c6aeecdea4d5ef Gerrit-Change-Number: 3426 Gerrit-PatchSet: 4 Gerrit-Owner: Till Westmann <ti...@apache.org> Gerrit-Reviewer: Anon. E. Moose (1000171) Gerrit-Reviewer: Dmitry Lychagin <dmitry.lycha...@couchbase.com> Gerrit-Reviewer: Hussain Towaileb <hussai...@gmail.com> Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Gerrit-Reviewer: Murtadha Hubail <mhub...@apache.org> Gerrit-Reviewer: Till Westmann <ti...@apache.org>