private static Set<ImmutableBitSet> getUniqueKeys(SetOp rel) { if (!rel.all) { return ImmutableSet.of( ImmutableBitSet.range(rel.getRowType().getFieldCount())); } return ImmutableSet.of(); }
List<RelDataTypeField> origFields = setOp.getRowType().getFieldList(); int[] adjustments = new int[origFields.size()]; final List<RelNode> newSetOpInputs = new ArrayList<>();
public Set<ImmutableBitSet> getUniqueKeys(SetOp rel, RelMetadataQuery mq, boolean ignoreNulls) { if (!rel.all) { return ImmutableSet.of( ImmutableBitSet.range(rel.getRowType().getFieldCount())); } return ImmutableSet.of(); }
public Set<ImmutableBitSet> getUniqueKeys(SetOp rel, RelMetadataQuery mq, boolean ignoreNulls) { if (!rel.all) { return ImmutableSet.of( ImmutableBitSet.range(rel.getRowType().getFieldCount())); } return ImmutableSet.of(); }
public Boolean areColumnsUnique(SetOp rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { // If not ALL then the rows are distinct. // Therefore the set of all columns is a key. return !rel.all && columns.nextClearBit(0) >= rel.getRowType().getFieldCount(); }
public Boolean areColumnsUnique(SetOp rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { // If not ALL then the rows are distinct. // Therefore the set of all columns is a key. return !rel.all && columns.nextClearBit(0) >= rel.getRowType().getFieldCount(); }
/** * Returns whether all the inputs of this set operator have the same row * type as its output row. * * @param compareNames Whether column names are important in the * homogeneity comparison * @return Whether all the inputs of this set operator have the same row * type as its output row */ public boolean isHomogeneous(boolean compareNames) { RelDataType unionType = getRowType(); for (RelNode input : getInputs()) { if (!RelOptUtil.areRowTypesEqual( input.getRowType(), unionType, compareNames)) { return false; } } return true; } }
@Override public TrimResult trimFields( SetOp setOp, ImmutableBitSet fieldsUsed, Set<RelDataTypeField> extraFields) { if(!setOp.all) { return result(setOp, Mappings.createIdentity(setOp.getRowType().getFieldCount())); } return super.trimFields(setOp, fieldsUsed, extraFields); }
/** * Returns whether all the inputs of this set operator have the same row * type as its output row. * * @param compareNames Whether column names are important in the * homogeneity comparison * @return Whether all the inputs of this set operator have the same row * type as its output row */ public boolean isHomogeneous(boolean compareNames) { RelDataType unionType = getRowType(); for (RelNode input : getInputs()) { if (!RelOptUtil.areRowTypesEqual( input.getRowType(), unionType, compareNames)) { return false; } } return true; } }
final RelBuilder relBuilder = call.builder(); List<RelDataTypeField> origFields = setOp.getRowType().getFieldList(); int[] adjustments = new int[origFields.size()]; final List<RelNode> newSetOpInputs = new ArrayList<>();
final RelBuilder relBuilder = call.builder(); List<RelDataTypeField> origFields = setOp.getRowType().getFieldList(); int[] adjustments = new int[origFields.size()]; final List<RelNode> newSetOpInputs = new ArrayList<>();
ImmutableBitSet fieldsUsed, Set<RelDataTypeField> extraFields) { final RelDataType rowType = setOp.getRowType(); final int fieldCount = rowType.getFieldCount(); int changeCount = 0;
ImmutableBitSet fieldsUsed, Set<RelDataTypeField> extraFields) { final RelDataType rowType = setOp.getRowType(); final int fieldCount = rowType.getFieldCount(); int changeCount = 0;