You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2009/04/15 00:54:45 UTC

svn commit: r764994 [4/12] - in /hadoop/hive/trunk: ./ data/conf/ eclipse-templates/ metastore/src/java/org/apache/hadoop/hive/metastore/ ql/ ql/lib/ ql/src/java/org/apache/hadoop/hive/ql/exec/ ql/src/java/org/apache/hadoop/hive/ql/io/ ql/src/java/org/...

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java Tue Apr 14 22:54:39 2009
@@ -21,53 +21,56 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
 
 
-public class UDFOPNegative extends UDF {
+public class UDFOPNegative extends UDFBaseNumericUnaryOp {
 
   private static Log LOG = LogFactory.getLog(UDFOPNegative.class.getName());
 
   public UDFOPNegative() {
   }
 
-  public Byte evaluate(Byte a)  {
-    if (a == null)
-      return null;
-
-    Byte r = Byte.valueOf((byte)-a.byteValue());
-    return r;
+  @Override
+  public ByteWritable evaluate(ByteWritable a) {
+    byteWritable.set((byte)-a.get());
+    return byteWritable;
   }
 
-  public Integer evaluate(Integer a)  {
-    if (a == null)
-      return null;
-
-    Integer r = Integer.valueOf(-a.intValue());
-    return r;
+  @Override
+  public ShortWritable evaluate(ShortWritable a) {
+    shortWritable.set((short)-a.get());
+    return shortWritable;
   }
 
-  public Long evaluate(Long a)  {
-    if (a == null)
-      return null;
-
-    Long r = Long.valueOf(-a.longValue());
-    return r;
+  @Override
+  public IntWritable evaluate(IntWritable a) {
+    intWritable.set(-a.get());
+    return intWritable;
   }
 
-  public Float evaluate(Float a)  {
-    if (a == null)
-      return null;
-
-    Float r = Float.valueOf(-a.floatValue());
-    return r;
+  @Override
+  public LongWritable evaluate(LongWritable a) {
+    longWritable.set(-a.get());
+    return longWritable;
   }
 
-  public Double evaluate(Double a)  {
-    if (a == null)
-      return null;
+  @Override
+  public FloatWritable evaluate(FloatWritable a) {
+    floatWritable.set(-a.get());
+    return floatWritable;
+  }
 
-    Double r = Double.valueOf(-a.doubleValue());
-    return r;
+  @Override
+  public DoubleWritable evaluate(DoubleWritable a) {
+    doubleWritable.set(-a.get());
+    return doubleWritable;
   }
 
+
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java Tue Apr 14 22:54:39 2009
@@ -21,23 +21,23 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.BooleanWritable;
 
 
 public class UDFOPNot extends UDF {
 
   private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPNot");
 
+  BooleanWritable result = new BooleanWritable();
   public UDFOPNot() {
   }
 
   // Three-value Boolean: NULL stands for unknown
-  public Boolean evaluate(Boolean a)  {
-    if (Boolean.TRUE.equals(a)) {
-      return Boolean.FALSE;
+  public BooleanWritable evaluate(BooleanWritable a)  {
+    if (a == null) {
+      return null;
     }
-    if (Boolean.FALSE.equals(a)) {
-      return Boolean.TRUE;
-    }
-    return null;
+    result.set(!a.get());
+    return result;
   }
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java Tue Apr 14 22:54:39 2009
@@ -18,96 +18,101 @@
 
 package org.apache.hadoop.hive.ql.udf;
 
-import java.sql.Date;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFOPNotEqual extends UDFBaseCompare {
 
   private static Log LOG = LogFactory.getLog(UDFOPNotEqual.class.getName());
 
+  BooleanWritable resultCache;
   public UDFOPNotEqual() {
+    resultCache = new BooleanWritable();
   }
 
-  public Boolean evaluate(String a, String b)  {
-    
-    Boolean r = null;
+  public BooleanWritable evaluate(Text a, Text b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(!a.equals(b));
+      r.set(!a.equals(b));
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
   }
 
-
-  public Boolean evaluate(Byte a, Byte b)  {
-    Boolean r = null;
+  public BooleanWritable evaluate(ByteWritable a, ByteWritable b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(a.byteValue() != b.byteValue());
+      r.set(a.get() != b.get());
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
   }
 
-  public Boolean evaluate(Integer a, Integer b)  {
-    Boolean r = null;
+  public BooleanWritable evaluate(ShortWritable a, ShortWritable b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(a.intValue() != b.intValue());
+      r.set(a.get() != b.get());
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
   }
-  
-  public Boolean evaluate(Long a, Long b)  {
-    Boolean r = null;
+
+  public BooleanWritable evaluate(IntWritable a, IntWritable b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(a.longValue() != b.longValue());
+      r.set(a.get() != b.get());
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
   }
   
-  public Boolean evaluate(Float a, Float b)  {
-    Boolean r = null;
+  public BooleanWritable evaluate(LongWritable a, LongWritable b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(a.floatValue() != b.floatValue());
+      r.set(a.get() != b.get());
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
-  }  
-
-  public Boolean evaluate(Double a, Double b)  {
-    Boolean r = null;
+  }
+  
+  public BooleanWritable evaluate(FloatWritable a, FloatWritable b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(a.doubleValue() != b.doubleValue());
+      r.set(a.get() != b.get());
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
   }  
 
-  
-  public Boolean evaluate(Date a, Date b)  {
-    Boolean r = null;
+  public BooleanWritable evaluate(DoubleWritable a, DoubleWritable b)  {
+    BooleanWritable r = this.resultCache;
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r = Boolean.valueOf(!a.equals(b));
+      r.set(a.get() != b.get());
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;
-  }  
+  }
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotNull.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotNull.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotNull.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotNull.java Tue Apr 14 22:54:39 2009
@@ -21,17 +21,20 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.BooleanWritable;
 
 
 public class UDFOPNotNull extends UDF {
 
   private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPNotNull");
 
+  BooleanWritable result = new BooleanWritable();
   public UDFOPNotNull() {
   }
 
-  public Boolean evaluate(Object a)  {
-    return Boolean.valueOf(a != null);
+  public BooleanWritable evaluate(Object a)  {
+    result.set(a != null);
+    return result;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNull.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNull.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNull.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNull.java Tue Apr 14 22:54:39 2009
@@ -21,17 +21,21 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.BooleanWritable;
 
 
 public class UDFOPNull extends UDF {
 
   private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPNull");
 
+
+  BooleanWritable result = new BooleanWritable();
   public UDFOPNull() {
   }
 
-  public Boolean evaluate(Object a)  {
-    return Boolean.valueOf(a == null);
+  public BooleanWritable evaluate(Object a)  {
+    result.set(a == null);
+    return result;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java Tue Apr 14 22:54:39 2009
@@ -21,25 +21,27 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.BooleanWritable;
 
 
 public class UDFOPOr extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFOPOr.class.getName());
 
+  BooleanWritable result = new BooleanWritable();
   public UDFOPOr() {
   }
 
   // Three-value Boolean: NULL stands for unknown
-  public Boolean evaluate(Boolean a, Boolean b)  {
-    Boolean r = null;
-    if (Boolean.FALSE.equals(a) && Boolean.FALSE.equals(b)) {
-      r = Boolean.FALSE;
+  public BooleanWritable evaluate(BooleanWritable a, BooleanWritable b)  {
+    if ((a != null && a.get() == true) || (b != null && b.get() == true)) {
+      result.set(true);
+      return result;
     }
-    if (Boolean.TRUE.equals(a) || Boolean.TRUE.equals(b)) {
-      r = Boolean.TRUE;
+    if ((a != null && a.get() == false) && (b != null && b.get() == false)) {
+      result.set(false);
+      return result;
     }
-    // LOG.info("evaluate(" + a + "," + b + ")=" + r);
-    return r;
+    return null;
   }
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java Tue Apr 14 22:54:39 2009
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *     http://www.apache.org/licenses/LICENSE-2.0
+ *     http://www.apache.org/licenses/LICENSE+2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -20,7 +20,12 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
 
 
 /**
@@ -39,44 +44,64 @@
   public UDFOPPlus() {
   }
 
-  public Byte evaluate(Byte a, Byte b)  {
+  @Override
+  public ByteWritable evaluate(ByteWritable a, ByteWritable b)  {
     // LOG.info("Get input " + a.getClass() + ":" + a + " " + b.getClass() + ":" + b);
     if ((a == null) || (b == null))
       return null;
 
-    return Byte.valueOf((byte)(a+b));
+    byteWritable.set((byte)(a.get() + b.get()));
+    return byteWritable;
   }
 
-  public Integer evaluate(Integer a, Integer b)  {
+  @Override
+  public ShortWritable evaluate(ShortWritable a, ShortWritable b)  {
     // LOG.info("Get input " + a.getClass() + ":" + a + " " + b.getClass() + ":" + b);
     if ((a == null) || (b == null))
       return null;
 
-    return Integer.valueOf((int)(a+b));
+    shortWritable.set((short)(a.get() + b.get()));
+    return shortWritable;
   }
 
-  public Long evaluate(Long a, Long b)  {
+  @Override
+  public IntWritable evaluate(IntWritable a, IntWritable b)  {
     // LOG.info("Get input " + a.getClass() + ":" + a + " " + b.getClass() + ":" + b);
     if ((a == null) || (b == null))
       return null;
 
-    return Long.valueOf((long)(a+b));
+    intWritable.set((int)(a.get() + b.get()));
+    return intWritable;
   }
 
-  public Float evaluate(Float a, Float b)  {
+  @Override
+  public LongWritable evaluate(LongWritable a, LongWritable b)  {
     // LOG.info("Get input " + a.getClass() + ":" + a + " " + b.getClass() + ":" + b);
     if ((a == null) || (b == null))
       return null;
 
-    return Float.valueOf((float)(a+b));
+    longWritable.set(a.get() + b.get());
+    return longWritable;
+  }
+
+  @Override
+  public FloatWritable evaluate(FloatWritable a, FloatWritable b)  {
+    // LOG.info("Get input " + a.getClass() + ":" + a + " " + b.getClass() + ":" + b);
+    if ((a == null) || (b == null))
+      return null;
+
+    floatWritable.set(a.get() + b.get());
+    return floatWritable;
   }
   
-  public Double evaluate(Double a, Double b)  {
+  @Override
+  public DoubleWritable evaluate(DoubleWritable a, DoubleWritable b)  {
     // LOG.info("Get input " + a.getClass() + ":" + a + " " + b.getClass() + ":" + b);
     if ((a == null) || (b == null))
       return null;
 
-    return Double.valueOf((double)(a+b));
+    doubleWritable.set(a.get() + b.get());
+    return doubleWritable;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java Tue Apr 14 22:54:39 2009
@@ -21,32 +21,49 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
 
 
-public class UDFOPPositive extends UDF {
+public class UDFOPPositive extends UDFBaseNumericUnaryOp {
 
   private static Log LOG = LogFactory.getLog(UDFOPPositive.class.getName());
 
   public UDFOPPositive() {
   }
 
-  public Byte evaluate(Byte a)  {
+
+  @Override
+  public ByteWritable evaluate(ByteWritable a) {
+    return a;
+  }
+
+  @Override
+  public ShortWritable evaluate(ShortWritable a) {
     return a;
   }
 
-  public Integer evaluate(Integer a)  {
+  @Override
+  public IntWritable evaluate(IntWritable a) {
     return a;
   }
 
-  public Long evaluate(Long a)  {
+  @Override
+  public LongWritable evaluate(LongWritable a) {
     return a;
   }
 
-  public Float evaluate(Float a)  {
+  @Override
+  public FloatWritable evaluate(FloatWritable a) {
     return a;
   }
 
-  public Double evaluate(Double a)  {
+  @Override
+  public DoubleWritable evaluate(DoubleWritable a) {
     return a;
   }
 

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java Tue Apr 14 22:54:39 2009
@@ -21,23 +21,26 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 
 
 public class UDFPower extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFPower.class.getName());
 
+  DoubleWritable result = new DoubleWritable();
   public UDFPower() {
   }
 
   /**
    * Raise a to the power of b. 
    */
-  public Double evaluate(Double a, Double b)  {
+  public DoubleWritable evaluate(DoubleWritable a, DoubleWritable b)  {
     if (a == null || b == null) {
       return null;
     } else {
-      return Double.valueOf(Math.pow(a, b));
+      result.set(Math.pow(a.get(), b.get()));
+      return result;
     }
   }
 

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java Tue Apr 14 22:54:39 2009
@@ -19,6 +19,7 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.Text;
 import org.apache.commons.lang.StringUtils;
 
 import java.util.regex.Pattern;
@@ -26,14 +27,16 @@
 
 public class UDFRTrim extends UDF {
 
+  Text result = new Text();
   public UDFRTrim() {
   }
 
-  public String evaluate(String s) {
+  public Text evaluate(Text s) {
     if (s == null) {
       return null;
     }
-    return StringUtils.stripEnd(s, " ");
+    result.set(StringUtils.stripEnd(s.toString(), " "));
+    return result;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java Tue Apr 14 22:54:39 2009
@@ -23,6 +23,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.io.LongWritable;
 
 @UDFType(deterministic=false)
 public class UDFRand extends UDF {
@@ -31,21 +33,24 @@
 
   private Random random;
   
+  DoubleWritable result = new DoubleWritable();
   public UDFRand() {
   }
 
-  public Double evaluate()  {
+  public DoubleWritable evaluate()  {
     if (random == null) {
       random = new Random();
     }
-    return random.nextDouble();
+    result.set(random.nextDouble());
+    return result;
   }
 
-  public Double evaluate(long seed)  {
+  public DoubleWritable evaluate(LongWritable seed)  {
     if (random == null) {
-      random = new Random(seed);
+      random = new Random(seed.get());
     }
-    return random.nextDouble();
+    result.set(random.nextDouble());
+    return result;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java Tue Apr 14 22:54:39 2009
@@ -19,27 +19,32 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.Text;
+
 import java.util.regex.Pattern;
 import java.util.regex.Matcher;
 
 public class UDFRegExp extends UDF {
 
-  private String lastRegex = null;
+  private Text lastRegex = new Text();
   private Pattern p = null;
 
+  BooleanWritable result = new BooleanWritable();
   public UDFRegExp() {
   }
 
-  public Boolean evaluate(String s, String regex) {
+  public BooleanWritable evaluate(Text s, Text regex) {
     if (s == null || regex == null) {
       return null;
     }
     if (!regex.equals(lastRegex)) {
-      lastRegex = regex;
-      p = Pattern.compile(regex);
+      lastRegex.set(regex);
+      p = Pattern.compile(regex.toString());
     }
-    Matcher m = p.matcher(s);
-    return Boolean.valueOf(m.matches());    
+    Matcher m = p.matcher(s.toString());
+    result.set(m.matches());
+    return result;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java Tue Apr 14 22:54:39 2009
@@ -19,33 +19,47 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.Text;
+
 import java.util.regex.Pattern;
 import java.util.regex.Matcher;
 
 public class UDFRegExpReplace extends UDF {
 
-  private String lastRegex = null;
+  private Text lastRegex = new Text();
   private Pattern p = null;
+  
+  private Text lastReplacement = new Text();
+  private String replacementString = null; 
 
+  Text result = new Text();
   public UDFRegExpReplace() {
   }
 
-  public String evaluate(String s, String regex, String replacement) {
+  public Text evaluate(Text s, Text regex, Text replacement) {
     if (s == null || regex == null || replacement == null) {
       return null;
     }
+    // If the regex is changed, make sure we compile the regex again.
     if (!regex.equals(lastRegex)) {
-      lastRegex = regex;
-      p = Pattern.compile(regex);
+      lastRegex.set(regex);
+      p = Pattern.compile(regex.toString());
+    }
+    Matcher m = p.matcher(s.toString());
+    // If the replacement is changed, make sure we redo toString again.
+    if (!replacement.equals(lastReplacement)) {
+      lastReplacement.set(replacement);
+      replacementString = replacement.toString();
     }
-    Matcher m = p.matcher(s);
     
     StringBuffer sb = new StringBuffer();
     while (m.find()) {
-      m.appendReplacement(sb, replacement);
+      m.appendReplacement(sb, replacementString);
     }
     m.appendTail(sb);
-    return sb.toString();    
+    
+    result.set(sb.toString());
+    return result;    
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java Tue Apr 14 22:54:39 2009
@@ -22,23 +22,33 @@
 import java.math.RoundingMode;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
 
 
 public class UDFRound extends UDF {
 
+  DoubleWritable doubleWritable = new DoubleWritable();
+  LongWritable longWritable = new LongWritable();
+  
   public UDFRound() {
   }
 
-  public Long evaluate(Double n) {
-    if (n == null)
+  public LongWritable evaluate(DoubleWritable n) {
+    if (n == null) {
       return null;
-    return evaluate(n, 0).longValue();
+    }
+    longWritable.set(BigDecimal.valueOf(n.get()).setScale(0, RoundingMode.HALF_UP).longValue());
+    return longWritable;
   }
 
-  public Double evaluate(Double n, Integer i) {
-    if ((n == null) || (i == null))
+  public DoubleWritable evaluate(DoubleWritable n, IntWritable i) {
+    if ((n == null) || (i == null)) {
       return null;
-    return BigDecimal.valueOf(n).setScale(i, RoundingMode.HALF_UP).doubleValue();
+    }
+    doubleWritable.set(BigDecimal.valueOf(n.get()).setScale(i.get(), RoundingMode.HALF_UP).doubleValue());
+    return doubleWritable;
   }
   
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSize.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSize.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSize.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSize.java Tue Apr 14 22:54:39 2009
@@ -19,27 +19,34 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.IntWritable;
 
 import java.util.Map;
 import java.util.List;
 
 public class UDFSize extends UDF {
 
+  IntWritable result = new IntWritable();
+  
   public UDFSize() {
   }
 
-  public Integer evaluate(Map<?,?> s) {
+  public IntWritable evaluate(Map<?,?> s) {
     if (s == null) {
-      return -1;
+      result.set(-1);
+    } else {
+      result.set(s.size());
     }
-    return s.size();
+    return result;
   }
 
-  public Integer evaluate(List<?> s) {
+  public IntWritable evaluate(List<?> s) {
     if (s == null) {
-      return -1;
+      result.set(-1);
+    } else {
+      result.set(s.size());
     }
-    return s.size();
+    return result;
   }
   
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java Tue Apr 14 22:54:39 2009
@@ -21,6 +21,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 
 
 /**
@@ -30,6 +31,7 @@
 
   private static Log LOG = LogFactory.getLog(UDFSqrt.class.getName());
 
+  DoubleWritable result = new DoubleWritable();
   public UDFSqrt() {
   }
 
@@ -37,13 +39,14 @@
    * Return NULL for NULL or negative inputs; otherwise, return
    * the square root.
    */
-  public Double evaluate(Double i)  {
+  public DoubleWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
-    } else if (i < 0) {
+    } else if (i.get() < 0) {
       return null;
     } else {
-      return Double.valueOf(Math.sqrt(i));
+      result.set(Math.sqrt(i.get()));
+      return result;
     }
   }
   

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java Tue Apr 14 22:54:39 2009
@@ -19,38 +19,57 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFSubstr extends UDF {
 
+  Text r;
   public UDFSubstr() {
+    r = new Text();
   }
-
-  public String evaluate(String s, Integer pos, Integer len)  {
-    int start, end;
-
-    if ((s == null) || (pos == null) || (len == null))
+  
+  public Text evaluate(Text t, IntWritable pos, IntWritable len)  {
+    
+    if ((t == null) || (pos == null) || (len == null)) {
       return null;
-    if ((len <= 0) || (Math.abs(pos) > s.length()))
-      return "";
+    }
+    
+    r.clear();
+    if ((len.get() <= 0)) {
+      return r;
+    }
+
+    String s = t.toString();
+    if ((Math.abs(pos.get()) > s.length())) {
+      return r;
+    }
+    
+    int start, end;
 
-    if (pos > 0)
-      start = pos - 1;
-    else if (pos < 0)
-      start = s.length() + pos;
-    else
+    if (pos.get() > 0) {
+      start = pos.get() - 1;
+    } else if (pos.get() < 0) {
+      start = s.length() + pos.get();
+    } else {
       start = 0;
-
-    if ((s.length() - start) < len)
+    }
+    
+    if ((s.length() - start) < len.get()) {
       end = s.length();
-    else
-      end = start + len;
-
-    return s.substring(start, end);
+    } else {
+      end = start + len.get();
+    }
+    
+    r.set(s.substring(start, end));
+    return r;
   }
 
-  public String evaluate(String s, Integer pos)  {
-    return evaluate(s, pos, Integer.MAX_VALUE);
+  IntWritable maxValue = new IntWritable(Integer.MAX_VALUE);
+  
+  public Text evaluate(Text s, IntWritable pos)  {
+    return evaluate(s, pos, maxValue);
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,24 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
+
 
 
 public class UDFToBoolean extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToBoolean.class.getName());
 
+  BooleanWritable booleanWritable = new BooleanWritable();
+  
   public UDFToBoolean() {
   }
 
@@ -34,9 +46,9 @@
    * Convert a void to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The value of a void type
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(Void i)  {
+  public BooleanWritable evaluate(NullWritable i)  {
       return null;
   }
 
@@ -44,13 +56,14 @@
    * Convert from a byte to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The byte value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(Byte i)  {
+  public BooleanWritable evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.byteValue() != 0);
+      booleanWritable.set(i.get() != 0);
+      return booleanWritable;
     }
   }
 
@@ -58,13 +71,14 @@
    * Convert from a short to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The short value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(Short i)  {
+  public BooleanWritable evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.shortValue() != 0);
+      booleanWritable.set(i.get() != 0);
+      return booleanWritable;
     }
   }
 
@@ -72,13 +86,14 @@
    * Convert from a integer to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The integer value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(Integer i)  {
+  public BooleanWritable evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.intValue() != 0);
+      booleanWritable.set(i.get() != 0);
+      return booleanWritable;
     }
   }
 
@@ -86,13 +101,14 @@
    * Convert from a long to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The long value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(Long i)  {
+  public BooleanWritable evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.longValue() != 0);
+      booleanWritable.set(i.get() != 0);
+      return booleanWritable;
     }
   }
 
@@ -100,13 +116,14 @@
    * Convert from a float to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The float value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */  
-  public Boolean evaluate(Float i)  {
+  public BooleanWritable evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.floatValue() != 0);
+      booleanWritable.set(i.get() != 0);
+      return booleanWritable;
     }
   }
 
@@ -114,13 +131,14 @@
    * Convert from a double to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The double value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(Double i)  {
+  public BooleanWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.doubleValue() != 0);
+      booleanWritable.set(i.get() != 0);
+      return booleanWritable;
     }
   }
 
@@ -128,13 +146,14 @@
    * Convert from a string to boolean. This is called for CAST(... AS BOOLEAN)
    *
    * @param i The string value to convert
-   * @return Boolean
+   * @return BooleanWritable
    */
-  public Boolean evaluate(String i)  {
+  public BooleanWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
-      return Boolean.valueOf(i.length() != 0);
+      booleanWritable.set(i.getLength() != 0);
+      return booleanWritable;
     }
   }
 

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,24 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.lazy.LazyByte;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFToByte extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToByte.class.getName());
 
+  ByteWritable byteWritable = new ByteWritable();
+  
   public UDFToByte() {
   }
 
@@ -36,7 +48,7 @@
    * @param i The void value to convert
    * @return Byte
    */
-  public Byte evaluate(Void i)  {
+  public ByteWritable evaluate(NullWritable i)  {
     return null;
   }  
 
@@ -46,11 +58,12 @@
    * @param i The boolean value to convert
    * @return Byte
    */
-  public Byte evaluate(Boolean i)  {
+  public ByteWritable evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? (byte)1 : (byte)0;
+      byteWritable.set(i.get() ? (byte)1 : (byte)0);
+      return byteWritable;
     }
   }  
 
@@ -60,11 +73,12 @@
    * @param i The short value to convert
    * @return Byte
    */
-  public Byte evaluate(Short i)  {
+  public ByteWritable evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Byte.valueOf(i.byteValue());
+      byteWritable.set((byte)i.get());
+      return byteWritable;
     }
   }
 
@@ -74,11 +88,12 @@
    * @param i The integer value to convert
    * @return Byte
    */
-  public Byte evaluate(Integer i)  {
+  public ByteWritable evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Byte.valueOf(i.byteValue());
+      byteWritable.set((byte)i.get());
+      return byteWritable;
     }
   }
 
@@ -88,11 +103,12 @@
    * @param i The long value to convert
    * @return Byte
    */
-  public Byte evaluate(Long i)  {
+  public ByteWritable evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Byte.valueOf(i.byteValue());
+      byteWritable.set((byte)i.get());
+      return byteWritable;
     }
   }  
 
@@ -102,11 +118,12 @@
    * @param i The float value to convert
    * @return Byte
    */
-  public Byte evaluate(Float i)  {
+  public ByteWritable evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Byte.valueOf(i.byteValue());
+      byteWritable.set((byte)i.get());
+      return byteWritable;
     }
   }
 
@@ -116,11 +133,12 @@
    * @param i The double value to convert
    * @return Byte
    */  
-  public Byte evaluate(Double i)  {
+  public ByteWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Byte.valueOf(i.byteValue());
+      byteWritable.set((byte)i.get());
+      return byteWritable;
     }
   }
 
@@ -130,12 +148,13 @@
    * @param i The string value to convert
    * @return Byte
    */  
-  public Byte evaluate(String i)  {
+  public ByteWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
       try {
-        return Byte.valueOf(i);
+        byteWritable.set(LazyByte.parseByte(i.getBytes(), 0 , i.getLength(), 10));
+        return byteWritable;
       } catch (NumberFormatException e) {
         // MySQL returns 0 if the string is not a well-formed numeric value.
         // return Byte.valueOf(0);
@@ -144,18 +163,5 @@
       }
     }
   }
-  
-  /**
-   * Convert from date to a Byte. This is called for CAST(... AS TINYINT)
-   *
-   * @param i The date value to convert
-   * @return Byte
-   */
-  public Byte evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return Long.valueOf(i.getTime()).byteValue();
-    }
-  }  
+
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,23 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFToDouble extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToDouble.class.getName());
 
+  DoubleWritable doubleWritable = new DoubleWritable();
+  
   public UDFToDouble() {
   }
 
@@ -34,9 +45,9 @@
    * Convert from void to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The void value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Void i)  {
+  public DoubleWritable evaluate(NullWritable i)  {
     return null;
   }
 
@@ -44,13 +55,14 @@
    * Convert from boolean to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The boolean value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Boolean i)  {
+  public DoubleWritable evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? 1.0 : 0.0;
+      doubleWritable.set(i.get() ? 1.0 : 0.0);
+      return doubleWritable;
     }
   }
 
@@ -58,13 +70,14 @@
    * Convert from boolean to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The byte value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Byte i)  {
+  public DoubleWritable evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Double.valueOf(i.doubleValue());
+      doubleWritable.set(i.get());
+      return doubleWritable;
     }
   }
   
@@ -72,13 +85,14 @@
    * Convert from short to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The short value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Short i)  {
+  public DoubleWritable evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Double.valueOf(i.doubleValue());
+      doubleWritable.set(i.get());
+      return doubleWritable;
     }
   }
   
@@ -86,13 +100,14 @@
    * Convert from integer to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The integer value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Integer i)  {
+  public DoubleWritable evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Double.valueOf(i.doubleValue());
+      doubleWritable.set(i.get());
+      return doubleWritable;
     }
   }
   
@@ -100,13 +115,14 @@
    * Convert from long to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The long value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Long i)  {
+  public DoubleWritable evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Double.valueOf(i.doubleValue());
+      doubleWritable.set(i.get());
+      return doubleWritable;
     }
   }
  
@@ -114,13 +130,14 @@
    * Convert from float to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The float value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(Float i)  {
+  public DoubleWritable evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Double.valueOf(i.doubleValue());
+      doubleWritable.set(i.get());
+      return doubleWritable;
     }
   }
   
@@ -128,35 +145,22 @@
    * Convert from string to a double. This is called for CAST(... AS DOUBLE)
    *
    * @param i The string value to convert
-   * @return Double
+   * @return DoubleWritable
    */
-  public Double evaluate(String i)  {
+  public DoubleWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
       try {
-        return Double.valueOf(i);
+        doubleWritable.set(Double.valueOf(i.toString()));
+        return doubleWritable;
       } catch (NumberFormatException e) {
         // MySQL returns 0 if the string is not a well-formed double value.
-        // return Double.valueOf(0);
         // But we decided to return NULL instead, which is more conservative.
         return null;
       }
     }
   }
   
-  /**
-   * Convert from date to a double. This is called for CAST(... AS DOUBLE)
-   *
-   * @param i The date value to convert
-   * @return Double
-   */
-  public Double evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return Double.valueOf(i.getTime());
-    }
-  }
   
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,23 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFToFloat extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToFloat.class.getName());
 
+  FloatWritable floatWritable = new FloatWritable();
+  
   public UDFToFloat() {
   }
 
@@ -34,9 +45,9 @@
    * Convert from void to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The void value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(Void i)  {
+  public FloatWritable evaluate(NullWritable i)  {
     return null;
   }
 
@@ -44,13 +55,14 @@
    * Convert from boolean to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The boolean value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(Boolean i)  {
+  public FloatWritable evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? (float)1.0 : (float)0.0;
+      floatWritable.set(i.get() ? (float)1.0 : (float)0.0);
+      return floatWritable;
     }
   }
   
@@ -58,13 +70,14 @@
    * Convert from byte to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The byte value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(Byte i)  {
+  public FloatWritable evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Float.valueOf(i.floatValue());
+      floatWritable.set((float)i.get());
+      return floatWritable;
     }
   }
   
@@ -72,13 +85,14 @@
    * Convert from short to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The short value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(Short i)  {
+  public FloatWritable evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Float.valueOf(i.floatValue());
+      floatWritable.set((float)i.get());
+      return floatWritable;
     }
   }
   
@@ -86,13 +100,14 @@
    * Convert from integer to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The integer value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(Integer i)  {
+  public FloatWritable evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Float.valueOf(i.floatValue());
+      floatWritable.set((float)i.get());
+      return floatWritable;
     }
   }
   
@@ -100,13 +115,14 @@
    * Convert from long to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The long value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(Long i)  {
+  public FloatWritable evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Float.valueOf(i.floatValue());
+      floatWritable.set((float)i.get());
+      return floatWritable;
     }
   }
 
@@ -114,13 +130,14 @@
    * Convert from double to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The double value to convert
-   * @return Float
+   * @return FloatWritable
    */  
-  public Float evaluate(Double i)  {
+  public FloatWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Float.valueOf(i.floatValue());
+      floatWritable.set((float)i.get());
+      return floatWritable;
     }
   }
   
@@ -128,30 +145,21 @@
    * Convert from string to a float. This is called for CAST(... AS FLOAT)
    *
    * @param i The string value to convert
-   * @return Float
+   * @return FloatWritable
    */
-  public Float evaluate(String i)  {
+  public FloatWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
-      // MySQL returns 0 if the string is not a well-formed numeric value.
-      // return Float.valueOf(0);
-      // But we decided to return NULL instead, which is more conservative.
-      return null;
+      try {
+        floatWritable.set(Float.valueOf(i.toString()));
+        return floatWritable;
+      } catch (NumberFormatException e) {
+        // MySQL returns 0 if the string is not a well-formed numeric value.
+        // But we decided to return NULL instead, which is more conservative.
+        return null;
+      }
     }
   }
   
-  /**
-   * Convert from date to a float. This is called for CAST(... AS FLOAT)
-   *
-   * @param i The date value to convert
-   * @return Float
-   */
-  public Float evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return Float.valueOf(i.getTime());
-    }
-  }  
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,24 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.lazy.LazyInteger;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFToInteger extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToInteger.class.getName());
 
