use of org.apache.ignite.internal.cache.query.index.sorted.IndexValueCursor in project ignite by apache.
the class GridH2SpatialIndex method findByGeometry.
/**
* {@inheritDoc}
*/
@Override
public Cursor findByGeometry(TableFilter filter, SearchRow first, SearchRow last, SearchRow intersection) {
Value v = intersection.getValue(columnIds[0]);
Geometry g = ((ValueGeometry) v.convertTo(Value.GEOMETRY)).getGeometry();
int seg = segmentsCount() == 1 ? 0 : H2Utils.context(filter.getSession()).segment();
GridCursor<IndexRow> cursor = delegate.findByGeometry(seg, filter, g);
GridCursor<H2Row> h2cursor = new IndexValueCursor<>(cursor, this::mapIndexRow);
return new H2Cursor(h2cursor);
}
use of org.apache.ignite.internal.cache.query.index.sorted.IndexValueCursor in project ignite by apache.
the class H2TreeIndex method findForSegment.
/**
* Find rows for the segments (distributed joins).
*
* @param bounds Bounds.
* @param segment Segment.
* @param qryCtx Index query context.
* @return Iterator.
*/
public Iterator<H2Row> findForSegment(GridH2RowRangeBounds bounds, int segment, IndexQueryContext qryCtx) {
SearchRow lower = toSearchRow(bounds.first());
SearchRow upper = toSearchRow(bounds.last());
T2<IndexRow, IndexRow> key = prepareIndexKeys(lower, upper);
try {
GridCursor<IndexRow> range = queryIndex.find(key.get1(), key.get2(), true, true, segment, qryCtx);
if (range == null)
range = IndexValueCursor.EMPTY;
GridCursor<H2Row> h2cursor = new IndexValueCursor<>(range, this::mapIndexRow);
H2Cursor cur = new H2Cursor(h2cursor);
return new CursorIteratorWrapper(cur);
} catch (IgniteCheckedException e) {
throw DbException.convert(e);
}
}
use of org.apache.ignite.internal.cache.query.index.sorted.IndexValueCursor in project ignite by apache.
the class H2TreeIndex method find.
/**
* {@inheritDoc}
*/
@Override
public Cursor find(Session ses, SearchRow lower, SearchRow upper) {
assert lower == null || lower instanceof H2Row : lower;
assert upper == null || upper instanceof H2Row : upper;
try {
T2<IndexRow, IndexRow> key = prepareIndexKeys(lower, upper);
QueryContext qctx = ses != null ? H2Utils.context(ses) : null;
GridCursor<IndexRow> cursor = queryIndex.find(key.get1(), key.get2(), true, true, segment(qctx), idxQryContext(qctx));
GridCursor<H2Row> h2cursor = new IndexValueCursor<>(cursor, this::mapIndexRow);
return new H2Cursor(h2cursor);
} catch (IgniteCheckedException e) {
throw DbException.convert(e);
}
}
Aggregations