Search in sources :

Example 51 with SelectResults

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

the class NonDistinctOrderByTestImplementation method testOrderByWithNullValues.

@Test
public void testOrderByWithNullValues() throws Exception {
    // IN ORDER BY NULL values are treated as smallest. E.g For an ascending
    // order by field
    // its null values are reported first and then the values in ascending
    // order.
    String[] queries = { // 0 null
    "SELECT   * FROM /portfolio1 pf1 order by pkid", // 1 same
    "SELECT   * FROM /portfolio1 pf1  order by pkid asc", // 2 null
    "SELECT   * FROM /portfolio1 order by pkid desc", // 3 null
    "SELECT   pkid FROM /portfolio1 pf1 order by pkid", // 4
    "SELECT   pkid FROM /portfolio1 pf1 where pkid != 'XXXX' order by pkid asc", // 5
    "SELECT   pkid FROM /portfolio1 pf1 where pkid != 'XXXX' order by pkid desc", // 6
    "SELECT   ID, pkid FROM /portfolio1 pf1 where ID < 1000 order by pkid", // 7
    "SELECT   ID, pkid FROM /portfolio1 pf1 where ID > 3 order by pkid", // 8
    "SELECT   ID, pkid FROM /portfolio1 pf1 where ID < 1000 order by pkid", // 9
    "SELECT   ID, pkid FROM /portfolio1 pf1 where ID > 0 order by pkid", // 10
    "SELECT   ID, pkid FROM /portfolio1 pf1 where ID > 0 order by pkid, ID asc", // 11
    "SELECT   ID, pkid FROM /portfolio1 pf1 where ID > 0 order by pkid, ID desc" };
    Object[][] r = new Object[queries.length][2];
    QueryService qs;
    qs = CacheUtils.getQueryService();
    // Create Regions
    final int size = 9;
    final int numNullValues = 3;
    Region r1 = this.createRegion("portfolio1", Portfolio.class);
    for (int i = 1; i <= size; i++) {
        Portfolio pf = new Portfolio(i);
        // Add numNullValues null values.
        if (i <= numNullValues) {
            pf.pkid = null;
            pf.status = "a" + i;
        }
        r1.put(i + "", pf);
    }
    Query q = null;
    SelectResults results = null;
    List list = null;
    String str = "";
    try {
        // Query 0 - null values are first in the order.
        str = queries[0];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        r[0][0] = results;
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Portfolio p = (Portfolio) list.get((i - 1));
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid, p: " + p, p.pkid);
            } else {
                assertNotNull("Expected not null value for pkid", p.pkid);
                if (!p.pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 1 - null values are first in the order.
        str = queries[1];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Portfolio p = (Portfolio) list.get((i - 1));
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid", p.pkid);
            } else {
                assertNotNull("Expected not null value for pkid", p.pkid);
                if (!p.pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 2 - null values are last in the order.
        str = queries[2];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Portfolio p = (Portfolio) list.get((i - 1));
            if (i > (size - numNullValues)) {
                assertNull("Expected null value for pkid", p.pkid);
            } else {
                assertNotNull("Expected not null value for pkid", p.pkid);
                if (!p.pkid.equals("" + (size - (i - 1)))) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 3 - 3 null value with pkid.
        str = queries[3];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            String pkid = (String) list.get((i - 1));
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid", pkid);
            } else {
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 4 - 3 null value with pkid.
        str = queries[4];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            String pkid = (String) list.get((i - 1));
            if (i <= 3) {
                assertNull("Expected null value for pkid", pkid);
            } else {
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 5 - 1 distinct null value with pkid at the end.
        str = queries[5];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            String pkid = (String) list.get((i - 1));
            if (i > (list.size() - numNullValues)) {
                assertNull("Expected null value for pkid", pkid);
            } else {
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + (size - (i - 1)))) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 6 - ID field values should be in the same order.
        str = queries[6];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            int id = (Integer) ((Struct) list.get((i - 1))).getFieldValues()[0];
            // ID should be one of 1, 2, 3 because of distinct
            if (i <= numNullValues) {
                if (!(id == 1 || id == 2 || id == 3)) {
                    fail(" Value of ID is not as expected " + id);
                }
            } else {
                if (id != i) {
                    fail(" Value of ID is not as expected " + id);
                }
            }
        }
        // Query 7 - ID field values should be in the same order.
        str = queries[7];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            int id = (Integer) ((Struct) list.get((i - 1))).getFieldValues()[0];
            if (id != (numNullValues + i)) {
                fail(" Value of ID is not as expected, " + id);
            }
        }
        // Query 8 - ID, pkid field values should be in the same order.
        str = queries[8];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= size; i++) {
            Struct vals = (Struct) list.get((i - 1));
            int id = ((Integer) vals.get("ID")).intValue();
            String pkid = (String) vals.get("pkid");
            // ID should be one of 1, 2, 3 because of distinct
            if (i <= numNullValues) {
                if (!(id == 1 || id == 2 || id == 3)) {
                    fail(" Value of ID is not as expected " + id);
                }
                assertNull("Expected null value for pkid", pkid);
            } else {
                if (id != i) {
                    fail(" Value of ID is not as expected " + id);
                }
                assertNotNull("Expected not null value for pkid", pkid);
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not in expected order.");
                }
            }
        }
        // Query 9 - ID, pkid field values should be in the same order.
        str = queries[9];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            Struct vals = (Struct) list.get((i - 1));
            int id = ((Integer) vals.get("ID")).intValue();
            String pkid = (String) vals.get("pkid");
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid, " + pkid, pkid);
                if (!(id == 1 || id == 2 || id == 3)) {
                    fail(" Value of ID is not as expected " + id);
                }
            } else {
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not as expected, " + pkid);
                }
                if (id != i) {
                    fail(" Value of ID is not as expected, " + id);
                }
            }
        }
        // Query 10 - ID asc, pkid field values should be in the same order.
        str = queries[10];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            Struct vals = (Struct) list.get((i - 1));
            int id = ((Integer) vals.get("ID")).intValue();
            String pkid = (String) vals.get("pkid");
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid, " + pkid, pkid);
                if (id != i) {
                    fail(" Value of ID is not as expected, it is: " + id + " expected :" + i);
                }
            } else {
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not as expected, " + pkid);
                }
                if (id != i) {
                    fail(" Value of ID is not as expected, " + id);
                }
            }
        }
        // Query 11 - ID desc, pkid field values should be in the same order.
        str = queries[11];
        q = CacheUtils.getQueryService().newQuery(str);
        CacheUtils.getLogger().info("Executing query: " + str);
        results = (SelectResults) q.execute();
        list = results.asList();
        for (int i = 1; i <= list.size(); i++) {
            Struct vals = (Struct) list.get((i - 1));
            int id = ((Integer) vals.get("ID")).intValue();
            String pkid = (String) vals.get("pkid");
            if (i <= numNullValues) {
                assertNull("Expected null value for pkid, " + pkid, pkid);
                if (id != (numNullValues - (i - 1))) {
                    fail(" Value of ID is not as expected " + id);
                }
            } else {
                if (!pkid.equals("" + i)) {
                    fail(" Value of pkid is not as expected, " + pkid);
                }
                if (id != i) {
                    fail(" Value of ID is not as expected, " + id);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        fail(q.getQueryString());
    }
}
Also used : Query(org.apache.geode.cache.query.Query) Portfolio(org.apache.geode.cache.query.data.Portfolio) 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) SelectResults(org.apache.geode.cache.query.SelectResults) QueryService(org.apache.geode.cache.query.QueryService) Region(org.apache.geode.cache.Region) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 52 with SelectResults

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

