private boolean isSimple(ImmutableBitSet condBits, Filter filter, RelMetadataQuery mq) { // Returns whether the filter is only applied on the key columns if (constraintsBased) { return mq.areColumnsUnique(filter, condBits); } return isKey(condBits, filter, mq); }
mq.areColumnsUnique(left, joinInfo.leftSet()); final Boolean rightUnique = mq.areColumnsUnique(right, joinInfo.rightSet());
} else { final Boolean unique0 = mq.areColumnsUnique(joinInput, belowAggregateKey, true); unique = unique0 != null && unique0;
} else { final Boolean unique0 = mq.areColumnsUnique(joinInput, belowAggregateKey); unique = unique0 != null && unique0;
public Boolean areColumnsUnique(SemiJoin rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { // only return the unique keys from the LHS since a semijoin only // returns the LHS return mq.areColumnsUnique(rel.getLeft(), columns, ignoreNulls); }
@SuppressWarnings("deprecation") public boolean isKey(ImmutableBitSet columns) { final RelMetadataQuery mq = RelMetadataQuery.instance(); return Boolean.TRUE.equals(mq.areColumnsUnique(this, columns)); }
@SuppressWarnings("deprecation") public boolean isKey(ImmutableBitSet columns) { final RelMetadataQuery mq = RelMetadataQuery.instance(); return Boolean.TRUE.equals(mq.areColumnsUnique(this, columns)); }
public Boolean areColumnsUnique(Filter rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { return mq.areColumnsUnique(rel.getInput(), columns, ignoreNulls); }
public Boolean areColumnsUnique(HepRelVertex rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { return mq.areColumnsUnique(rel.getCurrentRel(), columns, ignoreNulls); }
public Boolean areColumnsUnique(SemiJoin rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { // only return the unique keys from the LHS since a semijoin only // returns the LHS return mq.areColumnsUnique(rel.getLeft(), columns, ignoreNulls); }
public Boolean areColumnsUnique(Sort rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { return mq.areColumnsUnique(rel.getInput(), columns, ignoreNulls); }
public Boolean areColumnsUnique(Exchange rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { return mq.areColumnsUnique(rel.getInput(), columns, ignoreNulls); }
public Boolean areColumnsUnique(Minus rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { if (areColumnsUnique((SetOp) rel, mq, columns, ignoreNulls)) { return true; } return mq.areColumnsUnique(rel.getInput(0), columns, ignoreNulls); }
public Boolean areColumnsUnique(Minus rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { if (areColumnsUnique((SetOp) rel, mq, columns, ignoreNulls)) { return true; } return mq.areColumnsUnique(rel.getInput(0), columns, ignoreNulls); }
public Boolean areColumnsUnique(Intersect rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { if (areColumnsUnique((SetOp) rel, mq, columns, ignoreNulls)) { return true; } for (RelNode input : rel.getInputs()) { Boolean b = mq.areColumnsUnique(input, columns, ignoreNulls); if (b != null && b) { return true; } } return false; }
public Boolean areColumnsUnique(Intersect rel, RelMetadataQuery mq, ImmutableBitSet columns, boolean ignoreNulls) { if (areColumnsUnique((SetOp) rel, mq, columns, ignoreNulls)) { return true; } for (RelNode input : rel.getInputs()) { Boolean b = mq.areColumnsUnique(input, columns, ignoreNulls); if (b != null && b) { return true; } } return false; }
public static Boolean areColumnsUniqueWhenNullsFiltered(RelMetadataQuery mq, RelNode rel, List<RexInputRef> columnRefs) { ImmutableBitSet.Builder colMask = ImmutableBitSet.builder(); for (RexInputRef columnRef : columnRefs) { colMask.set(columnRef.getIndex()); } return mq.areColumnsUnique(rel, colMask.build(), true); }
public static Boolean areColumnsUnique(RelMetadataQuery mq, RelNode rel, List<RexInputRef> columnRefs) { ImmutableBitSet.Builder colMask = ImmutableBitSet.builder(); for (RexInputRef columnRef : columnRefs) { colMask.set(columnRef.getIndex()); } return mq.areColumnsUnique(rel, colMask.build()); }
public static Boolean areColumnsUniqueWhenNullsFiltered(RelMetadataQuery mq, RelNode rel, List<RexInputRef> columnRefs) { ImmutableBitSet.Builder colMask = ImmutableBitSet.builder(); for (RexInputRef columnRef : columnRefs) { colMask.set(columnRef.getIndex()); } return mq.areColumnsUnique(rel, colMask.build(), true); }
public static Boolean areColumnsUnique(RelMetadataQuery mq, RelNode rel, List<RexInputRef> columnRefs) { ImmutableBitSet.Builder colMask = ImmutableBitSet.builder(); for (RexInputRef columnRef : columnRefs) { colMask.set(columnRef.getIndex()); } return mq.areColumnsUnique(rel, colMask.build()); }