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


Java RelDataTypeField类代码示例

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


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

示例1: buildColumnRowType

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
private ColumnRowType buildColumnRowType() {
    List<TblColRef> columns = new ArrayList<TblColRef>();
    List<Set<TblColRef>> sourceColumns = new ArrayList<Set<TblColRef>>();
    OLAPRel olapChild = (OLAPRel) getChild();
    ColumnRowType inputColumnRowType = olapChild.getColumnRowType();
    for (int i = 0; i < this.rewriteProjects.size(); i++) {
        RexNode rex = this.rewriteProjects.get(i);
        RelDataTypeField columnField = this.rowType.getFieldList().get(i);
        String fieldName = columnField.getName();
        Set<TblColRef> sourceCollector = new HashSet<TblColRef>();
        TblColRef column = translateRexNode(rex, inputColumnRowType, fieldName, sourceCollector);
        columns.add(column);
        sourceColumns.add(sourceCollector);
    }
    return new ColumnRowType(columns, sourceColumns);
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:17,代码来源:OLAPProjectRel.java

示例2: implementRewrite

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
/**
 * Because OLAPTableScan is reused for the same table, we can't use
 * this.context and have to use parent context
 */
@Override
public void implementRewrite(RewriteImplementor implementor) {
    Map<String, RelDataType> rewriteFields = this.context.rewriteFields;
    if (implementor.getParentContext() != null) {
        rewriteFields = implementor.getParentContext().rewriteFields;
    }

    for (Map.Entry<String, RelDataType> rewriteField : rewriteFields.entrySet()) {
        String fieldName = rewriteField.getKey();
        RelDataTypeField field = rowType.getField(fieldName, true);
        if (field != null) {
            RelDataType fieldType = field.getType();
            rewriteField.setValue(fieldType);
        }
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:21,代码来源:OLAPTableScan.java

示例3: convertCurrentRow

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
private Object[] convertCurrentRow(ITuple tuple) {

        // build field index map
        if (this.fieldIndexes == null) {
            List<String> fields = tuple.getAllFields();
            int size = fields.size();
            this.fieldIndexes = new int[size];
            for (int i = 0; i < size; i++) {
                String field = fields.get(i);
                RelDataTypeField relField = olapContext.olapRowType.getField(field, true);
                if (relField != null) {
                    fieldIndexes[i] = relField.getIndex();
                } else {
                    fieldIndexes[i] = -1;
                }
            }
        }

        // set field value
        Object[] values = tuple.getAllValues();
        for (int i = 0, n = values.length; i < n; i++) {
            Object value = values[i];
            int index = fieldIndexes[i];
            if (index >= 0) {
                current[index] = value;
            }
        }

        return current;
    }
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:31,代码来源:CubeEnumerator.java

示例4: populateResult

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
private boolean populateResult() {
    try {
        boolean hasNext = rs.next();
        if (hasNext) {
            for (RelDataTypeField relField : olapContext.olapRowType.getFieldList()) {
                Object value = rs.getObject(relField.getName().toLowerCase());
                current[relField.getIndex()] = value;
            }
        }
        return hasNext;
    } catch (SQLException e) {
        throw new IllegalStateException("Can't populate result!", e);
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:15,代码来源:HiveEnumerator.java

示例5: buildAliasMap

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
private void buildAliasMap() {
    int size = this.rowType.getFieldList().size();

    for (int i = 0; i < size; i++) {
        RelDataTypeField field = this.rowType.getFieldList().get(i);
        TblColRef column = this.columnRowType.getColumnByIndex(i);
        context.storageContext.addAlias(column, field.getName());
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:10,代码来源:OLAPJoinRel.java

示例6: implementRewrite

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
@Override
public void implementRewrite(RewriteImplementor implementor) {
    implementor.visitChild(this, this.left);
    implementor.visitChild(this, this.right);

    this.rowType = this.deriveRowType();

    if (this.isTopJoin && RewriteImplementor.needRewrite(this.context)) {
        // find missed rewrite fields
        int paramIndex = this.rowType.getFieldList().size();
        List<RelDataTypeField> newFieldList = new LinkedList<RelDataTypeField>();
        for (Map.Entry<String, RelDataType> rewriteField : this.context.rewriteFields.entrySet()) {
            String fieldName = rewriteField.getKey();
            if (this.rowType.getField(fieldName, true) == null) {
                RelDataType fieldType = rewriteField.getValue();
                RelDataTypeField newField = new RelDataTypeFieldImpl(fieldName, paramIndex++, fieldType);
                newFieldList.add(newField);
            }
        }

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

        // rebuild columns
        this.columnRowType = this.buildColumnRowType();
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:32,代码来源:OLAPJoinRel.java

示例7: fillbackOptimizedColumn

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
private void fillbackOptimizedColumn() {
    // some aggcall will be optimized out in sub-query (e.g. tableau generated sql)
    // we need to fill them back
    RelDataType inputAggRow = getChild().getRowType();
    RelDataType outputAggRow = getRowType();
    if (inputAggRow.getFieldCount() != outputAggRow.getFieldCount()) {
        for (RelDataTypeField inputField : inputAggRow.getFieldList()) {
            String inputFieldName = inputField.getName();
            if (outputAggRow.getField(inputFieldName, true) == null) {
                TblColRef column = this.columnRowType.getColumnByIndex(inputField.getIndex());
                this.context.metricsColumns.add(column);
            }
        }
    }
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:16,代码来源:OLAPAggregateRel.java

示例8: rewriteAggregateCall

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
private AggregateCall rewriteAggregateCall(AggregateCall aggCall, FunctionDesc func) {

        // rebuild parameters
        List<Integer> newArgList = new ArrayList<Integer>(1);
        String fieldName = func.getRewriteFieldName();
        RelDataTypeField field = getChild().getRowType().getField(fieldName, true);
        newArgList.add(field.getIndex());

        // rebuild function
        RelDataType fieldType = aggCall.getType();
        Aggregation newAgg = aggCall.getAggregation();
        if (func.isCountDistinct()) {
            newAgg = createHyperLogLogAggFunction(fieldType);
        } else if (func.isCount()) {
            newAgg = new SqlSumEmptyIsZeroAggFunction(fieldType);
        }

        // rebuild aggregate call
        AggregateCall newAggCall = new AggregateCall(newAgg, false, newArgList, fieldType, newAgg.getName());

        // To make sure specified type matches the inferReturnType, or otherwise
        // there will be assertion failure in optiq
        // The problem is BIGINT != BIGINT NOT NULL
        // Details see https://github.scm.corp.ebay.com/Kylin/Kylin/issues/323
        SqlAggFunction aggFunction = (SqlAggFunction) newAggCall.getAggregation();
        AggCallBinding callBinding = newAggCall.createBinding(this);
        RelDataType inferReturnType = aggFunction.inferReturnType(callBinding);

        return new AggregateCall(newAgg, false, newArgList, inferReturnType, newAgg.getName());
    }
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:31,代码来源:OLAPAggregateRel.java

示例9: deriveRowType

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
@Override
public RelDataType deriveRowType() {
    final List<RelDataTypeField> fieldList = table.getRowType().getFieldList();
    final RelDataTypeFactory.FieldInfoBuilder builder = getCluster().getTypeFactory().builder();
    for (int field : fields) {
        builder.add(fieldList.get(field));
    }
    return getCluster().getTypeFactory().createStructType(builder);
}
 
开发者ID:KylinOLAP,项目名称:Kylin,代码行数:10,代码来源:OLAPTableScan.java

示例10: getFieldList

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
@Override
public List<RelDataTypeField> getFieldList() {
	if(fields == null) {
		List<RelDataTypeField> ret = new ArrayList<RelDataTypeField>();
		RelDataTypeFieldImpl defaultField = new RelDataTypeFieldImpl("*", 0, typeFactory.createSqlType(SqlTypeName.ANY));
		ret.add(defaultField);
		fieldNames.add("*");
		fields = ret;
	} 
	return fields;
}
 
开发者ID:rmetzger,项目名称:stratosphere-sql,代码行数:12,代码来源:StratosphereRelType.java

示例11: getField

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
@Override
public RelDataTypeField getField(String fieldName, boolean caseSensitive) {
	for(int i = 0; i < fieldNames.size(); i++) {
		if(fieldNames.get(i).equals(fieldName)) {
			return fields.get(i);
		}
	}
	throw new RuntimeException("unknow field");
}
 
开发者ID:rmetzger,项目名称:stratosphere-sql,代码行数:10,代码来源:StratosphereRelType.java

示例12: getReturnType

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的package包/类
public RelDataType getReturnType() {
  
  final RelDataTypeFactory.FieldInfoBuilder builder = new RelDataTypeFactory.FieldInfoBuilder();
  for (RelDataTypeField field : super.deriveRowType().getFieldList()) {
    String name = field.getName();
    int index = super.deriveRowType().getFieldOrdinal(name);
    
    builder.add(new RelDataTypeFieldImpl(name, index, getCluster().getTypeFactory().createJavaType(List.class)));
  }
  return getCluster().getTypeFactory().createStructType(builder);
}
 
开发者ID:joshelser,项目名称:cosmos,代码行数:12,代码来源:EnumerableRelation.java

示例13: visitInputRef

import org.eigenbase.reltype.RelDataTypeField; //导入依赖的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

示例14: implementRewrite

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