+  IntWritable intWritable = new IntWritable();
+  
   public UDFToInteger() {
   }
 
@@ -36,7 +48,7 @@
    * @param i The void value to convert
    * @return Integer
    */
-  public Integer evaluate(Void i)  {
+  public IntWritable evaluate(NullWritable i)  {
     return null;
   }
 
@@ -44,13 +56,14 @@
    * Convert from boolean to an integer. This is called for CAST(... AS INT)
    *
    * @param i The boolean value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(Boolean i)  {
+  public IntWritable evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? 1 : 0;
+      intWritable.set(i.get() ? 1 : 0);
+      return intWritable;
     }
   }
   
@@ -58,13 +71,14 @@
    * Convert from byte to an integer. This is called for CAST(... AS INT)
    *
    * @param i The byte value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(Byte i)  {
+  public IntWritable evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Integer.valueOf(i.intValue());
+      intWritable.set((int)i.get());
+      return intWritable;
     }
   }
   
@@ -72,13 +86,14 @@
    * Convert from short to an integer. This is called for CAST(... AS INT)
    *
    * @param i The short value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(Short i)  {
+  public IntWritable evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Integer.valueOf(i.shortValue());
+      intWritable.set((int)i.get());
+      return intWritable;
     }
   }
   
@@ -86,13 +101,14 @@
    * Convert from long to an integer. This is called for CAST(... AS INT)
    *
    * @param i The long value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(Long i)  {
+  public IntWritable evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Integer.valueOf(i.intValue());
+      intWritable.set((int)i.get());
+      return intWritable;
     }
   }
   
