@Override protected RelDataType deriveRowType() { return new RelRecordType(Lists.<RelDataTypeField>newArrayList()); } }
/** * Per {@link Serializable} API. See * {@link RelRecordType#writeReplace()}. */ private Object readResolve() { return new RelRecordType(fields); } }
/** * Per {@link Serializable} API. See * {@link RelRecordType#writeReplace()}. */ private Object readResolve() { return new RelRecordType(fields); } }
private RelDataType convertRecordType(Schema schema) { List<RelDataTypeField> relFields = getRelFields(schema.getFields()); return new RelRecordType(relFields); }
private static RelDataType keyToType(@Nonnull Object k) { if (k instanceof RelDataType) { return (RelDataType) k; } @SuppressWarnings("unchecked") final Key key = (Key) k; final ImmutableList.Builder<RelDataTypeField> list = ImmutableList.builder(); for (int i = 0; i < key.names.size(); i++) { list.add( new RelDataTypeFieldImpl( key.names.get(i), i, key.types.get(i))); } return new RelRecordType(key.kind, list.build()); }
private static RelDataType keyToType(@Nonnull Object k) { if (k instanceof RelDataType) { return (RelDataType) k; } @SuppressWarnings("unchecked") final Key key = (Key) k; final ImmutableList.Builder<RelDataTypeField> list = ImmutableList.builder(); for (int i = 0; i < key.names.size(); i++) { list.add( new RelDataTypeFieldImpl( key.names.get(i), i, key.types.get(i))); } return new RelRecordType(key.kind, list.build()); }
private RelDataType getCountRowType(RelDataTypeFactory typeFactory) { List<RelDataTypeField> fields = Lists.newArrayList(); fields.add(new RelDataTypeFieldImpl("count", 0, typeFactory.createSqlType(SqlTypeName.BIGINT))); return new RelRecordType(fields); }
public RelDataType getRowType(RelDataTypeFactory typeFactory) { List<RelDataTypeField> fieldsList = new ArrayList<>(); fieldsList.add(new RelDataTypeFieldImpl(SamzaSqlRelMessage.KEY_NAME, 0, typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.ANY), true))); fieldsList.addAll(relationalSchema.getFieldList()); return new RelRecordType(fieldsList); } };
private RelDataType convertRecordType(SqlSchema schema) { List<RelDataTypeField> relFields = getRelFields(schema.getFields()); return new RelRecordType(relFields); }
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); } };
protected RelDataType convertRowType(RelDataType origRowType, RelDataTypeFactory typeFactory) { if ( getRowKeyIndex(origRowType, origScan)>=0 ) { // row key already present return origRowType; } List<RelDataTypeField> fields = new ArrayList<>(); fields.addAll(origRowType.getFieldList()); fields.add(new RelDataTypeFieldImpl( ((DbGroupScan)IndexPlanUtils.getGroupScan(origScan)).getRowKeyName(), fields.size(), typeFactory.createSqlType(SqlTypeName.ANY))); return new RelRecordType(fields); }
private RelOptTable createVirtualRelOptTable() { List<String> names = createVirtualTableName(); RelDataTypeSystem relDataTypeSystem = new VirtualTypeSystem(); RelDataTypeFieldImpl relDataTypeField = new RelDataTypeFieldImpl( "columnName", 0, new BasicSqlType(relDataTypeSystem, SqlTypeName.ANY)); List<RelDataTypeField> relDataTypeFieldList = new ArrayList<>(); relDataTypeFieldList.add(relDataTypeField); return RelOptTableImpl.create(null, new RelRecordType(relDataTypeFieldList), new VirtualTable(names.get(0)), names, null); }
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)); }
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)); }
/** * Recreates an immutable rowType, if the table has Dynamic Record Type, * when converts table to Rel. */ public RelNode toRel(ToRelContext context) { if (rowType.isDynamicStruct()) { rowType = new RelRecordType(rowType.getFieldList()); } return super.toRel(context); } }
/** * Recreates an immutable rowType, if the table has Dynamic Record Type, * when converts table to Rel. */ public RelNode toRel(ToRelContext context) { if (rowType.isDynamicStruct()) { rowType = new RelRecordType(rowType.getFieldList()); } return super.toRel(context); } }
@Test public void testNumericValuesRelRowTypeAdjustment() { final int INListLength = 20; // Build RowType & Tuples RelDataTypeField relDataType = new RelDataTypeFieldImpl("ROW_VALUE", 0, new BasicSqlType(RelDataTypeSystemImpl.REL_DATA_TYPE_SYSTEM, SqlTypeName.ANY)); RelDataType rowType = new RelRecordType(StructKind.FULLY_QUALIFIED, Arrays.asList(relDataType)); ImmutableList.Builder<ImmutableList<RexLiteral>> tuples = new ImmutableList.Builder<>(); for (int i = 0; i < INListLength; i++) { tuples.add(new ImmutableList.Builder<RexLiteral>().add(new RexBuilder(typeFactory).makeExactLiteral(new BigDecimal(i))).build()); } // Check original types. assertEquals(1, rowType.getFieldCount()); assertEquals(SqlTypeName.ANY, rowType.getFieldList().get(0).getType().getSqlTypeName()); // Construct ValuesRel final ValuesRel valuesRel = new ValuesRel(cluster, rowType, tuples.build(), traits); // Check the adjusted types. RelDataType adjustedRowType = valuesRel.getRowType(); assertEquals(1, adjustedRowType.getFieldCount()); assertEquals(SqlTypeName.INTEGER, adjustedRowType.getFieldList().get(0).getType().getSqlTypeName()); }
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); }
@Test public void testCharValuesRelRowTypeAdjustment() { final int INListLength = 20; // Build RowType & Tuples RelDataTypeField relDataType = new RelDataTypeFieldImpl("ROW_VALUE", 0, new BasicSqlType(RelDataTypeSystemImpl.REL_DATA_TYPE_SYSTEM, SqlTypeName.ANY)); RelDataType rowType = new RelRecordType(StructKind.FULLY_QUALIFIED, Arrays.asList(relDataType)); ImmutableList.Builder<ImmutableList<RexLiteral>> tuples = new ImmutableList.Builder<>(); for (int i = 0; i < INListLength; ++i) { tuples.add(new ImmutableList.Builder<RexLiteral>().add(new RexBuilder(typeFactory).makeLiteral(charLiteralBuilder(i))).build()); } // Check original types. assertEquals(1, rowType.getFieldCount()); assertEquals(SqlTypeName.ANY, rowType.getFieldList().get(0).getType().getSqlTypeName()); // Construct ValuesRel final ValuesRel valuesRel = new ValuesRel(cluster, rowType, tuples.build(), traits); // Check the adjusted types. RelDataType adjustedRowType = valuesRel.getRowType(); assertEquals(1, adjustedRowType.getFieldCount()); assertEquals(SqlTypeName.CHAR, adjustedRowType.getFieldList().get(0).getType().getSqlTypeName()); assertEquals(INListLength - 1, adjustedRowType.getFieldList().get(0).getType().getPrecision()); }
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); }