>From Ali Alsuliman <[email protected]>: Ali Alsuliman has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17431 )
Change subject: [NO ISSUE][*DB] Create SAMPLE indexes after secondary indexes ...................................................................... [NO ISSUE][*DB] Create SAMPLE indexes after secondary indexes - user model changes: no - storage format changes: no - interface changes: no Change-Id: I42e9ad0b13d6e785d603561387150e975ef1b50f Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17431 Reviewed-by: Murtadha Hubail <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java 2 files changed, 35 insertions(+), 4 deletions(-) Approvals: Murtadha Hubail: Looks good to me, approved Jenkins: Verified; Verified Objections: Anon. E. Moose #1000171: Violations found diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java index b0dc162..ba6c602 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java @@ -28,6 +28,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import java.util.stream.IntStream; import org.apache.asterix.active.IActiveEntityEventsListener; @@ -371,10 +372,19 @@ // Creates and loads all secondary indexes for the rebalance target dataset. private static void createAndLoadSecondaryIndexesForTarget(Dataset source, Dataset target, MetadataProvider metadataProvider, IHyracksClientConnection hcc) throws Exception { - for (Index index : metadataProvider.getDatasetIndexes(source.getDataverseName(), source.getDatasetName())) { - if (!index.isSecondaryIndex()) { - continue; - } + List<Index> indexes = metadataProvider.getDatasetIndexes(source.getDataverseName(), source.getDatasetName()); + List<Index> secondaryIndexes = indexes.stream().filter(Index::isSecondaryIndex).collect(Collectors.toList()); + List<Index> nonSampleIndexes = + secondaryIndexes.stream().filter(idx -> !idx.isSampleIndex()).collect(Collectors.toList()); + List<Index> sampleIndexes = secondaryIndexes.stream().filter(Index::isSampleIndex).collect(Collectors.toList()); + // must create all non samples secondary indexes first since samples need the stats of secondary indexes + createAndLoadIndexes(target, metadataProvider, hcc, nonSampleIndexes); + createAndLoadIndexes(target, metadataProvider, hcc, sampleIndexes); + } + + private static void createAndLoadIndexes(Dataset target, MetadataProvider metadataProvider, + IHyracksClientConnection hcc, List<Index> indexes) throws Exception { + for (Index index : indexes) { // Creates the secondary index. JobSpecification indexCreationJobSpec = IndexUtil.buildSecondaryIndexCreationJobSpec(target, index, metadataProvider, null); diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java index bbccd65..6b12bf8 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java @@ -138,6 +138,10 @@ this.pendingOp = pendingOp; } + public boolean isSampleIndex() { + return indexType == IndexType.SAMPLE; + } + public boolean isSecondaryIndex() { return !isPrimaryIndex(); } -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17431 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: neo Gerrit-Change-Id: I42e9ad0b13d6e785d603561387150e975ef1b50f Gerrit-Change-Number: 17431 Gerrit-PatchSet: 2 Gerrit-Owner: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-MessageType: merged
