org.apache.calcite.rel.type.RelDataTypeFactory.createStructType()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(11.0k)|赞(0)|评价(0)|浏览(68)

本文整理了Java中org.apache.calcite.rel.type.RelDataTypeFactory.createStructType方法的一些代码示例,展示了RelDataTypeFactory.createStructType的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelDataTypeFactory.createStructType方法的具体详情如下:
包路径:org.apache.calcite.rel.type.RelDataTypeFactory
类名称:RelDataTypeFactory
方法名:createStructType

RelDataTypeFactory.createStructType介绍

[英]Creates a type that represents a structured collection of fieldList, obtaining the field information from a list of (name, type) pairs.
[中]创建一个表示fieldList的结构化集合的类型,从(名称、类型)对列表中获取字段信息。

代码示例

代码示例来源:origin: apache/flink

public RelDataType getParameterRowType(SqlNode sqlQuery) {
  // NOTE: We assume that bind variables occur in depth-first tree
  // traversal in the same order that they occurred in the SQL text.
  final List<RelDataType> types = new ArrayList<>();
  // NOTE: but parameters on fetch/offset would be counted twice
  // as they are counted in the SqlOrderBy call and the inner SqlSelect call
  final Set<SqlNode> alreadyVisited = new HashSet<>();
  sqlQuery.accept(
    new SqlShuttle() {
      @Override public SqlNode visit(SqlDynamicParam param) {
        if (alreadyVisited.add(param)) {
          RelDataType type = getValidatedNodeType(param);
          types.add(type);
        }
        return param;
      }
    });
  return typeFactory.createStructType(
    types,
    new AbstractList<String>() {
      @Override public String get(int index) {
        return "?" + index;
      }
      @Override public int size() {
        return types.size();
      }
    });
}

代码示例来源:origin: apache/drill

private RelDataType getRelDataType(StructTypeInfo structTypeInfo) {
 final List<String> fieldNames = structTypeInfo.getAllStructFieldNames();
 final List<RelDataType> relDataTypes = structTypeInfo.getAllStructFieldTypeInfos().stream()
   .map(this::convertToRelDataType)
   .collect(Collectors.toList());
 return typeFactory.createStructType(relDataTypes, fieldNames);
}

代码示例来源:origin: apache/drill

@Override
public RelDataType getRowType(RelDataTypeFactory typeFactory) {
 HiveToRelDataTypeConverter dataTypeConverter = new HiveToRelDataTypeConverter(typeFactory);
 final List<String> fieldNames = new ArrayList<>();
 final List<RelDataType> fieldTypes = Stream.of(hiveTable.getColumnListsCache().getTableSchemaColumns(), hiveTable.getPartitionKeys())
     .flatMap(Collection::stream)
     .peek(hiveField -> fieldNames.add(hiveField.getName()))
     .map(dataTypeConverter::convertToNullableRelDataType)
     .collect(Collectors.toList());
 return typeFactory.createStructType(fieldTypes, fieldNames);
}

代码示例来源:origin: apache/hive

public static RelDataType convert(StructTypeInfo structType,
 final RelDataTypeFactory dtFactory) throws CalciteSemanticException {
 List<RelDataType> fTypes = new ArrayList<RelDataType>(structType.getAllStructFieldTypeInfos().size());
 for (TypeInfo ti : structType.getAllStructFieldTypeInfos()) {
  fTypes.add(convert(ti,dtFactory));
 }
 return dtFactory.createStructType(fTypes, structType.getAllStructFieldNames());
}

代码示例来源:origin: apache/drill

@Override
public RelDataType getRowType(RelDataTypeFactory typeFactory) {
 ArrayList<RelDataType> typeList = new ArrayList<>();
 ArrayList<String> fieldNameList = new ArrayList<>();
 fieldNameList.add(ROW_KEY);
 typeList.add(typeFactory.createSqlType(SqlTypeName.ANY));
 Set<byte[]> families = tableDesc.getFamiliesKeys();
 for (byte[] family : families) {
  fieldNameList.add(Bytes.toString(family));
  typeList.add(typeFactory.createMapType(typeFactory.createSqlType(SqlTypeName.VARCHAR), typeFactory.createSqlType(SqlTypeName.ANY)));
 }
 return typeFactory.createStructType(typeList, fieldNameList);
}

代码示例来源:origin: apache/hive

