You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by hg...@apache.org on 2015/06/24 23:36:39 UTC

[4/4] drill git commit: DRILL-3304: improve TypeHelper error messages when UnsupportedOprationException is thrown

DRILL-3304: improve TypeHelper error messages when UnsupportedOprationException is thrown


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/064af807
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/064af807
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/064af807

Branch: refs/heads/master
Commit: 064af8079f637b8596e0b303baf5ce26f2b925bd
Parents: 856b3d2
Author: adeneche <ad...@gmail.com>
Authored: Wed Jun 17 08:09:51 2015 -0700
Committer: Hanifi Gunes <hg...@maprtech.com>
Committed: Wed Jun 24 14:40:45 2015 -0700

----------------------------------------------------------------------
 .../drill/common/exceptions/ErrorHelper.java    |  3 +-
 .../src/main/codegen/templates/TypeHelper.java  | 52 +++++++++++---------
 2 files changed, 31 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/064af807/common/src/main/java/org/apache/drill/common/exceptions/ErrorHelper.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/exceptions/ErrorHelper.java b/common/src/main/java/org/apache/drill/common/exceptions/ErrorHelper.java
index 5dd9b67..0aa5a1b 100644
--- a/common/src/main/java/org/apache/drill/common/exceptions/ErrorHelper.java
+++ b/common/src/main/java/org/apache/drill/common/exceptions/ErrorHelper.java
@@ -40,8 +40,9 @@ class ErrorHelper {
 
     Throwable ex = cause;
     while (ex != null) {
+      message = ex.getClass().getSimpleName();
       if (ex.getMessage() != null) {
-        message = ex.getClass().getName() + ": " + ex.getMessage();
+        message += ": " + ex.getMessage();
       }
 
       if (ex.getCause() != null && ex.getCause() != ex) {

http://git-wip-us.apache.org/repos/asf/drill/blob/064af807/exec/java-exec/src/main/codegen/templates/TypeHelper.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/TypeHelper.java b/exec/java-exec/src/main/codegen/templates/TypeHelper.java
index ad818bd..d6ccd3a 100644
--- a/exec/java-exec/src/main/codegen/templates/TypeHelper.java
+++ b/exec/java-exec/src/main/codegen/templates/TypeHelper.java
@@ -16,8 +16,6 @@
  * limitations under the License.
  */
 
-import org.apache.drill.common.types.MajorType;
-
 <@pp.dropOutputFile />
 <@pp.changeOutputFile name="/org/apache/drill/exec/expr/TypeHelper.java" />
 
@@ -27,6 +25,8 @@ package org.apache.drill.exec.expr;
 
 <#include "/@includes/vv_imports.ftl" />
 import org.apache.drill.common.expression.SchemaPath;
+import org.apache.drill.common.types.TypeProtos.DataMode;
+import org.apache.drill.common.types.TypeProtos.MinorType;
 import org.apache.drill.common.types.TypeProtos.MajorType;
 import org.apache.drill.exec.record.MaterializedField;
 import org.apache.drill.exec.vector.accessor.*;
@@ -43,6 +43,14 @@ public class TypeHelper {
   // a high value like this will not inflate the size for small values
   public static final int VARCHAR_DEFAULT_CAST_LEN = 65536;
 
+  private static String buildErrorMessage(final String operation, final MinorType type, final DataMode mode) {
+    return String.format("Unable to %s for minor type [%s] and mode [%s]", operation, type, mode);
+  }
+
+  private static String buildErrorMessage(final String operation, final MajorType type) {
+    return buildErrorMessage(operation, type.getMinorType(), type.getMode());
+  }
+
   public static int getSize(MajorType major) {
     switch (major.getMinorType()) {
 <#list vv.types as type>
@@ -57,15 +65,16 @@ public class TypeHelper {
       case FIXED16CHAR: return major.getWidth();
       case FIXEDBINARY: return major.getWidth();
     }
-    throw new UnsupportedOperationException();
+    throw new UnsupportedOperationException(buildErrorMessage("get size", major));
   }
 
   public static SqlAccessor getSqlAccessor(ValueVector vector){
-    switch(vector.getField().getType().getMinorType()){
+    final MajorType type = vector.getField().getType();
+    switch(type.getMinorType()){
     <#list vv.types as type>
     <#list type.minor as minor>
     case ${minor.class?upper_case}:
-      switch (vector.getField().getType().getMode()) {
+      switch (type.getMode()) {
         case REQUIRED:
           return new ${minor.class}Accessor((${minor.class}Vector) vector);
         case OPTIONAL:
@@ -79,7 +88,7 @@ public class TypeHelper {
     case LIST:
       return new GenericAccessor(vector);
     }
-    throw new UnsupportedOperationException("Unable to find sql accessor for minor type [" + vector.getField().getType().getMinorType() + "] and mode [" + vector.getField().getType().getMode() + "]");
+    throw new UnsupportedOperationException(buildErrorMessage("find sql accessor", type));
   }
   
   public static ValueVector getNewVector(SchemaPath parentPath, String name, BufferAllocator allocator, MajorType type){
@@ -123,7 +132,7 @@ public class TypeHelper {
     default:
       break;
     }
-    throw new UnsupportedOperationException();
+    throw new UnsupportedOperationException(buildErrorMessage("get value vector class", type, mode));
   }
   public static Class<?> getReaderClassName( MinorType type, DataMode mode, boolean isSingularRepeated){
     switch (type) {
@@ -161,7 +170,7 @@ public class TypeHelper {
       default:
         break;
       }
-      throw new UnsupportedOperationException();    
+      throw new UnsupportedOperationException(buildErrorMessage("get reader class name", type, mode));
   }
   
   public static Class<?> getWriterInterface( MinorType type, DataMode mode){
@@ -176,7 +185,7 @@ public class TypeHelper {
       default:
         break;
       }
-      throw new UnsupportedOperationException();    
+      throw new UnsupportedOperationException(buildErrorMessage("get writer interface", type, mode));
   }
   
   public static Class<?> getWriterImpl( MinorType type, DataMode mode){
@@ -212,7 +221,7 @@ public class TypeHelper {
       default:
         break;
       }
-      throw new UnsupportedOperationException();    
+      throw new UnsupportedOperationException(buildErrorMessage("get writer implementation", type, mode));
   }
 
   public static Class<?> getHolderReaderImpl( MinorType type, DataMode mode){
@@ -233,7 +242,7 @@ public class TypeHelper {
       default:
         break;
       }
-      throw new UnsupportedOperationException();    
+      throw new UnsupportedOperationException(buildErrorMessage("get holder reader implementation", type, mode));
   }
   
   public static JType getHolderType(JCodeModel model, MinorType type, DataMode mode){
@@ -260,7 +269,7 @@ public class TypeHelper {
       default:
         break;
       }
-      throw new UnsupportedOperationException("Unable to find holder type for minorType: " + type);
+      throw new UnsupportedOperationException(buildErrorMessage("get holder type", type, mode));
   }
 
   public static ValueVector getNewVector(MaterializedField field, BufferAllocator allocator){
@@ -303,7 +312,7 @@ public class TypeHelper {
       break;
     }
     // All ValueVector types have been handled.
-    throw new UnsupportedOperationException(type.getMinorType() + " type is not supported. Mode: " + type.getMode());
+    throw new UnsupportedOperationException(buildErrorMessage("get new vector", type));
   }
 
   public static ValueHolder getValue(ValueVector vector, int index) {
@@ -349,11 +358,9 @@ public class TypeHelper {
       holder = new ObjectHolder();
       ((ObjectHolder)holder).obj = ((ObjectVector) vector).getAccessor().getObject(index)         ;
       break;
-    default:
-      throw new UnsupportedOperationException(type + " type is not supported.");
     }
 
-    throw new UnsupportedOperationException(type + " type is not supported.");
+    throw new UnsupportedOperationException(buildErrorMessage("get value", type));
   }
 
   public static void setValue(ValueVector vector, int index, ValueHolder holder) {
@@ -379,7 +386,7 @@ public class TypeHelper {
       ((ObjectVector) vector).getMutator().setSafe(index, (ObjectHolder) holder);
       return;
     default:
-      throw new UnsupportedOperationException(type.getMinorType() + " type is not supported.");
+      throw new UnsupportedOperationException(buildErrorMessage("set value", type));
     }
   }
 
@@ -407,7 +414,7 @@ public class TypeHelper {
       case GENERIC_OBJECT:
         ((ObjectVector) vector).getMutator().setSafe(index, (ObjectHolder) holder);
       default:
-        throw new UnsupportedOperationException(type.getMinorType() + " type is not supported.");
+        throw new UnsupportedOperationException(buildErrorMessage("set value safe", type));
     }
   }
 
@@ -441,7 +448,6 @@ public class TypeHelper {
    * @return
    */
   public static ValueHolder createValueHolder(MajorType type) {
-    ValueHolder holder;
     switch(type.getMinorType()) {
       <#list vv.types as type>
       <#list type.minor as minor>
@@ -460,7 +466,7 @@ public class TypeHelper {
       case GENERIC_OBJECT:
         return new ObjectHolder();
       default:
-        throw new UnsupportedOperationException(type + " type is not supported for 'createValueHolder' method.");
+        throw new UnsupportedOperationException(buildErrorMessage("create value holder", type));
     }
   }
 
@@ -483,7 +489,7 @@ public class TypeHelper {
       </#list>
       </#list>
       default:
-        throw new UnsupportedOperationException(type + " type is not supported for 'isNull' method.");
+        throw new UnsupportedOperationException(buildErrorMessage("check is null", type));
     }
   }
 
@@ -517,7 +523,7 @@ public class TypeHelper {
       </#list>
       </#list>
       default:
-        throw new UnsupportedOperationException(type + " type is not supported for 'deNullify' method.");
+        throw new UnsupportedOperationException(buildErrorMessage("deNullify", type));
     }
   }
 
@@ -545,7 +551,7 @@ public class TypeHelper {
       </#list>
       </#list>
       default:
-        throw new UnsupportedOperationException(type + " type is not supported for 'nullify' method.");
+        throw new UnsupportedOperationException(buildErrorMessage("nullify", type));
     }
   }