You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2010/08/24 00:04:51 UTC

svn commit: r988334 - in /hadoop/pig/trunk: ./ src/org/apache/pig/newplan/logical/expression/

Author: daijy
Date: Mon Aug 23 22:04:50 2010
New Revision: 988334

URL: http://svn.apache.org/viewvc?rev=988334&view=rev
Log:
PIG-1510: Add  for LogicalExpressions (swati.j via daijy)

Modified:
    hadoop/pig/trunk/CHANGES.txt
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanEqualExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/IsNullExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanEqualExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MapLookupExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ModExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MultiplyExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NegativeExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotEqualExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/OrExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/RegexExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/SubtractExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UnaryExpression.java
    hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java

Modified: hadoop/pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Mon Aug 23 22:04:50 2010
@@ -26,6 +26,8 @@ PIG-1249: Safe-guards against misconfigu
 
 IMPROVEMENTS
 
+PIG-1510: Add `deepCopy` for LogicalExpressions (swati.j via daijy)
+
 PIG-1447: Tune memory usage of InternalCachedBag (thejas)
 
 PIG-1505: support jars and scripts in dfs (anhi via rding)

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AddExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -71,4 +73,13 @@ public class AddExpression extends Binar
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new AddExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/AndExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -72,4 +74,13 @@ public class AndExpression extends Binar
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new AndExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/BinCondExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -101,4 +103,14 @@ public class BinCondExpression extends L
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+  
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new BinCondExpression(
+                lgExpPlan,
+                this.getCondition().deepCopy(lgExpPlan),
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/CastExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.FuncSpec;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -62,7 +64,7 @@ public class CastExpression extends Unar
     public boolean isEqual(Operator other) throws FrontendException {
         if (other != null && other instanceof CastExpression) { 
             CastExpression of = (CastExpression)other;
-            return plan.isEqual(of.plan) && getExpression().isEqual( of.getExpression() );
+            return getExpression().isEqual( of.getExpression() );
         } else {
             return false;
         }
@@ -82,4 +84,22 @@ public class CastExpression extends Unar
         }
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new CastExpression(
+                lgExpPlan,
+                this.getExpression().deepCopy(lgExpPlan),
+                this.getFieldSchema().deepCopy());
+        try {
+            FuncSpec origFuncSpec = this.getFuncSpec();
+            if (origFuncSpec != null ) {
+                ((CastExpression)copy).setFuncSpec(origFuncSpec.clone());
+            }
+        } catch(CloneNotSupportedException e) {
+            e.printStackTrace(); 
+        }
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ConstantExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -91,5 +93,14 @@ public class ConstantExpression extends 
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
-
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException{
+        LogicalExpression copy = new ConstantExpression( 
+                lgExpPlan,
+                this.getValue(),
+                this.getFieldSchema().deepCopy() );
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DereferenceExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,7 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -154,4 +155,14 @@ public class DereferenceExpression exten
         }
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        List<Integer> columnsCopy = new ArrayList<Integer>(this.getBagColumns());
+        LogicalExpression copy = new DereferenceExpression(
+                lgExpPlan,
+                columnsCopy);
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/DivideExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -71,4 +73,14 @@ public class DivideExpression extends Bi
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new DivideExpression( 
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/EqualExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -74,4 +76,14 @@ public class EqualExpression extends Bin
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new EqualExpression( 
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanEqualExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanEqualExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanEqualExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanEqualExpression.java Mon Aug 23 22:04:50 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -68,4 +70,14 @@ public class GreaterThanEqualExpression 
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new GreaterThanEqualExpression( 
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/GreaterThanExpression.java Mon Aug 23 22:04:50 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -68,4 +70,14 @@ public class GreaterThanExpression exten
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException{
+        LogicalExpression copy = new GreaterThanExpression( 
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/IsNullExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/IsNullExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/IsNullExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/IsNullExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -43,7 +45,7 @@ public class IsNullExpression extends Un
     public boolean isEqual(Operator other) throws FrontendException {
         if (other != null && other instanceof IsNullExpression) { 
             IsNullExpression of = (IsNullExpression)other;
-            return plan.isEqual(of.plan) && getExpression().isEqual( of.getExpression() );
+            return getExpression().isEqual( of.getExpression() );
         } else {
             return false;
         }
@@ -57,5 +59,13 @@ public class IsNullExpression extends Un
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
-
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException{
+        LogicalExpression copy = new IsNullExpression ( 
+                lgExpPlan,
+                this.getExpression().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanEqualExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanEqualExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanEqualExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanEqualExpression.java Mon Aug 23 22:04:50 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -68,4 +70,14 @@ public class LessThanEqualExpression ext
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException{
+        LogicalExpression copy = new LessThanEqualExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LessThanExpression.java Mon Aug 23 22:04:50 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -68,4 +70,14 @@ public class LessThanExpression extends 
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException{
+        LogicalExpression copy = new LessThanExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/LogicalExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -98,4 +100,15 @@ public abstract class LogicalExpression 
         fieldSchema = fs;
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
     }
+
+    /**
+     * Create the deep copy of this expression and add that into the passed
+     * LogicalExpressionPlan Return the copy of this expression with updated
+     * logical expression plan.
+     * @param lgExpPlan LogicalExpressionPlan in which this expression will be added.
+     * @return LogicalExpression with its own logical expression plan.
+     * @throws IOException.
+     */
+    abstract public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException;
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MapLookupExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MapLookupExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MapLookupExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MapLookupExpression.java Mon Aug 23 22:04:50 2010
@@ -19,6 +19,7 @@
 package org.apache.pig.newplan.logical.expression;
 
 import java.util.List;
+import java.io.IOException;
 
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
@@ -106,4 +107,15 @@ public class MapLookupExpression extends
 
         return msg.toString();
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = null;; 
+        copy = new MapLookupExpression(
+                lgExpPlan,
+                this.getLookupKey(),
+                this.getFieldSchema().deepCopy());
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ModExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ModExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ModExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ModExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -71,4 +73,14 @@ public class ModExpression extends Binar
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new ModExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan));
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MultiplyExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MultiplyExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MultiplyExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/MultiplyExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -72,4 +74,13 @@ public class MultiplyExpression extends 
         return fieldSchema;
     }
 
-}
\ No newline at end of file
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new MultiplyExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
+ 
+}

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NegativeExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NegativeExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NegativeExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NegativeExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -42,7 +44,7 @@ public class NegativeExpression extends 
     public boolean isEqual(Operator other) throws FrontendException {
         if (other != null && other instanceof NegativeExpression) { 
             NegativeExpression of = (NegativeExpression)other;
-            return plan.isEqual(of.plan) && getExpression().isEqual( of.getExpression() );
+            return getExpression().isEqual( of.getExpression() );
         } else {
             return false;
         }
@@ -57,4 +59,13 @@ public class NegativeExpression extends 
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new NegativeExpression(
+                lgExpPlan,
+                this.getExpression().deepCopy(lgExpPlan) );
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotEqualExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotEqualExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotEqualExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotEqualExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -72,4 +74,14 @@ public class NotEqualExpression extends 
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+ 
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new NotEqualExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/NotExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -43,7 +45,7 @@ public class NotExpression extends Unary
     public boolean isEqual(Operator other) throws FrontendException {
         if (other != null && other instanceof NotExpression) { 
             NotExpression of = (NotExpression)other;
-            return plan.isEqual(of.plan) && getExpression().isEqual( of.getExpression() );
+            return getExpression().isEqual( of.getExpression() );
         } else {
             return false;
         }
@@ -57,4 +59,13 @@ public class NotExpression extends Unary
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new NotExpression(
+                lgExpPlan,
+                this.getExpression().deepCopy(lgExpPlan) );
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/OrExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/OrExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/OrExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/OrExpression.java Mon Aug 23 22:04:50 2010
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -72,4 +74,14 @@ public class OrExpression extends Binary
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new OrExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
+ 
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/ProjectExpression.java Mon Aug 23 22:04:50 2010
@@ -19,6 +19,7 @@
 package org.apache.pig.newplan.logical.expression;
 
 import java.util.List;
+import java.io.IOException;
 
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
@@ -267,4 +268,15 @@ public class ProjectExpression extends C
         }
         return super.getType();
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new ProjectExpression(
+                lgExpPlan,
+                this.getInputNum(),
+                this.getColNum(),
+                this.getAttachedRelationalOp());
+        return copy;
+    }
+
 }

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/RegexExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/RegexExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/RegexExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/RegexExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.data.DataType;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
@@ -72,4 +74,14 @@ public class RegexExpression extends Bin
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
-}
\ No newline at end of file
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new RegexExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
+
+}

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/SubtractExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/SubtractExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/SubtractExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/SubtractExpression.java Mon Aug 23 22:04:50 2010
@@ -18,6 +18,8 @@
 
 package org.apache.pig.newplan.logical.expression;
 
+import java.io.IOException;
+
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
@@ -71,4 +73,14 @@ public class SubtractExpression extends 
         uidOnlyFieldSchema = fieldSchema.mergeUid(uidOnlyFieldSchema);
         return fieldSchema;
     }
-}
\ No newline at end of file
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy = new SubtractExpression(
+                lgExpPlan,
+                this.getLhs().deepCopy(lgExpPlan),
+                this.getRhs().deepCopy(lgExpPlan) );
+        return copy;
+    }
+ 
+}

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UnaryExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UnaryExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UnaryExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UnaryExpression.java Mon Aug 23 22:04:50 2010
@@ -19,6 +19,7 @@
 package org.apache.pig.newplan.logical.expression;
 
 import java.util.List;
+import java.io.IOException;
 
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.Operator;

Modified: hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java
URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java?rev=988334&r1=988333&r2=988334&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java (original)
+++ hadoop/pig/trunk/src/org/apache/pig/newplan/logical/expression/UserFuncExpression.java Mon Aug 23 22:04:50 2010
@@ -20,6 +20,7 @@ package org.apache.pig.newplan.logical.e
 
 import java.util.ArrayList;
 import java.util.List;
+import java.io.IOException;
 
 import org.apache.pig.EvalFunc;
 import org.apache.pig.FuncSpec;
@@ -135,4 +136,17 @@ public class UserFuncExpression extends 
     public void setImplicitReferencedOperator(Operator implicitReferencedOperator) {
         this.implicitReferencedOperator = implicitReferencedOperator;
     }
+
+    @Override
+    public LogicalExpression deepCopy(LogicalExpressionPlan lgExpPlan) throws IOException {
+        LogicalExpression copy =  null; 
+        try {
+        copy = new UserFuncExpression(
+                lgExpPlan,
+                this.getFuncSpec().clone() );
+        } catch(CloneNotSupportedException e) {
+             e.printStackTrace();
+        }
+        return copy;
+    }
 }