Hi, I am working on ticket PIG -1494 ( https://issues.apache.org/jira/browse/PIG-1494 ).
While implementing this functionality (conversion of logical expression into CNF), I need to construct the OperatorPlan for the base expressions of the CNF. For example, given an expression "(c1 < 10) AND (c3+b3 > 10)", the CNF form will result in expressions "(c1 < 10)" and "(c3+b3 > 10)". However, each of these expressions would be referencing the original OperatorPlan (that of expression "(c1 < 10) AND (c3+b3 > 10)" ) whereas they should really be referencing their local OperatorPlan post CNF conversion. To ensure correctness of the above approach, I am planning to add a "deepCopy" method to LogicalExpression to create a copy of expressions. In my opinion, "deepCopy" will be a useful construct to have in general. It would be used as follows: LogicalExpressionPlan logPlan = new LogicalExpressionPlan(); LogicalExpression copyExpression = origExpression->deepcopy( logPlan ); Please provide feedback if any on the above approach. Note that I considered writing a deepCopy visitor but found that approach flawed because a valid plan is required for a visitor to work correctly, and in this case we need to construct that plan as we copy the expression. Thanks Swati