>From Ali Alsuliman <[email protected]>:
Ali Alsuliman has uploaded this change for review. (
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
---
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, 31 insertions(+), 4 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/31/17431/1
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: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-MessageType: newchange