@@ -100,13 +116,14 @@
    * Convert from float to an integer. This is called for CAST(... AS INT)
    *
    * @param i The float value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(Float i)  {
+  public IntWritable evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Integer.valueOf(i.intValue());
+      intWritable.set((int)i.get());
+      return intWritable;
     }
   }
   
@@ -114,13 +131,14 @@
    * Convert from double to an integer. This is called for CAST(... AS INT)
    *
    * @param i The double value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(Double i)  {
+  public IntWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Integer.valueOf(i.intValue());
+      intWritable.set((int)i.get());
+      return intWritable;
     }
   }
   
@@ -128,34 +146,22 @@
    * Convert from string to an integer. This is called for CAST(... AS INT)
    *
    * @param i The string value to convert
-   * @return Integer
+   * @return IntWritable
    */
-  public Integer evaluate(String i)  {
+  public IntWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
       try {
-        return Integer.valueOf(i);
+        intWritable.set(LazyInteger.parseInt(i.getBytes(), 0 , i.getLength(), 10));
+        return intWritable;
       } catch (NumberFormatException e) {
         // MySQL returns 0 if the string is not a well-formed numeric value.
-        // return Integer.valueOf(0);
+        // return IntWritable.valueOf(0);
         // But we decided to return NULL instead, which is more conservative.
         return null;
       }
     }
   }
   
