You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2011/02/28 20:24:34 UTC

svn commit: r1075496 - in /pig/trunk: CHANGES.txt contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/AvroStorageUtils.java contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/storage/avro/TestAvroStorageUtils.java

Author: daijy
Date: Mon Feb 28 19:24:34 2011
New Revision: 1075496

URL: http://svn.apache.org/viewvc?rev=1075496&view=rev
Log:
PIG-1872: Fix bug in AvroStorage

Modified:
    pig/trunk/CHANGES.txt
    pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/AvroStorageUtils.java
    pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/storage/avro/TestAvroStorageUtils.java

Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1075496&r1=1075495&r2=1075496&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon Feb 28 19:24:34 2011
@@ -100,6 +100,8 @@ PIG-1696: Performance: Use System.arrayc
 
 BUG FIXES
 
+PIG-1872: Fix bug in AvroStorage (guolin2001, jghoman via daijy)
+
 PIG-1536: use same logic for merging inner schemas in "default union" and
 "union onschema" (daijy)
 

Modified: pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/AvroStorageUtils.java
URL: http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/AvroStorageUtils.java?rev=1075496&r1=1075495&r2=1075496&view=diff
==============================================================================
--- pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/AvroStorageUtils.java (original)
+++ pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/storage/avro/AvroStorageUtils.java Mon Feb 28 19:24:34 2011
@@ -211,6 +211,10 @@ public class AvroStorageUtils {
                 if (containsRecursiveRecord(fs, definedRecordNames))
                     return true;
             }
+            
+            /* remove its own name from the name set */
+            definedRecordNames.remove(s.getName());
+
             return false;
         }
         

Modified: pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/storage/avro/TestAvroStorageUtils.java
URL: http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/storage/avro/TestAvroStorageUtils.java?rev=1075496&r1=1075495&r2=1075496&view=diff
==============================================================================
--- pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/storage/avro/TestAvroStorageUtils.java (original)
+++ pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/test/storage/avro/TestAvroStorageUtils.java Mon Feb 28 19:24:34 2011
@@ -48,12 +48,28 @@ public class TestAvroStorageUtils {
         final String str3 ="[\"null\", " + str2 + "]";
         s = Schema.parse(str3);
         assertTrue(AvroStorageUtils.containsRecursiveRecord(s));
+        
     }
 
     @Test
     public void canIdentifyNonRecursiveRecords() throws IOException {
         final String non = RECORD_BEGINNING + "{ \"name\": \"next\", \"type\": [\"null\", \"string\"] } ] }";
         assertFalse(AvroStorageUtils.containsRecursiveRecord(Schema.parse(non)));
+        
+        final String s1 =
+            "{ \"type\":\"record\", \"name\":\"Event\", " +
+               "\"fields\":[ " +
+                       "{\"name\":\"f1\", " +
+                         "\"type\":{ \"type\":\"record\",\"name\":\"Entity\", " +
+                                          "\"fields\":[{\"name\":\"type\", \"type\": \"string\"}," +
+                                                             "{\"name\":\"value\",\"type\": \"int\"}] " +
+                                         "} }, " +
+                       " {\"name\":\"f2\",\"type\": \"Entity\"}, " +
+                       " {\"name\":\"f3\",\"type\": \"Entity\"} " +
+                       "] }";
+            Schema schema1 = Schema.parse(s1);
+            assertFalse(AvroStorageUtils.containsRecursiveRecord(schema1));
+
     }
 
      @Test