m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-11-11 18:49:32 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-11-11 18:49:32 +0100
commit530be09d2cf8e50ca4b3e172c847b361b2d710ad (patch)
tree0ad5044b503e3ac14155bed0cc85f1c32f4e8d6e /src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
parent53189bf52a25d0aeb87047abff5022f6241ef9cd (diff)
Start implementing column operations
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
index 71a300b..4241ce2 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java
@@ -184,7 +184,7 @@ public class Interpreter {
public Table visit(WhereC where, Table table) {
Table result = new Table(table);
for(TableRow row : table) {
- Environment env = new Environment(row, table.getColumns());
+ Environment env = new EnvironmentRow(row, table.getColumns());
Value value = where.condexpr_.accept(new CondExprInterpreter(), env).getValue();
if(getBoolean(value))
result.appendRow(row);
@@ -215,9 +215,9 @@ public class Interpreter {
Comparator<TableRow> comparator = new Comparator<TableRow>() {
@Override
public int compare(TableRow row1, TableRow row2) {
- Environment env1 = new Environment(row1, table.getColumns());
+ Environment env1 = new EnvironmentRow(row1, table.getColumns());
Result expr1 = orderItem.condexpr_.accept(new CondExprInterpreter(), env1);
- Environment env2 = new Environment(row2, table.getColumns());
+ Environment env2 = new EnvironmentRow(row2, table.getColumns());
Result expr2 = orderItem.condexpr_.accept(new CondExprInterpreter(), env2);
ValuesPair pair = new ValuesPair(expr1, expr2);
int result = orderItem.nulls_.accept(new NullsInterpreter(), pair);
@@ -280,13 +280,13 @@ public class Interpreter {
public class SelItemInterpreter implements SelItem.Visitor<QueryResult, Table> {
public QueryResult visit(SelItemC selItem, Table table) {
- Environment env = null; // TODO
+ Environment env = new EnvironmentTable(table);
Result result = selItem.condexpr_.accept(new CondExprInterpreter(), env);
return new QueryResult(result.getValue());
}
public QueryResult visit(AliasedSelItemC selItem, Table table) {
- Environment env = null; // TODO
+ Environment env = new EnvironmentTable(table);
Result result = selItem.condexpr_.accept(new CondExprInterpreter(), env);
return new QueryResult(new Attribute(selItem.qident_), result.getValue());
}
@@ -330,7 +330,7 @@ public class Interpreter {
public Result visit(CondExprAndC expr, Environment env) {
// TODO
- throw new UnsupportedOperationException("Not yet implemented");
+ throw new UnsupportedOperationException("CondExprAndC Not yet implemented");
}
public Result visit(CondExprNotC expr, Environment env) {
@@ -406,16 +406,19 @@ public class Interpreter {
}
public Result visit(EIdentC expr, Environment env) {
- return env.getIdent(expr.qident_);
+ Result res = env.getIdent(expr.qident_);
+ return res;
}
public Result visit(EFunC expr, Environment env) {
try {
List<Result> arguments = new ArrayList<Result>(expr.listcondexpr_.size());
- for(CondExpr arg : expr.listcondexpr_)
+ for(CondExpr arg : expr.listcondexpr_) {
arguments.add(arg.accept(new CondExprInterpreter(), env));
+ }
- return Functions.getInstance().evaluate(expr.qident_, arguments);
+ Result res = Functions.getInstance().evaluate(expr.qident_, arguments);
+ return res;
} catch(Exception exception) {
throw new InsideQueryException(PrettyPrinter.print(expr), exception);
}
@@ -475,7 +478,7 @@ public class Interpreter {
public Result visit(RelOpEqC op, ValuesPair pair) {
// TODO
- throw new UnsupportedOperationException("Not yet implemented");
+ throw new UnsupportedOperationException("RelOpEqC Not yet implemented");
}
public Result visit(RelOpNeC op, ValuesPair pair) {
@@ -488,7 +491,7 @@ public class Interpreter {
public Result visit(RelOpLeC op, ValuesPair pair) {
// TODO
- throw new UnsupportedOperationException("Not yet implemented");
+ throw new UnsupportedOperationException("RelOpLeC Not yet implemented");
}
public Result visit(RelOpGeC op, ValuesPair pair) {