@Override public BasicNodeIter iter(final QueryContext qc) { final boolean text = index.type() == IndexType.TEXT; final byte kind = text ? Data.TEXT : Data.ATTR; final Data data = ictx.data; final int ml = data.meta.maxlen; final IndexIterator ii = index.min.length <= ml && index.max.length <= ml && (text ? data.meta.textindex : data.meta.attrindex) ? data.iter(index) : scan(); return new BasicNodeIter() { @Override public ANode next() { return ii.more() ? new DBNode(data, ii.pre(), kind) : null; } }; }
@Override public String toString() { final boolean text = index.type() == IndexType.TEXT; final Function func = text ? Function._DB_TEXT_RANGE : Function._DB_ATTRIBUTE_RANGE; return func.toString(Str.get(ictx.data.meta.name), Str.get(index.min), Str.get(index.max)); }
@Override public void plan(final FElem plan) { addPlan( plan, planElem(DATA, ictx.data.meta.name, MIN, index.min, MAX, index.max, TYP, index.type())); }