the class NonDistinctOrderByTestImplementation method testOrderByWithIndexResultDefaultProjection.

@Test
public void testOrderByWithIndexResultDefaultProjection() throws Exception {
    String[] queries = { // Test case No. IUMR021
    "SELECT   * FROM /portfolio1 pf1 where ID > 10 order by ID desc ", "SELECT   * FROM /portfolio1 pf1 where ID > 10 order by ID asc ", "SELECT   * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID asc ", "SELECT   * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID desc ", "SELECT   * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID desc ", "SELECT   * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID asc", "SELECT   * FROM /portfolio1 pf1 where ID != 10 order by ID asc ", "SELECT   * FROM /portfolio1 pf1 where ID != 10 order by ID desc ", "SELECT   * FROM /portfolio1 pf1 where ID > 10 order by ID desc limit 5", "SELECT   * FROM /portfolio1 pf1 where ID > 10 order by ID asc limit 5", "SELECT   * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID asc limit 5 ", "SELECT   * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID desc limit 5", "SELECT   * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID desc limit 5", "SELECT   * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID asc limit 5", "SELECT   * FROM /portfolio1 pf1 where ID != 10 order by ID asc limit 10", "SELECT   * FROM /portfolio1 pf1 where ID != 10 order by ID desc limit 10", "SELECT   *  FROM /portfolio1 pf1 where ID > 0 order by ID desc, pkid desc " };
    Object[][] r = new Object[queries.length][2];
    QueryService qs;
    qs = CacheUtils.getQueryService();
    Position.resetCounter();
    // Create Regions
    Region r1 = this.createRegion("portfolio1", Portfolio.class);
    for (int i = 1; i < 200; ++i) {
        Portfolio pf = new Portfolio(i);
        pf.shortID = (short) ((short) i / 5);
        r1.put("" + i, pf);
    }
    // Execute Queries without Indexes
    for (int i = 0; i < queries.length; i++) {
        Query q = null;
        try {
            q = CacheUtils.getQueryService().newQuery(queries[i]);
            CacheUtils.getLogger().info("Executing query: " + queries[i]);
            r[i][0] = q.execute();
        } catch (Exception e) {
            e.printStackTrace();
            fail(q.getQueryString());
        }
    }
    // Create Indexes
    this.createIndex("IDIndexPf1", IndexType.FUNCTIONAL, "ID", "/portfolio1");
    // Execute Queries with Indexes
    for (int i = 0; i < queries.length; i++) {
        Query q = null;
        try {
            q = CacheUtils.getQueryService().newQuery(queries[i]);
            CacheUtils.getLogger().info("Executing query: " + queries[i]);
            QueryObserverImpl observer = new QueryObserverImpl();
            QueryObserverHolder.setInstance(observer);
            r[i][1] = q.execute();
            SelectResults rcw = (SelectResults) r[i][1];
            int indexLimit = queries[i].indexOf("limit");
            int limit = -1;
            boolean limitQuery = indexLimit != -1;
            if (limitQuery) {
                limit = Integer.parseInt(queries[i].substring(indexLimit + 5).trim());
            }
            assertTrue("Result size is " + rcw.size() + " and limit is " + limit, !limitQuery || rcw.size() <= limit);
            if (!rcw.getCollectionType().isOrdered()) {
                fail("The collection type=" + rcw.getCollectionType().getSimpleClassName() + "  is not ordered");
            }
            if (assertIndexUsedOnQueryNode() && !observer.isIndexesUsed) {
                fail("Index is NOT uesd");
            }
            Iterator itr = observer.indexesUsed.iterator();
            while (itr.hasNext()) {
                if (!(itr.next().toString()).equals("IDIndexPf1")) {
                    fail("<IDIndexPf1> was expected but found " + itr.next().toString());
                }
            // assertIndexDetailsEquals("statusIndexPf1",itr.next().toString());
            }
            int indxs = observer.indexesUsed.size();
            System.out.println("**************************************************Indexes Used :::::: " + indxs + " Index Name: " + observer.indexName);
        } catch (Exception e) {
            e.printStackTrace();
            fail(q.getQueryString());
        }
    }
    StructSetOrResultsSet ssOrrs = new StructSetOrResultsSet();
    ssOrrs.CompareQueryResultsWithoutAndWithIndexes(r, queries.length, true, queries);
    // Compare each of the query results with queries fired without order by ,
    // but without order by
    ssOrrs.compareExternallySortedQueriesWithOrderBy(queries, r);
}
Also used : Query(org.apache.geode.cache.query.Query) Portfolio(org.apache.geode.cache.query.data.Portfolio) 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) SelectResults(org.apache.geode.cache.query.SelectResults) QueryService(org.apache.geode.cache.query.QueryService) Iterator(java.util.Iterator) Region(org.apache.geode.cache.Region) Test(org.junit.Test)

