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);
+        }
+    }
 }


Reply via email to