MultiplyOp in general does not have a clear inheritance for column visibility, because generated keys descend from two parent keys that may have differing visibility.
Some possible strategies:
- Always set an empty column visibility.
- Set the column visibility of the parents if they match, otherwise set an empty column visibility.
- Always set a constant column visibility, specified by the client.
- Always set the left Key's column visibility. Or always set the right Key's visibility.
- Set the column visibility to the left Key's c.v. -OR- the right Key's c.v. (take the union of the two). Don't take the union if the c.v.s are the same.
- Set the column visibility to the left Key's c.v. -AND- the right Key's c.v. (take the intersection of the two). Don't take the intersection if the c.v.s are the same.
I don't know which strategy is the most common use case. I could support all of them with enough options...
Strategy 5 and 6 is possible with the getParseTree() methods. Or we could use simple string operations that add parentheses and the | or & symbol.