@Override public List<Double> averageColumnSizes(SemiJoin rel, RelMetadataQuery mq) { final RelNode left = rel.getLeft(); final List<Double> lefts = mq.getAverageColumnSizes(left); if (lefts == null) { return null; } final int fieldCount = rel.getRowType().getFieldCount(); Double[] sizes = new Double[fieldCount]; if (lefts != null) { lefts.toArray(sizes); } return ImmutableNullableList.copyOf(sizes); }
public List<Double> averageColumnSizes(HiveJoin rel, RelMetadataQuery mq) { final RelNode left = rel.getLeft(); final RelNode right = rel.getRight(); final List<Double> lefts = mq.getAverageColumnSizes(left); List<Double> rights = mq.getAverageColumnSizes(right); if (lefts == null && rights == null) { return null; } final int fieldCount = rel.getRowType().getFieldCount(); Double[] sizes = new Double[fieldCount]; if (lefts != null) { lefts.toArray(sizes); } if (rights != null) { final int leftCount = left.getRowType().getFieldCount(); for (int i = 0; i < rights.size(); i++) { sizes[leftCount + i] = rights.get(i); } } return ImmutableNullableList.copyOf(sizes); }
@Override public List<Double> averageColumnSizes(SemiJoin rel, RelMetadataQuery mq) { final RelNode left = rel.getLeft(); final List<Double> lefts = mq.getAverageColumnSizes(left); if (lefts == null) { return null; } final int fieldCount = rel.getRowType().getFieldCount(); Double[] sizes = new Double[fieldCount]; if (lefts != null) { lefts.toArray(sizes); } return ImmutableNullableList.copyOf(sizes); }
public List<Double> averageColumnSizes(HiveJoin rel, RelMetadataQuery mq) { final RelNode left = rel.getLeft(); final RelNode right = rel.getRight(); final List<Double> lefts = mq.getAverageColumnSizes(left); List<Double> rights = mq.getAverageColumnSizes(right); if (lefts == null && rights == null) { return null; } final int fieldCount = rel.getRowType().getFieldCount(); Double[] sizes = new Double[fieldCount]; if (lefts != null) { lefts.toArray(sizes); } if (rights != null) { final int leftCount = left.getRowType().getFieldCount(); for (int i = 0; i < rights.size(); i++) { sizes[leftCount + i] = rights.get(i); } } return ImmutableNullableList.copyOf(sizes); }
public List<Double> averageColumnSizes(Intersect rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput(0)); }
public List<Double> averageColumnSizes(Exchange rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput()); }
public List<Double> averageColumnSizes(Minus rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput(0)); }
public List<Double> averageColumnSizes(Filter rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput()); }
public List<Double> averageColumnSizes(Minus rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput(0)); }
public List<Double> averageColumnSizes(Filter rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput()); }
public List<Double> averageColumnSizes(Sort rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput()); }
public List<Double> averageColumnSizes(Exchange rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput()); }
public List<Double> averageColumnSizes(Sort rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput()); }
public List<Double> averageColumnSizes(Intersect rel, RelMetadataQuery mq) { return mq.getAverageColumnSizes(rel.getInput(0)); }
/** As {@link #getAverageColumnSizes(org.apache.calcite.rel.RelNode)} but * never returns a null list, only ever a list of nulls. */ public List<Double> getAverageColumnSizesNotNull(RelNode rel) { final List<Double> averageColumnSizes = getAverageColumnSizes(rel); return averageColumnSizes == null ? Collections.nCopies(rel.getRowType().getFieldCount(), null) : averageColumnSizes; }
/** As {@link #getAverageColumnSizes(org.apache.calcite.rel.RelNode)} but * never returns a null list, only ever a list of nulls. */ public List<Double> getAverageColumnSizesNotNull(RelNode rel) { final List<Double> averageColumnSizes = getAverageColumnSizes(rel); return averageColumnSizes == null ? Collections.nCopies(rel.getRowType().getFieldCount(), null) : averageColumnSizes; }
private List<Double> averageJoinColumnSizes(Join rel, RelMetadataQuery mq, boolean semijoin) { final RelNode left = rel.getLeft(); final RelNode right = rel.getRight(); final List<Double> lefts = mq.getAverageColumnSizes(left); final List<Double> rights = semijoin ? null : mq.getAverageColumnSizes(right); if (lefts == null && rights == null) { return null; } final int fieldCount = rel.getRowType().getFieldCount(); Double[] sizes = new Double[fieldCount]; if (lefts != null) { lefts.toArray(sizes); } if (rights != null) { final int leftCount = left.getRowType().getFieldCount(); for (int i = 0; i < rights.size(); i++) { sizes[leftCount + i] = rights.get(i); } } return ImmutableNullableList.copyOf(sizes); }
public List<Double> averageColumnSizes(HiveJoin rel) { final RelNode left = rel.getLeft(); final RelNode right = rel.getRight(); final List<Double> lefts = RelMetadataQuery.getAverageColumnSizes(left); List<Double> rights = null; if (!rel.isLeftSemiJoin()) { rights = RelMetadataQuery.getAverageColumnSizes(right); } if (lefts == null && rights == null) { return null; } final int fieldCount = rel.getRowType().getFieldCount(); Double[] sizes = new Double[fieldCount]; if (lefts != null) { lefts.toArray(sizes); } if (rights != null) { final int leftCount = left.getRowType().getFieldCount(); for (int i = 0; i < rights.size(); i++) { sizes[leftCount + i] = rights.get(i); } } return ImmutableNullableList.copyOf(sizes); }
/** Catch-all implementation for * {@link BuiltInMetadata.Size#averageRowSize()}, * invoked using reflection. * * @see org.apache.calcite.rel.metadata.RelMetadataQuery#getAverageRowSize */ public Double averageRowSize(RelNode rel, RelMetadataQuery mq) { final List<Double> averageColumnSizes = mq.getAverageColumnSizes(rel); if (averageColumnSizes == null) { return null; } double d = 0d; final List<RelDataTypeField> fields = rel.getRowType().getFieldList(); for (Pair<Double, RelDataTypeField> p : Pair.zip(averageColumnSizes, fields)) { if (p.left == null) { d += averageFieldValueSize(p.right); } else { d += p.left; } } return d; }
/** Catch-all implementation for * {@link BuiltInMetadata.Size#averageRowSize()}, * invoked using reflection. * * @see org.apache.calcite.rel.metadata.RelMetadataQuery#getAverageRowSize */ public Double averageRowSize(RelNode rel, RelMetadataQuery mq) { final List<Double> averageColumnSizes = mq.getAverageColumnSizes(rel); if (averageColumnSizes == null) { return null; } double d = 0d; final List<RelDataTypeField> fields = rel.getRowType().getFieldList(); for (Pair<Double, RelDataTypeField> p : Pair.zip(averageColumnSizes, fields)) { if (p.left == null) { d += averageFieldValueSize(p.right); } else { d += p.left; } } return d; }