/*********************** Convert Hive Types To Calcite Types ***********************/
public static RelDataType getType(RelOptCluster cluster,
 List<ColumnInfo> cInfoLst) throws CalciteSemanticException {
 RexBuilder rexBuilder = cluster.getRexBuilder();
 RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory();
 List<RelDataType> fieldTypes = new LinkedList<RelDataType>();
 List<String> fieldNames = new LinkedList<String>();
 for (ColumnInfo ci : cInfoLst) {
  fieldTypes.add(convert(ci.getType(), dtFactory));
  fieldNames.add(ci.getInternalName());
 }
 return dtFactory.createStructType(fieldTypes, fieldNames);
}

代码示例来源:origin: apache/drill

public static RelDataType convert(StructTypeInfo structType,
 final RelDataTypeFactory dtFactory) throws CalciteSemanticException {
 List<RelDataType> fTypes = new ArrayList<RelDataType>(structType.getAllStructFieldTypeInfos().size());
 for (TypeInfo ti : structType.getAllStructFieldTypeInfos()) {
  fTypes.add(convert(ti,dtFactory));
 }
 return dtFactory.createStructType(fTypes, structType.getAllStructFieldNames());
}

代码示例来源:origin: apache/flink

typeList.add(type);
rowTypes.add(typeFactory.createStructType(typeList, aliasList));

代码示例来源:origin: apache/drill

/*********************** Convert Hive Types To Calcite Types ***********************/
public static RelDataType getType(RelOptCluster cluster,
 List<ColumnInfo> cInfoLst) throws CalciteSemanticException {
 RexBuilder rexBuilder = cluster.getRexBuilder();
 RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory();
 List<RelDataType> fieldTypes = new LinkedList<RelDataType>();
 List<String> fieldNames = new LinkedList<String>();
 for (ColumnInfo ci : cInfoLst) {
  fieldTypes.add(convert(ci.getType(), dtFactory));
  fieldNames.add(ci.getInternalName());
 }
 return dtFactory.createStructType(fieldTypes, fieldNames);
}

代码示例来源:origin: apache/drill

@Override
public RelDataType getRowType(final RelDataTypeFactory typeFactory) {
 List<String> names = Lists.newArrayList();
 List<RelDataType> types = Lists.newArrayList();
 convertToRelDataType(typeFactory, names, types);
 return typeFactory.createStructType(types, names);
}

代码示例来源:origin: apache/hive

public static RelDataType getType(RelOptCluster cluster, RowResolver rr,
 List<String> neededCols) throws CalciteSemanticException {
 RexBuilder rexBuilder = cluster.getRexBuilder();
 RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory();
 RowSchema rs = rr.getRowSchema();
 List<RelDataType> fieldTypes = new LinkedList<RelDataType>();
 List<String> fieldNames = new LinkedList<String>();
 for (ColumnInfo ci : rs.getSignature()) {
  if (neededCols == null || neededCols.contains(ci.getInternalName())) {
   fieldTypes.add(convert(ci.getType(), dtFactory));
   fieldNames.add(ci.getInternalName());
  }
 }
 return dtFactory.createStructType(fieldTypes, fieldNames);
}

代码示例来源:origin: apache/incubator-druid

private PlannerResult planExplanation(
   final RelNode rel,
   final SqlExplain explain,
   final Set<String> datasourceNames
 )
 {
  final String explanation = RelOptUtil.dumpPlan("", rel, explain.getFormat(), explain.getDetailLevel());
  final Supplier<Sequence<Object[]>> resultsSupplier = Suppliers.ofInstance(
    Sequences.simple(ImmutableList.of(new Object[]{explanation})));
  final RelDataTypeFactory typeFactory = rel.getCluster().getTypeFactory();
  return new PlannerResult(
    resultsSupplier,
    typeFactory.createStructType(
      ImmutableList.of(Calcites.createSqlType(typeFactory, SqlTypeName.VARCHAR)),
      ImmutableList.of("PLAN")
    ),
    datasourceNames
  );
 }
}

代码示例来源:origin: apache/drill

public static RelDataType getType(RelOptCluster cluster, RowResolver rr,
 List<String> neededCols) throws CalciteSemanticException {
 RexBuilder rexBuilder = cluster.getRexBuilder();
 RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory();
 RowSchema rs = rr.getRowSchema();
 List<RelDataType> fieldTypes = new LinkedList<RelDataType>();
 List<String> fieldNames = new LinkedList<String>();
 for (ColumnInfo ci : rs.getSignature()) {
  if (neededCols == null || neededCols.contains(ci.getInternalName())) {
   fieldTypes.add(convert(ci.getType(), dtFactory));
   fieldNames.add(ci.getInternalName());
  }
 }
 return dtFactory.createStructType(fieldTypes, fieldNames);
}

