当前位置: 首页>>代码示例>>Java>>正文


Java IFunction.getAlias方法代码示例

本文整理汇总了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);
    }
}
 
开发者ID:loye168,项目名称:tddl5,代码行数:21,代码来源:ExecUtils.java

示例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();
}
 
开发者ID:loye168,项目名称:tddl5,代码行数:12,代码来源:Avg.java

示例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);
    }
}
 
开发者ID:loye168,项目名称:tddl5,代码行数:38,代码来源:ExecUtils.java

示例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);
        }
    }
}
 
开发者ID:loye168,项目名称:tddl5,代码行数:50,代码来源:FuckAvgOptimizer.java


注:本文中的com.taobao.tddl.optimizer.core.expression.IFunction.getAlias方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。