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 2010/04/16 03:41:49 UTC

svn commit: r934662 - in /hadoop/hive/trunk: ./ ql/src/java/org/apache/hadoop/hive/ql/exec/ ql/src/test/queries/clientpositive/ ql/src/test/results/clientpositive/

Author: namit
Date: Fri Apr 16 01:41:49 2010
New Revision: 934662

URL: http://svn.apache.org/viewvc?rev=934662&view=rev
Log:
HIVE-1308. Bug in boolean datatypes comparison
(Paul Yang via namit)


Modified:
    hadoop/hive/trunk/CHANGES.txt
    hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ComparisonOpMethodResolver.java
    hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_equal.q
    hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthan.q
    hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q
    hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthan.q
    hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthanorequal.q
    hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_equal.q.out
    hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthan.q.out
    hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthanorequal.q.out
    hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthan.q.out
    hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthanorequal.q.out

Modified: hadoop/hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/CHANGES.txt?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/CHANGES.txt (original)
+++ hadoop/hive/trunk/CHANGES.txt Fri Apr 16 01:41:49 2010
@@ -369,6 +369,9 @@ Trunk -  Unreleased
     HIVE-1311. Bug in use of parameter hadoop supports splittable.
     (Namit Jain via zshao)
 
+    HIVE-1308. Bug in boolean datatypes comparison
+    (Paul Yang via namit)
+
 Release 0.5.0 -  Unreleased
 
   INCOMPATIBLE CHANGES

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ComparisonOpMethodResolver.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ComparisonOpMethodResolver.java?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ComparisonOpMethodResolver.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ComparisonOpMethodResolver.java Fri Apr 16 01:41:49 2010
@@ -50,13 +50,13 @@ public class ComparisonOpMethodResolver 
 
   /*
    * (non-Javadoc)
-   * 
+   *
    * @see
    * org.apache.hadoop.hive.ql.exec.UDFMethodResolver#getEvalMethod(java.util
    * .List)
    */
   @Override
