本文整理汇总了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;
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
示例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;
}
示例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);
}
示例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));
}
示例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));
}
示例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());
}
示例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));
}
示例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);
}
示例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);
}
示例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);
}
};
}
示例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));
}