Author: daijy
Date: Fri Feb 27 18:46:59 2015
New Revision: 1662788
URL: http://svn.apache.org/r1662788
Log:
PIG-4432: Built-in VALUELIST and VALUESET UDFs do not preserve the schema when
the map value type is a complex type
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/builtin/VALUELIST.java
pig/trunk/src/org/apache/pig/builtin/VALUESET.java
pig/trunk/test/org/apache/pig/test/TestBuiltin.java
Modified: pig/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1662788&r1=1662787&r2=1662788&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Fri Feb 27 18:46:59 2015
@@ -50,6 +50,9 @@ PIG-4333: Split BigData tests into multi
BUG FIXES
+PIG-4432: Built-in VALUELIST and VALUESET UDFs do not preserve the schema when
the map value type is
+ a complex type (erwaman via daijy)
+
PIG-4412: Race condition in writing multiple outputs from STREAM op (jwills
via daijy)
PIG-4408: Merge join should support replicated join as a predecessor (bridiver
via daijy)
Modified: pig/trunk/src/org/apache/pig/builtin/VALUELIST.java
URL:
http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/VALUELIST.java?rev=1662788&r1=1662787&r2=1662788&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/VALUELIST.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/VALUELIST.java Fri Feb 27 18:46:59 2015
@@ -105,7 +105,7 @@ public class VALUELIST extends EvalFunc<
throw new RuntimeException(fe);
}
if(fs != null) {
- innerFieldSchema = new Schema.FieldSchema(null, fs.type);
+ innerFieldSchema = new Schema.FieldSchema(fs);
}
} else {
innerFieldSchema = new Schema.FieldSchema(null,
DataType.BYTEARRAY);
Modified: pig/trunk/src/org/apache/pig/builtin/VALUESET.java
URL:
http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/VALUESET.java?rev=1662788&r1=1662787&r2=1662788&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/VALUESET.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/VALUESET.java Fri Feb 27 18:46:59 2015
@@ -118,7 +118,7 @@ public class VALUESET extends EvalFunc<D
throw new RuntimeException(fe);
}
if (fs != null) {
- innerFieldSchema = new Schema.FieldSchema(null, fs.type);
+ innerFieldSchema = new Schema.FieldSchema(fs);
}
} else {
innerFieldSchema = new Schema.FieldSchema(null,
DataType.BYTEARRAY);
Modified: pig/trunk/test/org/apache/pig/test/TestBuiltin.java
URL:
http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestBuiltin.java?rev=1662788&r1=1662787&r2=1662788&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestBuiltin.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestBuiltin.java Fri Feb 27 18:46:59 2015
@@ -2933,6 +2933,22 @@ public class TestBuiltin {
assertEquals(resultList.get(1), "hadoop");
}
+ /**
+ * Tests that VALUESET preserves the schema when the map's value type is
complex.
+ */
+ @Test
+ public void testValueSetOutputSchemaComplexType() throws FrontendException
{
+ Schema inputSchema = new Schema();
+ Schema bagSchema = Schema.generateNestedSchema(DataType.BAG,
DataType.CHARARRAY);
+ FieldSchema mapSchema = new FieldSchema(null, bagSchema, DataType.MAP);
+ inputSchema.add(mapSchema);
+
+ Schema expectedSchema = new Schema(new FieldSchema(null, bagSchema,
DataType.BAG));
+
+ VALUESET vs = new VALUESET();
+ assertEquals(expectedSchema, vs.outputSchema(inputSchema));
+ }
+
@SuppressWarnings("unchecked")
@Test
public void testValueList() throws Exception {
@@ -2958,6 +2974,21 @@ public class TestBuiltin {
assertEquals((String)resultList.get(2), "hadoop");
}
+ /**
+ * Tests that VALUELIST preserves the schema when the map's value type is
complex.
+ */
+ @Test
+ public void testValueListOutputSchemaComplexType() throws
FrontendException {
+ Schema inputSchema = new Schema();
+ Schema bagSchema = Schema.generateNestedSchema(DataType.BAG,
DataType.CHARARRAY);
+ FieldSchema mapSchema = new FieldSchema(null, bagSchema, DataType.MAP);
+ inputSchema.add(mapSchema);
+
+ Schema expectedSchema = new Schema(new FieldSchema(null, bagSchema,
DataType.BAG));
+
+ VALUELIST vl = new VALUELIST();
+ assertEquals(expectedSchema, vl.outputSchema(inputSchema));
+ }
@SuppressWarnings("unchecked")
@Test