| 20 | */ |
| 21 | public class DbGetId extends DbAccessFn { |
| 22 | @Override |
| 23 | public final Value value(final QueryContext qc) throws QueryException { |
| 24 | final Data data = toData(qc); |
| 25 | final Iter values = arg(1).atomIter(qc, info); |
| 26 | |
| 27 | final IntList list = new IntList(Seq.initialCapacity(values.size())); |
| 28 | for(Item item; (item = qc.next(values)) != null;) { |
| 29 | final int id = (int) toLong(item), pre = pre(id, data); |
| 30 | if(pre < 0 || pre >= data.meta.size) throw DB_RANGE_X_X.get(info, data.meta.name, id); |
| 31 | list.add(pre); |
| 32 | } |
| 33 | return DBNodeSeq.get(list.ddo().finish(), data, this); |
| 34 | } |
| 35 | |
| 36 | @Override |
| 37 | protected final Expr opt(final CompileContext cc) throws QueryException { |