You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/08/22 22:40:27 UTC
svn commit: r1619926 - in /hive/branches/cbo/ql/src:
java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java
test/queries/clientpositive/cbo_correctness.q
test/results/clientpositive/cbo_correctness.q.out
Author: hashutosh
Date: Fri Aug 22 20:40:27 2014
New Revision: 1619926
URL: http://svn.apache.org/r1619926
Log:
HIVE-7852 : [CBO] Handle unary operators (Ashutosh Chauhan via John Pullokkaran)
Modified:
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java
hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q
hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java?rev=1619926&r1=1619925&r2=1619926&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/SqlFunctionConverter.java Fri Aug 22 20:40:27 2014
@@ -12,6 +12,8 @@ import org.apache.hadoop.hive.ql.parse.H
import org.apache.hadoop.hive.ql.parse.ParseDriver;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNegative;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPPositive;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
import org.eigenbase.reltype.RelDataType;
@@ -49,6 +51,12 @@ public class SqlFunctionConverter {
public static SqlOperator getOptiqOperator(GenericUDF hiveUDF,
ImmutableList<RelDataType> optiqArgTypes, RelDataType retType) {
+ // handle overloaded methods first
+ if (hiveUDF instanceof GenericUDFOPNegative) {
+ return SqlStdOperatorTable.UNARY_MINUS;
+ } else if (hiveUDF instanceof GenericUDFOPPositive) {
+ return SqlStdOperatorTable.UNARY_PLUS;
+ } // do genric lookup
return getOptiqFn(getName(hiveUDF), optiqArgTypes, retType);
}
@@ -111,8 +119,15 @@ public class SqlFunctionConverter {
node = (ASTNode) ParseDriver.adaptor.create(hToken.type, hToken.text);
} else {
node = (ASTNode) ParseDriver.adaptor.create(HiveParser.TOK_FUNCTION, "TOK_FUNCTION");
- if (op.kind != SqlKind.CAST)
- node.addChild((ASTNode) ParseDriver.adaptor.create(HiveParser.Identifier, op.getName()));
+ if (op.kind != SqlKind.CAST) {
+ if (op.kind == SqlKind.MINUS_PREFIX) {
+ node = (ASTNode) ParseDriver.adaptor.create(HiveParser.MINUS, "MINUS");
+ } else if (op.kind == SqlKind.PLUS_PREFIX) {
+ node = (ASTNode) ParseDriver.adaptor.create(HiveParser.PLUS, "PLUS");
+ } else {
+ node.addChild((ASTNode) ParseDriver.adaptor.create(HiveParser.Identifier, op.getName()));
+ }
+ }
}
for (ASTNode c : children) {
@@ -144,7 +159,7 @@ public class SqlFunctionConverter {
if (hiveUDF instanceof GenericUDFBridge) {
udfName = ((GenericUDFBridge) hiveUDF).getUdfName();
} else {
- Class udfClass = hiveUDF.getClass();
+ Class<? extends GenericUDF> udfClass = hiveUDF.getClass();
Annotation udfAnnotation = udfClass.getAnnotation(Description.class);
if (udfAnnotation != null && udfAnnotation instanceof Description) {
Modified: hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q?rev=1619926&r1=1619925&r2=1619926&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q (original)
+++ hive/branches/cbo/ql/src/test/queries/clientpositive/cbo_correctness.q Fri Aug 22 20:40:27 2014
@@ -217,3 +217,6 @@ select * from (select key as a, c_int+1
-- 13. null expr in select list
select null from t3;
+
+-- 14. unary operator
+select key from t1 where c_int = -6 or c_int = +6;
Modified: hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out?rev=1619926&r1=1619925&r2=1619926&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out (original)
+++ hive/branches/cbo/ql/src/test/results/clientpositive/cbo_correctness.q.out Fri Aug 22 20:40:27 2014
@@ -17879,3 +17879,15 @@ NULL
NULL
NULL
NULL
+PREHOOK: query: -- 14. unary operator
+select key from t1 where c_int = -6 or c_int = +6
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t1@dt=2014
+#### A masked pattern was here ####
+POSTHOOK: query: -- 14. unary operator
+select key from t1 where c_int = -6 or c_int = +6
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+POSTHOOK: Input: default@t1@dt=2014
+#### A masked pattern was here ####