The input logical property of a group is not fixed. For example, with semantic correlation, a join b join c, has a = b = c as output correlation, but the input might be a = b, a = c, or b = c depending on which join is performed first. Right now, we just take the first expr in the group as the input, which is why we are getting the bug that the equal columns from semantic correlation are the same as the join condition.
We should reconstruct the input eq columns during compute_cost using children's group id, not during building logical property.
The input logical property of a group is not fixed. For example, with semantic correlation, a join b join c, has a = b = c as output correlation, but the input might be a = b, a = c, or b = c depending on which join is performed first. Right now, we just take the first expr in the group as the input, which is why we are getting the bug that the equal columns from semantic correlation are the same as the join condition.
We should reconstruct the input eq columns during
compute_cost
using children's group id, not during building logical property.