• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java RexInputRef类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.eigenbase.rex.RexInputRef的典型用法代码示例。如果您正苦于以下问题:Java RexInputRef类的具体用法?Java RexInputRef怎么用?Java RexInputRef使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



RexInputRef类属于org.eigenbase.rex包,在下文中一共展示了RexInputRef类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: translateRexNode

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
private TblColRef translateRexNode(RexNode rexNode, ColumnRowType inputColumnRowType, String fieldName, Set<TblColRef> sourceCollector) {
    TblColRef column = null;
    if (rexNode instanceof RexInputRef) {
        RexInputRef inputRef = (RexInputRef) rexNode;
        column = translateRexInputRef(inputRef, inputColumnRowType, fieldName, sourceCollector);
    } else if (rexNode instanceof RexLiteral) {
        RexLiteral literal = (RexLiteral) rexNode;
        column = translateRexLiteral(literal);
    } else if (rexNode instanceof RexCall) {
        RexCall call = (RexCall) rexNode;
        column = translateRexCall(call, inputColumnRowType, fieldName, sourceCollector);
    } else {
        throw new IllegalStateException("Unsupport RexNode " + rexNode);
    }
    return column;
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:17,代码来源:OLAPProjectRel.java


示例2: translateJoinColumn

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
private void translateJoinColumn(RexCall condition, Map<TblColRef, TblColRef> joinColumns) {
    SqlKind kind = condition.getOperator().getKind();
    if (kind == SqlKind.AND) {
        for (RexNode operand : condition.getOperands()) {
            RexCall subCond = (RexCall) operand;
            translateJoinColumn(subCond, joinColumns);
        }
    } else if (kind == SqlKind.EQUALS) {
        List<RexNode> operands = condition.getOperands();
        RexInputRef op0 = (RexInputRef) operands.get(0);
        TblColRef col0 = columnRowType.getColumnByIndex(op0.getIndex());
        RexInputRef op1 = (RexInputRef) operands.get(1);
        TblColRef col1 = columnRowType.getColumnByIndex(op1.getIndex());
        joinColumns.put(col0, col1);
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:17,代码来源:OLAPJoinRel.java


示例3: getExprVarsFromRexCall

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
public static void getExprVarsFromRexCall(RexNode cond, List<ExprVar> result) {
	if(cond instanceof RexCall) {
		RexCall call = (RexCall) cond;
		for(int i = 0; i < call.getOperands().size(); i++) {
			getExprVarsFromRexCall(call.getOperands().get(i), result);
		}
		return;
	}
	// assignable variable
	if(cond instanceof RexInputRef) {
		RexInputRef ref = (RexInputRef) cond;
		for (ExprVar expr : result) {
			if(expr.varName.equals(ref.getName())) {
				// variable already created;
				return;
			}
		}
		ExprVar e = new ExprVar();
		e.varName = ref.getName();
		e.positionInRecord = ref.getIndex();
		e.type = getTypeClass(ref.getType());
		result.add(e);
		return;
	}
}
 
开发者ID:rmetzger,项目名称:stratosphere-sql,代码行数:26,代码来源:StratosphereRelUtils.java


示例4: getProjectFields

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
private int[] getProjectFields(List<RexNode> exps) {
    final int[] fields = new int[exps.size()];
    for (int i = 0; i < exps.size(); i++) {
        final RexNode exp = exps.get(i);
        if (exp instanceof RexInputRef) {
            fields[i] = ((RexInputRef) exp).getIndex();
        } else {
            return null; // not a simple projection
        }
    }
    return fields;
}
 
开发者ID:OSBI,项目名称:optiq-solr,代码行数:13,代码来源:SolrPushProjectOntoTableRule.java


示例5: getProjectFields

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
private int[] getProjectFields(List<RexNode> exps) {
  final int[] fields = new int[exps.size()];
  for (int i = 0; i < exps.size(); i++) {
    final RexNode exp = exps.get(i);
    if (exp instanceof RexInputRef) {
      fields[i] = ((RexInputRef) exp).getIndex();
    } else {
      return null; // not a simple projection
    }
  }
  return fields;
}
 
开发者ID:apache,项目名称:incubator-optiq-csv,代码行数:13,代码来源:CsvPushProjectOntoTableRule.java


示例6: visitInputRef

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
@Override
public TupleFilter visitInputRef(RexInputRef inputRef) {
    TblColRef column = inputRowType.getColumnByIndex(inputRef.getIndex());
    context.allColumns.add(column);
    ColumnTupleFilter filter = new ColumnTupleFilter(column);
    return filter;
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:8,代码来源:OLAPFilterRel.java


示例7: translateRexInputRef

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
private TblColRef translateRexInputRef(RexInputRef inputRef, ColumnRowType inputColumnRowType, String fieldName, Set<TblColRef> sourceCollector) {
    int index = inputRef.getIndex();
    // check it for rewrite count
    if (index < inputColumnRowType.size()) {
        TblColRef column = inputColumnRowType.getColumnByIndex(index);
        if (!column.isInnerColumn() && !this.rewriting && !this.afterAggregate) {
            context.allColumns.add(column);
            sourceCollector.add(column);
        }
        return column;
    } else {
        throw new IllegalStateException("Can't find " + inputRef + " from child columnrowtype " + inputColumnRowType + " with fieldname " + fieldName);
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:15,代码来源:OLAPProjectRel.java


示例8: visitInputRef

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
public Void visitInputRef(RexInputRef inputRef) {
//			if (true) { // do I need a condition here?
//				inputRef.setExternalRef(true);
//			}
//			System.err.println("Setting input ref " + inputRef + " index "
//					+ inputRef.getIndex());
			inputPosAndType
					.add(Pair.of(inputRef.getIndex(), inputRef.getType()));
			return null;
		}
 
开发者ID:rmetzger,项目名称:stratosphere-sql,代码行数:11,代码来源:StratosphereRexUtils.java


示例9: getFields

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
public Class<? extends Value>[] getFields() {
	Class<? extends Value>[] fields = new Class[this.exps.size()];
	Iterator<RexNode> it = exps.iterator();
	int i = 0;
	while(it.hasNext()) {
		RexInputRef inputRef = (RexInputRef) it.next();
		fields[i++] = StratosphereRelUtils.getTypeClass(inputRef.getType());
	}
	return fields;
}
 
开发者ID:rmetzger,项目名称:stratosphere-sql,代码行数:11,代码来源:StratosphereSqlProjection.java


示例10: convertRexCallToJexlExpr

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
public static String convertRexCallToJexlExpr(RexNode c) {
	StringBuffer sb = new StringBuffer();
	if(c instanceof RexCall) {
		RexCall call = (RexCall) c;
		sb.append("(");
		for(int i = 0; i < call.getOperands().size(); i++) {
			sb.append( convertRexCallToJexlExpr(call.getOperands().get(i)));
			if(i+1 <call.getOperands().size()) {
				switch(c.getKind()) {
					case AND:
						sb.append(" && ");
						break;
					case OR:
						sb.append(" || ");
						break;
					case EQUALS:
						sb.append(" == ");
						break;
					case LESS_THAN:
						sb.append(" < ");
						break;
					default:
						throw new RuntimeException("Unknown kind "+c.getKind());
				}
			}
		}
		sb.append(")");
	}
	// assignable variable
	if(c instanceof RexInputRef) {
		RexInputRef ref = (RexInputRef) c;
		return ref.getName();
	}
	if(c instanceof RexLiteral) {
		RexLiteral lit = (RexLiteral) c;
		return lit.getValue().toString();
	}
	return sb.toString();
}
 
开发者ID:rmetzger,项目名称:stratosphere-sql,代码行数:40,代码来源:StratosphereRelUtils.java


示例11: apply

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
@Override
public String apply(RexNode exp) {

  if (exp instanceof RexInputRef) {
    return ((RexInputRef) exp).getName();
  } else
    return exp.toString();
}
 
开发者ID:joshelser,项目名称:cosmos,代码行数:9,代码来源:ReferenceNodetoString.java


示例12: visitInputRef

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
@Override
public ChildVisitor visitInputRef(RexInputRef inputRef) {

  final int index = inputRef.getIndex();
  final RelDataTypeField field = input.getRowType().getFieldList().get(index);
  return new Field(field.getName());
}
 
开发者ID:joshelser,项目名称:cosmos,代码行数:8,代码来源:OperationVisitor.java


示例13: implementRewrite

import org.eigenbase.rex.RexInputRef; //导入依赖的package包/类
@Override
public void implementRewrite(RewriteImplementor implementor) {
    implementor.visitChild(this, getChild());

    this.rewriting = true;

    // project before join or is just after OLAPToEnumerableConverter
    if (!RewriteImplementor.needRewrite(this.context) || (this.hasJoin && !this.afterJoin) || this.afterAggregate) {
        this.columnRowType = this.buildColumnRowType();
        return;
    }

    // find missed rewrite fields
    int paramIndex = this.rowType.getFieldList().size();
    List<RelDataTypeField> newFieldList = new LinkedList<RelDataTypeField>();
    List<RexNode> newExpList = new LinkedList<RexNode>();
    ColumnRowType inputColumnRowType = ((OLAPRel) getChild()).getColumnRowType();

    for (Map.Entry<String, RelDataType> rewriteField : this.context.rewriteFields.entrySet()) {
        String rewriteFieldName = rewriteField.getKey();
        int rowIndex = this.columnRowType.getIndexByName(rewriteFieldName);
        if (rowIndex < 0) {
            int inputIndex = inputColumnRowType.getIndexByName(rewriteFieldName);
            if (inputIndex >= 0) {
                // new field
                RelDataType fieldType = rewriteField.getValue();
                RelDataTypeField newField = new RelDataTypeFieldImpl(rewriteFieldName, paramIndex++, fieldType);
                newFieldList.add(newField);
                // new project
                RelDataTypeField inputField = getChild().getRowType().getFieldList().get(inputIndex);
                RexInputRef newFieldRef = new RexInputRef(inputField.getIndex(), inputField.getType());
                newExpList.add(newFieldRef);
            }
        }
    }

    if (!newFieldList.isEmpty()) {
        // rebuild projects
        List<RexNode> newProjects = new ArrayList<RexNode>(this.rewriteProjects);
        newProjects.addAll(newExpList);
        this.rewriteProjects = newProjects;

        // rebuild row type
        FieldInfoBuilder fieldInfo = getCluster().getTypeFactory().builder();
        fieldInfo.addAll(this.rowType.getFieldList());
        fieldInfo.addAll(newFieldList);
        this.rowType = getCluster().getTypeFactory().createStructType(fieldInfo);
    }

    // rebuild columns
    this.columnRowType = this.buildColumnRowType();

    this.rewriting = false;
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:55,代码来源:OLAPProjectRel.java



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java ChatMessage类代码示例发布时间:2022-05-22
下一篇:
Java Sentence类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap