use of org.apache.geode.cache.query.QueryService in project geode by apache.
the class QueryREUpdateInProgressJUnitTest method testMultiDepthQueriesOnREWhenUpdateInProgressWithOneIndex.
@Test
public void testMultiDepthQueriesOnREWhenUpdateInProgressWithOneIndex() throws Exception {
// Create Indexes.
Cache cache = CacheUtils.getCache();
QueryService qs = cache.getQueryService();
String[] queries = new String[] { "select * from /" + regionName + " z, /" + regionName + " q where z.position1.secId = 'IBM' and q.ID > 0", "select * from /" + regionName + " y where position1.secId='IBM'" };
Object[][] results = new Object[queries.length][2];
// Put values in Region.
putREWithUpdateInProgressTrue(regionName);
putREWithUpdateInProgressTrue(exampleRegionName);
putREWithUpdateInProgressTrue(regionForAsyncIndex);
// Run all queries.
for (int i = 0; i < queries.length; i++) {
try {
results[i][0] = qs.newQuery("" + queries[i]).execute();
} catch (Exception e) {
throw new RuntimeException("Query execution failed for query: " + queries[i], e);
}
}
qs.createIndex("secIdindex", "z.position1.secId", "/" + regionName + " z ");
// Run all queries with Indexes.
for (int i = 0; i < queries.length; i++) {
try {
results[i][1] = qs.newQuery("" + queries[i]).execute();
} catch (Exception e) {
throw new RuntimeException("Query execution failed for query: " + queries[i] + "\n ResultSet 01: " + results[i][0] + "\n" + "ResultSet 02: " + results[i][1], e);
}
}
// Compare query results
GemFireCacheImpl.getInstance().getLogger().fine("\n Result 01: " + results[queries.length - 1][0] + "\n\n Result 02: " + results[queries.length - 1][1]);
new StructSetOrResultsSet().CompareQueryResultsWithoutAndWithIndexes(results, queries.length, false, queries);
}
use of org.apache.geode.cache.query.QueryService in project geode by apache.
the class TestNewFunctionSSorRSIntegrationTest method testNewFunc.
@Test
public void testNewFunc() throws Exception {
Region region = CacheUtils.createRegion("portfolios", Portfolio.class);
for (int i = 0; i < 4; i++) {
region.put("" + i, new Portfolio(i));
// CacheUtils.log(new Portfolio(i));
}
Object[][] r = new Object[2][2];
QueryService qs;
qs = CacheUtils.getQueryService();
String[] queries = { "SELECT DISTINCT * from /portfolios pf , pf.positions.values pos where status = 'inactive'", "select distinct * from /portfolios where ID > 1 " };
for (int i = 0; i < queries.length; i++) {
Query q = null;
q = CacheUtils.getQueryService().newQuery(queries[i]);
QueryObserverImpl observer1 = new QueryObserverImpl();
QueryObserverHolder.setInstance(observer1);
r[i][0] = q.execute();
}
qs.createIndex("sIndex", IndexType.FUNCTIONAL, "status", "/portfolios");
qs.createIndex("iIndex", IndexType.FUNCTIONAL, "ID", "/portfolios");
for (int i = 0; i < queries.length; i++) {
Query q = null;
q = CacheUtils.getQueryService().newQuery(queries[i]);
QueryObserverImpl observer2 = new QueryObserverImpl();
QueryObserverHolder.setInstance(observer2);
r[i][1] = q.execute();
if (!observer2.isIndexesUsed) {
fail("Index NOT Used");
}
}
StructSetOrResultsSet ssORrs = new StructSetOrResultsSet();
ssORrs.CompareQueryResultsWithoutAndWithIndexes(r, queries.length, queries);
}
use of org.apache.geode.cache.query.QueryService in project geode by apache.
the class CompiledGroupBySelectJUnitTest method testInvalidQuery.
@Test
public void testInvalidQuery() throws Exception {
String queryStr = "select count(*) , pf.shortID from /portfolio pf where pf.ID > 0 ";
QueryService qs = CacheUtils.getQueryService();
try {
DefaultQuery query = (DefaultQuery) qs.newQuery(queryStr);
fail("query creation should have failed");
} catch (QueryInvalidException qie) {
assertTrue(qie.toString().indexOf(LocalizedStrings.DefaultQuery_PROJ_COL_ABSENT_IN_GROUP_BY.toLocalizedString()) != -1);
}
queryStr = "select * from /portfolio pf where pf.ID > 0 group by pf.ID";
try {
DefaultQuery query = (DefaultQuery) qs.newQuery(queryStr);
fail("query creation should have failed");
} catch (QueryInvalidException qie) {
assertTrue(qie.toString().indexOf(LocalizedStrings.DefaultQuery_PROJ_COL_ABSENT_IN_GROUP_BY.toLocalizedString()) != -1);
}
queryStr = "select * from /portfolio pf, pf.positions pos where pf.ID > 0 group by pf";
try {
DefaultQuery query = (DefaultQuery) qs.newQuery(queryStr);
fail("query creation should have failed");
} catch (QueryInvalidException qie) {
assertTrue(qie.toString().indexOf("Query contains projected column not present in group by clause") != -1);
}
}
use of org.apache.geode.cache.query.QueryService in project geode by apache.
the class OrderByTestImplementation method testMultiColOrderByWithMultiIndexResultDefaultProjection.
@Test
public void testMultiColOrderByWithMultiIndexResultDefaultProjection() throws Exception {
String[] queries = { // Test case No. IUMR021
"SELECT distinct * FROM /portfolio1 pf1 where pkid = '12' and ID > 10 order by ID desc, pkid asc ", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '1' and ID > 10 order by ID asc, pkid desc ", "SELECT distinct * FROM /portfolio1 pf1 where pkid = '13'and ID > 10 and ID < 20 order by ID asc, pkid asc ", "SELECT distinct * FROM /portfolio1 pf1 where pkid <'9' and ID > 10 and ID < 20 order by ID desc , pkid desc", "SELECT distinct * FROM /portfolio1 pf1 where pkid = '15' and ID >= 10 and ID <= 20 order by ID desc, pkid desc ", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '1' and pkid <='9' and ID >= 10 and ID <= 20 order by ID asc, pkid asc", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '1' and ID != 10 order by ID asc, pkid asc ", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '1' and ID != 10 order by ID desc, pkid desc ", "SELECT distinct * FROM /portfolio1 pf1 where pkid = '17' and ID > 10 order by ID desc, pkid asc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '17' and ID > 10 order by ID asc, pkid desc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where pkid < '7' and ID > 10 and ID < 20 order by ID asc, pkid asc limit 5 ", "SELECT distinct * FROM /portfolio1 pf1 where pkid = '18' and ID > 10 and ID < 20 order by ID desc, pkid desc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '1' and ID >= 10 and ID <= 20 order by ID desc, pkid asc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where pkid != '17' and ID >= 10 and ID <= 20 order by ID asc, pkid desc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '0' and ID != 10 order by ID asc, pkid asc limit 10", "SELECT distinct * FROM /portfolio1 pf1 where pkid > '1' and ID != 10 order by ID desc, pkid desc limit 10" };
Object[][] r = new Object[queries.length][2];
QueryService qs;
qs = CacheUtils.getQueryService();
Position.resetCounter();
// Create Regions
Region r1 = createRegion("portfolio1", Portfolio.class);
for (int i = 0; i < 50; i++) {
r1.put(i + "", new Portfolio(i));
}
// 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");
this.createIndex("PKIDIndexPf1", IndexType.FUNCTIONAL, "pkid", "/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(!limitQuery || rcw.size() <= limit);
assertEquals("Ordered", rcw.getCollectionType().getSimpleClassName());
if (assertIndexUsedOnQueryNode() && !observer.isIndexesUsed) {
fail("Index is NOT uesd");
}
Iterator itr = observer.indexesUsed.iterator();
while (itr.hasNext()) {
String indexUsed = itr.next().toString();
if (!(indexUsed).equals("IDIndexPf1")) {
fail("<IDIndexPf1> was expected but found " + indexUsed);
}
// 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);
ssOrrs.compareExternallySortedQueriesWithOrderBy(queries, r);
}
use of org.apache.geode.cache.query.QueryService in project geode by apache.
the class OrderByTestImplementation method testMultiColOrderByWithIndexResultDefaultProjection.
@Test
public void testMultiColOrderByWithIndexResultDefaultProjection() throws Exception {
String[] queries = { // Test case No. IUMR021
"SELECT distinct * FROM /portfolio1 pf1 where ID > 10 order by ID desc, pkid asc ", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 order by ID asc, pkid desc ", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID asc, pkid asc ", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID desc , pkid desc", "SELECT distinct * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID desc, pkid desc ", "SELECT distinct * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID asc, pkid asc", "SELECT distinct * FROM /portfolio1 pf1 where ID != 10 order by ID asc, pkid asc ", "SELECT distinct * FROM /portfolio1 pf1 where ID != 10 order by ID desc, pkid desc ", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 order by ID desc, pkid asc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 order by ID asc, pkid desc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID asc, pkid asc limit 5 ", "SELECT distinct * FROM /portfolio1 pf1 where ID > 10 and ID < 20 order by ID desc, pkid desc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID desc, pkid asc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where ID >= 10 and ID <= 20 order by ID asc, pkid desc limit 5", "SELECT distinct * FROM /portfolio1 pf1 where ID != 10 order by ID asc, pkid asc limit 10", "SELECT distinct * FROM /portfolio1 pf1 where ID != 10 order by ID desc, pkid desc limit 10" };
Object[][] r = new Object[queries.length][2];
QueryService qs;
qs = CacheUtils.getQueryService();
Position.resetCounter();
// Create Regions
Region r1 = createRegion("portfolio1", Portfolio.class);
for (int i = 0; i < 50; i++) {
r1.put(i + "", new Portfolio(i));
}
// 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(!limitQuery || rcw.size() <= limit);
assertEquals("Ordered", rcw.getCollectionType().getSimpleClassName());
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);
ssOrrs.compareExternallySortedQueriesWithOrderBy(queries, r);
}
Aggregations