diff --git a/CHANGES.txt b/CHANGES.txt
index 66ea6e6..d0dbde8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -26,6 +26,8 @@
  
 IMPROVEMENTS
 
+PIG-5322: ConstantCalculator optimizer is not applied for split (rohini)
+
 PIG-5316: Initialize mapred.task.id property for PoS jobs (nkollar via szita)
 
 PIG-5302: Remove HttpClient dependency (nkollar via szita)
diff --git a/src/org/apache/pig/newplan/logical/optimizer/LogicalPlanOptimizer.java b/src/org/apache/pig/newplan/logical/optimizer/LogicalPlanOptimizer.java
index 7e5d7f6..1cc59e0 100644
--- a/src/org/apache/pig/newplan/logical/optimizer/LogicalPlanOptimizer.java
+++ b/src/org/apache/pig/newplan/logical/optimizer/LogicalPlanOptimizer.java
@@ -22,10 +22,6 @@
 import java.util.List;
 import java.util.Set;
 
-import com.google.common.base.Preconditions;
-import com.google.common.collect.SetMultimap;
-import com.google.common.collect.TreeMultimap;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pig.impl.PigContext;
@@ -45,11 +41,16 @@
 import org.apache.pig.newplan.logical.rules.PredicatePushdownOptimizer;
 import org.apache.pig.newplan.logical.rules.PushDownForEachFlatten;
 import org.apache.pig.newplan.logical.rules.PushUpFilter;
+import org.apache.pig.newplan.logical.rules.SplitConstantCalculator;
 import org.apache.pig.newplan.logical.rules.SplitFilter;
 import org.apache.pig.newplan.logical.rules.StreamTypeCastInserter;
 import org.apache.pig.newplan.optimizer.PlanOptimizer;
 import org.apache.pig.newplan.optimizer.Rule;
 
+import com.google.common.base.Preconditions;
+import com.google.common.collect.SetMultimap;
+import com.google.common.collect.TreeMultimap;
+
 public class LogicalPlanOptimizer extends PlanOptimizer {
     private static final Log LOG = LogFactory.getLog(LogicalPlanOptimizer.class);
     private static enum RulesReportKey { RULES_ENABLED, RULES_DISABLED }
@@ -89,10 +90,13 @@
         // Logical expression simplifier
         Set <Rule> s = new HashSet<Rule>();
         // add constant calculator rule
-        Rule r = new FilterConstantCalculator("ConstantCalculator", pc);
+        Rule r = new FilterConstantCalculator("FilterConstantCalculator", pc);
         checkAndAddRule(s, r);
         ls.add(s);
-        r = new ForEachConstantCalculator("ConstantCalculator", pc);
+        r = new ForEachConstantCalculator("ForEachConstantCalculator", pc);
+        checkAndAddRule(s, r);
+        ls.add(s);
+        r = new SplitConstantCalculator("SplitConstantCalculator", pc);
         checkAndAddRule(s, r);
         ls.add(s);
 
diff --git a/test/org/apache/pig/test/TestConstantCalculator.java b/test/org/apache/pig/test/TestConstantCalculator.java
index db20551..ef1a515 100644
--- a/test/org/apache/pig/test/TestConstantCalculator.java
+++ b/test/org/apache/pig/test/TestConstantCalculator.java
@@ -22,6 +22,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 import java.util.Set;
@@ -33,13 +34,20 @@
 import org.apache.pig.data.SchemaTupleBackend;
 import org.apache.pig.data.Tuple;
 import org.apache.pig.impl.PigContext;
+import org.apache.pig.impl.logicalLayer.FrontendException;
+import org.apache.pig.newplan.Operator;
 import org.apache.pig.newplan.OperatorPlan;
+import org.apache.pig.newplan.logical.expression.ConstantExpression;
+import org.apache.pig.newplan.logical.expression.NegativeExpression;
 import org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer;
+import org.apache.pig.newplan.logical.relational.LOSplitOutput;
 import org.apache.pig.newplan.logical.relational.LogicalPlan;
 import org.apache.pig.newplan.logical.rules.FilterConstantCalculator;
 import org.apache.pig.newplan.logical.rules.ForEachConstantCalculator;
+import org.apache.pig.newplan.logical.rules.SplitConstantCalculator;
 import org.apache.pig.newplan.optimizer.PlanOptimizer;
 import org.apache.pig.newplan.optimizer.Rule;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -54,6 +62,7 @@
         SchemaTupleBackend.initialize(ConfigurationUtil.toConfiguration(pc.getProperties(), true),
                 pc);
     }