Example 53 with SelectResults

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

the class NestedQueryJUnitTest method testNestedQueriesResultsAsStructSet.

@Test
public void testNestedQueriesResultsAsStructSet() throws Exception {
    QueryService qs;
    qs = CacheUtils.getQueryService();
    String[] queries = { "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios ptf, positions pos)" + " WHERE pos.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios AS ptf, positions AS pos)" + " WHERE pos.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM ptf IN /Portfolios, pos IN positions)" + " WHERE pos.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT pos AS myPos FROM /Portfolios ptf, positions pos)" + " WHERE myPos.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios ptf, positions pos) p" + " WHERE p.pos.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios ptf, positions pos) p" + " WHERE pos.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios, positions) p" + " WHERE p.positions.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios, positions)" + " WHERE positions.value.secId = 'IBM'", "SELECT DISTINCT * FROM" + " (SELECT DISTINCT * FROM /Portfolios ptf, positions pos) p" + " WHERE p.get('pos').value.secId = 'IBM'" };
    SelectResults[][] r = new SelectResults[queries.length][2];
    for (int i = 0; i < queries.length; i++) {
        Query q = null;
        try {
            q = CacheUtils.getQueryService().newQuery(queries[i]);
            CacheUtils.getLogger().info("Executing query: " + queries[i]);
            // DebuggerSupport.waitForJavaDebugger(CacheUtils.getLogger());
            r[i][0] = (SelectResults) q.execute();
            QueryObserverImpl observer = new QueryObserverImpl();
            QueryObserverHolder.setInstance(observer);
            resType1 = (r[i][0]).getCollectionType().getElementType();
            resSize1 = ((r[i][0]).size());
            set1 = ((r[i][0]).asSet());
        // Iterator iter=set1.iterator();
        } catch (Exception e) {
            throw new AssertionError(e);
        }
    }
    // Create an Index on status and execute the same query again.
    qs = CacheUtils.getQueryService();
    qs.createIndex("secIdIndex", IndexType.FUNCTIONAL, "b.secId", "/Portfolios pf, pf.positions.values b");
    for (int i = 0; i < queries.length; i++) {
        Query q = null;
        try {
            q = CacheUtils.getQueryService().newQuery(queries[i]);
            r[i][1] = (SelectResults) q.execute();
            QueryObserverImpl observer2 = new QueryObserverImpl();
            QueryObserverHolder.setInstance(observer2);
            resType2 = (r[i][1]).getCollectionType().getElementType();
            resSize2 = ((r[i][1]).size());
            set2 = ((r[i][1]).asSet());
        } catch (Exception e) {
            throw new AssertionError(q.getQueryString(), e);
        }
    }
    for (int j = 0; j < queries.length; j++) {
        if (((r[j][0]).getCollectionType().getElementType()).equals((r[j][1]).getCollectionType().getElementType())) {
            CacheUtils.log("Both Search Results are of the same Type i.e.--> " + (r[j][0]).getCollectionType().getElementType());
        } else {
            fail("FAILED:Search result Type is different in both the cases");
        }
        if ((r[j][0]).size() == (r[j][1]).size()) {
            CacheUtils.log("Both Search Results are of Same Size i.e.  Size= " + (r[j][1]).size());
        } else {
            fail("FAILED:Search result Type is different in both the cases");
        }
    }
    boolean pass = true;
    itert1 = set1.iterator();
    while (itert1.hasNext()) {
        StructImpl p1 = (StructImpl) itert1.next();
        itert2 = set2.iterator();
        boolean found = false;
        while (itert2.hasNext()) {
            StructImpl p2 = (StructImpl) itert2.next();
            if ((p1).equals(p2)) {
                found = true;
            }
        }
        if (!found)
            pass = false;
    }
    if (!pass)
        fail("Test failed");
    CacheUtils.compareResultsOfWithAndWithoutIndex(r, this);
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) StructImpl(org.apache.geode.cache.query.internal.StructImpl) Query(org.apache.geode.cache.query.Query) QueryService(org.apache.geode.cache.query.QueryService) Test(org.junit.Test) IntegrationTest(org.apache.geode.test.junit.categories.IntegrationTest)

