HAWQ-931. Removed redundant function overrides
diff --git a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCSerdeResolver.java b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCSerdeResolver.java
index 6ac4e70..67c009b 100644
--- a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCSerdeResolver.java
+++ b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveORCSerdeResolver.java
@@ -147,293 +147,4 @@
         deserializer.initialize(new JobConf(new Configuration(), HiveORCSerdeResolver.class), serdeProperties);
     }
 
-    /*
-     * If the object representing the whole record is null or if an object
-     * representing a composite sub-object (map, list,..) is null - then
-     * BadRecordException will be thrown. If a primitive field value is null,
-     * then a null will appear for the field in the record in the query result.
-     */
-    private void traverseTuple(Object obj, ObjectInspector objInspector,
-                               List<OneField> record, boolean toFlatten)
-            throws IOException, BadRecordException {
-        ObjectInspector.Category category = objInspector.getCategory();
-        if ((obj == null) && (category != ObjectInspector.Category.PRIMITIVE)) {
-            throw new BadRecordException("NULL Hive composite object");
-        }
-        switch (category) {
-            case PRIMITIVE:
-                resolvePrimitive(obj, (PrimitiveObjectInspector) objInspector,
-                        record, toFlatten);
-                break;
-            case LIST:
-                List<OneField> listRecord = traverseList(obj,
-                        (ListObjectInspector) objInspector);
-                addOneFieldToRecord(record, TEXT, String.format("[%s]",
-                        HdfsUtilities.toString(listRecord, collectionDelim)));
-                break;
-            case MAP:
-                List<OneField> mapRecord = traverseMap(obj,
-                        (MapObjectInspector) objInspector);
-                addOneFieldToRecord(record, TEXT, String.format("{%s}",
-                        HdfsUtilities.toString(mapRecord, collectionDelim)));
-                break;
-            case STRUCT:
-                List<OneField> structRecord = traverseStruct(obj,
-                        (StructObjectInspector) objInspector, true);
-                addOneFieldToRecord(record, TEXT, String.format("{%s}",
-                        HdfsUtilities.toString(structRecord, collectionDelim)));
-                break;
-            case UNION:
-                List<OneField> unionRecord = traverseUnion(obj,
-                        (UnionObjectInspector) objInspector);
-                addOneFieldToRecord(record, TEXT, String.format("[%s]",
-                        HdfsUtilities.toString(unionRecord, collectionDelim)));
-                break;
-            default:
-                throw new UnsupportedTypeException("Unknown category type: "
-                        + objInspector.getCategory());
-        }
-    }
-
-    private List<OneField> traverseUnion(Object obj, UnionObjectInspector uoi)
-            throws BadRecordException, IOException {
-        List<OneField> unionRecord = new LinkedList<>();
-        List<? extends ObjectInspector> ois = uoi.getObjectInspectors();
-        if (ois == null) {
-            throw new BadRecordException(
-                    "Illegal value NULL for Hive data type Union");
-        }
-        traverseTuple(uoi.getField(obj), ois.get(uoi.getTag(obj)), unionRecord,
-                true);
-        return unionRecord;
-    }
-
-    private List<OneField> traverseList(Object obj, ListObjectInspector loi)
-            throws BadRecordException, IOException {
-        List<OneField> listRecord = new LinkedList<>();
-        List<?> list = loi.getList(obj);
-        ObjectInspector eoi = loi.getListElementObjectInspector();
-        if (list == null) {
-            throw new BadRecordException(
-                    "Illegal value NULL for Hive data type List");
-        }
-        for (Object object : list) {
-            traverseTuple(object, eoi, listRecord, true);
-        }
-        return listRecord;
-    }
-
-    private List<OneField> traverseStruct(Object struct,
-                                          StructObjectInspector soi,
-                                          boolean toFlatten)
-            throws BadRecordException, IOException {
-        List<? extends StructField> fields = soi.getAllStructFieldRefs();
-        List<Object> structFields = soi.getStructFieldsDataAsList(struct);
-        if (structFields == null) {
-            throw new BadRecordException(
-                    "Illegal value NULL for Hive data type Struct");
-        }
-        List<OneField> structRecord = new LinkedList<>();
-        List<OneField> complexRecord = new LinkedList<>();
-        for (int i = 0; i < structFields.size(); i++) {
-            if (toFlatten) {
-                complexRecord.add(new OneField(TEXT.getOID(), String.format(
-                        "\"%s\"", fields.get(i).getFieldName())));
-            }
-            traverseTuple(structFields.get(i),
-                    fields.get(i).getFieldObjectInspector(), complexRecord,
-                    toFlatten);
-            if (toFlatten) {
-                addOneFieldToRecord(structRecord, TEXT,
-                        HdfsUtilities.toString(complexRecord, mapkeyDelim));
-                complexRecord.clear();
-            }
-        }
-        return toFlatten ? structRecord : complexRecord;
-    }
-
-    private List<OneField> traverseMap(Object obj, MapObjectInspector moi)
-            throws BadRecordException, IOException {
-        List<OneField> complexRecord = new LinkedList<>();
-        List<OneField> mapRecord = new LinkedList<>();
-        ObjectInspector koi = moi.getMapKeyObjectInspector();
-        ObjectInspector voi = moi.getMapValueObjectInspector();
-        Map<?, ?> map = moi.getMap(obj);
-        if (map == null) {
-            throw new BadRecordException(
-                    "Illegal value NULL for Hive data type Map");
-        } else if (map.isEmpty()) {
-            traverseTuple(null, koi, complexRecord, true);
-            traverseTuple(null, voi, complexRecord, true);
-            addOneFieldToRecord(mapRecord, TEXT,
-                    HdfsUtilities.toString(complexRecord, mapkeyDelim));
-        } else {
-            for (Map.Entry<?, ?> entry : map.entrySet()) {
-                traverseTuple(entry.getKey(), koi, complexRecord, true);
-                traverseTuple(entry.getValue(), voi, complexRecord, true);
-                addOneFieldToRecord(mapRecord, TEXT,
-                        HdfsUtilities.toString(complexRecord, mapkeyDelim));
-                complexRecord.clear();
-            }
-        }
-        return mapRecord;
-    }
-
-    private void resolvePrimitive(Object o, PrimitiveObjectInspector oi,
-                                  List<OneField> record, boolean toFlatten)
-            throws IOException {
-        Object val;
-        switch (oi.getPrimitiveCategory()) {
-            case BOOLEAN: {
-                val = (o != null) ? ((BooleanObjectInspector) oi).get(o) : null;
-                addOneFieldToRecord(record, BOOLEAN, val);
-                break;
-            }
-            case SHORT: {
-                val = (o != null) ? ((ShortObjectInspector) oi).get(o) : null;
-                addOneFieldToRecord(record, SMALLINT, val);
-                break;
-            }
-            case INT: {
-                val = (o != null) ? ((IntObjectInspector) oi).get(o) : null;
-                addOneFieldToRecord(record, INTEGER, val);
-                break;
-            }
-            case LONG: {
-                val = (o != null) ? ((LongObjectInspector) oi).get(o) : null;
-                addOneFieldToRecord(record, BIGINT, val);
-                break;
-            }
-            case FLOAT: {
-                val = (o != null) ? ((FloatObjectInspector) oi).get(o) : null;
-                addOneFieldToRecord(record, REAL, val);
-                break;
-            }
-            case DOUBLE: {
-                val = (o != null) ? ((DoubleObjectInspector) oi).get(o) : null;
-                addOneFieldToRecord(record, FLOAT8, val);
-                break;
-            }
-            case DECIMAL: {
-                String sVal = null;
-                if (o != null) {
-                    HiveDecimal hd = ((HiveDecimalObjectInspector) oi).getPrimitiveJavaObject(o);
-                    if (hd != null) {
-                        BigDecimal bd = hd.bigDecimalValue();
-                        sVal = bd.toString();
-                    }
-                }
-                addOneFieldToRecord(record, NUMERIC, sVal);
-                break;
-            }
-            case STRING: {
-                val = (o != null) ? ((StringObjectInspector) oi).getPrimitiveJavaObject(o)
-                        : null;
-                addOneFieldToRecord(record, TEXT,
-                        toFlatten ? String.format("\"%s\"", val) : val);
-                break;
-            }
-            case VARCHAR:
-                val = (o != null) ? ((HiveVarcharObjectInspector) oi).getPrimitiveJavaObject(o)
-                        : null;
-                addOneFieldToRecord(record, VARCHAR,
-                        toFlatten ? String.format("\"%s\"", val) : val);
-                break;
-            case CHAR:
-                val = (o != null) ? ((HiveCharObjectInspector) oi).getPrimitiveJavaObject(o)
-                        : null;
-                addOneFieldToRecord(record, BPCHAR,
-                        toFlatten ? String.format("\"%s\"", val) : val);
-                break;
-            case BINARY: {
-                byte[] toEncode = null;
-                if (o != null) {
-                    BytesWritable bw = ((BinaryObjectInspector) oi).getPrimitiveWritableObject(o);
-                    toEncode = new byte[bw.getLength()];
-                    System.arraycopy(bw.getBytes(), 0, toEncode, 0,
-                            bw.getLength());
-                }
-                addOneFieldToRecord(record, BYTEA, toEncode);
-                break;
-            }
-            case TIMESTAMP: {
-                val = (o != null) ? ((TimestampObjectInspector) oi).getPrimitiveJavaObject(o)
-                        : null;
-                addOneFieldToRecord(record, TIMESTAMP, val);
-                break;
-            }
-            case DATE:
-                val = (o != null) ? ((DateObjectInspector) oi).getPrimitiveJavaObject(o)
-                        : null;
-                addOneFieldToRecord(record, DATE, val);
-                break;
-            case BYTE: { /* TINYINT */
-                val = (o != null) ? new Short(((ByteObjectInspector) oi).get(o))
-                        : null;
-                addOneFieldToRecord(record, SMALLINT, val);
-                break;
-            }
-            default: {
-                throw new UnsupportedTypeException(oi.getTypeName()
-                        + " conversion is not supported by "
-                        + getClass().getSimpleName());
-            }
-        }
-    }
-
-    private void addOneFieldToRecord(List<OneField> record,
-                                     DataType gpdbWritableType, Object val) {
-        record.add(new OneField(gpdbWritableType.getOID(), val));
-    }
-
-    /*
-     * Gets the delimiter character from the URL, verify and store it. Must be a
-     * single ascii character (same restriction as Hawq's). If a hex
-     * representation was passed, convert it to its char.
-     */
-    void parseDelimiterChar(InputData input) {
-
-        String userDelim = input.getUserProperty("DELIMITER");
-
-        if (userDelim == null) {
-            throw new IllegalArgumentException("DELIMITER is a required option");
-        }
-
-        final int VALID_LENGTH = 1;
-        final int VALID_LENGTH_HEX = 4;
-
-        if (userDelim.startsWith("\\x")) { // hexadecimal sequence
-
-            if (userDelim.length() != VALID_LENGTH_HEX) {
-                throw new IllegalArgumentException(
-                        "Invalid hexdecimal value for delimiter (got"
-                                + userDelim + ")");
-            }
-
-            delimiter = (char) Integer.parseInt(
-                    userDelim.substring(2, VALID_LENGTH_HEX), 16);
-
-            if (!CharUtils.isAscii(delimiter)) {
-                throw new IllegalArgumentException(
-                        "Invalid delimiter value. Must be a single ASCII character, or a hexadecimal sequence (got non ASCII "
-                                + delimiter + ")");
-            }
-
-            return;
-        }
-
-        if (userDelim.length() != VALID_LENGTH) {
-            throw new IllegalArgumentException(
-                    "Invalid delimiter value. Must be a single ASCII character, or a hexadecimal sequence (got "
-                            + userDelim + ")");
-        }
-
-        if (!CharUtils.isAscii(userDelim.charAt(0))) {
-            throw new IllegalArgumentException(
-                    "Invalid delimiter value. Must be a single ASCII character, or a hexadecimal sequence (got non ASCII "
-                            + userDelim + ")");
-        }
-
-        delimiter = userDelim.charAt(0);
-    }
 }
diff --git a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveResolver.java b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveResolver.java
index 2562d3d..1639742 100644
--- a/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveResolver.java
+++ b/pxf/pxf-hive/src/main/java/org/apache/hawq/pxf/plugins/hive/HiveResolver.java
@@ -346,6 +346,7 @@
      * representing a composite sub-object (map, list,..) is null - then
      * BadRecordException will be thrown. If a primitive field value is null,
      * then a null will appear for the field in the record in the query result.
+     * flatten is true only when we are dealing with a non primitive field
      */
     private void traverseTuple(Object obj, ObjectInspector objInspector,
                                List<OneField> record, boolean toFlatten)
@@ -417,7 +418,7 @@
         return listRecord;
     }
 
-    private List<OneField> traverseStruct(Object struct,
+    protected List<OneField> traverseStruct(Object struct,
                                           StructObjectInspector soi,
                                           boolean toFlatten)
             throws BadRecordException, IOException {