/** * Gets the iterator. * * @return Iterator. */ private Iterator<T> iterator() { if (iterator == null) iterator = cursor.iterator(); return iterator; } }
/** * @return Result set iterator. */ public synchronized Iterator getIterator() { assert cur != null; if (itr == null) itr = cur.iterator(); return itr; }
@Override public Iterator<Cache.Entry> iterator() { return cursor.iterator(); }
/** * @param connMgr Connection manager. * @param cur Query cursor. * @param plan Update plan. * @param op Operation. */ private AbstractIterator(ConnectionManager connMgr, QueryCursor<List<?>> cur, UpdatePlan plan, EnlistOperation op) { this.connMgr = connMgr; this.cur = cur; this.plan = plan; this.op = op; it = cur.iterator(); }
/** {@inheritDoc} */ @Override public Iterator<Cache.Entry<K, V>> iterator() { return new QueryKeyValueIterator<>(cur.iterator()); }
/** {@inheritDoc} */ @NotNull @Override public Iterator<LabelPair<L>> iterator() { return new TruthWithPredictionIterator(cursor.iterator()); }
@Override public Object call() throws Exception { int i = 0; Cache.Entry<Integer, Integer> e; while ((e = fut0.iterator().next()) != null) assertEquals(++i, (int)e.getKey()); return null; } }, IgniteException.class, null);
/** * Computes number of entries selected from the cache by the query. * * @param cache Ignite cache with upstream data. * @param qry Cache query. * @param transformer Upstream transformer. * @param <K> Type of a key in {@code upstream} data. * @param <V> Type of a value in {@code upstream} data. * @return Number of entries supplied by the iterator. */ private static <K, V> long computeCount( IgniteCache<K, V> cache, ScanQuery<K, V> qry, UpstreamTransformer transformer) { try (QueryCursor<UpstreamEntry<K, V>> cursor = cache.query(qry, e -> new UpstreamEntry<>(e.getKey(), e.getValue()))) { return computeCount(transformer.transform(Utils.asStream(cursor.iterator()).map(x -> (UpstreamEntry<K, V>)x)).iterator()); } }
/** * @param cache Cache. * @param qry Query. * @param waitingForCompletion Waiting for query completion. */ private void checkQueryNotFullyFetchedMetrics(IgniteCache<Integer, String> cache, Query qry, boolean waitingForCompletion) throws IgniteInterruptedCheckedException { cache.query(qry).iterator().next(); if (waitingForCompletion) waitingForCompletion(cache, 1); checkMetrics(cache, 1, 1, 0, true); // Execute again with the same parameters. cache.query(qry).iterator().next(); if (waitingForCompletion) waitingForCompletion(cache, 2); checkMetrics(cache, 2, 2, 0, false); }
/** * @param cache Cache. * @param qry Query. * @param waitingForCompletion Waiting for query completion. */ private void checkQueryNotFullyFetchedMetrics(IgniteCache<Integer, String> cache, Query qry, boolean waitingForCompletion) throws IgniteInterruptedCheckedException { // Execute query. cache.query(qry).iterator().next(); if (waitingForCompletion) waitingFor(cache, "completions", 1); checkMetrics(cache, 1, 0, 1, 1, 0, true); // Execute again with the same parameters. cache.query(qry).iterator().next(); if (waitingForCompletion) waitingFor(cache, "completions", 2); checkMetrics(cache, 1, 0, 2, 2, 0, false); }
/** * JUnit. * * @throws Exception In case of error. */ @Test public void testSelectQuery() throws Exception { IgniteCache<Integer, String> cache = jcache(Integer.class, String.class); cache.put(10, "value"); QueryCursor<Cache.Entry<Integer, String>> qry = cache.query(new SqlQuery<Integer, String>(String.class, "true")); Iterator<Cache.Entry<Integer, String>> iter = qry.iterator(); assert iter != null; assert iter.next() != null; }
/** * @param qry Query. * @param waitingForCompletion Waiting for query completion. */ private void checkQueryNotFullyFetchedMetrics(Query qry, boolean waitingForCompletion) throws IgniteInterruptedCheckedException { IgniteCache<Integer, String> cache = queryNode().context().cache().jcache("A"); // Execute query. cache.query(qry).iterator().next(); if (waitingForCompletion) waitingFor("executions", 1); checkMetrics(0, 0, 0, 0, true); // Execute again with the same parameters. cache.query(qry).iterator().next(); if (waitingForCompletion) waitingFor("executions", 2); checkMetrics(0, 0, 0, 0, false); }
/** * */ @Test public void testDeleteSimple() { IgniteCache p = cache(); QueryCursor<List<?>> c = p.query(new SqlFieldsQuery("delete from Person p where length(p._key) = 2 " + "or p.secondName like '%ite'")); c.iterator(); c = p.query(new SqlFieldsQuery("select _key, _val, * from Person order by id")); List<List<?>> leftovers = c.getAll(); assertEquals(2, leftovers.size()); assertEqualsCollections(Arrays.asList("SecondKey", createPerson(2, "Joe", "Black"), 2, "Joe", "Black"), leftovers.get(0)); assertEqualsCollections(Arrays.asList("f0u4thk3y", createPerson(4, "Jane", "Silver"), 4, "Jane", "Silver"), leftovers.get(1)); }
/** * */ @Test public void testUpdateSimple() { IgniteCache p = cache(); QueryCursor<List<?>> c = p.query(new SqlFieldsQuery("update Person p set p.id = p.id * 2, p.firstName = " + "substring(p.firstName, 0, 2) where length(p._key) = ? or p.secondName like ?").setArgs(2, "%ite")); c.iterator(); c = p.query(new SqlFieldsQuery("select _key, _val, * from Person order by _key, id")); List<List<?>> leftovers = c.getAll(); assertEquals(4, leftovers.size()); assertEqualsCollections(Arrays.asList("FirstKey", createPerson(2, "Jo", "White"), 2, "Jo", "White"), leftovers.get(0)); assertEqualsCollections(Arrays.asList("SecondKey", createPerson(2, "Joe", "Black"), 2, "Joe", "Black"), leftovers.get(1)); assertEqualsCollections(Arrays.asList("f0u4thk3y", createPerson(4, "Jane", "Silver"), 4, "Jane", "Silver"), leftovers.get(2)); assertEqualsCollections(Arrays.asList("k3", createPerson(6, "Sy", "Green"), 6, "Sy", "Green"), leftovers.get(3)); }
/** * */ @Test public void testDeleteSingle() { IgniteCache p = cache(); QueryCursor<List<?>> c = p.query(new SqlFieldsQuery("delete from Person where _key = ?") .setArgs("FirstKey")); c.iterator(); c = p.query(new SqlFieldsQuery("select _key, _val, * from Person order by id, _key")); List<List<?>> leftovers = c.getAll(); assertEquals(3, leftovers.size()); assertEqualsCollections(Arrays.asList("SecondKey", createPerson(2, "Joe", "Black"), 2, "Joe", "Black"), leftovers.get(0)); assertEqualsCollections(Arrays.asList("k3", createPerson(3, "Sylvia", "Green"), 3, "Sylvia", "Green"), leftovers.get(1)); assertEqualsCollections(Arrays.asList("f0u4thk3y", createPerson(4, "Jane", "Silver"), 4, "Jane", "Silver"), leftovers.get(2)); }
/** * */ @Test public void testUpdateSingle() { IgniteCache p = cache(); QueryCursor<List<?>> c = p.query(new SqlFieldsQuery("update Person p set _val = ? where _key = ?") .setArgs(createPerson(2, "Jo", "White"), "FirstKey")); c.iterator(); c = p.query(new SqlFieldsQuery("select _key, _val, * from Person order by id, _key")); List<List<?>> leftovers = c.getAll(); assertEquals(4, leftovers.size()); assertEqualsCollections(Arrays.asList("FirstKey", createPerson(2, "Jo", "White"), 2, "Jo", "White"), leftovers.get(0)); assertEqualsCollections(Arrays.asList("SecondKey", createPerson(2, "Joe", "Black"), 2, "Joe", "Black"), leftovers.get(1)); assertEqualsCollections(Arrays.asList("k3", createPerson(3, "Sylvia", "Green"), 3, "Sylvia", "Green"), leftovers.get(2)); assertEqualsCollections(Arrays.asList("f0u4thk3y", createPerson(4, "Jane", "Silver"), 4, "Jane", "Silver"), leftovers.get(3)); }
/** * In binary mode, this test checks that inner forcing of keepBinary works - without it, EntryProcessors * inside DML engine would compare binary and non-binary objects with the same keys and thus fail. */ @Test public void testDeleteSimpleWithoutKeepBinary() { IgniteCache p = ignite(0).cache("S2P"); QueryCursor<List<?>> c = p.query(new SqlFieldsQuery("delete from Person p where length(p._key) = 2 " + "or p.secondName like '%ite'")); c.iterator(); c = p.query(new SqlFieldsQuery("select _key, _val, * from Person order by id")); List<List<?>> leftovers = c.getAll(); assertEquals(2, leftovers.size()); assertEqualsCollections(Arrays.asList("SecondKey", new Person(2, "Joe", "Black"), 2, "Joe", "Black"), leftovers.get(0)); assertEqualsCollections(Arrays.asList("f0u4thk3y", new Person(4, "Jane", "Silver"), 4, "Jane", "Silver"), leftovers.get(1)); } }
/** * Non local SQL Fields check nullification after close */ @Test public void testSqlFieldsQueryClose() { SqlFieldsQuery qry = new SqlFieldsQuery(SELECT_MAX_SAL_SQLF); QueryCursor<List<?>> qryCurs = cache().query(qry); qryCurs.iterator(); qryCurs.close(); H2ResultSetIterator h2It = extractGridIteratorInnerH2ResultSetIterator(qryCurs); checkIterator(h2It); }
/** * @param cache Cache. * @param loc Explicit query locality flag. * @throws Exception If check failed. */ private void checkLocalQueryResults(IgniteCache<CacheKey, CacheValue> cache, boolean loc) throws Exception { QueryCursor<Cache.Entry<CacheKey, CacheValue>> qry = cache.query(new SqlQuery<CacheKey, CacheValue>(CacheValue.class, "val > 1 and val < 4") .setReplicatedOnly(true).setLocal(loc)); Iterator<Cache.Entry<CacheKey, CacheValue>> iter = qry.iterator(); assert iter != null; assert iter.hasNext(); Cache.Entry<CacheKey, CacheValue> entry = iter.next(); assert entry.getKey().equals(new CacheKey(2)) || entry.getKey().equals(new CacheKey(3)); assert iter.hasNext(); entry = iter.next(); assert entry.getKey().equals(new CacheKey(2)) || entry.getKey().equals(new CacheKey(3)); assert !iter.hasNext(); }
/** * Local SQL Fields check nullification after close */ @Test public void testSqlFieldsQueryLocalClose() { SqlFieldsQuery qry = new SqlFieldsQuery(SELECT_MAX_SAL_SQLF); qry.setLocal(true); QueryCursor<List<?>> qryCurs = cache().query(qry); qryCurs.iterator(); qryCurs.close(); H2ResultSetIterator h2It = extractGridIteratorInnerH2ResultSetIterator(qryCurs); checkIterator(h2It); }