@Override public Void visit(Query q, Integer step) throws CompilationException { if (q.getBody() != null) { q.getBody().accept(this, step); } if (q.isTopLevel()) { out.println(SEMICOLON); } return null; }
@Override public Void visit(Query q, Integer step) throws CompilationException { Expression expr = q.getBody(); if (expr != null) { if (expr.getKind() != Kind.FLWOGR_EXPRESSION) { out.print("select element "); expr.accept(this, step + 2); } else { expr.accept(this, step); } } if (q.isTopLevel()) { out.println(SEMICOLON); } return null; }
@Override public Query visit(Query q, Void arg) throws CompilationException { Query copy = new Query(q.isExplain(), q.isTopLevel(), (Expression) q.getBody().accept(this, arg), q.getVarCounter()); copy.setSourceLocation(q.getSourceLocation()); return copy; }
@Override public Pair<ILogicalOperator, LogicalVariable> visit(Query q, Mutable<ILogicalOperator> tupSource) throws CompilationException { Expression queryBody = q.getBody(); SourceLocation sourceLoc = queryBody.getSourceLocation(); if (queryBody.getKind() == Kind.SELECT_EXPRESSION) { SelectExpression selectExpr = (SelectExpression) queryBody; if (q.isTopLevel()) { selectExpr.setSubquery(false); } return queryBody.accept(this, tupSource); } else { LogicalVariable var = context.newVar(); Pair<ILogicalExpression, Mutable<ILogicalOperator>> eo = langExprToAlgExpression(queryBody, tupSource); AssignOperator assignOp = new AssignOperator(var, new MutableObject<>(eo.first)); assignOp.getInputs().add(eo.second); assignOp.setSourceLocation(sourceLoc); ProjectOperator projectOp = new ProjectOperator(var); projectOp.getInputs().add(new MutableObject<>(assignOp)); projectOp.setSourceLocation(sourceLoc); return new Pair<>(projectOp, var); } }