-  public Method getEvalMethod(List<TypeInfo> argTypeInfos) throws AmbiguousMethodException {
+  public Method getEvalMethod(List<TypeInfo> argTypeInfos) throws UDFArgumentException {
     assert (argTypeInfos.size() == 2);
 
     List<TypeInfo> pTypeInfos = null;
@@ -65,6 +65,11 @@ public class ComparisonOpMethodResolver 
       pTypeInfos = new ArrayList<TypeInfo>();
       pTypeInfos.add(TypeInfoFactory.doubleTypeInfo);
       pTypeInfos.add(TypeInfoFactory.doubleTypeInfo);
+    } else if (argTypeInfos.get(0).equals(TypeInfoFactory.booleanTypeInfo) &&
+               argTypeInfos.get(1).equals(TypeInfoFactory.booleanTypeInfo)) {
+      pTypeInfos = new ArrayList<TypeInfo>();
+      pTypeInfos.add(TypeInfoFactory.intTypeInfo);
+      pTypeInfos.add(TypeInfoFactory.intTypeInfo);
     } else if (argTypeInfos.get(0) == argTypeInfos.get(1)) {
       pTypeInfos = argTypeInfos;
     } else {
@@ -75,9 +80,12 @@ public class ComparisonOpMethodResolver 
 
     Method udfMethod = null;
 
+    List<Method> evaluateMethods = new ArrayList<Method>();
+
     for (Method m : Arrays.asList(udfClass.getMethods())) {
       if (m.getName().equals("evaluate")) {
 
+        evaluateMethods.add(m);
         List<TypeInfo> acceptedTypeInfos = TypeInfoUtils.getParameterTypeInfos(
             m, pTypeInfos.size());
         if (acceptedTypeInfos == null) {
@@ -104,6 +112,11 @@ public class ComparisonOpMethodResolver 
         }
       }
     }
+
+    if (udfMethod == null) {
+      throw new NoMatchingMethodException(udfClass, argTypeInfos, evaluateMethods);
+    }
+
     return udfMethod;
   }
 

Modified: hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_equal.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_equal.q?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_equal.q (original)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_equal.q Fri Apr 16 01:41:49 2010
@@ -4,3 +4,4 @@ DESCRIBE FUNCTION EXTENDED =;
 DESCRIBE FUNCTION ==;
 DESCRIBE FUNCTION EXTENDED ==;
 
+SELECT true=false, false=true, false=false, true=true FROM src LIMIT 1;

Modified: hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthan.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthan.q?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthan.q (original)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthan.q Fri Apr 16 01:41:49 2010
@@ -1,2 +1,4 @@
 DESCRIBE FUNCTION >;
 DESCRIBE FUNCTION EXTENDED >;
+
+SELECT true>false, false>true, false>false, true>true FROM src LIMIT 1;
\ No newline at end of file

Modified: hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q (original)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_greaterthanorequal.q Fri Apr 16 01:41:49 2010
@@ -1,2 +1,4 @@
 DESCRIBE FUNCTION >=;
 DESCRIBE FUNCTION EXTENDED >=;
+
+SELECT true>=false, false>=true, false>=false, true>=true FROM src LIMIT 1;
\ No newline at end of file

Modified: hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthan.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthan.q?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthan.q (original)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthan.q Fri Apr 16 01:41:49 2010
@@ -1,2 +1,4 @@
 DESCRIBE FUNCTION <;
 DESCRIBE FUNCTION EXTENDED <;
+
+SELECT true<false, false<true, false<false, true<true FROM src LIMIT 1;

Modified: hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthanorequal.q
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthanorequal.q?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthanorequal.q (original)
+++ hadoop/hive/trunk/ql/src/test/queries/clientpositive/udf_lessthanorequal.q Fri Apr 16 01:41:49 2010
@@ -1,2 +1,4 @@
 DESCRIBE FUNCTION <=;
 DESCRIBE FUNCTION EXTENDED <=;
+
+SELECT true<=false, false<=true, false<=false, true<=true FROM src LIMIT 1;

Modified: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_equal.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_equal.q.out?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_equal.q.out (original)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_equal.q.out Fri Apr 16 01:41:49 2010
@@ -20,3 +20,12 @@ POSTHOOK: query: DESCRIBE FUNCTION EXTEN
 POSTHOOK: type: DESCFUNCTION
 a == b - Returns TRUE if a equals b and false otherwise
 Synonyms: =
+PREHOOK: query: SELECT true=false, false=true, false=false, true=true FROM src LIMIT 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_14-02-03_248_2636646596000796300/10000
+POSTHOOK: query: SELECT true=false, false=true, false=false, true=true FROM src LIMIT 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_14-02-03_248_2636646596000796300/10000
+false	false	true	true

Modified: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthan.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthan.q.out?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthan.q.out (original)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthan.q.out Fri Apr 16 01:41:49 2010
@@ -8,3 +8,12 @@ PREHOOK: type: DESCFUNCTION
 POSTHOOK: query: DESCRIBE FUNCTION EXTENDED >
 POSTHOOK: type: DESCFUNCTION
 a > b - Returns TRUE if a is greater than b
+PREHOOK: query: SELECT true>false, false>true, false>false, true>true FROM src LIMIT 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-39-21_311_8364092782764061396/10000
+POSTHOOK: query: SELECT true>false, false>true, false>false, true>true FROM src LIMIT 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-39-21_311_8364092782764061396/10000
+true	false	false	false

Modified: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthanorequal.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthanorequal.q.out?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthanorequal.q.out (original)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_greaterthanorequal.q.out Fri Apr 16 01:41:49 2010
@@ -8,3 +8,12 @@ PREHOOK: type: DESCFUNCTION
 POSTHOOK: query: DESCRIBE FUNCTION EXTENDED >=
 POSTHOOK: type: DESCFUNCTION
 a >= b - Returns TRUE if b is not smaller than a
+PREHOOK: query: SELECT true>=false, false>=true, false>=false, true>=true FROM src LIMIT 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-38-26_830_745034439856049454/10000
+POSTHOOK: query: SELECT true>=false, false>=true, false>=false, true>=true FROM src LIMIT 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-38-26_830_745034439856049454/10000
+true	false	true	true

Modified: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthan.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthan.q.out?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthan.q.out (original)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthan.q.out Fri Apr 16 01:41:49 2010
@@ -8,3 +8,12 @@ PREHOOK: type: DESCFUNCTION
 POSTHOOK: query: DESCRIBE FUNCTION EXTENDED <
 POSTHOOK: type: DESCFUNCTION
 a < b - Returns TRUE if a is less than b
+PREHOOK: query: SELECT true<false, false<true, false<false, true<true FROM src LIMIT 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-35-43_830_5934618930589343927/10000
+POSTHOOK: query: SELECT true<false, false<true, false<false, true<true FROM src LIMIT 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-35-43_830_5934618930589343927/10000
+false	true	false	false

Modified: hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthanorequal.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthanorequal.q.out?rev=934662&r1=934661&r2=934662&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthanorequal.q.out (original)
+++ hadoop/hive/trunk/ql/src/test/results/clientpositive/udf_lessthanorequal.q.out Fri Apr 16 01:41:49 2010
@@ -8,3 +8,12 @@ PREHOOK: type: DESCFUNCTION
 POSTHOOK: query: DESCRIBE FUNCTION EXTENDED <=
 POSTHOOK: type: DESCFUNCTION
 a <= b - Returns TRUE if b is not greater than a
+PREHOOK: query: SELECT true<=false, false<=true, false<=false, true<=true FROM src LIMIT 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-36-38_643_4822148186689079902/10000
+POSTHOOK: query: SELECT true<=false, false<=true, false<=false, true<=true FROM src LIMIT 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: file:/data/users/pyang/mstore/trunk/VENDOR.hive/trunk/build/ql/scratchdir/hive_2010-04-14_15-36-38_643_4822148186689079902/10000
+false	true	true	true