You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by dv...@apache.org on 2012/09/03 01:24:05 UTC

svn commit: r1380095 - in /pig/trunk: ./ src/org/apache/pig/ src/org/apache/pig/builtin/ src/org/apache/pig/impl/io/ src/org/apache/pig/impl/plan/ src/org/apache/pig/newplan/ src/org/apache/pig/newplan/logical/expression/ src/org/apache/pig/newplan/log...

Author: dvryaboy
Date: Sun Sep  2 23:24:04 2012
New Revision: 1380095

URL: http://svn.apache.org/viewvc?rev=1380095&view=rev
Log:
PIG-2882: Use Deque instead of Stack

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/src/org/apache/pig/EvalFunc.java
    pig/trunk/src/org/apache/pig/PigServer.java
    pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java
    pig/trunk/src/org/apache/pig/impl/io/FileLocalizer.java
    pig/trunk/src/org/apache/pig/impl/plan/PlanVisitor.java
    pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java
    pig/trunk/src/org/apache/pig/newplan/logical/expression/ExpToPhyTranslationVisitor.java
    pig/trunk/src/org/apache/pig/newplan/logical/relational/LOForEach.java
    pig/trunk/src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java
    pig/trunk/src/org/apache/pig/newplan/logical/rules/ConstExpEvaluator.java
    pig/trunk/src/org/apache/pig/newplan/logical/rules/DNFPlanGenerator.java
    pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Sun Sep  2 23:24:04 2012
@@ -24,6 +24,8 @@ INCOMPATIBLE CHANGES
 
 IMPROVEMENTS
 
+PIG-2882: Use Deque instead of Stack (mkhadikov via dvryaboy)
+
 PIG-2781: LOSort isEqual method (xalan via dvryaboy)
 
 PIG-2835: Optimizing the convertion from bytes to Integer/Long (jay23jack via dvryaboy)

Modified: pig/trunk/src/org/apache/pig/EvalFunc.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/EvalFunc.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/EvalFunc.java (original)
+++ pig/trunk/src/org/apache/pig/EvalFunc.java Sun Sep  2 23:24:04 2012
@@ -21,8 +21,9 @@ package org.apache.pig;
 import java.io.IOException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
+import java.util.Deque;
+import java.util.LinkedList;
 import java.util.List;
