You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by rd...@apache.org on 2013/12/28 05:49:45 UTC
svn commit: r1553787 - in /pig/trunk:
src/org/apache/pig/impl/util/avro/AvroMapWrapper.java
test/org/apache/pig/builtin/TestAvroStorage.java
Author: rding
Date: Sat Dec 28 04:49:44 2013
New Revision: 1553787
URL: http://svn.apache.org/r1553787
Log:
PIG-3608: ClassCastException when looking up a value from AvroMapWrapper using a Utf8 key (rding)
Modified:
pig/trunk/src/org/apache/pig/impl/util/avro/AvroMapWrapper.java
pig/trunk/test/org/apache/pig/builtin/TestAvroStorage.java
Modified: pig/trunk/src/org/apache/pig/impl/util/avro/AvroMapWrapper.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/impl/util/avro/AvroMapWrapper.java?rev=1553787&r1=1553786&r2=1553787&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/impl/util/avro/AvroMapWrapper.java (original)
+++ pig/trunk/src/org/apache/pig/impl/util/avro/AvroMapWrapper.java Sat Dec 28 04:49:44 2013
@@ -76,12 +76,12 @@ public final class AvroMapWrapper implem
@Override
public Object get(final Object key) {
Object v = null;
- if (isUtf8key) {
+ if (isUtf8key && !(key instanceof Utf8)) {
v = innerMap.get(new Utf8((String) key));
} else {
v = innerMap.get(key);
}
-
+
if (v instanceof Utf8) {
return v.toString();
} else {
Modified: pig/trunk/test/org/apache/pig/builtin/TestAvroStorage.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/builtin/TestAvroStorage.java?rev=1553787&r1=1553786&r2=1553787&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/builtin/TestAvroStorage.java (original)
+++ pig/trunk/test/org/apache/pig/builtin/TestAvroStorage.java Sat Dec 28 04:49:44 2013
@@ -24,6 +24,7 @@ import org.apache.avro.tool.DataFileWrit
import org.apache.avro.tool.Tool;
import org.apache.avro.tool.TrevniCreateRandomTool;
import org.apache.avro.tool.TrevniToJsonTool;
+import org.apache.avro.util.Utf8;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,6 +41,7 @@ import org.apache.pig.backend.executione
import org.apache.pig.builtin.mock.Storage.Data;
import org.apache.pig.data.Tuple;
import org.apache.pig.impl.util.avro.AvroBagWrapper;
+import org.apache.pig.impl.util.avro.AvroMapWrapper;
import org.apache.pig.impl.util.avro.AvroTupleWrapper;
import org.apache.pig.test.Util;
import org.junit.AfterClass;
@@ -59,6 +61,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
import java.util.TreeSet;
import static junit.framework.Assert.assertEquals;
@@ -808,6 +811,19 @@ public class TestAvroStorage {
assertTrue(size1.compareTo(size5) > 0);
}
+ @Test
+ public void testUtf8KeyLookupFromMap() throws Exception {
+ Map<CharSequence, Object> tm = new TreeMap<CharSequence, Object> ();
+ tm.put(new Utf8("foo"), "foo");
+ tm.put(new Utf8("bar"), "bar");
+
+ AvroMapWrapper wrapper = new AvroMapWrapper(tm);
+ String v = (String)wrapper.get(new Utf8("foo"));
+ assertEquals("foo", v);
+ v = (String)wrapper.get(new Utf8("bar"));
+ assertEquals("bar", v);
+ }
+
private void testAvroStorage(boolean expectedToSucceed, String scriptFile, Map<String,String> parameterMap) throws IOException {
pigServerLocal.setBatchOn();