Author: daijy
Date: Wed Mar  4 06:19:07 2015
New Revision: 1663862

URL: http://svn.apache.org/r1663862
Log:
PIG-4445: VALUELIST and VALUESET outputSchema does not match actual schema of 
data returned when map value schema is complex

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=1663862&r1=1663861&r2=1663862&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Wed Mar  4 06:19:07 2015
@@ -50,6 +50,9 @@ PIG-4333: Split BigData tests into multi
  
 BUG FIXES
 
+PIG-4445: VALUELIST and VALUESET outputSchema does not match actual schema of 
data returned when map value schema
+ is complex (erwaman via daijy)
+
 PIG-4442: Eliminate redundant RPC call to get file information in HPath 
(cnauroth via daijy)
 
 PIG-4440: Some code samples in documentation use Unicode left/right single 
quotes, which cause a

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=1663862&r1=1663861&r2=1663862&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/VALUELIST.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/VALUELIST.java Wed Mar  4 06:19:07 2015
@@ -105,7 +105,7 @@ public class VALUELIST extends EvalFunc<
                 throw new RuntimeException(fe);
             }
             if(fs != null) {
-                innerFieldSchema = new Schema.FieldSchema(fs);
+                innerFieldSchema = new Schema.FieldSchema(null, new 
Schema(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=1663862&r1=1663861&r2=1663862&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/VALUESET.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/VALUESET.java Wed Mar  4 06:19:07 2015
@@ -118,7 +118,7 @@ public class VALUESET extends EvalFunc<D
                 throw new RuntimeException(fe);
             }
             if (fs != null) {
-                innerFieldSchema = new Schema.FieldSchema(fs);
+                innerFieldSchema = new Schema.FieldSchema(null, new 
Schema(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=1663862&r1=1663861&r2=1663862&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestBuiltin.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestBuiltin.java Wed Mar  4 06:19:07 2015
@@ -2934,6 +2934,23 @@ public class TestBuiltin {
     }
 
     /**
+     * Tests that VALUESET preserves the schema when the map's value type is 
primitive.
+     */
+    @Test
+    public void testValueSetOutputSchemaPrimitiveType() throws 
FrontendException {
+        Schema inputSchema = new Schema();
+        Schema charArraySchema = new Schema(new FieldSchema(null, 
DataType.CHARARRAY));
+        FieldSchema mapSchema = new FieldSchema(null, charArraySchema, 
DataType.MAP);
+        inputSchema.add(mapSchema);
+
+        Schema tupleSchema = new Schema(new FieldSchema(null, charArraySchema, 
DataType.TUPLE));
+        Schema expectedSchema = new Schema(new FieldSchema(null, tupleSchema, 
DataType.BAG));
+
+        VALUESET vs = new VALUESET();
+        assertEquals(expectedSchema, vs.outputSchema(inputSchema));
+    }
+
+    /**
      * Tests that VALUESET preserves the schema when the map's value type is 
complex.
      */
     @Test
@@ -2943,7 +2960,8 @@ public class TestBuiltin {
         FieldSchema mapSchema = new FieldSchema(null, bagSchema, DataType.MAP);
         inputSchema.add(mapSchema);
 
-        Schema expectedSchema = new Schema(new FieldSchema(null, bagSchema, 
DataType.BAG));
+        Schema tupleSchema = new Schema(new FieldSchema(null, bagSchema, 
DataType.TUPLE));
+        Schema expectedSchema = new Schema(new FieldSchema(null, tupleSchema, 
DataType.BAG));
 
         VALUESET vs = new VALUESET();
         assertEquals(expectedSchema, vs.outputSchema(inputSchema));
@@ -2975,6 +2993,23 @@ public class TestBuiltin {
     }
 
     /**
+     * Tests that VALUELIST preserves the schema when the map's value type is 
primitive.
+     */
+    @Test
+    public void testValueListOutputSchemaPrimitiveType() throws 
FrontendException {
+        Schema inputSchema = new Schema();
+        Schema charArraySchema = new Schema(new FieldSchema(null, 
DataType.CHARARRAY));
+        FieldSchema mapSchema = new FieldSchema(null, charArraySchema, 
DataType.MAP);
+        inputSchema.add(mapSchema);
+
+        Schema tupleSchema = new Schema(new FieldSchema(null, charArraySchema, 
DataType.TUPLE));
+        Schema expectedSchema = new Schema(new FieldSchema(null, tupleSchema, 
DataType.BAG));
+
+        VALUELIST vl = new VALUELIST();
+        assertEquals(expectedSchema, vl.outputSchema(inputSchema));
+    }
+
+    /**
      * Tests that VALUELIST preserves the schema when the map's value type is 
complex.
      */
     @Test
@@ -2984,7 +3019,8 @@ public class TestBuiltin {
         FieldSchema mapSchema = new FieldSchema(null, bagSchema, DataType.MAP);
         inputSchema.add(mapSchema);
 
-        Schema expectedSchema = new Schema(new FieldSchema(null, bagSchema, 
DataType.BAG));
+        Schema tupleSchema = new Schema(new FieldSchema(null, bagSchema, 
DataType.TUPLE));
+        Schema expectedSchema = new Schema(new FieldSchema(null, tupleSchema, 
DataType.BAG));
 
         VALUELIST vl = new VALUELIST();
         assertEquals(expectedSchema, vl.outputSchema(inputSchema));


Reply via email to