-  /**
-   * Convert from date to an integer. This is called for CAST(... AS INT)
-   *
-   * @param i The date value to convert
-   * @return Integer
-   */
-  public Integer evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return Long.valueOf(i.getTime()).intValue();
-    }
-  }  
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,24 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.lazy.LazyLong;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFToLong extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToLong.class.getName());
 
+  LongWritable longWritable = new LongWritable();
+  
   public UDFToLong() {
   }
 
@@ -34,9 +46,9 @@
    * Convert from void to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The void value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Void i)  {
+  public LongWritable evaluate(NullWritable i)  {
     return null;
   }
 
@@ -44,13 +56,14 @@
    * Convert from boolean to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The boolean value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Boolean i)  {
+  public LongWritable evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? (long)1 : (long)0;
+      longWritable.set(i.get()? (long)1 : (long) 0);
+      return longWritable;
     }
   }
 
@@ -58,13 +71,14 @@
    * Convert from byte to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The byte value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Byte i)  {
+  public LongWritable evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Long.valueOf(i.longValue());
+      longWritable.set((long)i.get());
+      return longWritable;
     }
   }
   
@@ -72,13 +86,14 @@
    * Convert from short to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The short value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Short i)  {
+  public LongWritable evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Long.valueOf(i.longValue());
+      longWritable.set((long)i.get());
+      return longWritable;
     }
   }
   
