@Override public boolean moveNext() { try { if (cursor == null) { cursor = queryStorage(); } if (!cursor.hasNext()) { return false; } ITuple tuple = cursor.next(); if (tuple == null) { return false; } convertCurrentRow(tuple); return true; } catch (Exception e) { try { if (cursor != null) { cursor.close(); } } catch (Exception ee) { logger.info("Error when closing cursor, ignore it", ee); } throw e; } }
@Test public void testListAllTables() throws Exception { ITupleIterator it = ITupleIterator.EMPTY_TUPLE_ITERATOR; assertFalse(it.hasNext()); assertNull(it.next()); it.close(); // for coverage }
@Override public boolean hasNext() { while (!this.tupleIterator.hasNext()) { if (this.regionResponsesIterator.hasNext()) { this.tupleIterator = new SingleRegionTupleIterator(this.regionResponsesIterator.next()); } else { return false; } } return true; }
@Override public ITuple next() { ITuple t = null; while (hasNext()) { if (segmentIterator.hasNext()) { t = segmentIterator.next(); scanCount++; break; } else { segmentIterator.close(); segmentIterator = segmentIteratorIterator.next(); } } return t; }
@Override public boolean moveNext() { if (cursor == null) { cursor = queryStorage(); } if (!cursor.hasNext()) { return false; } ITuple tuple = cursor.next(); if (tuple == null) { return false; } convertCurrentRow(tuple); return true; }
@Override public boolean hasNext() { // 1. check limit if (context.isLimitEnabled() && scanCount >= context.getLimit()) { return false; } // 2. check partial result if (context.isAcceptPartialResult() && scanCount > partialResultLimit) { context.setPartialResultReturned(true); return false; } // 3. check threshold if (scanCount >= context.getThreshold()) { throw new ScanOutOfLimitException("Scan row count exceeded threshold: " + context.getThreshold() + ", please add filter condition to narrow down backend scan range, like where clause."); } // 4. check cube segments return segmentIteratorIterator.hasNext() || segmentIterator.hasNext(); }
private int search(List<TblColRef> groups, List<FunctionDesc> aggregations, TupleFilter filter, StorageContext context) { int count = 0; ITupleIterator iterator = null; try { SQLDigest sqlDigest = new SQLDigest("default.test_kylin_fact", filter, null, Collections.<TblColRef> emptySet(), groups, Collections.<TblColRef> emptySet(), Collections.<TblColRef> emptySet(), aggregations); iterator = storageEngine.search(context, sqlDigest); while (iterator.hasNext()) { ITuple tuple = iterator.next(); System.out.println("Tuple = " + tuple); count++; } } catch (Exception e) { e.printStackTrace(); } finally { if (iterator != null) { iterator.close(); } } return count; }
@Test public void testListAllTables() throws Exception { ITupleIterator it = ITupleIterator.EMPTY_TUPLE_ITERATOR; assertFalse(it.hasNext()); assertNull(it.next()); it.close(); // for coverage }
@Override public boolean moveNext() { try { if (cursor == null) { cursor = queryStorage(); } if (!cursor.hasNext()) { return false; } ITuple tuple = cursor.next(); if (tuple == null) { return false; } convertCurrentRow(tuple); return true; } catch (Exception e) { try { if (cursor != null) { cursor.close(); } } catch (Exception ee) { logger.info("Error when closing cursor, ignore it", ee); } throw e; } }