use of org.apache.geode.cache.query.internal.index.IndexStore.IndexStoreEntry in project geode by apache.
the class IndexMaintenanceJUnitTest method validateIndexForKeys.
private void validateIndexForKeys(CompactRangeIndex ri) {
assertEquals(6, ri.getIndexStorage().size());
CloseableIterator<IndexStoreEntry> itr = null;
try {
itr = ri.getIndexStorage().iterator(null);
while (itr.hasNext()) {
IndexStoreEntry reEntry = (IndexStoreEntry) itr.next();
Object obj = reEntry.getDeserializedRegionKey();
assertTrue(obj instanceof String);
assertTrue(idSet.contains(obj));
}
} finally {
if (itr != null) {
itr.close();
}
}
}
use of org.apache.geode.cache.query.internal.index.IndexStore.IndexStoreEntry in project geode by apache.
the class MapIndexStoreJUnitTest method validateIndexStorage.
/**
* iterates through the index storage structure and compares size with the test list
*/
private void validateIndexStorage() {
CloseableIterator<IndexStoreEntry> iterator = null;
try {
ArrayList structureList = new ArrayList();
iterator = indexDataStructure.iterator(null);
while (iterator.hasNext()) {
IndexStoreEntry ie = iterator.next();
if (entriesContains(ie)) {
structureList.add(ie);
} else {
fail("IndexDataStructure returned an IndexEntry that should not be present:" + ie);
}
}
assertEquals("Expected Number of entries did not match", entries.size(), structureList.size());
} finally {
if (iterator != null) {
iterator.close();
}
}
}
use of org.apache.geode.cache.query.internal.index.IndexStore.IndexStoreEntry in project geode by apache.
the class PdxStringQueryJUnitTest method testQueriesWithCompactRangeIndexPdxInstances.
@Test
public void testQueriesWithCompactRangeIndexPdxInstances() throws Exception {
Index index = qs.createIndex("index1", "secId", "/exampleRegion");
assertTrue(index instanceof CompactRangeIndex);
putPdxInstances();
CloseableIterator<IndexStoreEntry> indexIterator = null;
try {
indexIterator = ((CompactRangeIndex) index).getIndexStorage().iterator(null);
while (indexIterator.hasNext()) {
assertTrue(indexIterator.next().getDeserializedKey() instanceof PdxString);
}
} finally {
if (indexIterator != null) {
indexIterator.close();
}
}
executeQueriesValidateResults(INDEX_TYPE_COMPACTRANGE);
r.clear();
}
use of org.apache.geode.cache.query.internal.index.IndexStore.IndexStoreEntry in project geode by apache.
the class PdxStringQueryJUnitTest method testQueriesWithCompactRangeIndexPdxInstancesREUpdateInProgress.
@Test
public void testQueriesWithCompactRangeIndexPdxInstancesREUpdateInProgress() throws Exception {
Index index = qs.createIndex("index1", "secId", "/exampleRegion");
assertTrue(index instanceof CompactRangeIndex);
putPdxInstancesWithREUpdateInProgress();
CloseableIterator<IndexStoreEntry> indexIterator = null;
try {
indexIterator = ((CompactRangeIndex) index).getIndexStorage().iterator(null);
while (indexIterator.hasNext()) {
assertTrue(indexIterator.next().getDeserializedKey() instanceof PdxString);
}
} finally {
if (indexIterator != null) {
indexIterator.close();
}
}
executeQueriesValidateResults(INDEX_TYPE_COMPACTRANGE);
r.clear();
}
use of org.apache.geode.cache.query.internal.index.IndexStore.IndexStoreEntry in project geode by apache.
the class RangeIndex method queryEquijoinCondition.
// Asif TODO: Provide explanation of the method. Test this method
@Override
public List queryEquijoinCondition(IndexProtocol indx, ExecutionContext context) throws TypeMismatchException, FunctionDomainException, NameResolutionException, QueryInvocationTargetException {
// get a read lock when doing a lookup
long start = updateIndexUseStats();
((AbstractIndex) indx).updateIndexUseStats();
List data = new ArrayList();
Iterator inner = null;
try {
// We will iterate over each of the valueToEntries Map to obatin the keys
// & its correspodning
// Entry to ResultSet Map
Iterator outer = this.valueToEntriesMap.entrySet().iterator();
if (indx instanceof CompactRangeIndex) {
inner = ((CompactRangeIndex) indx).getIndexStorage().iterator(null);
} else {
inner = ((RangeIndex) indx).getValueToEntriesMap().entrySet().iterator();
}
Map.Entry outerEntry = null;
Object innerEntry = null;
Object outerKey = null;
Object innerKey = null;
// boolean incrementOuter = true;
boolean incrementInner = true;
outer: while (outer.hasNext()) {
// if (incrementOuter) {
outerEntry = (Map.Entry) outer.next();
// }
outerKey = outerEntry.getKey();
while (!incrementInner || inner.hasNext()) {
if (incrementInner) {
innerEntry = inner.next();
if (innerEntry instanceof IndexStoreEntry) {
innerKey = ((IndexStoreEntry) innerEntry).getDeserializedKey();
} else {
innerKey = ((Map.Entry) innerEntry).getKey();
}
}
int compare = ((Comparable) outerKey).compareTo(innerKey);
if (compare == 0) {
// Asif :Select the data
// incrementOuter = true;
Object innerValue = null;
if (innerEntry instanceof IndexStoreEntry) {
innerValue = ((CompactRangeIndex) indx).getIndexStorage().get(outerKey);
} else {
innerValue = ((Map.Entry) innerEntry).getValue();
}
populateListForEquiJoin(data, outerEntry.getValue(), innerValue, context, null);
incrementInner = true;
continue outer;
} else if (compare < 0) {
// Asif :The outer key is smaller than the inner key. That means
// that we need to increment the outer loop without moving inner loop.
// incrementOuter = true;
incrementInner = false;
continue outer;
} else {
// Asif : The outer key is greater than inner key , so increment the
// inner loop without changing outer
incrementInner = true;
}
}
break;
}
return data;
} finally {
((AbstractIndex) indx).updateIndexUseEndStats(start);
updateIndexUseEndStats(start);
if (inner != null && indx instanceof CompactRangeIndex) {
((CloseableIterator<IndexStoreEntry>) inner).close();
}
}
}
Aggregations