@@ -86,13 +101,14 @@
    * Convert from integer to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The integer value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Integer i)  {
+  public LongWritable evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Long.valueOf(i.longValue());
+      longWritable.set((long)i.get());
+      return longWritable;
     }
   }
 
@@ -100,9 +116,9 @@
    * Convert from long to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The long value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Long i)  {
+  public LongWritable evaluate(LongWritable i)  {
     return i;
   }
 
@@ -110,13 +126,14 @@
    * Convert from float to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The float value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Float i)  {
+  public LongWritable evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Long.valueOf(i.longValue());
+      longWritable.set((long)i.get());
+      return longWritable;
     }
   }
   
@@ -124,13 +141,14 @@
    * Convert from double to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The double value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(Double i)  {
+  public LongWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Long.valueOf(i.longValue());
+      longWritable.set((long)i.get());
+      return longWritable;
     }
   }
   
@@ -138,34 +156,22 @@
    * Convert from string to a long. This is called for CAST(... AS BIGINT)
    *
    * @param i The string value to convert
-   * @return Long
+   * @return LongWritable
    */
-  public Long evaluate(String i)  {
+  public LongWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
       try {
-        return Long.valueOf(i);
+        longWritable.set(LazyLong.parseLong(i.getBytes(), 0 , i.getLength(), 10));
+        return longWritable;
       } catch (NumberFormatException e) {
         // MySQL returns 0 if the string is not a well-formed numeric value.
-        // return Long.valueOf(0);
+        // return LongWritable.valueOf(0);
         // But we decided to return NULL instead, which is more conservative.
         return null;
       }
     }
   }
   
