本文整理汇总了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);
}
示例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);
}
示例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);
}
}
}