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


Java RelRecordType类代码示例

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


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

示例1: toSql

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
public RelDataType toSql(RelDataType type) {
    if (type instanceof RelRecordType) {
        return createStructType(
                Lists.transform(type.getFieldList(),
                        new Function<RelDataTypeField, RelDataType>() {
                            public RelDataType apply(RelDataTypeField a0) {
                                return toSql(a0.getType());
                            }
                        }),
                type.getFieldNames());
    }
    if (type instanceof JavaType) {
        return createTypeWithNullability(
                createSqlType(type.getSqlTypeName()),
                type.isNullable());
    }
    return type;
}
 
开发者ID:bitnine-oss,项目名称:octopus,代码行数:19,代码来源:JavaTypeFactoryImpl.java

示例2: createSyntheticType

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
/**
 * Creates a synthetic Java class whose fields have the same names and
 * relational types.
 */
private Type createSyntheticType(RelRecordType type) {
    final String name =
            "Record" + type.getFieldCount() + "_" + syntheticTypes.size();
    final SyntheticRecordType syntheticType =
            new SyntheticRecordType(type, name);
    for (final RelDataTypeField recordField : type.getFieldList()) {
        final Type javaClass = getJavaClass(recordField.getType());
        syntheticType.fields.add(
                new RecordFieldImpl(
                        syntheticType,
                        recordField.getName(),
                        javaClass,
                        recordField.getType().isNullable()
                                && !Primitive.is(javaClass),
                        Modifier.PUBLIC));
    }
    return register(syntheticType);
}
 
开发者ID:bitnine-oss,项目名称:octopus,代码行数:23,代码来源:JavaTypeFactoryImpl.java

示例3: testSimpleSchemaConversion

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
@Test
public void testSimpleSchemaConversion() {
  String streamName = "stream";

  RelDataType dataType = simpleRecordSchemaProvider.getRelationalSchema();
  junit.framework.Assert.assertTrue(dataType instanceof RelRecordType);
  RelRecordType recordType = (RelRecordType) dataType;

  junit.framework.Assert.assertEquals(recordType.getFieldCount(), SimpleRecord.SCHEMA$.getFields().size());
  junit.framework.Assert.assertTrue(
      recordType.getField("id", true, false).getType().getSqlTypeName() == SqlTypeName.INTEGER);
  junit.framework.Assert.assertTrue(
      recordType.getField("name", true, false).getType().getSqlTypeName() == SqlTypeName.VARCHAR);

  LOG.info("Relational schema " + dataType);
}
 
开发者ID:apache,项目名称:samza,代码行数:17,代码来源:TestAvroRelConversion.java

示例4: getDataSourceRowType

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
private RelDataType getDataSourceRowType() throws SQLException {

    List<RelDataTypeField> relDataTypeFields =
        ImmutableList.<RelDataTypeField>of(
            new RelDataTypeFieldImpl("id", 1, getIntegerJavaType()),
            new RelDataTypeFieldImpl("type", 2, getStringJavaType()),
            new RelDataTypeFieldImpl("url", 3, getStringJavaType()),
            new RelDataTypeFieldImpl("name", 4, getStringJavaType()),
            new RelDataTypeFieldImpl("ds_set_id", 5, getIntegerJavaType()),
            new RelDataTypeFieldImpl("datasource_type", 6, getStringJavaType()),
            new RelDataTypeFieldImpl("auth_token", 7, getStringJavaType()),
            new RelDataTypeFieldImpl("dbtap_id", 8, getIntegerJavaType()),
            new RelDataTypeFieldImpl("username", 9, getStringJavaType()),
            new RelDataTypeFieldImpl("password", 10, getStringJavaType()));

    return new RelRecordType(relDataTypeFields);
  }
 
开发者ID:qubole,项目名称:quark,代码行数:18,代码来源:PlanExecutor.java

