You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/03/02 22:14:41 UTC

svn commit: r1451943 - in /hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql: exec/ parse/ udf/ptf/

Author: hashutosh
Date: Sat Mar  2 21:14:40 2013
New Revision: 1451943

URL: http://svn.apache.org/r1451943
Log:
HIVE-4093 : Remove sprintf from PTFTranslator and use String.format() (Brock Noland via Ashutosh Chauhan)

Modified:
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFPersistence.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFInvocationSpec.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/NPath.java
    hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFPersistence.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFPersistence.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFPersistence.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFPersistence.java Sat Mar  2 21:14:40 2013
@@ -139,7 +139,7 @@ public class PTFPersistence {
       j = j << 1;
       if ( j >  2 * currentSize )
       {
-        throw new HiveException(PTFUtils.sprintf("index invalid %d", i));
+        throw new HiveException(String.format("index invalid %d", i));
       }
       return j;
     }
@@ -667,7 +667,7 @@ public class PTFPersistence {
       */
       if ( !directory.isDirectory())
       {
-        throw new IOException(PTFUtils.sprintf("Not a directory: %s", directory));
+        throw new IOException(String.format("Not a directory: %s", directory));
       }
 
       // Symbolic links will have different canonical and absolute paths

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/exec/PTFUtils.java Sat Mar  2 21:14:40 2013
@@ -29,10 +29,8 @@ import java.beans.PropertyDescriptor;
 import java.beans.Statement;
 import java.beans.XMLDecoder;
 import java.beans.XMLEncoder;
-import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.PrintStream;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -48,13 +46,6 @@ import org.apache.hadoop.hive.serde2.typ
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
 
 public class PTFUtils {
-  public static String sprintf(String format, Object... values)
-  {
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-    PrintStream out = new PrintStream(outputStream);
-    out.printf(format, values);
-    return outputStream.toString();
-  }
 
   public static String toString(List<?> col)
   {

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFInvocationSpec.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFInvocationSpec.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFInvocationSpec.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFInvocationSpec.java Sat Mar  2 21:14:40 2013
@@ -312,7 +312,7 @@ public class PTFInvocationSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("partitionColumns=%s",PTFUtils.toString(expressions));
+      return String.format("partitionColumns=%s",PTFUtils.toString(expressions));
     }
   }
 
@@ -445,7 +445,7 @@ public class PTFInvocationSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("orderColumns=%s",PTFUtils.toString(expressions));
+      return String.format("orderColumns=%s",PTFUtils.toString(expressions));
     }
   }
 
@@ -508,7 +508,7 @@ public class PTFInvocationSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("%s %s", super.toString(), order);
+      return String.format("%s %s", super.toString(), order);
     }
   }
 

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java Sat Mar  2 21:14:40 2013
@@ -18,8 +18,6 @@
 
 package org.apache.hadoop.hive.ql.parse;
 
