Search in sources :

Example 96 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class NonDistinctOrderByTestImplementation method testOrderByForUndefined.

@Test
public void testOrderByForUndefined() throws Exception {
    String[] queries = { // 0
    "SELECT  position1.secId FROM /test ORDER BY position1.secId", // 1
    "SELECT  position1.secId FROM /test ORDER BY position1.secId desc", // 2
    "SELECT  position1.secId FROM /test where ID > 0  ORDER BY position1.secId", // 3
    "SELECT  position1.secId FROM /test where ID > 0  ORDER BY position1.secId desc", // 4
    "SELECT  position1.secId, ID FROM /test ORDER BY position1.secId, ID", // 5
    "SELECT  position1.secId, ID FROM /test ORDER BY position1.secId desc, ID" };
    Region r1 = this.createRegion("test", Portfolio.class);
    for (int i = 0; i < 10; i++) {
        Portfolio pf = new Portfolio(i);
        if (i % 2 == 0) {
            pf.position1 = null;
        }
        r1.put(i + "", pf);
    }
    QueryService qs = CacheUtils.getQueryService();
    SelectResults[][] sr = new SelectResults[queries.length][2];
    Object[] srArr = null;
    for (int i = 0; i < queries.length; i++) {
        try {
            sr[i][0] = (SelectResults) qs.newQuery(queries[i]).execute();
            srArr = sr[i][0].toArray();
            if (i == 0) {
                assertEquals("First result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[0]);
            } else if (i == 1) {
                assertEquals("Last result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[srArr.length - 1]);
            } else if (i == 2) {
                assertEquals("First result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[0]);
            } else if (i == 3) {
                assertEquals("Last result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[srArr.length - 1]);
            } else if (i == 4) {
                for (int j = 0; j < srArr.length / 2; j++) {
                    assertEquals("Undefined should  have been returned for query " + queries[i], QueryService.UNDEFINED, ((Struct) srArr[j]).getFieldValues()[0]);
                }
            } else if (i == 5) {
                for (int j = srArr.length - 1; j > srArr.length / 2; j--) {
                    assertEquals("Undefined should  have been returned for query " + queries[i], QueryService.UNDEFINED, ((Struct) srArr[j]).getFieldValues()[0]);
                }
            }
        } catch (Exception e) {
            fail("Query execution failed for: " + queries[i] + " : " + e);
        }
    }
    this.createIndex("secIndex", "position1.secId", r1.getFullPath());
    this.createIndex("IDIndex", "ID", r1.getFullPath());
    for (int i = 0; i < queries.length; i++) {
        try {
            sr[i][1] = (SelectResults) qs.newQuery(queries[i]).execute();
            srArr = sr[i][1].toArray();
            if (i == 0) {
                assertEquals("First result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[0]);
            } else if (i == 1) {
                assertEquals("Last result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[srArr.length - 1]);
            } else if (i == 2) {
                assertEquals("First result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[0]);
            } else if (i == 3) {
                assertEquals("Last result should be undefined for query " + queries[i], QueryService.UNDEFINED, srArr[srArr.length - 1]);
            } else if (i == 4) {
                for (int j = 0; j < srArr.length / 2; j++) {
                    assertEquals("Undefined should  have been returned for query " + queries[i], QueryService.UNDEFINED, ((Struct) srArr[j]).getFieldValues()[0]);
                }
            } else if (i == 5) {
                for (int j = srArr.length - 1; j > srArr.length / 2; j--) {
                    assertEquals("Undefined should  have been returned for query " + queries[i], QueryService.UNDEFINED, ((Struct) srArr[j]).getFieldValues()[0]);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            fail("Query execution failed for: " + queries[i] + " : " + e);
        }
    }
    CacheUtils.compareResultsOfWithAndWithoutIndex(sr);
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) QueryService(org.apache.geode.cache.query.QueryService) Portfolio(org.apache.geode.cache.query.data.Portfolio) Region(org.apache.geode.cache.Region) RegionNotFoundException(org.apache.geode.cache.query.RegionNotFoundException) IndexInvalidException(org.apache.geode.cache.query.IndexInvalidException) IndexNameConflictException(org.apache.geode.cache.query.IndexNameConflictException) IndexExistsException(org.apache.geode.cache.query.IndexExistsException) Struct(org.apache.geode.cache.query.Struct) Test(org.junit.Test)

Example 97 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class MiscJUnitTest method testBug32763.

@Ignore("TODO: test is disabled")
@Test
public void testBug32763() throws Exception {
    Region region = CacheUtils.createRegion("pos", Portfolio.class);
    region.put("0", new Portfolio(0));
    region.put("1", new Portfolio(1));
    region.put("2", new Portfolio(2));
    region.put("3", new Portfolio(3));
    QueryService qs = CacheUtils.getQueryService();
    String qStr = "SELECT DISTINCT key: key, iD: entry.value.iD, secId: posnVal.secId  FROM /pos.entries entry, entry.value.positions.values posnVal  WHERE entry.value.\"type\" = 'type0' AND posnVal.secId = 'YHOO'";
    Query q = qs.newQuery(qStr);
    SelectResults result = (SelectResults) q.execute();
    StructType type = (StructType) result.getCollectionType().getElementType();
    String[] names = type.getFieldNames();
    List list = result.asList();
    if (list.size() < 1)
        fail("Test failed as the resultset's size is zero");
    for (int i = 0; i < list.size(); ++i) {
        Struct stc = (Struct) list.get(i);
        if (!stc.get(names[2]).equals("YHOO")) {
            fail("Test failed as the SecID value is not YHOO");
        }
    }
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) Query(org.apache.geode.cache.query.Query) StructType(org.apache.geode.cache.query.types.StructType) QueryService(org.apache.geode.cache.query.QueryService) Portfolio(org.apache.geode.cache.query.data.Portfolio) NewPortfolio(parReg.query.unittest.NewPortfolio) Region(org.apache.geode.cache.Region) List(java.util.List) Struct(org.apache.geode.cache.query.Struct) Ignore(org.junit.Ignore) Test(org.junit.Test) IntegrationTest(org.apache.geode.test.junit.categories.IntegrationTest)

Example 98 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class MiscJUnitTest method testBug37723.

@Test
public void testBug37723() throws Exception {
    Region region = CacheUtils.createRegion("portfolios", Portfolio.class);
    region.put("0", new Portfolio(0));
    region.put("1", new Portfolio(1));
    region.put("2", new Portfolio(2));
    region.put("3", new Portfolio(3));
    QueryService qs = CacheUtils.getQueryService();
    String qry = "select distinct getID, status from /portfolios pf where getID < 10 order by getID desc";
    Query q = qs.newQuery(qry);
    SelectResults result = (SelectResults) q.execute();
    Iterator itr = result.iterator();
    int j = 3;
    while (itr.hasNext()) {
        Struct struct = (Struct) itr.next();
        assertEquals(j--, ((Integer) struct.get("getID")).intValue());
    }
    qry = "select distinct getID, status from /portfolios pf where getID < 10 order by getID asc";
    q = qs.newQuery(qry);
    result = (SelectResults) q.execute();
    itr = result.iterator();
    j = 0;
    while (itr.hasNext()) {
        Struct struct = (Struct) itr.next();
        assertEquals(j++, ((Integer) struct.get("getID")).intValue());
    }
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) Query(org.apache.geode.cache.query.Query) QueryService(org.apache.geode.cache.query.QueryService) Portfolio(org.apache.geode.cache.query.data.Portfolio) NewPortfolio(parReg.query.unittest.NewPortfolio) Iterator(java.util.Iterator) Region(org.apache.geode.cache.Region) Struct(org.apache.geode.cache.query.Struct) Test(org.junit.Test) IntegrationTest(org.apache.geode.test.junit.categories.IntegrationTest)

Example 99 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class AbstractIndex method compareStructWithNonStruct.

/**
   * This method compares two objects in which one could be StructType and other ObjectType. Fur
   * conditions are possible, Object1 -> Struct Object2-> Struct Object1 -> Struct Object2-> Object
   * Object1 -> Object Object2-> Struct Object1 -> Object Object2-> Object
   *
   * @return true if valueInRegion's all objects are part of valueInIndex.
   */
private boolean compareStructWithNonStruct(Object valueInRegion, Object valueInIndex) {
    if (valueInRegion instanceof Struct && valueInIndex instanceof Struct) {
        Object[] regFields = ((StructImpl) valueInRegion).getFieldValues();
        List indFields = Arrays.asList(((StructImpl) valueInIndex).getFieldValues());
        for (Object regField : regFields) {
            if (!indFields.contains(regField)) {
                return false;
            }
        }
        return true;
    } else if (valueInRegion instanceof Struct) {
        Object[] fields = ((StructImpl) valueInRegion).getFieldValues();
        for (Object field : fields) {
            if (field.equals(valueInIndex)) {
                return true;
            }
        }
    } else if (valueInIndex instanceof Struct) {
        Object[] fields = ((StructImpl) valueInIndex).getFieldValues();
        for (Object field : fields) {
            if (field.equals(valueInRegion)) {
                return true;
            }
        }
    } else {
        return valueInRegion.equals(valueInIndex);
    }
    return false;
}
Also used : StructImpl(org.apache.geode.cache.query.internal.StructImpl) List(java.util.List) ArrayList(java.util.ArrayList) Struct(org.apache.geode.cache.query.Struct)

Example 100 with Struct

use of org.apache.geode.cache.query.Struct in project geode by apache.

the class GroupByTestImpl method testAggregateFuncCountDistinctStar_1.

@Test
public void testAggregateFuncCountDistinctStar_1() 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(distinct p.shortID) 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");
    Set<Object> distinctShortIDActive = new HashSet<Object>();
    Set<Object> distinctShortIDInactive = new HashSet<Object>();
    int inactiveCount = 0;
    for (Object o : rgn.values()) {
        Portfolio pf = (Portfolio) o;
        if (pf.status.equals("active")) {
            distinctShortIDActive.add(pf.shortID);
        } else if (pf.status.equals("inactive")) {
            distinctShortIDInactive.add(pf.shortID);
        } 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(distinctShortIDActive.size(), ((Integer) struct.get("countt")).intValue());
        } else if (struct.get("status").equals("inactive")) {
            assertEquals(distinctShortIDInactive.size(), ((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());
}
Also used : DefaultQuery(org.apache.geode.cache.query.internal.DefaultQuery) DefaultQuery(org.apache.geode.cache.query.internal.DefaultQuery) Query(org.apache.geode.cache.query.Query) StructType(org.apache.geode.cache.query.types.StructType) Portfolio(org.apache.geode.cache.query.data.Portfolio) Struct(org.apache.geode.cache.query.Struct) ObjectType(org.apache.geode.cache.query.types.ObjectType) SelectResults(org.apache.geode.cache.query.SelectResults) QueryService(org.apache.geode.cache.query.QueryService) CompiledSelect(org.apache.geode.cache.query.internal.CompiledSelect) Iterator(java.util.Iterator) Region(org.apache.geode.cache.Region) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

Struct (org.apache.geode.cache.query.Struct)110 SelectResults (org.apache.geode.cache.query.SelectResults)80 QueryService (org.apache.geode.cache.query.QueryService)70 Region (org.apache.geode.cache.Region)67 Test (org.junit.Test)66 Query (org.apache.geode.cache.query.Query)57 Iterator (java.util.Iterator)54 Portfolio (org.apache.geode.cache.query.data.Portfolio)46 DefaultQuery (org.apache.geode.cache.query.internal.DefaultQuery)30 ObjectType (org.apache.geode.cache.query.types.ObjectType)30 CompiledSelect (org.apache.geode.cache.query.internal.CompiledSelect)27 StructType (org.apache.geode.cache.query.types.StructType)26 HashSet (java.util.HashSet)19 List (java.util.List)17 PortfolioPdx (org.apache.geode.cache.query.data.PortfolioPdx)17 CacheException (org.apache.geode.cache.CacheException)16 IntegrationTest (org.apache.geode.test.junit.categories.IntegrationTest)16 ArrayList (java.util.ArrayList)15 Host (org.apache.geode.test.dunit.Host)14 VM (org.apache.geode.test.dunit.VM)14