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

Reply via email to