Description
If the child subset is used to derive new traits for
current relnode, the subset will be marked REQUIRED
when registering the new derived relnode and later
will add enforcers between other delivered subsets.
e.g. a MergeJoin request both inputs hash distributed
by [a,b] sorted by [a,b]. If the left input R1 happens to
be distributed by [a], the MergeJoin can derive new
traits from this input and request both input to be
distributed by [a] sorted by [a,b]. In case there is a
alternative R2 with ANY distribution in the left input's
RelSet, we end up with requesting hash distribution
[a] on alternative R2, which is unnecessary and waste,
because we request distribution by [a] because of R1 can
deliver the exact same distribution and we don't need to
enforce properties on other subsets that can't satisfy
the specific trait requirement.
Attachments
Issue Links
- links to