Index: src/test/org/apache/hcatalog/data/schema/TestHCatSchemaUtils.java =================================================================== --- src/test/org/apache/hcatalog/data/schema/TestHCatSchemaUtils.java (revision 1342815) +++ src/test/org/apache/hcatalog/data/schema/TestHCatSchemaUtils.java (working copy) @@ -41,10 +41,11 @@ TypeInfo ti = TypeInfoUtils.getTypeInfoFromTypeString(typeString); HCatSchema hsch = HCatSchemaUtils.getHCatSchemaFromTypeString(typeString); - LOG.info(ti.getTypeName()); + LOG.info("Type name : {}",ti.getTypeName()); LOG.info("HCatSchema : {}",hsch); - assertEquals(ti.getTypeName(),hsch.toString()); - assertEquals(hsch.toString(),typeString); + assertEquals(hsch.size(), 1); + assertEquals(ti.getTypeName(),hsch.get(0).getTypeString()); + assertEquals(hsch.get(0).getTypeString(),typeString); } @SuppressWarnings("unused") Index: src/java/org/apache/hcatalog/data/HCatRecordSerDe.java =================================================================== --- src/java/org/apache/hcatalog/data/HCatRecordSerDe.java (revision 1342815) +++ src/java/org/apache/hcatalog/data/HCatRecordSerDe.java (working copy) @@ -99,7 +99,7 @@ LOG.debug("Initializing HCatRecordSerDe through HCatSchema {}." ,hsch); - rowTypeInfo = (StructTypeInfo) TypeInfoUtils.getTypeInfoFromTypeString(hsch.toString()); + rowTypeInfo = (StructTypeInfo) TypeInfoUtils.getTypeInfoFromTypeString(hsch.getSchemaAsTypeString()); cachedObjectInspector = HCatRecordObjectInspectorFactory.getHCatRecordObjectInspector(rowTypeInfo); } Index: src/java/org/apache/hcatalog/data/schema/HCatSchema.java =================================================================== --- src/java/org/apache/hcatalog/data/schema/HCatSchema.java (revision 1342815) +++ src/java/org/apache/hcatalog/data/schema/HCatSchema.java (working copy) @@ -139,4 +139,22 @@ } return sb.toString(); } + + public String getSchemaAsTypeString(){ + boolean first = true; + StringBuilder sb = new StringBuilder(); + for (HCatFieldSchema hfs : fieldSchemas){ + if (!first){ + sb.append(","); + }else{ + first = false; + } + if (hfs.getName() != null){ + sb.append(hfs.getName()); + sb.append(":"); + } + sb.append(hfs.getTypeString()); + } + return sb.toString(); + } } Index: src/java/org/apache/hcatalog/data/schema/HCatFieldSchema.java =================================================================== --- src/java/org/apache/hcatalog/data/schema/HCatFieldSchema.java (revision 1342815) +++ src/java/org/apache/hcatalog/data/schema/HCatFieldSchema.java (working copy) @@ -208,8 +208,12 @@ } @Override - public String toString(){ - return getTypeString(); + public String toString() { + return "HCatFieldSchema [" + + (fieldName != null ? "fieldName=" + fieldName + ", " : "fieldName=null") + + (comment != null ? "comment=" + comment + ", " : "comment=null") + + (type != null ? "type=" + getTypeString() + ", " : "type=null") + + (category != null ? "category=" + category : "category=null") + "]"; } public String getTypeString(){ @@ -222,17 +226,17 @@ sb.append(type); }else if (Category.STRUCT == category){ sb.append("struct<"); - sb.append(subSchema.toString()); + sb.append(subSchema.getSchemaAsTypeString()); sb.append(">"); }else if (Category.ARRAY == category){ sb.append("array<"); - sb.append(subSchema.toString()); + sb.append(subSchema.getSchemaAsTypeString()); sb.append(">"); }else if (Category.MAP == category){ sb.append("map<"); sb.append(mapKeyType); sb.append(","); - sb.append(subSchema.toString()); + sb.append(subSchema.getSchemaAsTypeString()); sb.append(">"); } return (typeString = sb.toString().toLowerCase());