public List<Double> averageColumnSizes(Values rel, RelMetadataQuery mq) { final List<RelDataTypeField> fields = rel.getRowType().getFieldList(); final ImmutableList.Builder<Double> list = ImmutableList.builder(); for (int i = 0; i < fields.size(); i++) { RelDataTypeField field = fields.get(i); double d; if (rel.getTuples().isEmpty()) { d = averageTypeValueSize(field.getType()); } else { d = 0; for (ImmutableList<RexLiteral> literals : rel.getTuples()) { d += typeValueSize(field.getType(), literals.get(i).getValue()); } d /= rel.getTuples().size(); } list.add(d); } return list.build(); }
public Double getMaxRowCount(Values values, RelMetadataQuery mq) { // For Values, the maximum row count is the actual row count. // This is especially useful if Values is empty. return (double) values.getTuples().size(); }