-  /**
-   * Convert from date to a long. This is called for CAST(... AS BIGINT)
-   *
-   * @param i The date value to convert
-   * @return Long
-   */
-  public Long evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return Long.valueOf(i.getTime());
-    }
-  }  
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java Tue Apr 14 22:54:39 2009
@@ -21,12 +21,25 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.lazy.LazyByte;
+import org.apache.hadoop.hive.serde2.lazy.LazyShort;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFToShort extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToByte.class.getName());
 
+  ShortWritable shortWritable = new ShortWritable();
+  
   public UDFToShort() {
   }
 
@@ -34,9 +47,9 @@
    * Convert from void to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The void value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Void i)  {
+  public ShortWritable evaluate(NullWritable i)  {
     return null;
   }
 
@@ -44,13 +57,14 @@
    * Convert from boolean to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The boolean value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Boolean i)  {
+  public ShortWritable evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? (short)1 : (short)0;
+      shortWritable.set(i.get() ? (short)1 : (short)0);
+      return shortWritable;
     }
   }
 
@@ -58,13 +72,14 @@
    * Convert from byte to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The byte value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Byte i)  {
+  public ShortWritable evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Short.valueOf(i.shortValue());
+      shortWritable.set((short)i.get());
+      return shortWritable;
     }
   }
 
