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