diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java index 686fc76..500a74e 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyMap.java @@ -23,6 +23,8 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.serde2.lazy.objectinspector.LazyMapObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector; import org.apache.hadoop.io.Text; @@ -36,6 +38,7 @@ */ public class LazyMap extends LazyNonPrimitive { + public static final Log LOG = LogFactory.getLog(LazyMap.class); /** * Whether the data is already parsed or not. */ @@ -170,7 +173,10 @@ private void parse() { valueLength[mapSize] = elementByteEnd - (keyEnd[mapSize] + 1); LazyPrimitive lazyKey = uncheckedGetKey(mapSize); if (lazyKey == null) { - continue; + LOG.warn("LazyMap does not deal with the case of a NULL map. That is handled by the parent LazyObject."); + String s = "Not support empty key or empty key/value pair in representation of column with MAP type"; + LOG.warn(String.format("%s, %s", s, "may hang query by infinite loop.")); + throw new RuntimeException(s); } Object key = lazyKey.getObject(); if(!keySet.contains(key)) {