本文整理汇总了Java中com.taobao.tddl.optimizer.core.expression.IFunction.getAlias方法的典型用法代码示例。如果您正苦于以下问题:Java IFunction.getAlias方法的具体用法?Java IFunction.getAlias怎么用?Java IFunction.getAlias使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.taobao.tddl.optimizer.core.expression.IFunction
的用法示例。
在下文中一共展示了IFunction.getAlias方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getColumnName
import com.taobao.tddl.optimizer.core.expression.IFunction; //导入方法依赖的package包/类
public static String getColumnName(Object column) {
if (column instanceof IColumn) {
IColumn col = getIColumn(column);
if (col.getAlias() != null) {
return col.getAlias();
} else {
return col.getColumnName();
}
} else if (column instanceof IFunction) {
IFunction func = ((IFunction) column);
if (func.getAlias() != null) {
return func.getAlias();
} else {
return func.getColumnName();
}
} else {
return String.valueOf(column);
}
}
示例2: bulidAvgSql
import com.taobao.tddl.optimizer.core.expression.IFunction; //导入方法依赖的package包/类
private String bulidAvgSql(IFunction func) {
String colName = func.getColumnName();
StringBuilder sb = new StringBuilder();
if (func.getAlias() != null) {// 如果有别名,需要和FuckAvgOptimizer中保持一致
sb.append(func.getAlias() + "1").append(",").append(func.getAlias() + "2");
} else {
sb.append(colName.replace("AVG", "SUM"));
sb.append(",").append(colName.replace("AVG", "COUNT"));
}
return sb.toString();
}
示例3: getColumFullName
import com.taobao.tddl.optimizer.core.expression.IFunction; //导入方法依赖的package包/类
public static String getColumFullName(Object column) {
if (column instanceof IColumn) {
IColumn col = getIColumn(column);
String colName = col.getTableName() + "." + col.getColumnName();
if (col.getAlias() != null) {
return colName + " as " + col.getAlias();
} else {
return colName;
}
} else if (column instanceof IFunction && !(column instanceof IFilter)) {
IFunction func = ((IFunction) column);
StringBuilder sb = new StringBuilder();
sb.append(func.getFunctionName());
sb.append("(");
boolean first = true;
if (func.isDistinct()) {
sb.append("DISTINCT ");
}
for (Object arg : func.getArgs()) {
if (first) {
first = false;
} else {
sb.append(",");
}
sb.append(getColumnName(arg));
}
sb.append(")");
if (func.getAlias() != null) {
sb.append(" as ").append(func.getAlias());
}
return sb.toString();
} else {
return String.valueOf(column);
}
}
示例4: expendAvgFunction
import com.taobao.tddl.optimizer.core.expression.IFunction; //导入方法依赖的package包/类
/**
* 将Avg函数展开为sum/count
*/
private void expendAvgFunction(IDataNodeExecutor sub) {
if (sub instanceof IQuery || sub instanceof IJoin) {
List<ISelectable> add = new ArrayList();
List<ISelectable> remove = new ArrayList();
for (Object sel : ((IQueryTree) sub).getColumns()) {
ISelectable s = (ISelectable) sel;
if (s instanceof IFunction) {
if (s.getColumnName().startsWith("AVG(")) {
IFunction sum = (IFunction) s.copy();
sum.setExtraFunction(null);
sum.setFunctionName("SUM");
sum.setColumnName(s.getColumnName().replace("AVG(", "SUM("));
if (sum.getAlias() != null) {
sum.setAlias(sum.getAlias() + "1");// 加个后缀1
}
IFunction count = (IFunction) s.copy();
count.setExtraFunction(null);
count.setFunctionName("COUNT");
count.setColumnName(s.getColumnName().replace("AVG(", "COUNT("));
if (count.getAlias() != null) {
count.setAlias(count.getAlias() + "2");// 加个后缀2
}
add.add(count);
add.add(sum);
remove.add(s);
} else {
// 删除底下AVG的相关函数,比如 1 + AVG(ID)
// 目前这个只能上层来进行计算
// 可能的风险:还未支持的Function计算
if (FunctionType.Scalar.equals(((IFunction) s).getFunctionType())
&& hasArgsAvgFunction((IFunction) s)) {
remove.add(s);
}
}
}
}
if (!remove.isEmpty()) {
((IQueryTree) sub).getColumns().removeAll(remove);
((IQueryTree) sub).getColumns().addAll(add);
}
}
}