+
     @Test
     public void test() throws Exception {
         // pure simple constant
@@ -105,6 +114,36 @@
                 "store b into 'empty';");
     }
 
+    @Test
+    public void testSplit() throws Exception {
+        // calculation inside split
+        LogicalPlan plan = getOptimizedLogicalPlan("a = load 'd.txt' as (x:long);" +
+                "split a into b if x == -2L, c otherwise;" +
+                "store b into 'empty';" +
+                "store c into 'empty1';");
+
+        List<ConstantExpression> constantOps = new ArrayList<>();
+        Iterator<Operator> operators = plan.getOperators();
+        while (operators.hasNext()) {
+            Operator splitOp = operators.next();
+            if (splitOp instanceof LOSplitOutput) {
+                Iterator<Operator> splitOperators = ((LOSplitOutput)splitOp).getFilterPlan().getOperators();
+                while (splitOperators.hasNext()) {
+                    Operator op = splitOperators.next();
+                    if (op instanceof ConstantExpression) {
+                        constantOps.add((ConstantExpression)op);
+                    } else if (op instanceof NegativeExpression) {
+                        Assert.fail("Found NegativeExpression which should have been optimized");
+                    }
+                }
+            }
+
+        }
+       Assert.assertEquals(2, constantOps.size());
+       Assert.assertEquals(new Long(-2L), constantOps.get(0).getValue());
+       Assert.assertEquals(new Long(-2L), constantOps.get(1).getValue());
+    }
+
     public static class NoCalc extends EvalFunc<String> {
         @Override
         public String exec(Tuple input) throws IOException {
@@ -124,17 +163,23 @@
     }
 
     private void assertQuerySame(String origQuery, String optimizedQuery) throws Exception {
+        LogicalPlan newLogicalPlan = getOptimizedLogicalPlan(origQuery);
+
+        LogicalPlan expected = Util.buildLp(pigServer, optimizedQuery);
+
+        assertTrue(expected.isEqual(newLogicalPlan));
+
+    }
+
+    private LogicalPlan getOptimizedLogicalPlan(String origQuery)
+            throws Exception, IOException, FrontendException {
         LogicalPlan newLogicalPlan = Util.buildLp(pigServer, origQuery);
 
         SchemaTupleBackend.initialize(ConfigurationUtil.toConfiguration(pc.getProperties(), true),
                 pc);
         PlanOptimizer optimizer = new MyPlanOptimizer(newLogicalPlan, 10);
         optimizer.optimize();
-
-        LogicalPlan expected = Util.buildLp(pigServer, optimizedQuery);
-
-        assertTrue(expected.isEqual(newLogicalPlan));
-
+        return newLogicalPlan;
     }
 
     public class MyPlanOptimizer extends LogicalPlanOptimizer {
@@ -143,6 +188,7 @@
             super(p, iterations, null);
         }
 
+        @Override
         protected List<Set<Rule>> buildRuleSets() {
             List<Set<Rule>> ls = new ArrayList<Set<Rule>>();
 
@@ -154,6 +200,9 @@
             r = new ForEachConstantCalculator("ForEachConstantCalculator", pc);
             s.add(r);
             ls.add(s);
+            r = new SplitConstantCalculator("SplitConstantCalculator", pc);
+            s.add(r);
+            ls.add(s);
 
             return ls;
         }
diff --git a/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6-OPTOFF.gld b/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6-OPTOFF.gld
index 838623c..07b01de 100644
--- a/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6-OPTOFF.gld
+++ b/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6-OPTOFF.gld
@@ -4,122 +4,118 @@
 #--------------------------------------------------
 # TEZ DAG plan: pig-0_scope-0
 #--------------------------------------------------
-Tez vertex scope-48	->	Tez vertex scope-50,Tez vertex scope-53,
-Tez vertex scope-53	->	Tez vertex scope-56,Tez vertex scope-58,
-Tez vertex scope-50	->	Tez vertex scope-52,
-Tez vertex scope-52	->	Tez vertex scope-56,Tez vertex scope-58,
-Tez vertex scope-56
+Tez vertex scope-50	->	Tez vertex scope-52,Tez vertex scope-55,
+Tez vertex scope-55	->	Tez vertex scope-58,Tez vertex scope-60,
+Tez vertex scope-52	->	Tez vertex scope-54,
+Tez vertex scope-54	->	Tez vertex scope-58,Tez vertex scope-60,
 Tez vertex scope-58
+Tez vertex scope-60
 
-Tez vertex scope-48
-# Plan on vertex
-POValueOutputTez - scope-49	->	 [scope-50, scope-53]
-|
-|---a: New For Each(false,false)[bag] - scope-7
-    |   |
-    |   Cast[int] - scope-2
-    |   |
-    |   |---Project[bytearray][0] - scope-1
-    |   |
-    |   Cast[int] - scope-5
-    |   |
-    |   |---Project[bytearray][1] - scope-4
-    |
-    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-0
-Tez vertex scope-53
-# Plan on vertex
-POValueOutputTez - scope-55	->	 [scope-56, scope-58]
-|
-|---POValueInputTez - scope-54	<-	 scope-48
 Tez vertex scope-50
 # Plan on vertex
-b: Local Rearrange[tuple]{int}(false) - scope-72	->	 scope-52
-|   |
-|   Project[int][0] - scope-74
+POValueOutputTez - scope-51	->	 [scope-52, scope-55]
 |
-|---c: New For Each(false,false)[bag] - scope-61
+|---a: New For Each(false,false)[bag] - scope-11
     |   |
-    |   Project[int][0] - scope-62
+    |   Cast[int] - scope-6
     |   |
-    |   POUserFunc(org.apache.pig.builtin.COUNT$Initial)[tuple] - scope-63
+    |   |---Project[bytearray][0] - scope-5
     |   |
-    |   |---Project[bag][1] - scope-64
+    |   Cast[int] - scope-9
+    |   |
+    |   |---Project[bytearray][1] - scope-8
     |
-    |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-75
-        |
-        |---POValueInputTez - scope-51	<-	 scope-48
+    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-4
+Tez vertex scope-55
+# Plan on vertex
+POValueOutputTez - scope-57	->	 [scope-58, scope-60]
+|
+|---POValueInputTez - scope-56	<-	 scope-50
 Tez vertex scope-52
-# Combine plan on edge <scope-50>
-b: Local Rearrange[tuple]{int}(false) - scope-76	->	 scope-52
+# Plan on vertex
+b: Local Rearrange[tuple]{int}(false) - scope-74	->	 scope-54
 |   |
-|   Project[int][0] - scope-78
+|   Project[int][0] - scope-76
 |
-|---c: New For Each(false,false)[bag] - scope-65
+|---c: New For Each(false,false)[bag] - scope-63
     |   |
-    |   Project[int][0] - scope-66
+    |   Project[int][0] - scope-64
     |   |
-    |   POUserFunc(org.apache.pig.builtin.COUNT$Intermediate)[tuple] - scope-67
+    |   POUserFunc(org.apache.pig.builtin.COUNT$Initial)[tuple] - scope-65
     |   |
-    |   |---Project[bag][1] - scope-68
+    |   |---Project[bag][1] - scope-66
     |
-    |---b: Package(CombinerPackager)[tuple]{int} - scope-71
+    |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-77
+        |
+        |---POValueInputTez - scope-53	<-	 scope-50
+Tez vertex scope-54
+# Combine plan on edge <scope-52>
+b: Local Rearrange[tuple]{int}(false) - scope-78	->	 scope-54
+|   |
+|   Project[int][0] - scope-80
+|
+|---c: New For Each(false,false)[bag] - scope-67
+    |   |
+    |   Project[int][0] - scope-68
+    |   |
+    |   POUserFunc(org.apache.pig.builtin.COUNT$Intermediate)[tuple] - scope-69
+    |   |
+    |   |---Project[bag][1] - scope-70
+    |
+    |---b: Package(CombinerPackager)[tuple]{int} - scope-73
 # Plan on vertex
-POValueOutputTez - scope-60	->	 [scope-56, scope-58]
+POValueOutputTez - scope-62	->	 [scope-58, scope-60]
 |
-|---c: New For Each(false,false)[bag] - scope-23
+|---c: New For Each(false,false)[bag] - scope-27
     |   |
-    |   Project[int][0] - scope-18
+    |   Project[int][0] - scope-22
     |   |
-    |   POUserFunc(org.apache.pig.builtin.COUNT$Final)[long] - scope-21
+    |   POUserFunc(org.apache.pig.builtin.COUNT$Final)[long] - scope-25
     |   |
-    |   |---Project[bag][1] - scope-69
+    |   |---Project[bag][1] - scope-71
     |
-    |---b: Package(CombinerPackager)[tuple]{int} - scope-15
-Tez vertex scope-56
-# Plan on vertex
-d: Store(file:///tmp/pigoutput1:org.apache.pig.builtin.PigStorage) - scope-35
-|
-|---d: Filter[bag] - scope-25
-    |   |
-    |   Less Than[boolean] - scope-34
-    |   |
-    |   |---Multiply[long] - scope-31
-    |   |   |
-    |   |   |---Cast[long] - scope-27
-    |   |   |   |
-    |   |   |   |---Constant(2) - scope-26
-    |   |   |
-    |   |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-30
-    |   |       |
-    |   |       |---Constant(1) - scope-28
-    |   |
-    |   |---Cast[long] - scope-33
-    |       |
-    |       |---Project[int][1] - scope-32
-    |
-    |---POValueInputTez - scope-57	<-	 scope-53
+    |---b: Package(CombinerPackager)[tuple]{int} - scope-19
 Tez vertex scope-58
 # Plan on vertex
-e: Store(file:///tmp/pigoutput2:org.apache.pig.builtin.PigStorage) - scope-47
+d: Store(file:///tmp/pigoutput1:org.apache.pig.builtin.PigStorage) - scope-38
 |
-|---e: Filter[bag] - scope-36
+|---d: Filter[bag] - scope-29
     |   |
-    |   Not[boolean] - scope-46
+    |   Less Than[boolean] - scope-37
     |   |
-    |   |---Less Than[boolean] - scope-45
+    |   |---Multiply[long] - scope-34
+    |   |   |
+    |   |   |---Constant(2) - scope-30
+    |   |   |
+    |   |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-33
+    |   |       |
+    |   |       |---Constant(1) - scope-31
+    |   |
+    |   |---Cast[long] - scope-36
     |       |
-    |       |---Multiply[long] - scope-42
-    |       |   |
-    |       |   |---Cast[long] - scope-38
-    |       |   |   |
-    |       |   |   |---Constant(2) - scope-37
-    |       |   |
-    |       |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-41
-    |       |       |
-    |       |       |---Constant(1) - scope-39
-    |       |
-    |       |---Cast[long] - scope-44
-    |           |
-    |           |---Project[int][1] - scope-43
+    |       |---Project[int][1] - scope-35
     |
-    |---POValueInputTez - scope-59	<-	 scope-53
+    |---POValueInputTez - scope-59	<-	 scope-55
+Tez vertex scope-60
+# Plan on vertex
+e: Store(file:///tmp/pigoutput2:org.apache.pig.builtin.PigStorage) - scope-49
+|
+|---e: Filter[bag] - scope-39
+    |   |
+    |   Not[boolean] - scope-48
+    |   |
+    |   |---Less Than[boolean] - scope-47
+    |       |
+    |       |---Multiply[long] - scope-44
+    |       |   |
+    |       |   |---Constant(2) - scope-40
+    |       |   |
+    |       |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-43
+    |       |       |
+    |       |       |---Constant(1) - scope-41
+    |       |
+    |       |---Cast[long] - scope-46
+    |           |
+    |           |---Project[int][1] - scope-45
+    |
+    |---POValueInputTez - scope-61	<-	 scope-55
diff --git a/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6.gld b/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6.gld
index d5c3a8b..33769df 100644
--- a/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6.gld
+++ b/test/org/apache/pig/test/data/GoldenFiles/tez/TEZC-MQ-6.gld
@@ -4,118 +4,114 @@
 #--------------------------------------------------
 # TEZ DAG plan: pig-0_scope-0
 #--------------------------------------------------
-Tez vertex scope-48	->	Tez vertex scope-52,Tez vertex scope-53,
-Tez vertex scope-52	->	Tez vertex scope-53,Tez vertex scope-58,
-Tez vertex scope-53	->	Tez vertex scope-58,
-Tez vertex scope-58
+Tez vertex scope-50	->	Tez vertex scope-54,Tez vertex scope-55,
+Tez vertex scope-54	->	Tez vertex scope-55,Tez vertex scope-60,
+Tez vertex scope-55	->	Tez vertex scope-60,
+Tez vertex scope-60
 
-Tez vertex scope-48
+Tez vertex scope-50
 # Plan on vertex
-a: Split - scope-80
+a: Split - scope-82
 |   |
-|   b: Local Rearrange[tuple]{int}(false) - scope-72	->	 scope-52
+|   b: Local Rearrange[tuple]{int}(false) - scope-74	->	 scope-54
 |   |   |
-|   |   Project[int][0] - scope-74
+|   |   Project[int][0] - scope-76
 |   |
-|   |---c: New For Each(false,false)[bag] - scope-61
+|   |---c: New For Each(false,false)[bag] - scope-63
 |       |   |
-|       |   Project[int][0] - scope-62
+|       |   Project[int][0] - scope-64
 |       |   |
-|       |   POUserFunc(org.apache.pig.builtin.COUNT$Initial)[tuple] - scope-63
+|       |   POUserFunc(org.apache.pig.builtin.COUNT$Initial)[tuple] - scope-65
 |       |   |
-|       |   |---Project[bag][1] - scope-64
+|       |   |---Project[bag][1] - scope-66
 |       |
-|       |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-75
+|       |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-77
 |   |
-|   POValueOutputTez - scope-49	->	 [scope-53]
+|   POValueOutputTez - scope-51	->	 [scope-55]
 |
-|---a: New For Each(false,false)[bag] - scope-7
+|---a: New For Each(false,false)[bag] - scope-11
     |   |
-    |   Cast[int] - scope-2
+    |   Cast[int] - scope-6
     |   |
-    |   |---Project[bytearray][0] - scope-1
+    |   |---Project[bytearray][0] - scope-5
     |   |
-    |   Cast[int] - scope-5
+    |   Cast[int] - scope-9
     |   |
-    |   |---Project[bytearray][1] - scope-4
+    |   |---Project[bytearray][1] - scope-8
     |
-    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-0
-Tez vertex scope-52
-# Combine plan on edge <scope-48>
-b: Local Rearrange[tuple]{int}(false) - scope-76	->	 scope-52
+    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-4
+Tez vertex scope-54
+# Combine plan on edge <scope-50>
+b: Local Rearrange[tuple]{int}(false) - scope-78	->	 scope-54
 |   |
-|   Project[int][0] - scope-78
+|   Project[int][0] - scope-80
 |
-|---c: New For Each(false,false)[bag] - scope-65
+|---c: New For Each(false,false)[bag] - scope-67
     |   |
-    |   Project[int][0] - scope-66
+    |   Project[int][0] - scope-68
     |   |
-    |   POUserFunc(org.apache.pig.builtin.COUNT$Intermediate)[tuple] - scope-67
+    |   POUserFunc(org.apache.pig.builtin.COUNT$Intermediate)[tuple] - scope-69
     |   |
-    |   |---Project[bag][1] - scope-68
+    |   |---Project[bag][1] - scope-70
     |
-    |---b: Package(CombinerPackager)[tuple]{int} - scope-71
+    |---b: Package(CombinerPackager)[tuple]{int} - scope-73
 # Plan on vertex
-POValueOutputTez - scope-60	->	 [scope-53, scope-58]
+POValueOutputTez - scope-62	->	 [scope-55, scope-60]
 |
-|---c: New For Each(false,false)[bag] - scope-23
+|---c: New For Each(false,false)[bag] - scope-27
     |   |
-    |   Project[int][0] - scope-18
+    |   Project[int][0] - scope-22
     |   |
-    |   POUserFunc(org.apache.pig.builtin.COUNT$Final)[long] - scope-21
+    |   POUserFunc(org.apache.pig.builtin.COUNT$Final)[long] - scope-25
     |   |
-    |   |---Project[bag][1] - scope-69
+    |   |---Project[bag][1] - scope-71
     |
-    |---b: Package(CombinerPackager)[tuple]{int} - scope-15
-Tez vertex scope-53
+    |---b: Package(CombinerPackager)[tuple]{int} - scope-19
+Tez vertex scope-55
 # Plan on vertex
-1-1: Split - scope-79
+1-1: Split - scope-81
 |   |
-|   d: Store(file:///tmp/pigoutput1:org.apache.pig.builtin.PigStorage) - scope-35
+|   d: Store(file:///tmp/pigoutput1:org.apache.pig.builtin.PigStorage) - scope-38
 |   |
-|   |---d: Filter[bag] - scope-25
+|   |---d: Filter[bag] - scope-29
 |       |   |
-|       |   Less Than[boolean] - scope-34
+|       |   Less Than[boolean] - scope-37
 |       |   |
-|       |   |---Multiply[long] - scope-31
+|       |   |---Multiply[long] - scope-34
 |       |   |   |
-|       |   |   |---Cast[long] - scope-27
-|       |   |   |   |
-|       |   |   |   |---Constant(2) - scope-26
+|       |   |   |---Constant(2) - scope-30
 |       |   |   |
-|       |   |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-30
+|       |   |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-33
 |       |   |       |
-|       |   |       |---Constant(1) - scope-28
+|       |   |       |---Constant(1) - scope-31
 |       |   |
-|       |   |---Cast[long] - scope-33
+|       |   |---Cast[long] - scope-36
 |       |       |
-|       |       |---Project[int][1] - scope-32
+|       |       |---Project[int][1] - scope-35
 |   |
-|   POValueOutputTez - scope-55	->	 [scope-58]
+|   POValueOutputTez - scope-57	->	 [scope-60]
 |
-|---POValueInputTez - scope-54	<-	 scope-48
-Tez vertex scope-58
+|---POValueInputTez - scope-56	<-	 scope-50
+Tez vertex scope-60
 # Plan on vertex
-e: Store(file:///tmp/pigoutput2:org.apache.pig.builtin.PigStorage) - scope-47
+e: Store(file:///tmp/pigoutput2:org.apache.pig.builtin.PigStorage) - scope-49
 |
-|---e: Filter[bag] - scope-36
+|---e: Filter[bag] - scope-39
     |   |
-    |   Not[boolean] - scope-46
+    |   Not[boolean] - scope-48
     |   |
-    |   |---Less Than[boolean] - scope-45
+    |   |---Less Than[boolean] - scope-47
     |       |
-    |       |---Multiply[long] - scope-42
+    |       |---Multiply[long] - scope-44
     |       |   |
-    |       |   |---Cast[long] - scope-38
-    |       |   |   |
-    |       |   |   |---Constant(2) - scope-37
+    |       |   |---Constant(2) - scope-40
     |       |   |
-    |       |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-41
+    |       |   |---POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.ReadScalarsTez)[long] - scope-43
     |       |       |
-    |       |       |---Constant(1) - scope-39
+    |       |       |---Constant(1) - scope-41
     |       |
-    |       |---Cast[long] - scope-44
+    |       |---Cast[long] - scope-46
     |           |
-    |           |---Project[int][1] - scope-43
+    |           |---Project[int][1] - scope-45
     |
-    |---POValueInputTez - scope-59	<-	 scope-53
+    |---POValueInputTez - scope-61	<-	 scope-55