代码示例来源:origin: apache/kylin

@Override
public void implementRewrite(RewriteImplementor implementor) {
  Map<String, RelDataType> rewriteFields = this.context.rewriteFields;
  for (Map.Entry<String, RelDataType> rewriteField : rewriteFields.entrySet()) {
    String fieldName = rewriteField.getKey();
    RelDataTypeField field = rowType.getField(fieldName, true, false);
    if (field != null) {
      RelDataType fieldType = field.getType();
      rewriteField.setValue(fieldType);
    }
  }
  // add dynamic field to the table scan if join not exist
  if (!this.context.hasJoin && !this.context.dynamicFields.isEmpty()) {
    Map<TblColRef, RelDataType> dynFields = this.context.dynamicFields;
    List<TblColRef> newCols = Lists.newArrayList(this.columnRowType.getAllColumns());
    List<RelDataTypeField> newFieldList = Lists.newArrayList(this.rowType.getFieldList());
    int paramIndex = this.rowType.getFieldList().size();
    for (TblColRef fieldCol : dynFields.keySet()) {
      newCols.add(fieldCol);
      RelDataType fieldType = dynFields.get(fieldCol);
      RelDataTypeField newField = new RelDataTypeFieldImpl(fieldCol.getName(), paramIndex++, fieldType);
      newFieldList.add(newField);
    }
    // rebuild row type
    RelDataTypeFactory.FieldInfoBuilder fieldInfo = getCluster().getTypeFactory().builder();
    fieldInfo.addAll(newFieldList);
    this.rowType = getCluster().getTypeFactory().createStructType(fieldInfo);
    this.columnRowType = new ColumnRowType(newCols);
  }
}

代码示例来源:origin: apache/drill

@Override
public RelDataType getRowType(RelDataTypeFactory typeFactory) {
 List<String> names = Lists.newArrayList();
 List<RelDataType> types = Lists.newArrayList();
 for (ColumnSchema column : schema.getColumns()) {
  names.add(column.getName());
  RelDataType type = getSqlTypeFromKuduType(typeFactory, column.getType());
  type = typeFactory.createTypeWithNullability(type, column.isNullable());
  types.add(type);
 }
 return typeFactory.createStructType(types, names);
}

代码示例来源:origin: apache/kylin

@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);
}

代码示例来源:origin: apache/flink

return typeFactory.createStructType(fields);

代码示例来源:origin: apache/kylin

@SuppressWarnings("deprecation")
private RelDataType deriveRowType(RelDataTypeFactory typeFactory) {
  RelDataTypeFactory.FieldInfoBuilder fieldInfo = typeFactory.builder();
  for (ColumnDesc column : sourceColumns) {
    RelDataType sqlType = createSqlType(typeFactory, column.getUpgradedType(), column.isNullable());
    sqlType = SqlTypeUtil.addCharsetAndCollation(sqlType, typeFactory);
    fieldInfo.add(column.getName(), sqlType);
  }
  return typeFactory.createStructType(fieldInfo);
}

代码示例来源:origin: apache/flink

protected RelDataType getLogicalTargetRowType(
  RelDataType targetRowType,
  SqlInsert insert) {
  if (insert.getTargetColumnList() == null
    && conformance.isInsertSubsetColumnsAllowed()) {
    // Target an implicit subset of columns.
    final SqlNode source = insert.getSource();
    final RelDataType sourceRowType = getNamespace(source).getRowType();
    final RelDataType logicalSourceRowType =
      getLogicalSourceRowType(sourceRowType, insert);
    final RelDataType implicitTargetRowType =
      typeFactory.createStructType(
        targetRowType.getFieldList()
          .subList(0, logicalSourceRowType.getFieldCount()));
    final SqlValidatorNamespace targetNamespace = getNamespace(insert);
    validateNamespace(targetNamespace, implicitTargetRowType);
    return implicitTargetRowType;
  } else {
    // Either the set of columns are explicitly targeted, or target the full
    // set of columns.
    return targetRowType;
  }
}

代码示例来源:origin: apache/flink

return typeFactory.createStructType(fieldList);

相关文章