@Override public SearchRow getSearchRow() { synchronized (sync) { if (end) { return null; } return onBase ? baseCursor.getSearchRow() : deltaCursor.getSearchRow(); } }
/** Load the current row. */ void loadCurrent() { synchronized (sync) { baseRow = baseCursor.getSearchRow(); deltaRow = deltaCursor.get(); needNewDelta = false; needNewBase = false; } }
public HashMap<Expression, Value> getCurrentValues() { SearchRow searchRow = cursor.getSearchRow(); int len = expressions.size(); HashMap<Expression, Value> result = New.hashMapNonRehash(len); for (int i = 0; i < len; i++) { result.put(expressions.get(i), searchRow.getValue(i)); } return result; }
private void loadNext(boolean base) { synchronized (sync) { if (base) { if (step(baseCursor)) { baseRow = baseCursor.getSearchRow(); } else { baseRow = null; } } else { if (step(deltaCursor)) { deltaRow = deltaCursor.get(); } else { deltaRow = null; } } } }
@Override public Cursor findFirstOrLast(Session session, boolean first) { if (closed) { throw DbException.throwInternalError(); } if (first) { // TODO optimization: this loops through NULL Cursor cursor = find(session, null, null); while (cursor.next()) { SearchRow row = cursor.getSearchRow(); Value v = row.getValue(columnIds[0]); if (v != ValueNull.INSTANCE) { return cursor; } } return cursor; } TreeNode x = root, n; while (x != null) { n = x.right; if (n == null) { break; } x = n; } TreeCursor cursor = new TreeCursor(this, x, null, null); if (x == null) { return cursor; } // TODO optimization: this loops through NULL elements do { SearchRow row = cursor.getSearchRow(); if (row == null) { break; } Value v = row.getValue(columnIds[0]); if (v != ValueNull.INSTANCE) { return cursor; } } while (cursor.previous()); return cursor; }
@Override public SearchRow getSearchRow() { return cursor.getSearchRow(); }