@Override public RelNode convert(RelNode rel) { LogicalValues values = (LogicalValues) rel; return OLAPValuesRel.create(values.getCluster(), values.getRowType(), values.getTuples()); } }
ImmutableBitSet fieldsUsed, Set<RelDataTypeField> extraFields) { final RelDataType rowType = values.getRowType(); final int fieldCount = rowType.getFieldCount(); for (ImmutableList<RexLiteral> tuple : values.getTuples()) { ImmutableList.Builder<RexLiteral> newTuple = ImmutableList.builder(); for (int field : fieldsUsed) { RelOptUtil.permute(values.getCluster().getTypeFactory(), rowType, mapping); final LogicalValues newValues = LogicalValues.create(values.getCluster(), newRowType, newTuples.build()); return result(newValues, mapping);
@Override public RelNode convert(RelNode rel) { LogicalValues values = (LogicalValues) rel; return new BindableValues(values.getCluster(), values.getRowType(), values.getTuples(), values.getTraitSet().replace(BindableConvention.INSTANCE)); } }
@Override public RelNode visit(LogicalValues values) { return new LogicalValues( cluster, copyOf(values.getTraitSet()), copyOf(values.getRowType()), copyOf(values.getTuples()) ); }
LogicalValues.createEmpty(cluster, empTable.getRowType()); rowSize = mq.getAverageRowSize(emptyValues); columnSizes = mq.getAverageColumnSizes(emptyValues); assertThat(columnSizes.size(), equalTo(emptyValues.getRowType().getFieldCount())); assertThat(columnSizes, equalTo(Arrays.asList(4.0, 40.0, 20.0, 4.0, 8.0, 4.0, 4.0, 4.0, 1.0))); addRow(tuples, rexBuilder, 3, "2", null); final LogicalValues values = LogicalValues.create(cluster, rowType, tuples.build()); rowSize = mq.getAverageRowSize(values); columnSizes = mq.getAverageColumnSizes(values); assertThat(columnSizes.size(), equalTo(values.getRowType().getFieldCount())); assertThat(columnSizes, equalTo(Arrays.asList(4.0, 8.0, 3.0))); assertThat(rowSize, equalTo(15.0));
/** Creates a LogicalValues that outputs no rows of a given row type. */ public static LogicalValues createEmpty(RelOptCluster cluster, RelDataType rowType) { return create(cluster, rowType, ImmutableList.of()); }
LogicalValues.createOneRow(cluster), selectList, fieldNameList);
@Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { assert traitSet.containsIfApplicable(Convention.NONE); assert inputs.isEmpty(); return new LogicalValues(getCluster(), traitSet, rowType, tuples); }
LogicalValues.createEmpty(cluster, empTable.getRowType()); assertThat(mq.collations(emptyValues), equalTo(collations)); LogicalValues.create(cluster, rowType, tuples.build()); assertThat(mq.collations(values), equalTo(collations));
@Override public RelNode visit(LogicalValues values) { values.getCluster().setMetadataProvider(metadataProvider); return super.visit(values); }
/** Creates a LogicalValues. */ public static LogicalValues create(RelOptCluster cluster, final RelDataType rowType, final ImmutableList<ImmutableList<RexLiteral>> tuples) { final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSetOf(Convention.NONE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.values(mq, rowType, tuples)); return new LogicalValues(cluster, traitSet, rowType, tuples); }
ImmutableBitSet fieldsUsed, Set<RelDataTypeField> extraFields) { final RelDataType rowType = values.getRowType(); final int fieldCount = rowType.getFieldCount(); for (ImmutableList<RexLiteral> tuple : values.getTuples()) { ImmutableList.Builder<RexLiteral> newTuple = ImmutableList.builder(); for (int field : fieldsUsed) { RelOptUtil.permute(values.getCluster().getTypeFactory(), rowType, mapping); final LogicalValues newValues = LogicalValues.create(values.getCluster(), newRowType, newTuples.build()); return result(newValues, mapping);
@Override public RelNode convert(RelNode rel) { LogicalValues values = (LogicalValues) rel; return new BindableValues(values.getCluster(), values.getRowType(), values.getTuples(), values.getTraitSet().replace(BindableConvention.INSTANCE)); } }
LogicalValues.createEmpty(cluster, empTable.getRowType()); rowSize = mq.getAverageRowSize(emptyValues); columnSizes = mq.getAverageColumnSizes(emptyValues); assertThat(columnSizes.size(), equalTo(emptyValues.getRowType().getFieldCount())); assertThat(columnSizes, equalTo(Arrays.asList(4.0, 40.0, 20.0, 4.0, 8.0, 4.0, 4.0, 4.0, 1.0))); addRow(tuples, rexBuilder, 3, "2", null); final LogicalValues values = LogicalValues.create(cluster, rowType, tuples.build()); rowSize = mq.getAverageRowSize(values); columnSizes = mq.getAverageColumnSizes(values); assertThat(columnSizes.size(), equalTo(values.getRowType().getFieldCount())); assertThat(columnSizes, equalTo(Arrays.asList(4.0, 8.0, 3.0))); assertThat(rowSize, equalTo(15.0));
public RelNode createValues(RelOptCluster cluster, RelDataType rowType, List<ImmutableList<RexLiteral>> tuples) { return LogicalValues.create(cluster, rowType, ImmutableList.copyOf(tuples)); } }
relBuilder.push(LogicalValues.createOneRow(cluster)) .projectNamed(selectList, fieldNameList, true);
@Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { assert traitSet.containsIfApplicable(Convention.NONE); assert inputs.isEmpty(); return new LogicalValues(getCluster(), traitSet, rowType, tuples); }
LogicalValues.createEmpty(cluster, empTable.getRowType()); assertThat(mq.collations(emptyValues), equalTo(collations)); LogicalValues.create(cluster, rowType, tuples.build()); assertThat(mq.collations(values), equalTo(collations));