-import static org.apache.hadoop.hive.ql.exec.PTFUtils.sprintf;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -154,7 +152,7 @@ public class PTFTranslator {
     WindowingTableFunctionResolver tFn = (WindowingTableFunctionResolver)
         FunctionRegistry.getTableFunctionResolver(FunctionRegistry.WINDOWING_TABLE_FUNCTION);
     if (tFn == null) {
-      throw new SemanticException(sprintf("INternal Error: Unknown Table Function %s",
+      throw new SemanticException(String.format("INternal Error: Unknown Table Function %s",
           FunctionRegistry.WINDOWING_TABLE_FUNCTION));
     }
     wdwTFnDef.setName(FunctionRegistry.WINDOWING_TABLE_FUNCTION);
@@ -336,7 +334,7 @@ public class PTFTranslator {
       throws SemanticException {
     TableFunctionResolver tFn = FunctionRegistry.getTableFunctionResolver(spec.getName());
     if (tFn == null) {
-      throw new SemanticException(sprintf("Unknown Table Function %s",
+      throw new SemanticException(String.format("Unknown Table Function %s",
           spec.getName()));
     }
     PartitionedTableFunctionDef def = new PartitionedTableFunctionDef();
@@ -453,7 +451,7 @@ public class PTFTranslator {
       WindowFrameDef wdwFrame = translate(spec.getName(), inpShape, wdwSpec);
       if (!wFnInfo.isSupportsWindow() && wdwFrame != null)
       {
-        throw new SemanticException(sprintf("Function %s doesn't support windowing",
+        throw new SemanticException(String.format("Function %s doesn't support windowing",
             desc));
       }
       def.setWindowFrame(wdwFrame);
@@ -509,7 +507,7 @@ public class PTFTranslator {
       throw new SemanticException(he);
     }
     PTFTranslator.validateComparable(expDef.getOI(),
-        sprintf("Partition Expression %s is not a comparable expression", pExpr.getExpression().toStringTree()));
+        String.format("Partition Expression %s is not a comparable expression", pExpr.getExpression().toStringTree()));
     return expDef;
   }
 
@@ -526,8 +524,8 @@ public class PTFTranslator {
     }
 
     if (partitionDef == null) {
-      throw new SemanticException(sprintf(
-          "Cannot have an Order spec w/o a Partition spec", spec));
+      throw new SemanticException(String.format(
+          "Cannot have an Order spec (%s) w/o a Partition spec", spec));
     }
 
     OrderDef def = new OrderDef();
@@ -560,7 +558,7 @@ public class PTFTranslator {
     if (numOfPartColumns != 0 && numOfPartColumns != partExprs.size())
     {
       throw new SemanticException(
-          sprintf(
+          String.format(
                   "all partition columns must be in order clause(%s) or none should be specified",
                   spec));
     }
@@ -597,7 +595,7 @@ public class PTFTranslator {
       throw new SemanticException(he);
     }
     PTFTranslator.validateComparable(oexpDef.getOI(),
-        sprintf("Partition Expression %s is not a comparable expression",
+        String.format("Partition Expression %s is not a comparable expression",
             oExpr.getExpression().toStringTree()));
     return oexpDef;
   }
@@ -626,7 +624,7 @@ public class PTFTranslator {
     int cmp = s.compareTo(e);
     if (cmp > 0)
     {
-      throw new SemanticException(sprintf(
+      throw new SemanticException(String.format(
           "Window range invalid, start boundary is greater than end boundary: %s", spec));
     }
 
@@ -700,12 +698,12 @@ public class PTFTranslator {
     {
       if ( visited.contains(sourceId)) {
         visited.add(sourceId);
-        throw new SemanticException(sprintf("Cycle in Window references %s", visited));
+        throw new SemanticException(String.format("Cycle in Window references %s", visited));
       }
       WindowSpec source = windowingSpec.getWindowSpecs().get(sourceId);
       if (source == null || source.equals(dest))
       {
-        throw new SemanticException(sprintf("Window Spec %s refers to an unknown source " ,
+        throw new SemanticException(String.format("Window Spec %s refers to an unknown source " ,
             dest));
       }
 
@@ -755,7 +753,7 @@ public class PTFTranslator {
       break;
     default:
       throw new SemanticException(
-          sprintf("Primitve type %s not supported in Value Boundary expression",
+          String.format("Primitve type %s not supported in Value Boundary expression",
               pC));
     }
 
@@ -769,14 +767,14 @@ public class PTFTranslator {
     if (!PTFTranslator.isCompatible(tPart, fPart))
     {
       throw new SemanticException(
-          sprintf("Window Function '%s' has an incompatible partition clause", wFnName));
+          String.format("Window Function '%s' has an incompatible partition clause", wFnName));
     }
 
     OrderDef tOrder = ptfDesc.getFuncDef().getOrder();
     if (!PTFTranslator.isCompatible(tOrder, fOrder))
     {
       throw new SemanticException(
-          sprintf("Window Function '%s' has an incompatible order clause", wFnName));
+          String.format("Window Function '%s' has an incompatible order clause", wFnName));
     }
   }
 
@@ -869,9 +867,17 @@ public class PTFTranslator {
     }
 
     if (numOfPartColumns != 0 && numOfPartColumns != partCols.size()) {
+      List<String> partitionColumnNames = new ArrayList<String>();
+      for(PartitionExpression partitionExpression : partCols) {
+        ASTNode column = partitionExpression.getExpression();
+        if(column != null && column.getChildCount() > 0) {
+          partitionColumnNames.add(column.getChild(0).getText());
+        }
+      }
       throw new SemanticException(
-          sprintf(
-                  "all partition columns must be in order clause(%s) or none should be specified"));
+          String.format(
+                  "all partition columns %s must be in order clause or none should be specified",
+                  partitionColumnNames.toString()));
     }
     ArrayList<OrderExpression> combinedOrdExprs = new ArrayList<OrderExpression>();
     if (numOfPartColumns == 0)

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Sat Mar  2 21:14:40 2013
@@ -74,7 +74,6 @@ import org.apache.hadoop.hive.ql.exec.Ma
 import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.OperatorFactory;
 import org.apache.hadoop.hive.ql.exec.PTFOperator;
-import org.apache.hadoop.hive.ql.exec.PTFUtils;
 import org.apache.hadoop.hive.ql.exec.RecordReader;
 import org.apache.hadoop.hive.ql.exec.RecordWriter;
 import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
@@ -10996,14 +10995,13 @@ public class SemanticAnalyzer extends Ba
     for (int i = 0; i < childCount; i++) {
       ASTNode selExpr = (ASTNode) selNode.getChild(i);
       if (selExpr.getType() != HiveParser.TOK_SELEXPR) {
-        throw new SemanticException(PTFUtils.sprintf(
-            "Only Select expressions supported in dynamic select list", selectExprStr));
+        throw new SemanticException(String.format(
+            "Only Select expressions supported in dynamic select list: %s", selectExprStr));
       }
       ASTNode expr = (ASTNode) selExpr.getChild(0);
       if (expr.getType() == HiveParser.TOK_ALLCOLREF) {
         throw new SemanticException(
-            PTFUtils.sprintf("'*' column not allowed in dynamic select list",
-            selectExprStr));
+            String.format("'%s' column not allowed in dynamic select list", selectExprStr));
       }
       ASTNode aliasNode = selExpr.getChildCount() > 1
           && selExpr.getChild(1).getType() == HiveParser.Identifier ?

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java Sat Mar  2 21:14:40 2013
@@ -21,7 +21,6 @@ package org.apache.hadoop.hive.ql.parse;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.apache.hadoop.hive.ql.exec.PTFUtils;
 import org.apache.hadoop.hive.ql.parse.PTFInvocationSpec.OrderSpec;
 import org.apache.hadoop.hive.ql.parse.PTFInvocationSpec.PartitionSpec;
 import org.apache.hadoop.hive.ql.parse.PTFInvocationSpec.PartitioningSpec;
@@ -431,7 +430,7 @@ public class WindowingSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("window(start=%s, end=%s)", start, end);
+      return String.format("window(start=%s, end=%s)", start, end);
     }
 
   }
@@ -500,7 +499,7 @@ public class WindowingSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("range(%s %s)", (amt == UNBOUNDED_AMOUNT ? "Unbounded" : amt),
+      return String.format("range(%s %s)", (amt == UNBOUNDED_AMOUNT ? "Unbounded" : amt),
           direction);
     }
 
@@ -524,7 +523,7 @@ public class WindowingSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("currentRow");
+      return "currentRow";
     }
 
     @Override
@@ -591,7 +590,7 @@ public class WindowingSpec {
     @Override
     public String toString()
     {
-      return PTFUtils.sprintf("value(%s %s %s)", expression.toStringTree(), amt, direction);
+      return String.format("value(%s %s %s)", expression.toStringTree(), amt, direction);
     }
 
     public int compareTo(BoundarySpec other)

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/NPath.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/NPath.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/NPath.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/NPath.java Sat Mar  2 21:14:40 2013
@@ -117,7 +117,7 @@ public class NPath extends TableFunction
 
   static void throwErrorWithSignature(String message) throws SemanticException
   {
-    throw new SemanticException(PTFUtils.sprintf(
+    throw new SemanticException(String.format(
         "NPath signature is: SymbolPattern, one or more SymbolName, " +
         "expression pairs, the result expression as a select list. Error %s",
         message));
@@ -253,7 +253,7 @@ public class NPath extends TableFunction
             PrimitiveObjectInspector.PrimitiveCategory.STRING )
         {
           throwErrorWithSignature(
-              PTFUtils.sprintf("Currently a Symbol Name(%s) must be a Constant String",
+              String.format("Currently a Symbol Name(%s) must be a Constant String",
                   symbolNameArg.getExpressionTreeString()));
         }
         String symbolName = ((ConstantObjectInspector)symbolNameArgOI).
@@ -265,7 +265,7 @@ public class NPath extends TableFunction
               ((PrimitiveObjectInspector)symolExprArgOI).getPrimitiveCategory() !=
               PrimitiveObjectInspector.PrimitiveCategory.BOOLEAN )
         {
-          throwErrorWithSignature(PTFUtils.sprintf("Currently a Symbol Expression(%s) " +
+          throwErrorWithSignature(String.format("Currently a Symbol Expression(%s) " +
           		"must be a boolean expression", symolExprArg.getExpressionTreeString()));
         }
         evaluator.symInfo.add(symbolName, symolExprArg);
@@ -668,7 +668,7 @@ public class NPath extends TableFunction
         Object[] symbolDetails = symbolExprEvalMap.get(symbol.toLowerCase());
         if ( symbolDetails == null )
         {
-          throw new SemanticException(PTFUtils.sprintf("Unknown Symbol %s", symbol));
+          throw new SemanticException(String.format("Unknown Symbol %s", symbol));
         }
 
         ExprNodeEvaluator symbolExprEval = (ExprNodeEvaluator) symbolDetails[0];

Modified: hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java
URL: http://svn.apache.org/viewvc/hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java?rev=1451943&r1=1451942&r2=1451943&view=diff
==============================================================================
--- hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java (original)
+++ hive/branches/ptf-windowing/ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/TableFunctionEvaluator.java Sat Mar  2 21:14:40 2013
@@ -18,8 +18,6 @@
 
 package org.apache.hadoop.hive.ql.udf.ptf;
 
-import static org.apache.hadoop.hive.ql.exec.PTFUtils.sprintf;
-
 import org.apache.hadoop.hive.ql.exec.PTFOperator;
 import org.apache.hadoop.hive.ql.exec.PTFPartition;
 import org.apache.hadoop.hive.ql.exec.PTFPartition.PTFPartitionIterator;
@@ -158,7 +156,7 @@ public abstract class TableFunctionEvalu
   {
     if ( !isTransformsRawInput())
     {
-      throw new HiveException(sprintf("Internal Error: mapExecute called on function (%s)that has no Map Phase", tDef.getName()));
+      throw new HiveException(String.format("Internal Error: mapExecute called on function (%s)that has no Map Phase", tDef.getName()));
     }
     return _transformRawInput(iPart);
   }