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/09/11 20:48:43 UTC
svn commit: r1624360 - in
/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator:
RexNodeConverter.java TypeConverter.java
Author: hashutosh
Date: Thu Sep 11 18:48:42 2014
New Revision: 1624360
URL: http://svn.apache.org/r1624360
Log:
HIVE-8048 : [CBO] Handle union type (Ashutosh Chauhan via John Pullokkaran)
Modified:
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java
hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java?rev=1624360&r1=1624359&r2=1624360&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/RexNodeConverter.java Thu Sep 11 18:48:42 2014
@@ -34,6 +34,7 @@ import org.apache.hadoop.hive.common.typ
import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.common.type.HiveVarchar;
import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
+import org.apache.hadoop.hive.ql.optimizer.optiq.OptiqSemanticException;
import org.apache.hadoop.hive.ql.parse.ParseUtils;
import org.apache.hadoop.hive.ql.parse.RowResolver;
import org.apache.hadoop.hive.ql.parse.SemanticException;
@@ -211,7 +212,8 @@ public class RexNodeConverter {
return castExpr;
}
- private RexNode handleExplicitCast(ExprNodeGenericFuncDesc func, List<RexNode> childRexNodeLst) {
+ private RexNode handleExplicitCast(ExprNodeGenericFuncDesc func,
+ List<RexNode> childRexNodeLst) throws OptiqSemanticException {
RexNode castExpr = null;
if (childRexNodeLst != null && childRexNodeLst.size() == 1) {
Modified: hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java
URL: http://svn.apache.org/viewvc/hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java?rev=1624360&r1=1624359&r2=1624360&view=diff
==============================================================================
--- hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java (original)
+++ hive/branches/cbo/ql/src/java/org/apache/hadoop/hive/ql/optimizer/optiq/translator/TypeConverter.java Thu Sep 11 18:48:42 2014
@@ -17,12 +17,14 @@
*/
package org.apache.hadoop.hive.ql.optimizer.optiq.translator;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.hadoop.hive.ql.exec.ColumnInfo;
import org.apache.hadoop.hive.ql.exec.RowSchema;
+import org.apache.hadoop.hive.ql.optimizer.optiq.OptiqSemanticException;
import org.apache.hadoop.hive.ql.optimizer.optiq.translator.SqlFunctionConverter.HiveToken;
import org.apache.hadoop.hive.ql.parse.HiveParser;
import org.apache.hadoop.hive.ql.parse.RowResolver;
@@ -68,7 +70,8 @@ public class TypeConverter {
};
/*********************** Convert Hive Types To Optiq Types ***********************/
- public static RelDataType getType(RelOptCluster cluster, List<ColumnInfo> cInfoLst) {
+ public static RelDataType getType(RelOptCluster cluster,
+ List<ColumnInfo> cInfoLst) throws OptiqSemanticException {
RexBuilder rexBuilder = cluster.getRexBuilder();
RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory();
List<RelDataType> fieldTypes = new LinkedList<RelDataType>();
@@ -81,7 +84,8 @@ public class TypeConverter {
return dtFactory.createStructType(fieldTypes, fieldNames);
}
- public static RelDataType getType(RelOptCluster cluster, RowResolver rr, List<String> neededCols) {
+ public static RelDataType getType(RelOptCluster cluster, RowResolver rr,
+ List<String> neededCols) throws OptiqSemanticException {
RexBuilder rexBuilder = cluster.getRexBuilder();
RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory();
RowSchema rs = rr.getRowSchema();
@@ -97,7 +101,8 @@ public class TypeConverter {
return dtFactory.createStructType(fieldTypes, fieldNames);
}
- public static RelDataType convert(TypeInfo type, RelDataTypeFactory dtFactory) {
+ public static RelDataType convert(TypeInfo type, RelDataTypeFactory dtFactory)
+ throws OptiqSemanticException{
RelDataType convertedType = null;
switch (type.getCategory()) {
@@ -185,31 +190,32 @@ public class TypeConverter {
return convertedType;
}
- public static RelDataType convert(ListTypeInfo lstType, RelDataTypeFactory dtFactory) {
+ public static RelDataType convert(ListTypeInfo lstType,
+ RelDataTypeFactory dtFactory) throws OptiqSemanticException {
RelDataType elemType = convert(lstType.getListElementTypeInfo(), dtFactory);
return dtFactory.createArrayType(elemType, -1);
}
- public static RelDataType convert(MapTypeInfo mapType, RelDataTypeFactory dtFactory) {
+ public static RelDataType convert(MapTypeInfo mapType, RelDataTypeFactory dtFactory)
+ throws OptiqSemanticException {
RelDataType keyType = convert(mapType.getMapKeyTypeInfo(), dtFactory);
RelDataType valueType = convert(mapType.getMapValueTypeInfo(), dtFactory);
return dtFactory.createMapType(keyType, valueType);
}
- public static RelDataType convert(StructTypeInfo structType, final RelDataTypeFactory dtFactory) {
- List<RelDataType> fTypes = Lists.transform(structType.getAllStructFieldTypeInfos(),
- new Function<TypeInfo, RelDataType>() {
- @Override
- public RelDataType apply(TypeInfo tI) {
- return convert(tI, dtFactory);
- }
- });
+ public static RelDataType convert(StructTypeInfo structType,
+ final RelDataTypeFactory dtFactory) throws OptiqSemanticException {
+ List<RelDataType> fTypes = new ArrayList<RelDataType>(structType.getAllStructFieldTypeInfos().size());
+ for (TypeInfo ti : structType.getAllStructFieldTypeInfos()) {
+ fTypes.add(convert(ti,dtFactory));
+ }
return dtFactory.createStructType(fTypes, structType.getAllStructFieldNames());
}
- public static RelDataType convert(UnionTypeInfo unionType, RelDataTypeFactory dtFactory) {
- // @todo what do we about unions?
- throw new UnsupportedOperationException();
+ public static RelDataType convert(UnionTypeInfo unionType, RelDataTypeFactory dtFactory)
+ throws OptiqSemanticException{
+ // Union type is not supported in Optiq.
+ throw new OptiqSemanticException("Union type is not supported");
}
public static TypeInfo convert(RelDataType rType) {