Example 54 with SelectResults

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

the class NestedQueryJUnitTest method testNestedQueryWithProjectionDoesNotReturnUndefinedForBug45131.

@Test
public void testNestedQueryWithProjectionDoesNotReturnUndefinedForBug45131() throws Exception {
    QueryService qs = CacheUtils.getQueryService();
    Region region1 = CacheUtils.createRegion("portfolios1", Portfolio.class);
    Region region2 = CacheUtils.createRegion("portfolios2", Portfolio.class);
    for (int i = 0; i <= 1000; i++) {
        Portfolio p = new Portfolio(i);
        p.createTime = (long) (i);
        region1.put(i, p);
        region2.put(i, p);
    }
    Index p1IdIndex = qs.createIndex("P1IDIndex", IndexType.FUNCTIONAL, "P.ID", "/portfolios1 P");
    Index p2IdIndex = qs.createIndex("P2IDIndex", IndexType.FUNCTIONAL, "P2.ID", "/portfolios2 P2");
    Index createTimeIndex = qs.createIndex("createTimeIndex", IndexType.FUNCTIONAL, "P.createTime", "/portfolios1 P");
    SelectResults results = (SelectResults) qs.newQuery("SELECT P2.ID FROM /portfolios2 P2 where P2.ID in (SELECT P.ID from /portfolios1 P where P.createTime >= 500L and P.createTime < 1000L)").execute();
    for (Object o : results) {
        assertNotSame(o, QueryService.UNDEFINED);
    }
}
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) Index(org.apache.geode.cache.query.Index) Test(org.junit.Test) IntegrationTest(org.apache.geode.test.junit.categories.IntegrationTest)

