Index: hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartition.java =================================================================== --- hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartition.java (revision 1619175) +++ hcatalog/webhcat/java-client/src/main/java/org/apache/hive/hcatalog/api/HCatPartition.java (working copy) @@ -51,6 +51,7 @@ private int createTime; private int lastAccessTime; private StorageDescriptor sd; + private List columns; // Cache column-list from this.sd. private Map parameters; // For use from within HCatClient.getPartitions(). @@ -68,6 +69,7 @@ } this.sd = partition.getSd(); + this.columns = getColumns(this.sd); } // For constructing HCatPartitions afresh, as an argument to HCatClient.addPartitions(). @@ -77,6 +79,7 @@ this.dbName = hcatTable.getDbName(); this.sd = new StorageDescriptor(hcatTable.getSd()); this.sd.setLocation(location); + this.columns = getColumns(this.sd); this.createTime = (int)(System.currentTimeMillis()/1000); this.lastAccessTime = -1; this.values = new ArrayList(hcatTable.getPartCols().size()); @@ -98,7 +101,7 @@ this.dbName = rhs.dbName; this.sd = new StorageDescriptor(rhs.sd); this.sd.setLocation(location); - + this.columns = getColumns(this.sd); this.createTime = (int) (System.currentTimeMillis() / 1000); this.lastAccessTime = -1; this.values = new ArrayList(hcatTable.getPartCols().size()); @@ -112,6 +115,14 @@ } } + private static List getColumns(StorageDescriptor sd) throws HCatException { + ArrayList columns = new ArrayList(sd.getColsSize()); + for (FieldSchema fieldSchema : sd.getCols()) { + columns.add(HCatSchemaUtils.getHCatFieldSchema(fieldSchema)); + } + return columns; + } + // For use from HCatClient.addPartitions(), to construct from user-input. Partition toHivePartition() throws HCatException { Partition hivePtn = new Partition(); @@ -172,11 +183,7 @@ * * @return the columns */ - public List getColumns() throws HCatException { - ArrayList columns = new ArrayList(sd.getColsSize()); - for (FieldSchema fieldSchema : sd.getCols()) { - columns.add(HCatSchemaUtils.getHCatFieldSchema(fieldSchema)); - } + public List getColumns() { return columns; }