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


Java IFunction.setAlias方法代码示例

本文整理汇总了Java中com.taobao.tddl.optimizer.core.expression.IFunction.setAlias方法的典型用法代码示例。如果您正苦于以下问题:Java IFunction.setAlias方法的具体用法?Java IFunction.setAlias怎么用?Java IFunction.setAlias使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.taobao.tddl.optimizer.core.expression.IFunction的用法示例。


在下文中一共展示了IFunction.setAlias方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: LENGTH

import com.taobao.tddl.optimizer.core.expression.IFunction; //导入方法依赖的package包/类
@Test
public void testQuery_函数别名() throws SqlParserException {
    String sql = "SELECT T.ID , LENGTH(NAME) AS LEN FROM TABLE1 T  WHERE ID=1";
    QueryTreeNode qn = query(sql);
    qn.build();

    IFunction function = ASTNodeFactory.getInstance().createFunction();
    function.setColumnName("LENGTH(NAME)");
    function.setAlias("LEN");
    function.setFunctionName("LENGTH");

    QueryTreeNode qnExpected = new TableNode("TABLE1").alias("T").select("T.ID").query("ID=1");
    qnExpected.addColumnsSelected(function);
    qnExpected.build();
    assertEquals(qn, qnExpected);
}
 
开发者ID:loye168,项目名称:tddl5,代码行数:17,代码来源:SqlParserTest.java

示例2: LENGTH

import com.taobao.tddl.optimizer.core.expression.IFunction; //导入方法依赖的package包/类
@Test
public void testQuery_函数别名() throws SqlParserException, QueryException {
    String sql = "SELECT T.ID , LENGTH(NAME) AS LEN FROM TABLE1 T  WHERE ID=1";
    QueryTreeNode qn = query(sql);
    qn.build();

    IFunction function = ASTNodeFactory.getInstance().createFunction();
    function.setColumnName("LENGTH(NAME)");
    function.setAlias("LEN");
    function.setFunctionName("LENGTH");

    QueryTreeNode qnExpected = new TableNode("TABLE1").alias("T").select("T.ID").query("ID=1");
    qnExpected.addColumnsSelected(function);
    qnExpected.build();
    assertEquals(qn, qnExpected);
}
 
开发者ID:beebeandwer,项目名称:TDDL,代码行数:17,代码来源:SqlParserTest.java

示例3: 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.setAlias方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。