r1497 - in trunk/wikitty-api/src/main/java/org/nuiton/wikitty: . storage
Author: bpoussin Date: 2012-08-15 19:48:49 +0200 (Wed, 15 Aug 2012) New Revision: 1497 Url: http://nuiton.org/repositories/revision/wikitty/1497 Log: Anomalie #2258: When we have query with aggregate and use findByQuery the result is false Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-08-07 17:53:58 UTC (rev 1496) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-08-15 17:48:49 UTC (rev 1497) @@ -64,6 +64,7 @@ import org.nuiton.wikitty.query.WikittyQueryMaker; import org.nuiton.wikitty.query.WikittyQueryResult; import org.nuiton.wikitty.query.WikittyQueryResultTreeNode; +import org.nuiton.wikitty.query.conditions.Aggregate; import org.nuiton.wikitty.query.conditions.Select; import org.nuiton.wikitty.services.WikittyEvent; import org.nuiton.wikitty.services.WikittyExtensionMigrationRegistry; @@ -793,8 +794,13 @@ if (limitToFirst) { for (WikittyQuery query : serviceQueries) { - query.setOffset(0); - query.setLimit(1); + // si on a une fonction d'aggreagation (SUM, MIN, ...) il ne + // faut pas modifier l'offset ni le limit + if (!(query.getCondition() instanceof Select) || + ((Select)query.getCondition()).getAggregate() == null ) { + query.setOffset(0); + query.setLimit(1); + } // lorsqu'on limit au premier, c'est qu'on utilise la methode // pour retourne seulement un objet et pas un WikittyQueryResult // on n'a donc pas a calculer les facets Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java 2012-08-07 17:53:58 UTC (rev 1496) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java 2012-08-15 17:48:49 UTC (rev 1497) @@ -139,7 +139,15 @@ // on ne garde que ce qui est demande if (query.getOffset() < topics.size()) { int offset = query.getOffset(); - int last = Math.min(topics.size(), query.getOffset() + query.getLimit()); + int limit = query.getLimit(); + + if (limit == Integer.MAX_VALUE) { + // WARNING It is necessary to substract 'offset' otherwise, + // there is a capacity overlow + limit = Integer.MAX_VALUE - offset; + } + + int last = Math.min(topics.size(), offset + limit); selectList = selectList.subList(offset, last); }
participants (1)
-
bpoussin@users.nuiton.org