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


Java LogicalPlan.newPID方法代码示例

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


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

示例1: indexEval

import org.apache.tajo.engine.planner.LogicalPlan; //导入方法依赖的package包/类
public static IndexScanNode indexEval(LogicalPlan plan, ScanNode scanNode,
    Iterator<Entry<String, String>> iter ) {
 
  EvalNode qual = scanNode.getQual();
  Gson gson = CoreGsonHelper.getInstance();
  
  FieldAndValueFinder nodeFinder = new FieldAndValueFinder();
  qual.preOrder(nodeFinder);
  LinkedList<EvalNode> nodeList = nodeFinder.getNodeList();
  
  int maxSize = Integer.MIN_VALUE;
  SortSpec[] maxIndex = null;
  
  String json;
  while(iter.hasNext()) {
    Entry<String , String> entry = iter.next();
    json = entry.getValue();
    SortSpec[] sortKey = gson.fromJson(json, SortSpec[].class);
    if(sortKey.length > nodeList.size()) {
      /* If the number of the sort key is greater than where condition, 
       * this index cannot be used
       * */
      continue; 
    } else {
      boolean[] equal = new boolean[sortKey.length];
      for(int i = 0 ; i < sortKey.length ; i ++) {
        for(int j = 0 ; j < nodeList.size() ; j ++) {
          Column col = ((FieldEval)(nodeList.get(j).getLeftExpr())).getColumnRef();
          if(col.equals(sortKey[i].getSortKey())) {
            equal[i] = true;
          }
        }
      }
      boolean chk = true;
      for(int i = 0 ; i < equal.length ; i ++) {
        chk = chk && equal[i];
      }
      if(chk) {
        if(maxSize < sortKey.length) {
          maxSize = sortKey.length;
          maxIndex = sortKey;
        }
      }
    }
  }
  if(maxIndex == null) {
    return null;
  } else {
    Schema keySchema = new Schema();
    for(int i = 0 ; i < maxIndex.length ; i ++ ) {
      keySchema.addColumn(maxIndex[i].getSortKey());
    }
    Datum[] datum = new Datum[nodeList.size()];
    for(int i = 0 ; i < nodeList.size() ; i ++ ) {
      datum[i] = ((ConstEval)(nodeList.get(i).getRightExpr())).getValue();
    }
    
    return new IndexScanNode(plan.newPID(), scanNode, keySchema , datum , maxIndex);
  }

}
 
开发者ID:apache,项目名称:incubator-tajo,代码行数:62,代码来源:IndexUtil.java


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