@Override public Object visit(Object context, EvalNode evalNode, Stack<EvalNode> stack) { super.visit(context, evalNode, stack); if (evalNode.type == EvalType.CASE) { evalNodes.add(evalNode); } else if (evalNode.type == EvalType.FUNCTION) { FunctionEval functionEval = (FunctionEval)evalNode; if ("coalesce".equals(functionEval.getName())) { evalNodes.add(evalNode); } } else if (evalNode.type == EvalType.IS_NULL) { evalNodes.add(evalNode); } return evalNode; } }
@Override public Object visit(Object context, EvalNode evalNode, Stack<EvalNode> stack) { super.visit(context, evalNode, stack); if (evalNode.type == EvalType.CASE) { evalNodes.add(evalNode); } else if (evalNode.type == EvalType.FUNCTION) { FunctionEval functionEval = (FunctionEval)evalNode; if ("coalesce".equals(functionEval.getName())) { evalNodes.add(evalNode); } } else if (evalNode.type == EvalType.IS_NULL) { evalNodes.add(evalNode); } return evalNode; } }
@Override protected EvalNode visitFuncCall(Context context, FunctionEval func, Stack<EvalNode> stack) { // TODO - TAJO-1837 should be resolved if we support RDBMS functions better. stack.push(func); context.sb.append(func.getName()).append("("); boolean first = true; for (EvalNode param : func.getArgs()) { if (first) { first = false; } else { context.sb.append(","); } visit(context, param, stack); } context.sb.append(")"); stack.pop(); return func; }
@Override protected EvalNode visitFuncCall(Context context, FunctionEval func, Stack<EvalNode> stack) { // TODO - TAJO-1837 should be resolved if we support RDBMS functions better. stack.push(func); context.sb.append(func.getName()).append("("); boolean first = true; for (EvalNode param : func.getArgs()) { if (first) { first = false; } else { context.sb.append(","); } visit(context, param, stack); } context.sb.append(")"); stack.pop(); return func; }