package org.araqne.logdb.query.command;
import java.io.IOException;
import java.util.Map;
import org.araqne.logdb.DriverQueryCommand;
import org.araqne.logdb.Query;
import org.araqne.logdb.QueryResultSet;
import org.araqne.logdb.Row;
public class Result extends DriverQueryCommand {
private long offset;
private long limit;
private Query query;
public Result(Query query, long offset, long limit) {
this.query = query;
this.offset = offset;
this.limit = limit;
}
@Override
public String getName() {
return "result";
}
@Override
public void run() {
QueryResultSet rs = null;
try {
rs = query.getResultSet();
if (offset > 0)
rs.skip(offset);
while (rs.hasNext()) {
Map<String, Object> tuple = rs.next();
pushPipe(new Row(tuple));
}
} catch (IOException e) {
throw new IllegalStateException("cannot load query #" + query.getId() + " result", e);
} finally {
if (rs != null)
rs.close();
}
}
@Override
public String toString() {
String s = "result ";
if (offset > 0)
s += " offset=" + offset;
if (limit > 0)
s += " limit=" + limit;
s += " " + query.getId();
return s;
}
}