示例5: getViewRowType

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
private RelDataType getViewRowType() {

    List<RelDataTypeField> relDataTypeFields =
        ImmutableList.<RelDataTypeField>of(
            new RelDataTypeFieldImpl("id", 1, getIntegerJavaType()),
            new RelDataTypeFieldImpl("name", 2, getStringJavaType()),
            new RelDataTypeFieldImpl("description", 3, getStringJavaType()),
            new RelDataTypeFieldImpl("cost", 4, getIntegerJavaType()),
            new RelDataTypeFieldImpl("query", 5, getStringJavaType()),
            new RelDataTypeFieldImpl("destination_id", 6, getIntegerJavaType()),
            new RelDataTypeFieldImpl("schema_name", 7, getStringJavaType()),
            new RelDataTypeFieldImpl("table_name", 8, getStringJavaType()),
            new RelDataTypeFieldImpl("ds_set_id", 9, getIntegerJavaType()));

    return new RelRecordType(relDataTypeFields);
  }
 
开发者ID:qubole,项目名称:quark,代码行数:17,代码来源:PlanExecutor.java

示例6: toSql

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
/** Converts a type in Java format to a SQL-oriented type. */
public static RelDataType toSql(final RelDataTypeFactory typeFactory,
    RelDataType type) {
  if (type instanceof RelRecordType) {
    return typeFactory.createStructType(
        Lists.transform(type.getFieldList(),
            new Function<RelDataTypeField, RelDataType>() {
              public RelDataType apply(RelDataTypeField a0) {
                return toSql(typeFactory, a0.getType());
              }
            }),
        type.getFieldNames());
  }
  if (type instanceof JavaType) {
    return typeFactory.createTypeWithNullability(
        typeFactory.createSqlType(type.getSqlTypeName()),
        type.isNullable());
  }
  return type;
}
 
开发者ID:apache,项目名称:calcite,代码行数:21,代码来源:JavaTypeFactoryImpl.java

示例7: createSyntheticType

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
/** Creates a synthetic Java class whose fields have the same names and
 * relational types. */
private Type createSyntheticType(RelRecordType type) {
  final String name =
      "Record" + type.getFieldCount() + "_" + syntheticTypes.size();
  final SyntheticRecordType syntheticType =
      new SyntheticRecordType(type, name);
  for (final RelDataTypeField recordField : type.getFieldList()) {
    final Type javaClass = getJavaClass(recordField.getType());
    syntheticType.fields.add(
        new RecordFieldImpl(
            syntheticType,
            recordField.getName(),
            javaClass,
            recordField.getType().isNullable()
                && !Primitive.is(javaClass),
            Modifier.PUBLIC));
  }
  return register(syntheticType);
}
 
开发者ID:apache,项目名称:calcite,代码行数:21,代码来源:JavaTypeFactoryImpl.java

