package net.sourceforge.mayfly.evaluation.expression;
import net.sourceforge.mayfly.MayflyResultSet;
import net.sourceforge.mayfly.UnimplementedException;
import net.sourceforge.mayfly.datastore.Cell;
import net.sourceforge.mayfly.evaluation.Expression;
import net.sourceforge.mayfly.evaluation.ResultRow;
import net.sourceforge.mayfly.evaluation.ResultRows;
import net.sourceforge.mayfly.evaluation.select.Evaluator;
import net.sourceforge.mayfly.evaluation.select.RowEvaluator;
import net.sourceforge.mayfly.evaluation.select.Select;
public class ScalarSubselect extends Expression {
private final Select select;
public ScalarSubselect(Select select) {
this.select = select;
}
@Override
public Cell aggregate(ResultRows rows) {
throw new UnimplementedException();
}
@Override
public Cell evaluate(ResultRow row, Evaluator evaluator) {
MayflyResultSet rows = subselect(row, evaluator, select);
return rows.scalar(select.location);
}
public static MayflyResultSet subselect(
ResultRow row, Evaluator evaluator, Select subselect) {
Evaluator innerEvaluator = new RowEvaluator(row, evaluator);
return subselect.select(innerEvaluator, null);
}
@Override
public boolean sameExpression(Expression other) {
throw new UnimplementedException();
}
@Override
public String displayName() {
throw new UnimplementedException();
}
}