@@ -72,13 +87,14 @@
    * Convert from integer to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The integer value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Integer i)  {
+  public ShortWritable evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Short.valueOf(i.shortValue());
+      shortWritable.set((short)i.get());
+      return shortWritable;
     }
   }
 
@@ -86,13 +102,14 @@
    * Convert from long to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The long value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Long i)  {
+  public ShortWritable evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Short.valueOf(i.shortValue());
+      shortWritable.set((short)i.get());
+      return shortWritable;
     }
   }
   
@@ -100,13 +117,14 @@
    * Convert from float to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The float value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Float i)  {
+  public ShortWritable evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Short.valueOf(i.shortValue());
+      shortWritable.set((short)i.get());
+      return shortWritable;
     }
   }
   
@@ -114,13 +132,14 @@
    * Convert from double to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The double value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(Double i)  {
+  public ShortWritable evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return Short.valueOf(i.shortValue());
+      shortWritable.set((short)i.get());
+      return shortWritable;
     }
   }
   
@@ -128,14 +147,15 @@
    * Convert from string to a short. This is called for CAST(... AS SMALLINT)
    *
    * @param i The string value to convert
-   * @return Short
+   * @return ShortWritable
    */
-  public Short evaluate(String i)  {
+  public ShortWritable evaluate(Text i)  {
     if (i == null) {
       return null;
     } else {
       try {
-        return Short.valueOf(i);
+        shortWritable.set(LazyShort.parseShort(i.getBytes(), 0 , i.getLength(), 10));
+        return shortWritable;
       } catch (NumberFormatException e) {
         // MySQL returns 0 if the string is not a well-formed numeric value.
         // return Byte.valueOf(0);
@@ -144,18 +164,4 @@
       }
     }
   }
-  
-  /**
-   * Convert from date to a short. This is called for CAST(... AS SMALLINT)
-   *
-   * @param i The date value to convert
-   * @return Short
-   */
-  public Short evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return Long.valueOf(i.getTime()).shortValue();
-    }
-  }  
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToString.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToString.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToString.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToString.java Tue Apr 14 22:54:39 2009
@@ -22,85 +22,106 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
 
