This is an automated email from the ASF dual-hosted git repository. mblow pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 9d8f9e53b31da8565f021c52921e1ae739e251e0 Author: Ali Alsuliman <[email protected]> AuthorDate: Fri Jun 6 15:19:52 2025 -0700 [ASTERIXDB-3621][ASTERIXDB-3580][COMP] Use sameAs() for comparing nodes domain when getting partitions map - user model changes: no - storage format changes: no - interface changes: no Details: When getting the partitions map to be included in the required partitioning property, use sameAs() nodes domain comparison similar to PropertiesUtil.matchPartitioningProps() instead of enforcing nodes order as well. Ext-ref: MB-67128 Change-Id: Ie53228de01e7980cd96b39523d8c20da3d188860 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19903 Integration-Tests: Jenkins <[email protected]> Reviewed-by: Hussain Towaileb <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> Tested-by: Hussain Towaileb <[email protected]> --- .../app/function/TPCDSAllTablesDataGeneratorDatasource.java | 2 +- .../app/function/TPCDSSingleTableDataGeneratorDatasource.java | 2 +- .../org/apache/asterix/metadata/declared/FunctionDataSource.java | 5 ++--- .../org/apache/asterix/metadata/declared/MetadataProvider.java | 9 +-------- .../algebricks/core/algebra/metadata/IMetadataProvider.java | 5 +++++ .../core/algebra/properties/DefaultNodeGroupDomain.java | 7 ------- 6 files changed, 10 insertions(+), 20 deletions(-) diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java index ac19b0057e..89d4120d49 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSAllTablesDataGeneratorDatasource.java @@ -70,7 +70,7 @@ public class TPCDSAllTablesDataGeneratorDatasource extends FunctionDataSource { @Override protected AlgebricksAbsolutePartitionConstraint getLocations(IClusterStateManager csm, MetadataProvider md) { - return md.getDataPartitioningProvider().getClusterLocations(); + return md.getClusterLocations(); } @Override diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java index 6551346ed5..46a9303e38 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/TPCDSSingleTableDataGeneratorDatasource.java @@ -78,7 +78,7 @@ public class TPCDSSingleTableDataGeneratorDatasource extends FunctionDataSource @Override protected AlgebricksAbsolutePartitionConstraint getLocations(IClusterStateManager csm, MetadataProvider md) { - return md.getDataPartitioningProvider().getClusterLocations(); + return md.getClusterLocations(); } @Override diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java index 2322e53ac9..02ffc25be9 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FunctionDataSource.java @@ -127,9 +127,8 @@ public abstract class FunctionDataSource extends DataSource { AlgebricksAbsolutePartitionConstraint locations); protected AlgebricksAbsolutePartitionConstraint getLocations(IClusterStateManager csm, MetadataProvider md) { - String[] sortedLocations = md.getDataPartitioningProvider().getClusterLocations().getLocations(); - return new AlgebricksAbsolutePartitionConstraint( - Arrays.stream(sortedLocations).distinct().toArray(String[]::new)); + String[] locations = md.getClusterLocations().getLocations(); + return new AlgebricksAbsolutePartitionConstraint(Arrays.stream(locations).distinct().toArray(String[]::new)); } protected IDataParserFactory createDataParserFactory() { diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java index 71f479f5c3..941c8f7890 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java @@ -25,7 +25,6 @@ import static org.apache.asterix.common.utils.IdentifierUtil.dataset; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -1059,10 +1058,6 @@ public class MetadataProvider implements IMetadataProvider<DataSourceId, String> return dataPartitioningProvider.getClusterLocations(); } - public DataPartitioningProvider getDataPartitioningProvider() { - return dataPartitioningProvider; - } - public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> buildExternalDataLookupRuntime( JobSpecification jobSpec, Dataset dataset, int[] ridIndexes, boolean retainInput, IVariableTypeEnvironment typeEnv, IOperatorSchema opSchema, JobGenContext context, @@ -1880,10 +1875,8 @@ public class MetadataProvider implements IMetadataProvider<DataSourceId, String> if (!(nodeDomain instanceof DefaultNodeGroupDomain inputDomain)) { return null; } - String[] inputLocations = inputDomain.getSortedNodes(); AlgebricksAbsolutePartitionConstraint locations = dataPartitioningProvider.getClusterLocations(); - String[] clusterLocations = locations.getLocations(); - if (!Arrays.equals(inputLocations, clusterLocations)) { + if (!inputDomain.sameAs(new DefaultNodeGroupDomain(locations))) { return null; } return dataPartitioningProvider.getPartitionsMap(); diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java index 20fc9c54cf..a74f10057c 100644 --- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java +++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java @@ -201,6 +201,11 @@ public interface IMetadataProvider<S, I> { boolean isBlockingOperatorDisabled(); + /** + * Returns the cluster partitions map when the input node domain is the same as the cluster. Otherwise, null. + * @param nodeDomain input node domain + * @return the cluster partitions map. + */ int[][] getPartitionsMap(INodeDomain nodeDomain); } diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java index 5921eea161..f785fec24d 100644 --- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java +++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/DefaultNodeGroupDomain.java @@ -18,7 +18,6 @@ */ package org.apache.hyracks.algebricks.core.algebra.properties; -import java.util.Arrays; import java.util.List; import org.apache.commons.collections4.MultiSet; @@ -73,10 +72,4 @@ public class DefaultNodeGroupDomain implements INodeDomain { public String[] getNodes() { return nodes.toArray(new String[0]); } - - public String[] getSortedNodes() { - String[] sortedNodes = nodes.toArray(new String[0]); - Arrays.sort(sortedNodes); - return sortedNodes; - } }
