shuliga commented on a change in pull request #6917: IGNITE-12189 Implementation correct limit for TextQuery URL: https://github.com/apache/ignite/pull/6917#discussion_r341201977
########## File path: modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheFullTextQuerySelfTest.java ########## @@ -212,86 +311,109 @@ private static void clearCache(IgniteEx ignite) { * * @throws IgniteCheckedException if failed. */ - private static void validateQueryResults(IgniteEx ignite, Query qry, Set<Integer> exp, + private static void validateQueryResults(IgniteEx ignite, TextQuery qry, Set<Integer> exp, boolean keepBinary) throws IgniteCheckedException { IgniteCache<Integer, Person> cache = ignite.cache(PERSON_CACHE); if (keepBinary) { IgniteCache<Integer, BinaryObject> cache0 = cache.withKeepBinary(); try (QueryCursor<Cache.Entry<Integer, BinaryObject>> cursor = cache0.query(qry)) { - Set<Integer> exp0 = new HashSet<>(exp); - - List<Cache.Entry<Integer, ?>> all = new ArrayList<>(); - - for (Cache.Entry<Integer, BinaryObject> entry : cursor.getAll()) { - all.add(entry); - assertEquals(entry.getKey().toString(), entry.getValue().field("name")); + TestPair testPair = processExpectedWithBinary(exp, cursor); - assertEquals(entry.getKey(), entry.getValue().field("age")); - - exp0.remove(entry.getKey()); - } - - checkForMissedKeys(ignite, exp0, all); + assertResult(ignite, qry, testPair); } try (QueryCursor<Cache.Entry<Integer, BinaryObject>> cursor = cache0.query(qry)) { - Set<Integer> exp0 = new HashSet<>(exp); - - List<Cache.Entry<Integer, ?>> all = new ArrayList<>(); - for (Cache.Entry<Integer, BinaryObject> entry : cursor.getAll()) { - all.add(entry); + TestPair testPair = processExpectedWithBinary(exp, cursor); - assertEquals(entry.getKey().toString(), entry.getValue().field("name")); - - assertEquals(entry.getKey(), entry.getValue().field("age")); - - exp0.remove(entry.getKey()); - } - - checkForMissedKeys(ignite, exp0, all); + assertResult(ignite, qry, testPair); } } else { try (QueryCursor<Cache.Entry<Integer, Person>> cursor = cache.query(qry)) { - Set<Integer> exp0 = new HashSet<>(exp); - List<Cache.Entry<Integer, ?>> all = new ArrayList<>(); + TestPair testPair = processExpected(exp, cursor); - for (Cache.Entry<Integer, Person> entry : cursor.getAll()) { - all.add(entry); + assertResult(ignite, qry, testPair); - assertEquals(entry.getKey().toString(), entry.getValue().name); + } - assertEquals(entry.getKey(), Integer.valueOf(entry.getValue().age)); + try (QueryCursor<Cache.Entry<Integer, Person>> cursor = cache.query(qry)) { - exp0.remove(entry.getKey()); - } + TestPair testPair = processExpected(exp, cursor); - checkForMissedKeys(ignite, exp0, all); + assertResult(ignite, qry, testPair); } + } + } - try (QueryCursor<Cache.Entry<Integer, Person>> cursor = cache.query(qry)) { - Set<Integer> exp0 = new HashSet<>(exp); + /** + * Checks query for missed keys or if limit is set - for limitation correctness. + * + * @param ignite Ignite context. + * @param qry Initial text query. + * @param testPair pair containing expected and all entries. + * @throws IgniteCheckedException if key check failed. + */ + private static void assertResult(IgniteEx ignite, TextQuery qry, + TestPair testPair) throws IgniteCheckedException { + if (qry.getLimit() > 0) { + assertTrue(testPair.all.size() <= QUERY_LIMIT); Review comment: For limited response we cannot guaranty consistent response while merging from different nodes without ordering. This should be solved with sorting added later. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services