How does deepCopy differ from clone?
Alan.
On Jul 12, 2010, at 11:19 PM, Swati Jain wrote:
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