+import org.apache.hadoop.hive.serde2.ByteStream;
+import org.apache.hadoop.hive.serde2.io.ByteWritable;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.serde2.lazy.LazyInteger;
+import org.apache.hadoop.hive.serde2.lazy.LazyLong;
+import org.apache.hadoop.io.BooleanWritable;
+import org.apache.hadoop.io.FloatWritable;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.Text;
+
 
 public class UDFToString extends UDF {
 
   private static Log LOG = LogFactory.getLog(UDFToString.class.getName());
 
+  Text t = new Text();
+  ByteStream.Output out = new ByteStream.Output();
+  
   public UDFToString() {
   }
 
-  public String evaluate(Void i)  {
+  public Text evaluate(NullWritable i)  {
     return null;
   }
 
-  public String evaluate(Boolean i)  {
+  byte[] trueBytes = {'T', 'R', 'U', 'E'};
+  byte[] falseBytes = {'F', 'A', 'L', 'S', 'E'};
+  public Text evaluate(BooleanWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.booleanValue() ? "TRUE" : "FALSE";
+      t.clear();
+      t.set(i.get() ? trueBytes : falseBytes);
+      return t;
     }
   }
   
-  public String evaluate(Byte i)  {
+  public Text evaluate(ByteWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.toString();
+      out.reset();
+      LazyInteger.writeUTF8NoException(out, i.get());
+      t.set(out.getData(), 0, out.getCount());
+      return t;
     }
   }
   
-  public String evaluate(Short i)  {
+  public Text evaluate(ShortWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.toString();
+      out.reset();
+      LazyInteger.writeUTF8NoException(out, i.get());
+      t.set(out.getData(), 0, out.getCount());
+      return t;
     }
   }
     
-  public String evaluate(Integer i)  {
+  public Text evaluate(IntWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.toString();
+      out.reset();
+      LazyInteger.writeUTF8NoException(out, i.get());
+      t.set(out.getData(), 0, out.getCount());
+      return t;
     }
   }
 
-  public String evaluate(Long i)  {
+  public Text evaluate(LongWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.toString();
+      out.reset();
+      LazyLong.writeUTF8NoException(out, i.get());
+      t.set(out.getData(), 0, out.getCount());
+      return t;
     }
   }
   
-  public String evaluate(Float i)  {
+  public Text evaluate(FloatWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.toString();
+      t.set(i.toString());
+      return t;
     }
   }
   
-  public String evaluate(Double i)  {
+  public Text evaluate(DoubleWritable i)  {
     if (i == null) {
       return null;
     } else {
-      return i.toString();
+      t.set(i.toString());
+      return t;
     }
   }
   
-  /**
-   * Convert from date to a string. This is called for CAST(... AS STRING)
-   *
-   * @param i The date value to convert
-   * @return String
-   */
-  public String evaluate(java.sql.Date i)  {
-    if (i == null) {
-      return null;
-    } else {
-        return i.toString();
-    }
-  }  
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java Tue Apr 14 22:54:39 2009
@@ -19,6 +19,7 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.Text;
 import org.apache.commons.lang.StringUtils;
 
 import java.util.regex.Pattern;
@@ -26,14 +27,16 @@
 
 public class UDFTrim extends UDF {
 
+  Text result = new Text();
   public UDFTrim() {
   }
 
-  public String evaluate(String s) {
+  public Text evaluate(Text s) {
     if (s == null) {
       return null;
     }
-    return StringUtils.strip(s, " ");
+    result.set(StringUtils.strip(s.toString(), " "));
+    return result;
   }
 
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java Tue Apr 14 22:54:39 2009
@@ -26,6 +26,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.LongWritable;
+import org.apache.hadoop.io.Text;
 
 
 @UDFType(deterministic=false)
@@ -36,6 +38,7 @@
   //  For now, we just use the default time zone.
   private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
+  LongWritable result = new LongWritable();
   public UDFUnixTimeStamp() {
   }
 
@@ -43,43 +46,51 @@
    * Return current UnixTime.
    * @return long Number of seconds from 1970-01-01 00:00:00
    */
-  public long evaluate()  {
+  public LongWritable evaluate()  {
     Date date = new Date();
-    return date.getTime() / 1000;
+    result.set(date.getTime() / 1000);
+    return result;
   }
 
   /**
    * Convert time string to UnixTime.
-   * @param datestring Time string in format yyyy-MM-dd HH:mm:ss
+   * @param dateText Time string in format yyyy-MM-dd HH:mm:ss
    * @return long Number of seconds from 1970-01-01 00:00:00
    */
-  public long evaluate(String datestring)  {
-    if (datestring == null) {
-      Date date = new Date();
-      return date.getTime() / 1000;
+  public LongWritable evaluate(Text dateText)  {
+    if (dateText == null) {
+      return null;
     }
 
     try {
-      Date date = (Date)formatter.parse(datestring);
-      return date.getTime() / 1000;
+      Date date = (Date)formatter.parse(dateText.toString());
+      result.set(date.getTime() / 1000);
+      return result;
     } catch (ParseException e) {
-      return 0;
+      return null;
     }
   }
 
+  Text lastPatternText = new Text();
   /**
    * Convert time string to UnixTime with user defined pattern.
-   * @param datestring Time string in format patternstring
-   * @param patternstring Time patterns string supported by SimpleDateFormat
+   * @param dateText Time string in format patternstring
+   * @param patternText Time patterns string supported by SimpleDateFormat
    * @return long Number of seconds from 1970-01-01 00:00:00
    */
-  public long evaluate(String datestring, String patternstring)  {
+  public LongWritable evaluate(Text dateText, Text patternText)  {
+    if (dateText == null || patternText == null) {
+      return null;
+    }
     try {
-      formatter.applyPattern(patternstring);
+      if (!patternText.equals(lastPatternText)) {
+        formatter.applyPattern(patternText.toString());
+        lastPatternText.set(patternText);
+      }      
     } catch (Exception e) {
-      return 0;
+      return null;
     }
 
-    return evaluate(datestring);
+    return evaluate(dateText);
   }
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java Tue Apr 14 22:54:39 2009
@@ -19,19 +19,20 @@
 package org.apache.hadoop.hive.ql.udf;
 
 import org.apache.hadoop.hive.ql.exec.UDF;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
+import org.apache.hadoop.io.Text;
 
 public class UDFUpper extends UDF {
 
+  Text t = new Text();
   public UDFUpper() {
   }
 
-  public String evaluate(String s) {
+  public Text evaluate(Text s) {
     if (s == null) {
       return null;
     }
-    return s.toUpperCase();
+    t.set(s.toString().toUpperCase());
+    return t;
   }
   
 }

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java?rev=764994&r1=764993&r2=764994&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java Tue Apr 14 22:54:39 2009
@@ -26,6 +26,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hive.ql.exec.UDF;
+import org.apache.hadoop.io.IntWritable;
+import org.apache.hadoop.io.Text;
 
 
 public class UDFYear extends UDF {
@@ -35,6 +37,7 @@
   private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
   private Calendar calendar = Calendar.getInstance();
 
+  IntWritable result = new IntWritable();
   public UDFYear() {
   }
 
@@ -44,12 +47,13 @@
    * @param dateString the dateString in the format of "yyyy-MM-dd HH:mm:ss" or "yyyy-MM-dd".
    * @return an int from 1 to 12. null if the dateString is not a valid date string.
    */
-  public Integer evaluate(String dateString)  {
+  public IntWritable evaluate(Text dateString)  {
     
     try {
-      Date date = formatter.parse(dateString);
+      Date date = formatter.parse(dateString.toString());
       calendar.setTime(date);
-      return calendar.get(Calendar.YEAR);
+      result.set(calendar.get(Calendar.YEAR));
+      return result;
     } catch (ParseException e) {
       return null;
     }