You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by br...@apache.org on 2013/10/22 19:59:08 UTC

svn commit: r1534711 [8/15] - in /hive/branches/maven: ./ ant/src/org/apache/hadoop/hive/ant/ beeline/src/java/org/apache/hive/beeline/ bin/ bin/ext/ cli/src/java/org/apache/hadoop/hive/cli/ common/ common/src/java/org/apache/hadoop/hive/common/type/ c...

Modified: hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorMathFunctions.java
URL: http://svn.apache.org/viewvc/hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorMathFunctions.java?rev=1534711&r1=1534710&r2=1534711&view=diff
==============================================================================
--- hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorMathFunctions.java (original)
+++ hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorMathFunctions.java Tue Oct 22 17:58:59 2013
@@ -38,7 +38,7 @@ import org.junit.Test;
 
 
 public class TestVectorMathFunctions {
-  
+
   private static final double eps = 1.0e-7;
   private static boolean equalsWithinTolerance(double a, double b) {
     return Math.abs(a - b) < eps;
@@ -58,7 +58,7 @@ public class TestVectorMathFunctions {
     Assert.assertEquals(1d, resultV.vector[4]);
     Assert.assertEquals(1d, resultV.vector[5]);
     Assert.assertEquals(2d, resultV.vector[6]);
-    
+
     // spot check null propagation
     b.cols[0].noNulls = false;
     b.cols[0].isNull[3] = true;
@@ -66,28 +66,29 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(true, resultV.isNull[3]);
     Assert.assertEquals(false, resultV.noNulls);
-    
+
     // check isRepeating propagation
     b.cols[0].isRepeating = true;
     resultV.isRepeating = false;
     expr.evaluate(b);
     Assert.assertEquals(-2d, resultV.vector[0]);
-    Assert.assertEquals(true, resultV.isRepeating);   
-    
+    Assert.assertEquals(true, resultV.isRepeating);
+
     resultV.isRepeating = false;
     b.cols[0].noNulls = true;
     expr.evaluate(b);
     Assert.assertEquals(-2d, resultV.vector[0]);
-    Assert.assertEquals(true, resultV.isRepeating);   
+    Assert.assertEquals(true, resultV.isRepeating);
   }
-  
+
   @Test
   public void testRoundToDecimalPlaces() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
-    VectorExpression expr = new RoundDoubleToDoubleWithNumDigits(0, 4, 1);
+    VectorExpression expr = new RoundWithNumDigitsDoubleToDouble(0, 1);
+    ((ISetLongArg) expr).setArg(4);  // set number of digits
     expr.evaluate(b);
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
-    
+
     // Verify result is rounded to 4 digits
     Assert.assertEquals(1.2346d, resultV.vector[7]);
   }
@@ -105,14 +106,14 @@ public class TestVectorMathFunctions {
     dcv.vector[4] = 0.5d;
     dcv.vector[5] = 0.7d;
     dcv.vector[6] = 1.5d;
-    
+
     batch.cols[0] = dcv;
     batch.cols[1] = lcv;
-      
+
     batch.size = 7;
     return batch;
   }
-  
+
   public static VectorizedRowBatch getVectorizedRowBatchDoubleInDoubleOut() {
     VectorizedRowBatch batch = new VectorizedRowBatch(2);
     DoubleColumnVector inV;
@@ -127,14 +128,14 @@ public class TestVectorMathFunctions {
     inV.vector[5] = 0.7d;
     inV.vector[6] = 1.5d;
     inV.vector[7] = 1.2345678d;
-    
+
     batch.cols[0] = inV;
     batch.cols[1] = outV;
-      
+
     batch.size = 8;
     return batch;
   }
-  
+
   public static VectorizedRowBatch getVectorizedRowBatchLongInDoubleOut() {
     VectorizedRowBatch batch = new VectorizedRowBatch(2);
     LongColumnVector lcv;
@@ -146,14 +147,14 @@ public class TestVectorMathFunctions {
     lcv.vector[2] = 0;
     lcv.vector[3] = 1;
     lcv.vector[4] = 2;
-    
+
     batch.cols[0] = lcv;
     batch.cols[1] = dcv;
-      
+
     batch.size = 5;
     return batch;
   }
-  
+
   public static VectorizedRowBatch getVectorizedRowBatchLongInLongOut() {
     VectorizedRowBatch batch = new VectorizedRowBatch(2);
     LongColumnVector inV, outV;
@@ -161,14 +162,14 @@ public class TestVectorMathFunctions {
     outV = new LongColumnVector();
     inV.vector[0] = -2;
     inV.vector[1] = 2;
- 
+
     batch.cols[0] = inV;
     batch.cols[1] = outV;
-      
+
     batch.size = 2;
     return batch;
   }
-  
+
   public static VectorizedRowBatch getBatchForStringMath() {
     VectorizedRowBatch batch = new VectorizedRowBatch(3);
     LongColumnVector inL;
@@ -184,7 +185,7 @@ public class TestVectorMathFunctions {
       inS.setVal(0, "00".getBytes("UTF-8"), 0, 2);
       inS.setVal(1, "3232".getBytes("UTF-8"), 0, 4);
       byte[] bad = "bad data".getBytes("UTF-8");
-      inS.setVal(2, bad, 0, bad.length);  
+      inS.setVal(2, bad, 0, bad.length);
     } catch (UnsupportedEncodingException e) {
       e.printStackTrace();
       Assert.assertTrue(false);
@@ -193,12 +194,12 @@ public class TestVectorMathFunctions {
     batch.cols[0] = inS;
     batch.cols[1] = inL;
     batch.cols[2] = outS;
-      
+
     batch.size = 3;
     return batch;
   }
-  
-  /* 
+
+  /*
    * The following tests spot-check that vectorized functions with signature
    * DOUBLE func(DOUBLE) that came from template ColumnUnaryFunc.txt
    * get the right result. Null propagation, isRepeating
@@ -214,7 +215,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.sin(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorCos() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -224,7 +225,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.cos(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorTan() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -234,7 +235,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.tan(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorASin() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -244,7 +245,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.asin(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorACos() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -254,7 +255,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.acos(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorATan() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -264,7 +265,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.atan(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorDegrees() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -274,7 +275,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.toDegrees(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorRadians() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -284,7 +285,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.toRadians(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorFloor() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInLongOut();
@@ -295,7 +296,7 @@ public class TestVectorMathFunctions {
     Assert.assertEquals(-2, resultV.vector[0]);
     Assert.assertEquals(1, resultV.vector[6]);
   }
-  
+
   @Test
   public void testVectorCeil() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInLongOut();
@@ -306,7 +307,7 @@ public class TestVectorMathFunctions {
     Assert.assertEquals(-1, resultV.vector[0]);
     Assert.assertEquals(2, resultV.vector[6]);
   }
-  
+
   @Test
   public void testVectorExp() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -316,10 +317,10 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.exp(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorLn() {
-    
+
     // test double->double version
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
@@ -327,7 +328,7 @@ public class TestVectorMathFunctions {
     VectorExpression expr = new FuncLnDoubleToDouble(0, 1);
     expr.evaluate(b);
     Assert.assertEquals(Math.log(0.5), resultV.vector[4]);
-    
+
     // test long->double version
     b = getVectorizedRowBatchLongInDoubleOut();
     resultV = (DoubleColumnVector) b.cols[1];
@@ -336,10 +337,10 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.log(2), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorLog2() {
-    
+
     // test double->double version
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
@@ -347,7 +348,7 @@ public class TestVectorMathFunctions {
     VectorExpression expr = new FuncLog2DoubleToDouble(0, 1);
     expr.evaluate(b);
     Assert.assertEquals(Math.log(0.5d) / Math.log(2), resultV.vector[4]);
-    
+
     // test long->double version
     b = getVectorizedRowBatchLongInDoubleOut();
     resultV = (DoubleColumnVector) b.cols[1];
@@ -356,10 +357,10 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.log(1) / Math.log(2), resultV.vector[3]);
   }
-  
+
   @Test
   public void testVectorLog10() {
-    
+
     // test double->double version
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
@@ -367,7 +368,7 @@ public class TestVectorMathFunctions {
     VectorExpression expr = new FuncLog10DoubleToDouble(0, 1);
     expr.evaluate(b);
     Assert.assertTrue(equalsWithinTolerance(Math.log(0.5d) / Math.log(10), resultV.vector[4]));
-    
+
     // test long->double version
     b = getVectorizedRowBatchLongInDoubleOut();
     resultV = (DoubleColumnVector) b.cols[1];
@@ -376,7 +377,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.log(1) / Math.log(10), resultV.vector[3]);
   }
-  
+
   @Test
   public void testVectorRand() {
     VectorizedRowBatch b = new VectorizedRowBatch(1);
@@ -393,13 +394,13 @@ public class TestVectorMathFunctions {
       Assert.assertTrue(v.vector[i] >= 0.0 && v.vector[i] <= 1.0);
     }
     double avg = sum / n;
-    
+
     /* The random values must be between 0 and 1, distributed uniformly.
-     * So the average value of a large set should be about 0.5. Verify it is 
+     * So the average value of a large set should be about 0.5. Verify it is
      * close to this value.
      */
     Assert.assertTrue(avg > 0.3 && avg < 0.7);
-    
+
     // Now, test again with a seed.
     Arrays.fill(v.vector, 0);
     expr = new FuncRand(99999, 0);
@@ -412,29 +413,55 @@ public class TestVectorMathFunctions {
     avg = sum / n;
     Assert.assertTrue(avg > 0.3 && avg < 0.7);
   }
-  
+
   @Test
   public void testVectorLogBase() {
-    
+
     // test double->double version
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
     b.cols[0].noNulls = true;
-    VectorExpression expr = new FuncLogWithBaseDoubleToDouble(0, 10.0d, 1);
+    VectorExpression expr = new FuncLogWithBaseDoubleToDouble(0, 1);
+    ((ISetDoubleArg) expr).setArg(10.0d);  // set base
     expr.evaluate(b);
     Assert.assertTrue(equalsWithinTolerance(Math.log(0.5d) / Math.log(10), resultV.vector[4]));
   }
-  
+
+  @Test
+  public void testVectorPosMod() {
+
+    // test double->double version
+    VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
+    DoubleColumnVector inV = (DoubleColumnVector) b.cols[0];
+    DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
+    b.cols[0].noNulls = true;
+    inV.vector[4] = -4.0;
+    VectorExpression expr = new PosModDoubleToDouble(0, 1);
+    ((ISetDoubleArg) expr).setArg(0.3d);  // set base
+    expr.evaluate(b);
+    Assert.assertTrue(equalsWithinTolerance(((-4.0d % 0.3d) + 0.3d) % 0.3d, resultV.vector[4]));
+
+    // test long->long version
+    b = getVectorizedRowBatchLongInLongOut();
+    LongColumnVector resV2 = (LongColumnVector) b.cols[1];
+    b.cols[0].noNulls = true;
+    expr = new PosModLongToLong(0, 1);
+    ((ISetLongArg) expr).setArg(3);
+    expr.evaluate(b);
+    Assert.assertEquals(((-2 % 3) + 3) % 3, resV2.vector[0]);
+  }
+
   @Test
   public void testVectorPower() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
     b.cols[0].noNulls = true;
-    VectorExpression expr = new FuncPowerDoubleToDouble(0, 2.0d, 1);
+    VectorExpression expr = new FuncPowerDoubleToDouble(0, 1);
+    ((ISetDoubleArg) expr).setArg(2.0d);  // set power
     expr.evaluate(b);
     Assert.assertTrue(equalsWithinTolerance(0.5d * 0.5d, resultV.vector[4]));
   }
-  
+
   @Test
   public void testVectorSqrt() {
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
@@ -444,10 +471,10 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(Math.sqrt(0.5d), resultV.vector[4]);
   }
-  
+
   @Test
   public void testVectorAbs() {
-    
+
     // test double->double version
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
@@ -456,7 +483,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(1.5, resultV.vector[0]);
     Assert.assertEquals(0.5, resultV.vector[4]);
-    
+
     // test long->long version
     b = getVectorizedRowBatchLongInLongOut();
     LongColumnVector resultVLong = (LongColumnVector) b.cols[1];
@@ -466,10 +493,10 @@ public class TestVectorMathFunctions {
     Assert.assertEquals(2, resultVLong.vector[0]);
     Assert.assertEquals(2, resultVLong.vector[1]);
   }
-  
+
   @Test
   public void testVectorSign() {
-    
+
     // test double->double version
     VectorizedRowBatch b = getVectorizedRowBatchDoubleInDoubleOut();
     DoubleColumnVector resultV = (DoubleColumnVector) b.cols[1];
@@ -478,7 +505,7 @@ public class TestVectorMathFunctions {
     expr.evaluate(b);
     Assert.assertEquals(-1.0d, resultV.vector[0]);
     Assert.assertEquals(1.0d, resultV.vector[4]);
-    
+
     // test long->double version
     b = getVectorizedRowBatchLongInDoubleOut();
     resultV = (DoubleColumnVector) b.cols[1];
@@ -486,84 +513,41 @@ public class TestVectorMathFunctions {
     expr = new FuncSignLongToDouble(0, 1);
     expr.evaluate(b);
     Assert.assertEquals(-1.0d, resultV.vector[0]);
-    Assert.assertEquals(1.0d, resultV.vector[4]);   
+    Assert.assertEquals(1.0d, resultV.vector[4]);
   }
-  
-  @Test 
+
+  @Test
   public void testVectorBin() {
-    
+
     // test conversion of long->string
     VectorizedRowBatch b = getBatchForStringMath();
     BytesColumnVector resultV = (BytesColumnVector) b.cols[2];
     b.cols[0].noNulls = true;
-    VectorExpression expr = new FuncBin(1, 2); 
+    VectorExpression expr = new FuncBin(1, 2);
     expr.evaluate(b);
     String s = new String(resultV.vector[1], resultV.start[1], resultV.length[1]);
     Assert.assertEquals("11111111", s);
   }
-  
-  @Test 
+
+  @Test
   public void testVectorHex() {
-    
+
     // test long->string version
     VectorizedRowBatch b = getBatchForStringMath();
     BytesColumnVector resultV = (BytesColumnVector) b.cols[2];
     b.cols[1].noNulls = true;
-    VectorExpression expr = new FuncHex(1, 2); 
+    VectorExpression expr = new FuncHex(1, 2);
     expr.evaluate(b);
     String s = new String(resultV.vector[1], resultV.start[1], resultV.length[1]);
     Assert.assertEquals("FF", s);
-    
+
     // test string->string version
     b = getBatchForStringMath();
     resultV = (BytesColumnVector) b.cols[2];
     b.cols[0].noNulls = true;
-    expr = new StringHex(0, 2); 
+    expr = new StringHex(0, 2);
     expr.evaluate(b);
     s = new String(resultV.vector[1], resultV.start[1], resultV.length[1]);
     Assert.assertEquals("33323332", s);
   }
-  
-  @Test
-  public void testVectorUnhex() {
-    
-    // test string->string version
-    VectorizedRowBatch b = getBatchForStringMath();
-    BytesColumnVector resultV = (BytesColumnVector) b.cols[2];
-    b.cols[0].noNulls = true;
-    resultV.noNulls = true;
-    VectorExpression expr = new StringUnhex(0, 2); 
-    expr.evaluate(b);
-    String s = new String(resultV.vector[1], resultV.start[1], resultV.length[1]);
-    Assert.assertEquals("22", s);
-    
-    // check for NULL output for entry 2 ("bad data")
-    Assert.assertEquals(false, resultV.noNulls);
-    Assert.assertEquals(true, resultV.isNull[2]);
-  }
-  
-  @Test
-  public void testVectorConv() {
-    
-    // test string->string version
-    VectorizedRowBatch b = getBatchForStringMath();
-    BytesColumnVector resultV = (BytesColumnVector) b.cols[2];
-    b.cols[0].noNulls = true;
-    resultV.noNulls = true;
-    VectorExpression expr = new StringConv(0, 2, 10, 16); 
-    expr.evaluate(b);
-    String s[] = new String[3];
-    try {
-      s[0] = new String(resultV.vector[0], resultV.start[0], resultV.length[0], "UTF-8");
-      s[1] = new String(resultV.vector[1], resultV.start[1], resultV.length[1], "UTF-8");
-    } catch (UnsupportedEncodingException e) {
-      e.printStackTrace();
-    }
-    Assert.assertEquals("0", s[0]);
-    Assert.assertEquals("CA0", s[1]);
-    
-    // Note: the documentation says that "bad data" should translate to NULL output,
-    // but that is not the case in the existing code, which returns "0". So, this test skips 
-    // checking output for element 2.
-  }
 }

Modified: hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
URL: http://svn.apache.org/viewvc/hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java?rev=1534711&r1=1534710&r2=1534711&view=diff
==============================================================================
--- hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java (original)
+++ hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java Tue Oct 22 17:58:59 2013
@@ -33,6 +33,9 @@ import org.apache.hadoop.hive.ql.exec.ve
 import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FilterStringScalarEqualStringColumn;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FilterStringScalarGreaterStringColumn;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FilterStringScalarLessEqualStringColumn;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.StringColEqualStringScalar;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.StringColLessStringColumn;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.StringScalarEqualStringColumn;
 import org.apache.hadoop.io.Text;
 import org.junit.Test;
 
@@ -179,6 +182,29 @@ public class TestVectorStringExpressions
   }
 
   @Test
+  public void testStringColCompareStringScalarProjection() {
+    VectorizedRowBatch batch = makeStringBatch();
+    VectorExpression expr;
+
+    expr = new StringColEqualStringScalar(0, red2, 2);
+    expr.evaluate(batch);
+    Assert.assertEquals(3, batch.size);
+    LongColumnVector outVector = (LongColumnVector) batch.cols[2];
+    Assert.assertEquals(1, outVector.vector[0]);
+    Assert.assertEquals(0, outVector.vector[1]);
+    Assert.assertEquals(0, outVector.vector[2]);
+
+    batch = makeStringBatch();
+    expr = new StringColEqualStringScalar(0, green, 2);
+    expr.evaluate(batch);
+    Assert.assertEquals(3, batch.size);
+    outVector = (LongColumnVector) batch.cols[2];
+    Assert.assertEquals(0, outVector.vector[0]);
+    Assert.assertEquals(1, outVector.vector[1]);
+    Assert.assertEquals(0, outVector.vector[2]);
+  }
+
+  @Test
   // Test string literal to string column comparison
   public void testStringScalarCompareStringCol() {
     VectorizedRowBatch batch = makeStringBatch();
@@ -207,7 +233,30 @@ public class TestVectorStringExpressions
     Assert.assertTrue(batch.selected[0] == 0);
     Assert.assertTrue(batch.selected[1] == 1);
   }
-  
+
+  @Test
+  public void testStringScalarCompareStringColProjection() {
+    VectorizedRowBatch batch = makeStringBatch();
+    VectorExpression expr;
+
+    expr = new StringScalarEqualStringColumn(0, red2, 2);
+    expr.evaluate(batch);
+    Assert.assertEquals(3, batch.size);
+    LongColumnVector outVector = (LongColumnVector) batch.cols[2];
+    Assert.assertEquals(1, outVector.vector[0]);
+    Assert.assertEquals(0, outVector.vector[1]);
+    Assert.assertEquals(0, outVector.vector[2]);
+
+    batch = makeStringBatch();
+    expr = new StringScalarEqualStringColumn(0, green, 2);
+    expr.evaluate(batch);
+    Assert.assertEquals(3, batch.size);
+    outVector = (LongColumnVector) batch.cols[2];
+    Assert.assertEquals(0, outVector.vector[0]);
+    Assert.assertEquals(1, outVector.vector[1]);
+    Assert.assertEquals(0, outVector.vector[2]);
+  }
+
   @Test
   public void testStringColCompareStringColFilter() {
     VectorizedRowBatch batch;
@@ -301,7 +350,8 @@ public class TestVectorStringExpressions
     batch.cols[1].isRepeating = true;
     batch.cols[1].noNulls = true;
     expr.evaluate(batch);
-    Assert.assertEquals(3, batch.size);
+    Assert.assertEquals(2, batch.size);
+    Assert.assertEquals(0, batch.selected[0]);
     Assert.assertEquals(1, batch.selected[1]);
 
     // left and right repeat
@@ -359,12 +409,269 @@ public class TestVectorStringExpressions
     Assert.assertEquals(0, batch.size);
   }
 
+  @Test
+  public void testStringColCompareStringColProjection() {
+    VectorizedRowBatch batch;
+    VectorExpression expr;
+    long [] outVector;
+
+    /* input data
+     *
+     * col0       col1
+     * ===============
+     * blue       red
+     * green      green
+     * red        blue
+     * NULL       red            col0 data is empty string if we un-set NULL property
+     */
+
+    // nulls possible on left, right
+    batch = makeStringBatchForColColCompare();
+    expr = new StringColLessStringColumn(0, 1, 3);
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(0, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertTrue(batch.cols[3].isNull[3]);
+
+    // no nulls possible
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].noNulls = true;
+    batch.cols[1].noNulls = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertTrue(batch.cols[3].noNulls);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(0, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertFalse(batch.cols[3].isNull[3]);
+    Assert.assertEquals(1, outVector[3]);
+
+    // nulls on left, no nulls on right
+    batch = makeStringBatchForColColCompare();
+    batch.cols[1].noNulls = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(0, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertTrue(batch.cols[3].isNull[3]);
+
+    // nulls on right, no nulls on left
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].noNulls = true;
+    batch.cols[1].isNull[3] = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(0, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertTrue(batch.cols[3].isNull[3]);
+
+    // Now vary isRepeating
+    // nulls possible on left, right
+
+    // left repeats
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(1, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertFalse(batch.cols[3].isNull[3]);
+    Assert.assertEquals(1, outVector[3]);
+
+
+    // right repeats
+    batch = makeStringBatchForColColCompare();
+    batch.cols[1].isRepeating = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(1, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertTrue(batch.cols[3].isNull[3]);
+
+    // left and right repeat
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[1].isRepeating = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertTrue(batch.cols[3].isRepeating);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+
+    // Now vary isRepeating
+    // nulls possible only on left
+
+    // left repeats
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[1].noNulls = true;
+    expr.evaluate(batch);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(1, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertFalse(batch.cols[3].isNull[3]);
+    Assert.assertEquals(1, outVector[3]);
+
+    // left repeats and is null
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[1].noNulls = true;
+    batch.cols[0].isNull[0] = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertTrue(batch.cols[3].isRepeating);
+    Assert.assertTrue(batch.cols[3].isNull[0]);
+
+    // right repeats
+    batch = makeStringBatchForColColCompare();
+    batch.cols[1].isRepeating = true;
+    batch.cols[1].noNulls = true;
+    expr.evaluate(batch);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(1, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertTrue(batch.cols[3].isNull[3]);
+
+    // left and right repeat
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[1].isRepeating = true;
+    batch.cols[1].noNulls = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertTrue(batch.cols[3].isRepeating);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+
+
+
+    // Now vary isRepeating
+    // nulls possible only on right
+
+    // left repeats
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[0].noNulls = true;
+    batch.cols[1].isNull[0] = true;
+    expr.evaluate(batch);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertTrue(batch.cols[3].isNull[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(1, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertFalse(batch.cols[3].isNull[3]);
+    Assert.assertEquals(1, outVector[3]);
+
+    // right repeats
+    batch = makeStringBatchForColColCompare();
+    batch.cols[1].isRepeating = true;
+    batch.cols[0].noNulls = true;
+    expr.evaluate(batch);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+    Assert.assertFalse(batch.cols[3].isNull[1]);
+    Assert.assertEquals(1, outVector[1]);
+    Assert.assertFalse(batch.cols[3].isNull[2]);
+    Assert.assertEquals(0, outVector[2]);
+    Assert.assertFalse(batch.cols[3].isNull[3]);
+    Assert.assertEquals(1, outVector[3]);
+
+    // right repeats and is null
+    batch = makeStringBatchForColColCompare();
+    batch.cols[1].isRepeating = true;
+    batch.cols[0].noNulls = true;
+    batch.cols[1].isNull[0] = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertTrue(batch.cols[3].isRepeating);
+    Assert.assertTrue(batch.cols[3].isNull[0]);
+
+    // left and right repeat
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[1].isRepeating = true;
+    batch.cols[0].noNulls = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    outVector = ((LongColumnVector) batch.cols[3]).vector;
+    Assert.assertTrue(batch.cols[3].isRepeating);
+    Assert.assertFalse(batch.cols[3].isNull[0]);
+    Assert.assertEquals(1, outVector[0]);
+
+    // left and right repeat and right is null
+    batch = makeStringBatchForColColCompare();
+    batch.cols[0].isRepeating = true;
+    batch.cols[1].isRepeating = true;
+    batch.cols[0].noNulls = true;
+    batch.cols[1].isNull[0] = true;
+    expr.evaluate(batch);
+    Assert.assertEquals(4, batch.size);
+    Assert.assertFalse(batch.cols[3].noNulls);
+    Assert.assertTrue(batch.cols[3].isRepeating);
+    Assert.assertTrue(batch.cols[3].isNull[0]);
+  }
+
   VectorizedRowBatch makeStringBatch() {
     // create a batch with one string ("Bytes") column
-    VectorizedRowBatch batch = new VectorizedRowBatch(2);
+    VectorizedRowBatch batch = new VectorizedRowBatch(3);
     BytesColumnVector v = new BytesColumnVector();
     batch.cols[0] = v;
     batch.cols[1] = new BytesColumnVector();          // to hold output if needed
+    batch.cols[2] = new LongColumnVector(batch.size); // to hold boolean output
     /*
      * Add these 3 values:
      *
@@ -580,12 +887,13 @@ public class TestVectorStringExpressions
   }
 
   private VectorizedRowBatch makeStringBatchForColColCompare() {
-    VectorizedRowBatch batch = new VectorizedRowBatch(3);
+    VectorizedRowBatch batch = new VectorizedRowBatch(4);
     BytesColumnVector v = new BytesColumnVector();
     batch.cols[0] = v;
     BytesColumnVector v2 = new BytesColumnVector();
     batch.cols[1] = v2;
     batch.cols[2] = new BytesColumnVector();
+    batch.cols[3] = new LongColumnVector();
 
     v.setRef(0, blue, 0, blue.length);
     v.isNull[0] = false;
@@ -1163,7 +1471,7 @@ public class TestVectorStringExpressions
     v = new BytesColumnVector();
     v.isRepeating = false;
     v.noNulls = true;
-    
+
     // string is 2 chars long (a 3 byte and a 4 byte char)
     v.setRef(0, multiByte, 3, 7);
     batch.cols[0] = v;
@@ -1262,6 +1570,36 @@ public class TestVectorStringExpressions
         )
     );
 
+    //Testing substring index starting with 1 and zero length
+
+    outV.isRepeating = true;
+    outV.noNulls = false;
+
+    expr = new StringSubstrColStartLen(0, 1, 0, 1);
+    outCol = (BytesColumnVector) batch.cols[1];
+    expr.evaluate(batch);
+    Assert.assertEquals(3, batch.size);
+    Assert.assertTrue(outCol.noNulls);
+    Assert.assertFalse(outCol.isRepeating);
+    Assert.assertEquals(0,
+        StringExpr.compare(
+            data1, 1, 0, outCol.vector[0], outCol.start[0], outCol.length[0]
+        )
+    );
+
+    Assert.assertEquals(0,
+        StringExpr.compare(
+            data2, 1, 0, outCol.vector[1], outCol.start[1], outCol.length[1]
+        )
+    );
+
+    Assert.assertEquals(0,
+        StringExpr.compare(
+            data3, 1, 0, outCol.vector[2], outCol.start[2], outCol.length[2]
+        )
+    );
+
+
     //Testing substring index starting with 0 and length equal to array length
 
     outV.isRepeating = true;
@@ -1414,7 +1752,7 @@ public class TestVectorStringExpressions
         )
     );
   }
-  
+
   @Test
   public void testVectorLTrim() {
     VectorizedRowBatch b = makeTrimBatch();
@@ -1425,7 +1763,7 @@ public class TestVectorStringExpressions
         StringExpr.compare(emptyString, 0, 0, outV.vector[0], 0, 0));
     Assert.assertEquals(0,
         StringExpr.compare(blanksLeft, 2, 3, outV.vector[1], outV.start[1], outV.length[1]));
-    Assert.assertEquals(0, 
+    Assert.assertEquals(0,
         StringExpr.compare(blanksRight, 0, 5, outV.vector[2], outV.start[2], outV.length[2]));
     Assert.assertEquals(0,
         StringExpr.compare(blanksBoth, 2, 5, outV.vector[3], outV.start[3], outV.length[3]));
@@ -1445,7 +1783,7 @@ public class TestVectorStringExpressions
         StringExpr.compare(emptyString, 0, 0, outV.vector[0], 0, 0));
     Assert.assertEquals(0,
         StringExpr.compare(blanksLeft, 0, 5, outV.vector[1], outV.start[1], outV.length[1]));
-    Assert.assertEquals(0, 
+    Assert.assertEquals(0,
         StringExpr.compare(blanksRight, 0, 3, outV.vector[2], outV.start[2], outV.length[2]));
     Assert.assertEquals(0,
         StringExpr.compare(blanksBoth, 0, 5, outV.vector[3], outV.start[3], outV.length[3]));
@@ -1454,7 +1792,7 @@ public class TestVectorStringExpressions
     Assert.assertEquals(0,
         StringExpr.compare(blankString, 0, 0, outV.vector[5], outV.start[5], outV.length[5]));
   }
-  
+
   @Test
   public void testVectorTrim() {
     VectorizedRowBatch b = makeTrimBatch();
@@ -1465,7 +1803,7 @@ public class TestVectorStringExpressions
         StringExpr.compare(emptyString, 0, 0, outV.vector[0], 0, 0));
     Assert.assertEquals(0,
         StringExpr.compare(blanksLeft, 2, 3, outV.vector[1], outV.start[1], outV.length[1]));
-    Assert.assertEquals(0, 
+    Assert.assertEquals(0,
         StringExpr.compare(blanksRight, 0, 3, outV.vector[2], outV.start[2], outV.length[2]));
     Assert.assertEquals(0,
         StringExpr.compare(blanksBoth, 2, 3, outV.vector[3], outV.start[3], outV.length[3]));
@@ -1474,7 +1812,7 @@ public class TestVectorStringExpressions
     Assert.assertEquals(0,
         StringExpr.compare(blankString, 0, 0, outV.vector[5], outV.start[5], outV.length[5]));
   }
-  
+
   // Make a batch to test the trim functions.
   private VectorizedRowBatch makeTrimBatch() {
     VectorizedRowBatch b = new VectorizedRowBatch(2);

Modified: hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
URL: http://svn.apache.org/viewvc/hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java?rev=1534711&r1=1534710&r2=1534711&view=diff
==============================================================================
--- hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java (original)
+++ hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java Tue Oct 22 17:58:59 2013
@@ -361,7 +361,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("2000-03-12 15:00:00"),
         tso.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(12))));
-    assertEquals(new HiveDecimal("12345678.6547456"),
+    assertEquals(HiveDecimal.create("12345678.6547456"),
         dco.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(13))));
 
@@ -443,7 +443,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("2000-03-12 15:00:01"),
         tso.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(12))));
-    assertEquals(new HiveDecimal("12345678.6547457"),
+    assertEquals(HiveDecimal.create("12345678.6547457"),
         dco.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
             fields.get(13))));
 
@@ -963,7 +963,7 @@ public class TestOrcFile {
     synchronized (TestOrcFile.class) {
       inspector = OrcStruct.createObjectInspector(0, types);
     }
-    HiveDecimal maxValue = new HiveDecimal("100000000000000000000");
+    HiveDecimal maxValue = HiveDecimal.create("100000000000000000000");
     Writer writer = OrcFile.createWriter(testFilePath,
                                          OrcFile.writerOptions(conf)
                                          .inspector(inspector)
@@ -975,13 +975,13 @@ public class TestOrcFile {
     OrcUnion union = new OrcUnion();
     row.setFieldValue(1, union);
     row.setFieldValue(0, Timestamp.valueOf("2000-03-12 15:00:00"));
-    HiveDecimal value = new HiveDecimal("12345678.6547456");
+    HiveDecimal value = HiveDecimal.create("12345678.6547456");
     row.setFieldValue(2, value);
     union.set((byte) 0, new IntWritable(42));
     writer.addRow(row);
     row.setFieldValue(0, Timestamp.valueOf("2000-03-20 12:00:00.123456789"));
     union.set((byte) 1, new Text("hello"));
-    value = new HiveDecimal("-5643.234");
+    value = HiveDecimal.create("-5643.234");
     row.setFieldValue(2, value);
     writer.addRow(row);
     row.setFieldValue(0, null);
@@ -995,7 +995,7 @@ public class TestOrcFile {
     writer.addRow(row);
     union.set((byte) 0, new IntWritable(200000));
     row.setFieldValue(0, Timestamp.valueOf("1900-01-01 00:00:00"));
-    value = new HiveDecimal("100000000000000000000");
+    value = HiveDecimal.create("100000000000000000000");
     row.setFieldValue(2, value);
     writer.addRow(row);
     Random rand = new Random(42);
@@ -1006,7 +1006,7 @@ public class TestOrcFile {
       } else {
         union.set((byte) 1, new Text(new Integer(i*i).toString()));
       }
-      value = new HiveDecimal(new BigInteger(118, rand),
+      value = HiveDecimal.create(new BigInteger(118, rand),
           rand.nextInt(36));
       row.setFieldValue(2, value);
       if (maxValue.compareTo(value) < 0) {
@@ -1034,7 +1034,7 @@ public class TestOrcFile {
     DecimalColumnStatistics stats =
         (DecimalColumnStatistics) reader.getStatistics()[5];
     assertEquals(303, stats.getNumberOfValues());
-    assertEquals(new HiveDecimal("-5643.234"), stats.getMinimum());
+    assertEquals(HiveDecimal.create("-5643.234"), stats.getMinimum());
     assertEquals(maxValue, stats.getMaximum());
     assertEquals(null, stats.getSum());
     int stripeCount = 0;
@@ -1067,14 +1067,14 @@ public class TestOrcFile {
     union = (OrcUnion) row.getFieldValue(1);
     assertEquals(0, union.getTag());
     assertEquals(new IntWritable(42), union.getObject());
-    assertEquals(new HiveDecimal("12345678.6547456"), row.getFieldValue(2));
+    assertEquals(HiveDecimal.create("12345678.6547456"), row.getFieldValue(2));
     row = (OrcStruct) rows.next(row);
     assertEquals(2, rows.getRowNumber());
     assertEquals(Timestamp.valueOf("2000-03-20 12:00:00.123456789"),
         row.getFieldValue(0));
     assertEquals(1, union.getTag());
     assertEquals(new Text("hello"), union.getObject());
-    assertEquals(new HiveDecimal("-5643.234"), row.getFieldValue(2));
+    assertEquals(HiveDecimal.create("-5643.234"), row.getFieldValue(2));
     row = (OrcStruct) rows.next(row);
     assertEquals(null, row.getFieldValue(0));
     assertEquals(null, row.getFieldValue(1));
@@ -1094,7 +1094,7 @@ public class TestOrcFile {
     assertEquals(Timestamp.valueOf("1900-01-01 00:00:00"),
         row.getFieldValue(0));
     assertEquals(new IntWritable(200000), union.getObject());
-    assertEquals(new HiveDecimal("100000000000000000000"),
+    assertEquals(HiveDecimal.create("100000000000000000000"),
                  row.getFieldValue(2));
     rand = new Random(42);
     for(int i=1900; i < 2200; ++i) {
@@ -1108,7 +1108,7 @@ public class TestOrcFile {
         assertEquals(1, union.getTag());
         assertEquals(new Text(new Integer(i*i).toString()), union.getObject());
       }
-      assertEquals(new HiveDecimal(new BigInteger(118, rand),
+      assertEquals(HiveDecimal.create(new BigInteger(118, rand),
                                    rand.nextInt(36)), row.getFieldValue(2));
     }
     for(int i=0; i < 5000; ++i) {
@@ -1130,7 +1130,7 @@ public class TestOrcFile {
         row.getFieldValue(0));
     assertEquals(1, union.getTag());
     assertEquals(new Text("hello"), union.getObject());
-    assertEquals(new HiveDecimal("-5643.234"), row.getFieldValue(2));
+    assertEquals(HiveDecimal.create("-5643.234"), row.getFieldValue(2));
     rows.close();
   }
 

Modified: hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java
URL: http://svn.apache.org/viewvc/hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java?rev=1534711&r1=1534710&r2=1534711&view=diff
==============================================================================
--- hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java (original)
+++ hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java Tue Oct 22 17:58:59 2013
@@ -398,7 +398,7 @@ public class TestOrcSerDeStats {
         Long.MAX_VALUE, (float) 1.0, -15.0, bytes(0, 1, 2, 3, 4), "hi",
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(3, "good"), inner(4, "bad")),
-        map(), Timestamp.valueOf("2000-03-12 15:00:00"), new HiveDecimal(
+        map(), Timestamp.valueOf("2000-03-12 15:00:00"), HiveDecimal.create(
             "12345678.6547456")));
     // 1 + 2 + 4 + 8 + 4 + 8 + 3 + 4 + 3 + 4 + 4 + 4 + 3 + 4 + 2 + 4 + 3 + 5 + 4 + 5 + 7 + 4 + 7 =
     // 97
@@ -407,7 +407,7 @@ public class TestOrcSerDeStats {
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(100000000, "cat"), inner(-100000, "in"), inner(1234, "hat")),
         map(inner(5, "chani"), inner(1, "mauddib")), Timestamp.valueOf("2000-03-11 15:00:00"),
-        new HiveDecimal("12345678.6547452")));
+        HiveDecimal.create("12345678.6547452")));
     writer.close();
     long rowCount = writer.getNumberOfRows();
     long rawDataSize = writer.getRawDataSize();
@@ -491,7 +491,7 @@ public class TestOrcSerDeStats {
         Long.MAX_VALUE, (float) 1.0, -15.0, bytes(0, 1, 2, 3, 4), "hi",
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(3, "good"), inner(4, "bad")),
-        map(), Timestamp.valueOf("2000-03-12 15:00:00"), new HiveDecimal(
+        map(), Timestamp.valueOf("2000-03-12 15:00:00"), HiveDecimal.create(
             "12345678.6547456")));
     // 1 + 2 + 4 + 8 + 4 + 8 + 3 + 4 + 3 + 4 + 4 + 4 + 3 + 4 + 2 + 4 + 3 + 5 + 4 + 5 + 7 + 4 + 7 =
     // 97
@@ -500,7 +500,7 @@ public class TestOrcSerDeStats {
         new MiddleStruct(inner(1, "bye"), inner(2, "sigh")),
         list(inner(100000000, "cat"), inner(-100000, "in"), inner(1234, "hat")),
         map(inner(5, "chani"), inner(1, "mauddib")), Timestamp.valueOf("2000-03-11 15:00:00"),
-        new HiveDecimal("12345678.6547452")));
+        HiveDecimal.create("12345678.6547452")));
     writer.close();
     long rowCount = writer.getNumberOfRows();
     long rawDataSize = writer.getRawDataSize();

Modified: hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java
URL: http://svn.apache.org/viewvc/hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java?rev=1534711&r1=1534710&r2=1534711&view=diff
==============================================================================
--- hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java (original)
+++ hive/branches/maven/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java Tue Oct 22 17:58:59 2013
@@ -18,20 +18,21 @@
 
 package org.apache.hadoop.hive.ql.io.sarg;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.ql.exec.Utilities;
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+
+import java.beans.XMLDecoder;
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+
 import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue;
 import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentImpl.ExpressionBuilder;
 import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentImpl.ExpressionTree;
-import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
+import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
 import org.apache.mina.util.IdentityHashSet;
 import org.junit.Test;
 
-import java.util.List;
-
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertTrue;
-
 /**
  * These test the SARG implementation.
  * The xml files were generated by setting hive.optimize.index.filter
@@ -224,6 +225,23 @@ public class TestSearchArgumentImpl {
     }
   }
 
+  private ExprNodeGenericFuncDesc getFuncDesc (String xmlSerialized) {
+    byte[] bytes;
+    try {
+      bytes = xmlSerialized.getBytes("UTF-8");
+    } catch (UnsupportedEncodingException ex) {
+      throw new RuntimeException("UTF-8 support required", ex);
+    }
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+    XMLDecoder decoder = new XMLDecoder(bais, null, null);
+
+    try {
+      return (ExprNodeGenericFuncDesc) decoder.readObject();
+    } finally {
+      decoder.close();
+    }
+  }
   @Test
   public void testExpression1() throws Exception {
     // first_name = 'john' or
@@ -237,35 +255,35 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                      <void property=\"childExprs\"> \n" +
+        "                      <void property=\"children\"> \n" +
         "                       <object class=\"java.util.ArrayList\"> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                          <void property=\"childExprs\"> \n" +
+        "                          <void property=\"children\"> \n" +
         "                           <object class=\"java.util.ArrayList\"> \n" +
         "                            <void method=\"add\"> \n" +
         "                             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                              <void property=\"childExprs\"> \n" +
+        "                              <void property=\"children\"> \n" +
         "                               <object class=\"java.util.ArrayList\"> \n" +
         "                                <void method=\"add\"> \n" +
         "                                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -310,7 +328,7 @@ public class TestSearchArgumentImpl {
         "                            </void> \n" +
         "                            <void method=\"add\"> \n" +
         "                             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                              <void property=\"childExprs\"> \n" +
+        "                              <void property=\"children\"> \n" +
         "                               <object class=\"java.util.ArrayList\"> \n" +
         "                                <void method=\"add\"> \n" +
         "                                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -357,7 +375,7 @@ public class TestSearchArgumentImpl {
         "                        </void> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                          <void property=\"childExprs\"> \n" +
+        "                          <void property=\"children\"> \n" +
         "                           <object class=\"java.util.ArrayList\"> \n" +
         "                            <void method=\"add\"> \n" +
         "                             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -404,7 +422,7 @@ public class TestSearchArgumentImpl {
         "                    </void> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                      <void property=\"childExprs\"> \n" +
+        "                      <void property=\"children\"> \n" +
         "                       <object class=\"java.util.ArrayList\"> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -455,7 +473,7 @@ public class TestSearchArgumentImpl {
         "                </void> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -502,7 +520,7 @@ public class TestSearchArgumentImpl {
         "            </void> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -549,7 +567,7 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -596,11 +614,11 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -637,7 +655,7 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -692,10 +710,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object> \n" +
         "</java> \n";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(9, leaves.size());
 
@@ -771,19 +788,19 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -818,7 +835,7 @@ public class TestSearchArgumentImpl {
         "            </void> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -865,7 +882,7 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -916,7 +933,7 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -961,10 +978,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object> \n" +
         "</java> \n";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(4, leaves.size());
 
@@ -1048,23 +1064,23 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -1129,7 +1145,7 @@ public class TestSearchArgumentImpl {
         "                </void> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1180,11 +1196,11 @@ public class TestSearchArgumentImpl {
         "            </void> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -1210,9 +1226,6 @@ public class TestSearchArgumentImpl {
         "                  </void> \n" +
         "                  <void property=\"genericUDF\"> \n" +
         "                   <object class=\"org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge\"> \n" +
-        "                    <void property=\"udfClass\"> \n" +
-        "                     <class>org.apache.hadoop.hive.ql.udf.UDFSubstr</class> \n" +
-        "                    </void> \n" +
         "                    <void property=\"udfClassName\"> \n" +
         "                     <string>org.apache.hadoop.hive.ql.udf.UDFSubstr</string> \n" +
         "                    </void> \n" +
@@ -1261,7 +1274,7 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -1308,11 +1321,11 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1341,9 +1354,6 @@ public class TestSearchArgumentImpl {
         "          </void> \n" +
         "          <void property=\"genericUDF\"> \n" +
         "           <object class=\"org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge\"> \n" +
-        "            <void property=\"udfClass\"> \n" +
-        "             <class>org.apache.hadoop.hive.ql.udf.UDFSubstr</class> \n" +
-        "            </void> \n" +
         "            <void property=\"udfClassName\"> \n" +
         "             <string>org.apache.hadoop.hive.ql.udf.UDFSubstr</string> \n" +
         "            </void> \n" +
@@ -1387,10 +1397,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object> \n" +
         "</java> \n";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(3, leaves.size());
 
@@ -1428,15 +1437,15 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1481,7 +1490,7 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1542,7 +1551,7 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1598,10 +1607,9 @@ public class TestSearchArgumentImpl {
         " </object> \n" +
         "</java> \n" +
         "\n";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(3, leaves.size());
 
@@ -1654,15 +1662,15 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1707,7 +1715,7 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -1721,7 +1729,7 @@ public class TestSearchArgumentImpl {
         "            </void> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1754,9 +1762,6 @@ public class TestSearchArgumentImpl {
         "              </void> \n" +
         "              <void property=\"genericUDF\"> \n" +
         "               <object class=\"org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge\"> \n" +
-        "                <void property=\"udfClass\"> \n" +
-        "                 <class>org.apache.hadoop.hive.ql.udf.UDFSubstr</class> \n" +
-        "                </void> \n" +
         "                <void property=\"udfClassName\"> \n" +
         "                 <string>org.apache.hadoop.hive.ql.udf.UDFSubstr</string> \n" +
         "                </void> \n" +
@@ -1792,7 +1797,7 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -1857,10 +1862,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object> \n" +
         "</java> \n";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(1, leaves.size());
 
@@ -1884,27 +1888,27 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                      <void property=\"childExprs\"> \n" +
+        "                      <void property=\"children\"> \n" +
         "                       <object class=\"java.util.ArrayList\"> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1949,7 +1953,7 @@ public class TestSearchArgumentImpl {
         "                    </void> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                      <void property=\"childExprs\"> \n" +
+        "                      <void property=\"children\"> \n" +
         "                       <object class=\"java.util.ArrayList\"> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -1996,7 +2000,7 @@ public class TestSearchArgumentImpl {
         "                </void> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2043,15 +2047,15 @@ public class TestSearchArgumentImpl {
         "            </void> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                      <void property=\"childExprs\"> \n" +
+        "                      <void property=\"children\"> \n" +
         "                       <object class=\"java.util.ArrayList\"> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2088,7 +2092,7 @@ public class TestSearchArgumentImpl {
         "                    </void> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                      <void property=\"childExprs\"> \n" +
+        "                      <void property=\"children\"> \n" +
         "                       <object class=\"java.util.ArrayList\"> \n" +
         "                        <void method=\"add\"> \n" +
         "                         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2135,7 +2139,7 @@ public class TestSearchArgumentImpl {
         "                </void> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "                  <void property=\"childExprs\"> \n" +
+        "                  <void property=\"children\"> \n" +
         "                   <object class=\"java.util.ArrayList\"> \n" +
         "                    <void method=\"add\"> \n" +
         "                     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2192,11 +2196,11 @@ public class TestSearchArgumentImpl {
         "        </void> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2233,7 +2237,7 @@ public class TestSearchArgumentImpl {
         "            </void> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "              <void property=\"childExprs\"> \n" +
+        "              <void property=\"children\"> \n" +
         "               <object class=\"java.util.ArrayList\"> \n" +
         "                <void method=\"add\"> \n" +
         "                 <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2290,7 +2294,7 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2335,10 +2339,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object>\n" +
         "</java>";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(9, leaves.size());
 
@@ -2424,7 +2427,7 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2470,10 +2473,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object> \n" +
         "</java> ";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(0, leaves.size());
 
@@ -2487,7 +2489,7 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n" +
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "  <void property=\"childExprs\"> \n" +
+        "  <void property=\"children\"> \n" +
         "   <object class=\"java.util.ArrayList\"> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n" +
@@ -2508,11 +2510,11 @@ public class TestSearchArgumentImpl {
         "    </void> \n" +
         "    <void method=\"add\"> \n" +
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "      <void property=\"childExprs\"> \n" +
+        "      <void property=\"children\"> \n" +
         "       <object class=\"java.util.ArrayList\"> \n" +
         "        <void method=\"add\"> \n" +
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n" +
-        "          <void property=\"childExprs\"> \n" +
+        "          <void property=\"children\"> \n" +
         "           <object class=\"java.util.ArrayList\"> \n" +
         "            <void method=\"add\"> \n" +
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc\"> \n" +
@@ -2541,9 +2543,6 @@ public class TestSearchArgumentImpl {
         "            <void property=\"operator\"> \n" +
         "             <boolean>true</boolean> \n" +
         "            </void> \n" +
-        "            <void property=\"udfClass\"> \n" +
-        "             <class>org.apache.hadoop.hive.ql.udf.UDFOPPlus</class> \n" +
-        "            </void> \n" +
         "            <void property=\"udfClassName\"> \n" +
         "             <string>org.apache.hadoop.hive.ql.udf.UDFOPPlus</string> \n" +
         "            </void> \n" +
@@ -2574,9 +2573,6 @@ public class TestSearchArgumentImpl {
         "        <void property=\"operator\"> \n" +
         "         <boolean>true</boolean> \n" +
         "        </void> \n" +
-        "        <void property=\"udfClass\"> \n" +
-        "         <class>org.apache.hadoop.hive.ql.udf.UDFOPPlus</class> \n" +
-        "        </void> \n" +
         "        <void property=\"udfClassName\"> \n" +
         "         <string>org.apache.hadoop.hive.ql.udf.UDFOPPlus</string> \n" +
         "        </void> \n" +
@@ -2604,10 +2600,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n" +
         " </object> \n" +
         "</java> ";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(0, leaves.size());
 
@@ -2622,11 +2617,11 @@ public class TestSearchArgumentImpl {
     String exprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
         "<java version=\"1.6.0_31\" class=\"java.beans.XMLDecoder\"> \n"+
         " <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n"+
-        "  <void property=\"childExprs\"> \n"+
+        "  <void property=\"children\"> \n"+
         "   <object class=\"java.util.ArrayList\"> \n"+
         "    <void method=\"add\"> \n"+
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n"+
-        "      <void property=\"childExprs\"> \n"+
+        "      <void property=\"children\"> \n"+
         "       <object class=\"java.util.ArrayList\"> \n"+
         "        <void method=\"add\"> \n"+
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n"+
@@ -2671,11 +2666,11 @@ public class TestSearchArgumentImpl {
         "    </void> \n"+
         "    <void method=\"add\"> \n"+
         "     <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n"+
-        "      <void property=\"childExprs\"> \n"+
+        "      <void property=\"children\"> \n"+
         "       <object class=\"java.util.ArrayList\"> \n"+
         "        <void method=\"add\"> \n"+
         "         <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc\"> \n"+
-        "          <void property=\"childExprs\"> \n"+
+        "          <void property=\"children\"> \n"+
         "           <object class=\"java.util.ArrayList\"> \n"+
         "            <void method=\"add\"> \n"+
         "             <object class=\"org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc\"> \n"+
@@ -2730,10 +2725,9 @@ public class TestSearchArgumentImpl {
         "  </void> \n"+
         " </object> \n"+
         "</java>";
-    Configuration conf = new Configuration();
-    ExprNodeDesc expr = Utilities.deserializeExpression(exprStr, conf);
+
     SearchArgumentImpl sarg =
-        (SearchArgumentImpl) SearchArgument.FACTORY.create(expr);
+        (SearchArgumentImpl) SearchArgument.FACTORY.create(getFuncDesc(exprStr));
     List<PredicateLeaf> leaves = sarg.getLeaves();
     assertEquals(1, leaves.size());