You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kh...@apache.org on 2013/08/17 02:42:17 UTC

svn commit: r1514929 - in /hive/trunk/hcatalog/core/src: main/java/org/apache/hcatalog/data/schema/HCatSchema.java test/java/org/apache/hcatalog/data/schema/TestHCatSchema.java

Author: khorgath
Date: Sat Aug 17 00:42:16 2013
New Revision: 1514929

URL: http://svn.apache.org/r1514929
Log:
HIVE-5105 HCatSchema.remove(HCatFieldSchema hcatFieldSchema) does not clean up fieldPositionMap (Eugene Koifman via Sushanth Sowmyan)

Modified:
    hive/trunk/hcatalog/core/src/main/java/org/apache/hcatalog/data/schema/HCatSchema.java
    hive/trunk/hcatalog/core/src/test/java/org/apache/hcatalog/data/schema/TestHCatSchema.java

Modified: hive/trunk/hcatalog/core/src/main/java/org/apache/hcatalog/data/schema/HCatSchema.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/core/src/main/java/org/apache/hcatalog/data/schema/HCatSchema.java?rev=1514929&r1=1514928&r2=1514929&view=diff
==============================================================================
--- hive/trunk/hcatalog/core/src/main/java/org/apache/hcatalog/data/schema/HCatSchema.java (original)
+++ hive/trunk/hcatalog/core/src/main/java/org/apache/hcatalog/data/schema/HCatSchema.java Sat Aug 17 00:42:16 2013
@@ -36,6 +36,7 @@ public class HCatSchema implements Seria
     private static final long serialVersionUID = 1L;
 
     private final List<HCatFieldSchema> fieldSchemas;
+    //HCatFieldSchema.getName()->position
     private final Map<String, Integer> fieldPositionMap;
     private final List<String> fieldNames;
 
@@ -118,7 +119,7 @@ public class HCatSchema implements Seria
         }
 
         fieldSchemas.remove(hcatFieldSchema);
-        fieldPositionMap.remove(hcatFieldSchema);
+        fieldPositionMap.remove(hcatFieldSchema.getName());
         fieldNames.remove(hcatFieldSchema.getName());
     }
 

Modified: hive/trunk/hcatalog/core/src/test/java/org/apache/hcatalog/data/schema/TestHCatSchema.java
URL: http://svn.apache.org/viewvc/hive/trunk/hcatalog/core/src/test/java/org/apache/hcatalog/data/schema/TestHCatSchema.java?rev=1514929&r1=1514928&r2=1514929&view=diff
==============================================================================
--- hive/trunk/hcatalog/core/src/test/java/org/apache/hcatalog/data/schema/TestHCatSchema.java (original)
+++ hive/trunk/hcatalog/core/src/test/java/org/apache/hcatalog/data/schema/TestHCatSchema.java Sat Aug 17 00:42:16 2013
@@ -76,4 +76,21 @@ public class TestHCatSchema extends Test
             assertTrue(iae.getMessage().contains("Field named memberID already exists"));
         }
     }
+    public void testRemoveAddField() throws HCatException {
+        List<HCatFieldSchema> fieldSchemaList = new ArrayList<HCatFieldSchema>();
+
+        fieldSchemaList.add(new HCatFieldSchema("memberID", HCatFieldSchema.Type.INT, "as a number"));
+        HCatFieldSchema locationField = new HCatFieldSchema("location", HCatFieldSchema.Type.STRING, "there's Waldo");
+        fieldSchemaList.add(locationField);
+        HCatSchema schema = new HCatSchema(fieldSchemaList);
+        schema.remove(locationField);
+        Integer position = schema.getPosition(locationField.getName());
+        assertTrue("position is not null after remove" , position == null);
+        try {
+            schema.append(locationField);
+        }
+        catch (HCatException ex) {
+            assertFalse(ex.getMessage(), true);
+        }
+    }
 }