示例8: convert

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
public static DrillProjectRel convert(Project project, ConversionContext context) throws InvalidRelException{
  RelNode input = context.toRel(project.getInput());
  List<RelDataTypeField> fields = Lists.newArrayList();
  List<RexNode> exps = Lists.newArrayList();
  for(NamedExpression expr : project.getSelections()){
    fields.add(new RelDataTypeFieldImpl(expr.getRef().getRootSegment().getPath(), fields.size(), context.getTypeFactory().createSqlType(SqlTypeName.ANY) ));
    exps.add(context.toRex(expr.getExpr()));
  }
  return new DrillProjectRel(context.getCluster(), context.getLogicalTraits(), input, exps, new RelRecordType(fields));
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:11,代码来源:DrillProjectRel.java

示例9: convert

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
public static ProjectRel convert(Project project, ConversionContext context) throws InvalidRelException{
  RelNode input = context.toRel(project.getInput());
  List<RelDataTypeField> fields = Lists.newArrayList();
  List<RexNode> exps = Lists.newArrayList();
  for(NamedExpression expr : project.getSelections()){
    fields.add(new RelDataTypeFieldImpl(expr.getRef().getRootSegment().getPath(), fields.size(), context.getTypeFactory().createSqlType(SqlTypeName.ANY) ));
    exps.add(context.toRex(expr.getExpr()));
  }
  return new ProjectRel(context.getCluster(), context.getLogicalTraits(), input, exps, new RelRecordType(fields));
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:11,代码来源:ProjectRel.java

示例10: testUpdateSql

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
@Test
public void testUpdateSql() throws Exception {
  final String sql = "select foo, bar as b from tbl";
  SqlParser parser = SqlParser.create(sql, new ParserConfig(Quoting.DOUBLE_QUOTE, 128));
  final SqlNode sqlNode = parser.parseStmt();


  final JavaTypeFactory typeFactory = new JavaTypeFactoryImpl();
  final RelDataType rowType = new RelRecordType(Arrays.<RelDataTypeField>asList(
      new RelDataTypeFieldImpl("foo", 0, typeFactory.createSqlType(SqlTypeName.INTEGER)),
      new RelDataTypeFieldImpl("b", 0, typeFactory.createSqlType(SqlTypeName.INTEGER))
  ));

  TransformActor actor = new TransformActor(state, false, "test_user", null) {
    @Override
    protected QueryMetadata getMetadata(SqlQuery query) {
      return new QueryMetadata(null, null, null, null, sqlNode, rowType, null, null, null, null, BatchSchema.fromCalciteRowType(rowType));
    }

    @Override
    protected boolean hasMetadata() {
      return true;
    }
  };

  TransformResult result = new TransformUpdateSQL(sql).accept(actor);
  VirtualDatasetState newState = result.getNewState();

  assertEquals(2, newState.getColumnsList().size());
  assertEquals("foo", newState.getColumnsList().get(0).getName());
  assertEquals(new ExpColumnReference("foo").wrap(), newState.getColumnsList().get(0).getValue());
  assertEquals("b", newState.getColumnsList().get(1).getName());
  assertEquals(new ExpColumnReference("bar").wrap(), newState.getColumnsList().get(1).getValue());
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:35,代码来源:TestTransformer.java

示例11: visitProject

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
@Override
public Prel visitProject(ProjectPrel node, Object unused) throws RelConversionException {
  ProjectPrel project = node;
  List<RexNode> exprList = new ArrayList<>();
  boolean rewrite = false;

  List<RelDataTypeField> relDataTypes = new ArrayList<>();
  int i = 0;
  RexNode flatttenExpr = null;
  for (RexNode rex : project.getChildExps()) {
    RexNode newExpr = rex;
    if (rex instanceof RexCall) {
      RexCall function = (RexCall) rex;
      String functionName = function.getOperator().getName();

      if (functionName.equalsIgnoreCase("flatten") ) {
        rewrite = true;
        if (function.getOperands().size() != 1) {
          throw new RelConversionException("Flatten expression expects a single input.");
        }
        newExpr = function.getOperands().get(0);
        RexBuilder builder = new RexBuilder(factory);
        flatttenExpr = builder.makeInputRef( new RelDataTypeDrillImpl(new RelDataTypeHolder(), factory), i);
      }
    }
    relDataTypes.add(project.getRowType().getFieldList().get(i));
    i++;
    exprList.add(newExpr);
  }
  if (rewrite == true) {
    // TODO - figure out what is the right setting for the traits
    Prel newChild = ((Prel)project.getInput(0)).accept(this, null);
    ProjectPrel newProject = new ProjectPrel(node.getCluster(), project.getTraitSet(), newChild, exprList, new RelRecordType(relDataTypes));
    FlattenPrel flatten = new FlattenPrel(project.getCluster(), project.getTraitSet(), newProject, flatttenExpr);
    return flatten;
  }

  Prel child = ((Prel)project.getInput()).accept(this, null);
  return (Prel) project.copy(project.getTraitSet(), child, exprList, new RelRecordType(relDataTypes));
}
 
开发者ID:axbaretto,项目名称:drill,代码行数:41,代码来源:RewriteProjectToFlatten.java

示例12: constructDataType

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
/**
 * For each aggregate call creates field based on its name with bigint type.
 * Constructs record type for created fields.
 *
 * @param aggregateRel aggregate relation expression
 * @param fieldNames field names
 * @return record type
 */
private RelDataType constructDataType(DrillAggregateRel aggregateRel, Collection<String> fieldNames) {
  List<RelDataTypeField> fields = new ArrayList<>();
  Iterator<String> filedNamesIterator = fieldNames.iterator();
  int fieldIndex = 0;
  while (filedNamesIterator.hasNext()) {
    RelDataTypeField field = new RelDataTypeFieldImpl(
        filedNamesIterator.next(),
        fieldIndex++,
        aggregateRel.getCluster().getTypeFactory().createSqlType(SqlTypeName.BIGINT));
    fields.add(field);
  }
  return new RelRecordType(fields);
}
 
开发者ID:axbaretto,项目名称:drill,代码行数:22,代码来源:ConvertCountToDirectScan.java

示例13: createType

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
public RelDataType createType(Schema schema) {
  Schema.Type type = schema.getType();
  if (type != Schema.Type.RECORD) {
    String msg =
        String.format("System supports only RECORD as top level avro type, But the Schema's type is %s", type);
    LOG.error(msg);
    throw new SamzaException(msg);
  }

  List<RelDataTypeField> relFields = getRelFields(schema.getFields());
  return new RelRecordType(relFields);
}
 
开发者ID:apache,项目名称:samza,代码行数:13,代码来源:AvroTypeFactoryImpl.java

示例14: createTableFromRelSchema

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
private Table createTableFromRelSchema(RelDataType relationalSchema) {
  return new AbstractTable() {
    public RelDataType getRowType(RelDataTypeFactory typeFactory) {
      List<RelDataTypeField> fieldsList = new ArrayList<>();
      fieldsList.add(new RelDataTypeFieldImpl(SamzaSqlRelMessage.KEY_NAME, 0,
          typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.VARCHAR), true)));
      fieldsList.addAll(relationalSchema.getFieldList());
      return new RelRecordType(fieldsList);
    }
  };
}
 
开发者ID:apache,项目名称:samza,代码行数:12,代码来源:QueryPlanner.java

示例15: visitProject

import org.apache.calcite.rel.type.RelRecordType; //导入依赖的package包/类
@Override
public Prel visitProject(ProjectPrel node, Object unused) throws RelConversionException {
  ProjectPrel project = node;
  List<RexNode> exprList = new ArrayList<>();
  boolean rewrite = false;

  List<RelDataTypeField> relDataTypes = new ArrayList();
  int i = 0;
  RexNode flatttenExpr = null;
  for (RexNode rex : project.getChildExps()) {
    RexNode newExpr = rex;
    if (rex instanceof RexCall) {
      RexCall function = (RexCall) rex;
      String functionName = function.getOperator().getName();
      int nArgs = function.getOperands().size();

      if (functionName.equalsIgnoreCase("flatten") ) {
        rewrite = true;
        if (function.getOperands().size() != 1) {
          throw new RelConversionException("Flatten expression expects a single input.");
        }
        newExpr = function.getOperands().get(0);
        RexBuilder builder = new RexBuilder(factory);
        flatttenExpr = builder.makeInputRef( new RelDataTypeDrillImpl(new RelDataTypeHolder(), factory), i);
      }
    }
    relDataTypes.add(project.getRowType().getFieldList().get(i));
    i++;
    exprList.add(newExpr);
  }
  if (rewrite == true) {
    // TODO - figure out what is the right setting for the traits
    Prel newChild = ((Prel)project.getInput(0)).accept(this, null);
    ProjectPrel newProject = new ProjectPrel(node.getCluster(), project.getTraitSet(), newChild, exprList, new RelRecordType(relDataTypes));
    FlattenPrel flatten = new FlattenPrel(project.getCluster(), project.getTraitSet(), newProject, flatttenExpr);
    return flatten;
  }

  Prel child = ((Prel)project.getInput()).accept(this, null);
  return (Prel) project.copy(project.getTraitSet(), child, exprList, new RelRecordType(relDataTypes));
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:42,代码来源:RewriteProjectToFlatten.java


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