Example 55 with SelectResults

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

the class NumericQueryJUnitTest method testNumericsWithInClauseWithMap.

// This test is to determine if using a map with an in clause will correctly
// compare mismatching types
@Test
public void testNumericsWithInClauseWithMap() throws Exception {
    Cache cache = CacheUtils.getCache();
    testRegion = createLocalRegion(testRegionName);
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("bigdecimal", BigDecimal.valueOf(1234.5678D));
    map.put("string", "stringValue");
    map.put("integer", 777);
    map.put("long", Long.valueOf(1000));
    map.put("biginteger", BigInteger.valueOf(1000));
    map.put("double", Double.valueOf(1000.0));
    map.put("short", Short.valueOf((short) 1000));
    map.put("float", Float.valueOf(1000.0f));
    testRegion.put("1", map);
    QueryService qs = CacheUtils.getQueryService();
    // big decimal test
    SelectResults selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['bigdecimal'] in set (1234.5678)", "tr['bigdecimal']", "/testRegion tr");
    assertEquals(1, selectResults.size());
    // integer test
    selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['integer'] in set (777.0)", "tr['integer']", "/testRegion tr");
    assertEquals(1, selectResults.size());
    // long test
    selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['long'] in set (1000.0)", "tr['long']", "/testRegion tr");
    assertEquals(1, selectResults.size());
    // big integer test
    selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['biginteger'] in set (1000.0)", "tr['biginteger']", "/testRegion tr");
    assertEquals(1, selectResults.size());
    // double test
    selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['double'] in set (1000)", "tr['double']", "/testRegion tr");
    assertEquals(1, selectResults.size());
    // short test
    selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['short'] in set (1000.0)", "tr['short']", "/testRegion tr");
    assertEquals(1, selectResults.size());
    // float test
    selectResults = helpTestFunctionalIndexForQuery("select * from /testRegion tr where tr['float'] in set (1000)", "tr['float']", "/testRegion tr");
    assertEquals(1, selectResults.size());
}
Also used : SelectResults(org.apache.geode.cache.query.SelectResults) HashMap(java.util.HashMap) QueryService(org.apache.geode.cache.query.QueryService) Cache(org.apache.geode.cache.Cache) Test(org.junit.Test) IntegrationTest(org.apache.geode.test.junit.categories.IntegrationTest)

Aggregations

SelectResults (org.apache.geode.cache.query.SelectResults)577 Test (org.junit.Test)423 Query (org.apache.geode.cache.query.Query)360 Region (org.apache.geode.cache.Region)336 QueryService (org.apache.geode.cache.query.QueryService)331 IntegrationTest (org.apache.geode.test.junit.categories.IntegrationTest)256 Portfolio (org.apache.geode.cache.query.data.Portfolio)249 Index (org.apache.geode.cache.query.Index)133 DistributedTest (org.apache.geode.test.junit.categories.DistributedTest)112 Host (org.apache.geode.test.dunit.Host)107 VM (org.apache.geode.test.dunit.VM)107 CacheException (org.apache.geode.cache.CacheException)105 Iterator (java.util.Iterator)104 AttributesFactory (org.apache.geode.cache.AttributesFactory)101 CacheSerializableRunnable (org.apache.geode.cache30.CacheSerializableRunnable)92 DefaultQuery (org.apache.geode.cache.query.internal.DefaultQuery)89 Cache (org.apache.geode.cache.Cache)84 Struct (org.apache.geode.cache.query.Struct)80 LocalRegion (org.apache.geode.internal.cache.LocalRegion)67 ObjectType (org.apache.geode.cache.query.types.ObjectType)66