Luo Chen has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/3366
Change subject: [NO ISSUE][STO]Ensure Bloom filters are not built for secondary indexes ...................................................................... [NO ISSUE][STO]Ensure Bloom filters are not built for secondary indexes - user model changes: no - storage format changes: no - interface changes: no Details: - Calculate bloom filter fields properly based on the index type so that we do not build unnecessary bloom filters for secondary indexes. Change-Id: Ib4272e5278bf76fa78af36ccf10d516da12c4810 --- M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBTreeResourceFactoryProvider.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/BTreeResourceFactoryProvider.java 2 files changed, 26 insertions(+), 13 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/66/3366/1 diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBTreeResourceFactoryProvider.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBTreeResourceFactoryProvider.java index 8d37878..4186f4d 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBTreeResourceFactoryProvider.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBTreeResourceFactoryProvider.java @@ -22,6 +22,7 @@ import java.util.Map; import org.apache.asterix.common.config.DatasetConfig.DatasetType; +import org.apache.asterix.common.config.DatasetConfig.IndexType; import org.apache.asterix.common.context.AsterixVirtualBufferCacheProvider; import org.apache.asterix.common.context.IStorageComponentProvider; import org.apache.asterix.external.indexing.FilesIndexDescription; @@ -155,7 +156,8 @@ } private static int[] getBloomFilterFields(Dataset dataset, Index index) throws AlgebricksException { - if (index.isPrimaryIndex()) { + // both the Primary index and the Primary Key index have bloom filters + if (index.isPrimaryIndex() || index.isPrimaryKeyIndex()) { return dataset.getPrimaryBloomFilterFields(); } else if (dataset.getDatasetType() == DatasetType.EXTERNAL) { if (index.getIndexName().equals(IndexingConstants.getFilesIndexName(dataset.getDatasetName()))) { @@ -163,12 +165,17 @@ } else { return new int[] { index.getKeyFieldNames().size() }; } + } else if (index.getIndexType() == IndexType.BTREE || index.getIndexType() == IndexType.RTREE) { + // secondary btrees and rtrees do not have bloom filters + return null; + } else { + // inverted indexes has bloom filters on deleted-key btrees + int numKeys = index.getKeyFieldNames().size(); + int[] bloomFilterKeyFields = new int[numKeys]; + for (int i = 0; i < numKeys; i++) { + bloomFilterKeyFields[i] = i; + } + return bloomFilterKeyFields; } - int numKeys = index.getKeyFieldNames().size(); - int[] bloomFilterKeyFields = new int[numKeys]; - for (int i = 0; i < numKeys; i++) { - bloomFilterKeyFields[i] = i; - } - return bloomFilterKeyFields; } } diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/BTreeResourceFactoryProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/BTreeResourceFactoryProvider.java index 883da84..3f185f1 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/BTreeResourceFactoryProvider.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/BTreeResourceFactoryProvider.java @@ -22,6 +22,7 @@ import java.util.Map; import org.apache.asterix.common.config.DatasetConfig.DatasetType; +import org.apache.asterix.common.config.DatasetConfig.IndexType; import org.apache.asterix.common.context.AsterixVirtualBufferCacheProvider; import org.apache.asterix.common.context.IStorageComponentProvider; import org.apache.asterix.common.exceptions.CompilationException; @@ -194,12 +195,17 @@ } else { return new int[] { index.getKeyFieldNames().size() }; } + } else if (index.getIndexType() == IndexType.BTREE || index.getIndexType() == IndexType.RTREE) { + // secondary btrees and rtrees do not have bloom filters + return null; + } else { + // inverted indexes has bloom filters on deleted-key btrees + int numKeys = index.getKeyFieldNames().size(); + int[] bloomFilterKeyFields = new int[numKeys]; + for (int i = 0; i < numKeys; i++) { + bloomFilterKeyFields[i] = i; + } + return bloomFilterKeyFields; } - int numKeys = index.getKeyFieldNames().size(); - int[] bloomFilterKeyFields = new int[numKeys]; - for (int i = 0; i < numKeys; i++) { - bloomFilterKeyFields[i] = i; - } - return bloomFilterKeyFields; } } -- To view, visit https://asterix-gerrit.ics.uci.edu/3366 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ib4272e5278bf76fa78af36ccf10d516da12c4810 Gerrit-Change-Number: 3366 Gerrit-PatchSet: 1 Gerrit-Owner: Luo Chen <cl...@uci.edu>