package com.taobao.tddl.repo.mysql.sqlconvertor.functions; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import com.taobao.tddl.common.jdbc.ParameterContext; import com.taobao.tddl.optimizer.core.expression.IFunction; import com.taobao.tddl.optimizer.core.plan.IDataNodeExecutor; import com.taobao.tddl.repo.mysql.sqlconvertor.MysqlPlanVisitorImpl; public class Cast implements FunctionStringConstructor { @Override public String constructColumnNameForFunction(IDataNodeExecutor query, boolean bindVal, AtomicInteger bindValSequence, Map<Integer, ParameterContext> paramMap, IFunction func, MysqlPlanVisitorImpl parentVisitor) { StringBuilder sb = new StringBuilder(); sb.append(IFunction.BuiltInFunction.CAST).append("("); sb.append(parentVisitor.getNewVisitor(func.getArgs().get(0)).getString()); sb.append(" as "); // typename sb.append(func.getArgs().get(1)); // typeinfo if (func.getArgs().size() > 2) { sb.append("("); // typeinfo1 sb.append(parentVisitor.getNewVisitor(func.getArgs().get(2)).getString()); // typeinfo2 if (func.getArgs().size() > 3) { sb.append(","); sb.append(parentVisitor.getNewVisitor(func.getArgs().get(3)).getString()); } sb.append(")"); } sb.append(")"); return sb.toString(); } }