From 530be09d2cf8e50ca4b3e172c847b361b2d710ad Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Mon, 11 Nov 2019 18:49:32 +0100 Subject: Start implementing column operations --- .../mimuw/cloudatlas/interpreter/Interpreter.java | 25 ++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/interpreter/Interpreter.java') 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 comparator = new Comparator() { @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 { 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 arguments = new ArrayList(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) { -- cgit v1.2.3