use of org.apache.geode.cache.query.SelectResults in project geode by apache.
the class GroupByTestImpl method testAggregateFuncCountStar.
@Test
public void testAggregateFuncCountStar() throws Exception {
Region region = this.createRegion("portfolio", Portfolio.class);
for (int i = 1; i < 200; ++i) {
Portfolio pf = new Portfolio(i);
pf.shortID = (short) ((short) i % 5);
region.put("" + i, pf);
}
String queryStr = "select p.status as status, Count(*) as countt from /portfolio p where p.ID > 0 group by status ";
QueryService qs = CacheUtils.getQueryService();
Query query = qs.newQuery(queryStr);
CompiledSelect cs = ((DefaultQuery) query).getSelect();
SelectResults sr = (SelectResults) query.execute();
assertTrue(sr.getCollectionType().getElementType().isStructType());
assertEquals(2, sr.size());
Iterator iter = sr.iterator();
Region rgn = CacheUtils.getRegion("portfolio");
int activeCount = 0;
int inactiveCount = 0;
for (Object o : rgn.values()) {
Portfolio pf = (Portfolio) o;
if (pf.status.equals("active")) {
++activeCount;
} else if (pf.status.equals("inactive")) {
++inactiveCount;
} else {
fail("unexpected status");
}
}
while (iter.hasNext()) {
Struct struct = (Struct) iter.next();
StructType structType = struct.getStructType();
ObjectType[] fieldTypes = structType.getFieldTypes();
assertEquals("String", fieldTypes[0].getSimpleClassName());
assertEquals("Integer", fieldTypes[1].getSimpleClassName());
if (struct.get("status").equals("active")) {
assertEquals(activeCount, ((Integer) struct.get("countt")).intValue());
} else if (struct.get("status").equals("inactive")) {
assertEquals(inactiveCount, ((Integer) struct.get("countt")).intValue());
} else {
fail("unexpected value of status");
}
}
ObjectType elementType = sr.getCollectionType().getElementType();
assertTrue(elementType.isStructType());
StructType structType = (StructType) elementType;
ObjectType[] fieldTypes = structType.getFieldTypes();
assertEquals("String", fieldTypes[0].getSimpleClassName());
assertEquals("Integer", fieldTypes[1].getSimpleClassName());
}
use of org.apache.geode.cache.query.SelectResults in project geode by apache.
the class GroupByTestImpl method testConvertibleGroupByQuery_refer_column.
@Test
public void testConvertibleGroupByQuery_refer_column() throws Exception {
Region region = this.createRegion("portfolio", Portfolio.class);
for (int i = 1; i < 200; ++i) {
Portfolio pf = new Portfolio(i);
pf.shortID = (short) ((short) i / 5);
region.put("" + i, pf);
}
String queryStr = "select p.shortID from /portfolio p where p.ID >= 0 group by p.shortID ";
QueryService qs = CacheUtils.getQueryService();
Query query = qs.newQuery(queryStr);
SelectResults<Short> results = (SelectResults<Short>) query.execute();
Iterator<Short> iter = results.asList().iterator();
int counter = 0;
while (iter.hasNext()) {
Short shortID = iter.next();
assertEquals(counter++, shortID.intValue());
}
assertEquals(39, counter - 1);
}
use of org.apache.geode.cache.query.SelectResults in project geode by apache.
the class INOperatorJUnitTest method testRegionBulkGet.
@Test
public void testRegionBulkGet() throws Exception {
Cache cache = CacheUtils.getCache();
AttributesFactory attributesFactory = new AttributesFactory();
RegionAttributes regionAttributes = attributesFactory.create();
Region region = cache.createRegion("pos", regionAttributes);
region.put("6", new Integer(6));
region.put("10", new Integer(10));
region.put("12", new Integer(10));
QueryService qs = cache.getQueryService();
Query q;
SelectResults results;
Object[] keys;
Set expectedResults;
q = qs.newQuery("SELECT e.value FROM /pos.entrySet e WHERE e.key IN $1");
keys = new Object[] { "5", "6", "10", "45" };
results = (SelectResults) q.execute(new Object[] { keys });
expectedResults = new HashSet();
expectedResults.add(new Integer(6));
expectedResults.add(new Integer(10));
assertEquals(expectedResults, results.asSet());
q = qs.newQuery("SELECT e.value FROM /pos.entrySet e WHERE e.key IN $1");
keys = new Object[] { "42" };
results = (SelectResults) q.execute(new Object[] { keys });
expectedResults = new HashSet();
assertEquals(expectedResults, results.asSet());
for (int i = 0; i < 1000; i++) {
region.put(String.valueOf(i), new Integer(i));
}
q = qs.newQuery("SELECT e.value FROM /pos.entrySet e WHERE e.key IN $1");
keys = new Object[] { "5", "6", "10", "45" };
results = (SelectResults) q.execute(new Object[] { keys });
expectedResults = new HashSet();
expectedResults.add(new Integer(5));
expectedResults.add(new Integer(6));
expectedResults.add(new Integer(10));
expectedResults.add(new Integer(45));
assertEquals(expectedResults, results.asSet());
q = qs.newQuery("SELECT e.key, e.value FROM /pos.entrySet e WHERE e.key IN $1");
keys = new Object[] { "5", "6", "10", "45" };
results = (SelectResults) q.execute(new Object[] { keys });
assertEquals(4, results.size());
region.destroyRegion();
}
use of org.apache.geode.cache.query.SelectResults in project geode by apache.
the class GroupByTestImpl method testSumWithMultiColumnGroupBy.
@Test
public void testSumWithMultiColumnGroupBy() throws Exception {
Region region = this.createRegion("portfolio", Portfolio.class);
for (int i = 1; i < 200; ++i) {
Portfolio pf = new Portfolio(i);
pf.shortID = (short) ((short) i % 5);
region.put("" + i, pf);
}
Map<String, Integer> expectedData = new HashMap<String, Integer>();
for (Object o : region.values()) {
Portfolio pf = (Portfolio) o;
String key = pf.status + "_" + pf.shortID;
if (expectedData.containsKey(key)) {
int sum = expectedData.get(key).intValue() + pf.ID;
expectedData.put(key, sum);
} else {
expectedData.put(key, pf.ID);
}
}
String queryStr = "select p.status as status, p.shortID as shortID, sum(p.ID) as summ from /portfolio p" + " where p.ID > 0 group by status, shortID ";
QueryService qs = CacheUtils.getQueryService();
Query query = qs.newQuery(queryStr);
CompiledSelect cs = ((DefaultQuery) query).getSelect();
SelectResults sr = (SelectResults) query.execute();
assertTrue(sr.getCollectionType().getElementType().isStructType());
assertEquals(expectedData.size(), sr.size());
Iterator iter = sr.iterator();
while (iter.hasNext()) {
Struct struct = (Struct) iter.next();
StructType structType = struct.getStructType();
ObjectType[] fieldTypes = structType.getFieldTypes();
assertEquals("String", fieldTypes[0].getSimpleClassName());
assertEquals("Short", fieldTypes[1].getSimpleClassName());
assertEquals("Number", fieldTypes[2].getSimpleClassName());
String key = struct.get("status") + "_" + struct.get("shortID");
int sum = ((Integer) struct.get("summ")).intValue();
assertTrue(expectedData.containsKey(key));
assertEquals(expectedData.get(key).intValue(), sum);
}
ObjectType elementType = sr.getCollectionType().getElementType();
assertTrue(elementType.isStructType());
StructType structType = (StructType) elementType;
ObjectType[] fieldTypes = structType.getFieldTypes();
assertEquals("String", fieldTypes[0].getSimpleClassName());
assertEquals("Short", fieldTypes[1].getSimpleClassName());
assertEquals("Number", fieldTypes[2].getSimpleClassName());
}
use of org.apache.geode.cache.query.SelectResults in project geode by apache.
the class GroupByTestImpl method testAggregateFuncMin.
@Test
public void testAggregateFuncMin() throws Exception {
Region region = this.createRegion("portfolio", Portfolio.class);
for (int i = 1; i < 200; ++i) {
Portfolio pf = new Portfolio(i);
pf.shortID = (short) ((short) i / 5);
region.put("" + i, pf);
}
String queryStr = "select p.status as status, Min(p.ID) as Minn from /portfolio p where p.ID > 0 group by status ";
QueryService qs = CacheUtils.getQueryService();
Query query = qs.newQuery(queryStr);
CompiledSelect cs = ((DefaultQuery) query).getSelect();
SelectResults sr = (SelectResults) query.execute();
assertTrue(sr.getCollectionType().getElementType().isStructType());
assertEquals(2, sr.size());
Iterator iter = sr.iterator();
Region rgn = CacheUtils.getRegion("portfolio");
int activeMinID = Integer.MAX_VALUE;
int inactiveMinID = Integer.MAX_VALUE;
for (Object o : rgn.values()) {
Portfolio pf = (Portfolio) o;
if (pf.status.equals("active")) {
if (pf.ID < activeMinID) {
activeMinID = pf.ID;
}
} else if (pf.status.equals("inactive")) {
if (pf.ID < inactiveMinID) {
inactiveMinID = pf.ID;
}
} else {
fail("unexpected value of status");
}
}
while (iter.hasNext()) {
Struct struct = (Struct) iter.next();
StructType structType = struct.getStructType();
ObjectType[] fieldTypes = structType.getFieldTypes();
assertEquals("String", fieldTypes[0].getSimpleClassName());
assertEquals("Number", fieldTypes[1].getSimpleClassName());
if (struct.get("status").equals("active")) {
assertEquals(activeMinID, ((Integer) struct.get("Minn")).intValue());
} else if (struct.get("status").equals("inactive")) {
assertEquals(inactiveMinID, ((Integer) struct.get("Minn")).intValue());
} else {
fail("unexpected value of status");
}
}
ObjectType elementType = sr.getCollectionType().getElementType();
assertTrue(elementType.isStructType());
StructType structType = (StructType) elementType;
ObjectType[] fieldTypes = structType.getFieldTypes();
assertEquals("String", fieldTypes[0].getSimpleClassName());
assertEquals("Number", fieldTypes[1].getSimpleClassName());
}
Aggregations