-import java.util.Stack;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -96,7 +97,7 @@ public abstract class EvalFunc<T>  {
         Class<?> superClass = getClass();
         Type superType = getClass();
         
-        Stack<Type> geneticsStack = new Stack<Type>();
+        Deque<Type> geneticsStack = new LinkedList<Type>();
         
         // Go up the hierachy of the class up to the EvalFunc
         while (!superClass.isAssignableFrom(EvalFunc.class))

Modified: pig/trunk/src/org/apache/pig/PigServer.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/PigServer.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/PigServer.java (original)
+++ pig/trunk/src/org/apache/pig/PigServer.java Sun Sep  2 23:24:04 2012
@@ -30,6 +30,7 @@ import java.io.StringWriter;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Deque;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -40,7 +41,6 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Queue;
 import java.util.Set;
-import java.util.Stack;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.commons.logging.Log;
@@ -132,7 +132,7 @@ public class PigServer {
      * on a new graph. After the nested script is done, the grunt
      * shell pops up the saved graph and continues working on it.
      */
-    protected final Stack<Graph> graphs = new Stack<Graph>();
+    protected final Deque<Graph> graphs = new LinkedList<Graph>();
 
     /*
      * The current Graph the grunt shell is working on.

Modified: pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/Utf8StorageConverter.java Sun Sep  2 23:24:04 2012
@@ -22,10 +22,10 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PushbackInputStream;
 import java.util.Arrays;
+import java.util.Deque;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.Map;
-import java.util.Stack;
-import java.util.EmptyStackException;
 
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
@@ -157,7 +157,7 @@ public class Utf8StorageConverter implem
         }
         else {
             // No inner schema, treat everything inside tuple as bytearray
-            Stack<Character> level = new Stack<Character>();  // keep track of nested tuple/bag/map. We do not interpret, save them as bytearray
+            Deque<Character> level = new LinkedList<Character>();  // keep track of nested tuple/bag/map. We do not interpret, save them as bytearray
             mOut = new ByteArrayOutputStream(BUFFER_SIZE);
             while (true) {
                 buf=in.read();
@@ -219,7 +219,7 @@ public class Utf8StorageConverter implem
             
             // Read value
             mOut.reset();
-            Stack<Character> level = new Stack<Character>(); // keep track of nested tuple/bag/map. We do not interpret, save them as bytearray
+            Deque<Character> level = new LinkedList<Character>(); // keep track of nested tuple/bag/map. We do not interpret, save them as bytearray
             while (true) {
                 buf=in.read();
                 if (buf==-1) {
@@ -232,12 +232,11 @@ public class Utf8StorageConverter implem
                     break;
                 else if (buf==']' ||buf=='}'||buf==')')
                 {
-                    try {
-                        if (level.peek()==findStartChar((char)buf))
-                            level.pop();
-                    } catch (EmptyStackException e) {
-                        throw new IOException("Malformed map");
-                    }
+                	if (level.isEmpty())
+                		throw new IOException("Malformed map");
+                	
+                    if (level.peek()==findStartChar((char)buf))
+                        level.pop();
                 } else if (buf==','&&level.isEmpty()) { // Current map item complete
                     break;
                 }

Modified: pig/trunk/src/org/apache/pig/impl/io/FileLocalizer.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/impl/io/FileLocalizer.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/impl/io/FileLocalizer.java (original)
+++ pig/trunk/src/org/apache/pig/impl/io/FileLocalizer.java Sun Sep  2 23:24:04 2012
@@ -28,11 +28,12 @@ import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.Deque;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Random;
-import java.util.Stack;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -427,11 +428,11 @@ public class FileLocalizer {
      * Thread local toDelete Stack to hold descriptors to be deleted upon calling
      * deleteTempFiles. Use the toDelete() method to access this stack.
      */
-    private static ThreadLocal<Stack<ElementDescriptor>> toDelete =
-        new ThreadLocal<Stack<ElementDescriptor>>() {
+    private static ThreadLocal<Deque<ElementDescriptor>> toDelete =
+        new ThreadLocal<Deque<ElementDescriptor>>() {
 
-        protected Stack<ElementDescriptor> initialValue() {
-            return new Stack<ElementDescriptor>();
+        protected Deque<ElementDescriptor> initialValue() {
+            return new LinkedList<ElementDescriptor>();
         }
     };
 
@@ -448,7 +449,7 @@ public class FileLocalizer {
      * Convenience accessor method to the toDelete Stack bound to this thread.
      * @return A Stack of ElementDescriptors that should be deleted.
      */
-    private static Stack<ElementDescriptor> toDelete() {
+    private static Deque<ElementDescriptor> toDelete() {
         return toDelete.get();
     }
 
@@ -484,7 +485,7 @@ public class FileLocalizer {
     }
 
     public static void deleteTempFiles() {
-        while (!toDelete().empty()) {
+        while (!toDelete().isEmpty()) {
             try {
                 ElementDescriptor elem = toDelete().pop();
                 elem.delete();

Modified: pig/trunk/src/org/apache/pig/impl/plan/PlanVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/impl/plan/PlanVisitor.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/impl/plan/PlanVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/impl/plan/PlanVisitor.java Sun Sep  2 23:24:04 2012
@@ -17,13 +17,8 @@
  */
 package org.apache.pig.impl.plan;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.Stack;
+import java.util.Deque;
+import java.util.LinkedList;
 
 /**
  * A visitor mechanism for navigating and operating on a plan of 
@@ -41,7 +36,7 @@ abstract public class PlanVisitor <O ext
      */
     protected PlanWalker<O, P> mCurrentWalker;
 
-    private Stack<PlanWalker<O, P>> mWalkers;
+    private Deque<PlanWalker<O, P>> mWalkers;
 
     /**
      * Entry point for visiting the plan.
@@ -62,7 +57,7 @@ abstract public class PlanVisitor <O ext
     protected PlanVisitor(P plan, PlanWalker<O, P> walker) {
         mPlan = plan;
         mCurrentWalker = walker;
-        mWalkers = new Stack<PlanWalker<O, P>>();
+        mWalkers = new LinkedList<PlanWalker<O, P>>();
     }
 
     /**
@@ -82,7 +77,7 @@ abstract public class PlanVisitor <O ext
      * this case the current walker is not reset.
      */
     protected void popWalker() throws VisitorException {
-        if (mWalkers.empty()) {
+        if (mWalkers.isEmpty()) {
             throw new VisitorException("No more walkers to pop.");
         }
         mCurrentWalker = mWalkers.pop();

Modified: pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/PlanVisitor.java Sun Sep  2 23:24:04 2012
@@ -18,9 +18,11 @@
 
 package org.apache.pig.newplan;
 
-import java.util.Stack;
+import java.util.Deque;
+import java.util.LinkedList;
 
 import org.apache.pig.impl.logicalLayer.FrontendException;
+import org.apache.pig.impl.plan.VisitorException;
 
 /**
  * A visitor mechanism for navigating and operating on a plan of 
@@ -40,7 +42,7 @@ public abstract class PlanVisitor {
      */
     protected PlanWalker currentWalker;
 
-    private Stack<PlanWalker> walkers;
+    private Deque<PlanWalker> walkers;
 
     /**
      * Entry point for visiting the plan.
@@ -61,7 +63,7 @@ public abstract class PlanVisitor {
     protected PlanVisitor(OperatorPlan plan, PlanWalker walker) {
         this.plan = plan;
         currentWalker = walker;
-        walkers = new Stack<PlanWalker>();
+        walkers = new LinkedList<PlanWalker>();
     }
 
     /**
@@ -81,7 +83,7 @@ public abstract class PlanVisitor {
      * this case the current walker is not reset.
      */
     protected void popWalker() throws FrontendException {
-        if (walkers.empty()) {
+        if (walkers.isEmpty()) {
             throw new FrontendException("No more walkers to pop.", 2221);
         }
         currentWalker = walkers.pop();

Modified: pig/trunk/src/org/apache/pig/newplan/logical/expression/ExpToPhyTranslationVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/expression/ExpToPhyTranslationVisitor.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/expression/ExpToPhyTranslationVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/expression/ExpToPhyTranslationVisitor.java Sun Sep  2 23:24:04 2012
@@ -19,9 +19,10 @@ package org.apache.pig.newplan.logical.e
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Deque;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Stack;
 
 import org.apache.pig.ComparisonFunc;
 import org.apache.pig.EvalFunc;
@@ -89,12 +90,12 @@ public class ExpToPhyTranslationVisitor 
         currentOp = op;
         logToPhyMap = map;
         currentPlan = phyPlan;
-        currentPlans = new Stack<PhysicalPlan>();
+        currentPlans = new LinkedList<PhysicalPlan>();
     }
     
     protected Map<Operator, PhysicalOperator> logToPhyMap;
 
-    protected Stack<PhysicalPlan> currentPlans;
+    protected Deque<PhysicalPlan> currentPlans;
 
     protected PhysicalPlan currentPlan;
 

Modified: pig/trunk/src/org/apache/pig/newplan/logical/relational/LOForEach.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/relational/LOForEach.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/relational/LOForEach.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/relational/LOForEach.java Sun Sep  2 23:24:04 2012
@@ -18,8 +18,9 @@
 package org.apache.pig.newplan.logical.relational;
 
 import java.util.ArrayList;
+import java.util.Deque;
+import java.util.LinkedList;
 import java.util.List;
-import java.util.Stack;
 
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.impl.util.Pair;
@@ -92,7 +93,7 @@ public class LOForEach extends LogicalRe
             		continue;
             	}
             	
-            	Stack<Operator> stack = new Stack<Operator>();
+            	Deque<Operator> stack = new LinkedList<Operator>();
                 List<Operator> succs = referred.getPlan().getSuccessors( src );
                 if( succs != null ) {
                 	for( Operator succ : succs ) {

Modified: pig/trunk/src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/relational/LogToPhyTranslationVisitor.java Sun Sep  2 23:24:04 2012
@@ -20,10 +20,11 @@ package org.apache.pig.newplan.logical.r
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Deque;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Stack;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -98,12 +99,12 @@ public class LogToPhyTranslationVisitor 
         super(plan, new DependencyOrderWalker(plan));
         currentPlan = new PhysicalPlan();
         logToPhyMap = new HashMap<Operator, PhysicalOperator>();
-        currentPlans = new Stack<PhysicalPlan>();
+        currentPlans = new LinkedList<PhysicalPlan>();
     }
 
     protected Map<Operator, PhysicalOperator> logToPhyMap;
 
-    protected Stack<PhysicalPlan> currentPlans;
+    protected Deque<PhysicalPlan> currentPlans;
 
     protected PhysicalPlan currentPlan;
 

Modified: pig/trunk/src/org/apache/pig/newplan/logical/rules/ConstExpEvaluator.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/rules/ConstExpEvaluator.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/rules/ConstExpEvaluator.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/rules/ConstExpEvaluator.java Sun Sep  2 23:24:04 2012
@@ -17,6 +17,8 @@
  */
 package org.apache.pig.newplan.logical.rules;
 
+import java.util.Deque;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Stack;
 
@@ -43,11 +45,11 @@ import org.apache.pig.impl.util.Pair;
  *
  */
 class ConstExpEvaluator extends LogicalExpressionVisitor {
-    Stack<ConstantExpression> result;
+    Deque<ConstantExpression> result;
 
     ConstExpEvaluator(OperatorPlan plan) throws FrontendException {
         super(plan, new ReverseDependencyOrderWalker(plan));
-        result = new Stack<ConstantExpression>();
+        result = new LinkedList<ConstantExpression>();
     }
 
     @SuppressWarnings("unchecked")

Modified: pig/trunk/src/org/apache/pig/newplan/logical/rules/DNFPlanGenerator.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/logical/rules/DNFPlanGenerator.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/logical/rules/DNFPlanGenerator.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/logical/rules/DNFPlanGenerator.java Sun Sep  2 23:24:04 2012
@@ -17,7 +17,8 @@
  */
 package org.apache.pig.newplan.logical.rules;
 
-import java.util.Stack;
+import java.util.Deque;
+import java.util.LinkedList;
 import org.apache.pig.impl.logicalLayer.FrontendException;
 import org.apache.pig.newplan.logical.expression.*;
 import org.apache.pig.newplan.ReverseDependencyOrderWalker;
@@ -35,15 +36,15 @@ import org.apache.pig.newplan.OperatorPl
  */
 class DNFPlanGenerator extends LogicalExpressionVisitor {
     private OperatorPlan dnfPlan = null;
-    Stack<LogicalExpression> result;
+    Deque<LogicalExpression> result;
 
     DNFPlanGenerator(OperatorPlan plan) throws FrontendException {
         super(plan, new ReverseDependencyOrderWalker(plan));
-        result = new Stack<LogicalExpression>();
+        result = new LinkedList<LogicalExpression>();
     }
 
     OperatorPlan getDNFPlan() {
-        if (dnfPlan == null) dnfPlan = (result.empty() ? plan : result.pop().getPlan());
+        if (dnfPlan == null) dnfPlan = (result.isEmpty() ? plan : result.pop().getPlan());
         return dnfPlan;
     }
 

Modified: pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java?rev=1380095&r1=1380094&r2=1380095&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java (original)
+++ pig/trunk/src/org/apache/pig/newplan/optimizer/Rule.java Sun Sep  2 23:24:04 2012
@@ -19,11 +19,12 @@
 package org.apache.pig.newplan.optimizer;
 
 import java.util.ArrayList;
+import java.util.Deque;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
-import java.util.Stack;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -238,7 +239,7 @@ public abstract class Rule {
             }
             
             for(int i=0; i<planOps.size(); i++) {
-                Stack<Operator> s = new Stack<Operator>();
+                Deque<Operator> s = new LinkedList<Operator>();
                 if (!check(planOps.get(i), patternOps.get(i), s)) {
                     return false;
                 }
@@ -266,7 +267,7 @@ public abstract class Rule {
          * if we are looking for join->load pattern, only one match will be returned instead
          * of two, so that the matched subsets don't share nodes.
          */ 
-        private boolean check(Operator planOp, Operator patternOp, Stack<Operator> opers) throws FrontendException {
+        private boolean check(Operator planOp, Operator patternOp, Deque<Operator> opers) throws FrontendException {
             if (!match(planOp, patternOp)) {
                 return false;
             }