if (cs != null && (cs.isOrderBy() || cs.isGroupBy())) { ExecutionContext context = new QueryExecutionContext(this.parameters, pr.getCache()); int limit = this.query.getLimit(parameters);
private void executeSequentially(Collection<Collection> resultCollector, List buckets) throws QueryException, InterruptedException, ForceReattemptException { ExecutionContext context = new QueryExecutionContext(this.parameters, this.pr.getCache(), this.query); CompiledSelect cs = this.query.getSimpleSelect(); int limit = this.query.getLimit(parameters); if (cs != null && cs.isOrderBy()) { for (Integer bucketID : this._bucketsToQuery) { List<Integer> singleBucket = Collections.singletonList(bucketID); context.setBucketList(singleBucket); executeQueryOnBuckets(resultCollector, context); } Collection mergedResults = coalesceOrderedResults(resultCollector, context, cs, limit); resultCollector.clear(); resultCollector.add(mergedResults); } else { context.setBucketList(buckets); executeQueryOnBuckets(resultCollector, context); } }
if (sender.getVersionObject().compareTo(Version.GFE_90) < 0) { CompiledSelect cs = this.query.getSimpleSelect(); if (cs != null && cs.isOrderBy()) { sortNeeded = true; orderByAttribs = cs.getOrderByAttrs();
/** * Should be constructed from DefaultQueryService * * @see QueryService#newQuery */ public DefaultQuery(String queryString, InternalCache cache, boolean isForRemote) { this.queryString = queryString; QCompiler compiler = new QCompiler(); this.compiledQuery = compiler.compileQuery(queryString); CompiledSelect cs = getSimpleSelect(); if (cs != null && !isForRemote && (cs.isGroupBy() || cs.isOrderBy())) { QueryExecutionContext ctx = new QueryExecutionContext(null, cache); try { cs.computeDependencies(ctx); } catch (QueryException qe) { throw new QueryInvalidException("", qe); } } this.traceOn = compiler.isTraceRequested() || QUERY_VERBOSE; this.cache = cache; this.stats = new DefaultQueryStatistics(); this.cancelationTask = Optional.empty(); }
@Override @Test public void testConvertibleGroupByQuery_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, p.ID from /portfolio p where p.ID > 0 group by status, p.ID "; QueryService qs = CacheUtils.getQueryService(); Query query = qs.newQuery(queryStr); CompiledSelect cs = ((DefaultQuery) query).getSelect(); assertTrue(cs.isDistinct()); assertTrue(cs.isOrderBy()); assertFalse(cs.isGroupBy()); }
@Override @Test public void testConvertibleGroupByQuery_1() throws Exception { Region region = this.createRegion("portfolio", PortfolioPdx.class); for (int i = 1; i < 200; ++i) { PortfolioPdx pf = new PortfolioPdx(i); pf.shortID = (short) ((short) i / 5); region.put("key-" + i, pf); } String queryStr = "select p.status as status, p.ID from /portfolio p where p.ID > 0 group by status, p.ID "; QueryService qs = CacheUtils.getQueryService(); Query query = qs.newQuery(queryStr); CompiledSelect cs = ((DefaultQuery) query).getSelect(); assertTrue(cs.isDistinct()); assertTrue(cs.isOrderBy()); assertFalse(cs.isGroupBy()); }