public static String[] extractColumnValues(FieldSchema column, boolean isColumnStatsAvailable,
      ColumnStatisticsObj columnStatisticsObj, boolean histogramEnabled) {
    List<String> values = new ArrayList<>();
    values.add(column.getName());
    values.add(column.getType());

    if (isColumnStatsAvailable) {
      if (columnStatisticsObj != null) {
        ColumnStatisticsData statsData = columnStatisticsObj.getStatsData();
        if (statsData.isSetBinaryStats()) {
          BinaryColumnStatsData binaryStats = statsData.getBinaryStats();
          values.addAll(Lists.newArrayList("", "", "" + binaryStats.getNumNulls(), "",
              "" + binaryStats.getAvgColLen(), "" + binaryStats.getMaxColLen(), "", "",
              convertToString(binaryStats.getBitVectors())));
          if (histogramEnabled) {
            values.add("");
          }
        } else if (statsData.isSetStringStats()) {
          StringColumnStatsData stringStats = statsData.getStringStats();
          values.addAll(Lists.newArrayList("", "", "" + stringStats.getNumNulls(), "" + stringStats.getNumDVs(),
              "" + stringStats.getAvgColLen(), "" + stringStats.getMaxColLen(), "", "",
              convertToString(stringStats.getBitVectors())));
          if (histogramEnabled) {
            values.add("");
          }
        } else if (statsData.isSetBooleanStats()) {
          BooleanColumnStatsData booleanStats = statsData.getBooleanStats();
          values.addAll(Lists.newArrayList("", "", "" + booleanStats.getNumNulls(), "", "", "",
              "" + booleanStats.getNumTrues(), "" + booleanStats.getNumFalses(),
              convertToString(booleanStats.getBitVectors())));
          if (histogramEnabled) {
            values.add("");
          }
        } else if (statsData.isSetDecimalStats()) {
          DecimalColumnStatsData decimalStats = statsData.getDecimalStats();
          values.addAll(Lists.newArrayList(convertToString(decimalStats.getLowValue()),
              convertToString(decimalStats.getHighValue()), "" + decimalStats.getNumNulls(),
              "" + decimalStats.getNumDVs(), "", "", "", "", convertToString(decimalStats.getBitVectors())));
          if (histogramEnabled) {
            values.add(convertHistogram(statsData.getDecimalStats().getHistogram(), statsData.getSetField()));
          }
        } else if (statsData.isSetDoubleStats()) {
          DoubleColumnStatsData doubleStats = statsData.getDoubleStats();
          values.addAll(Lists.newArrayList("" + doubleStats.getLowValue(), "" + doubleStats.getHighValue(),
              "" + doubleStats.getNumNulls(), "" + doubleStats.getNumDVs(), "", "", "", "",
              convertToString(doubleStats.getBitVectors())));
          if (histogramEnabled) {
            values.add(convertHistogram(statsData.getDoubleStats().getHistogram(), statsData.getSetField()));
          }
        } else if (statsData.isSetLongStats()) {
          LongColumnStatsData longStats = statsData.getLongStats();
          values.addAll(Lists.newArrayList("" + longStats.getLowValue(), "" + longStats.getHighValue(),
              "" + longStats.getNumNulls(), "" + longStats.getNumDVs(), "", "", "", "",
              convertToString(longStats.getBitVectors())));
          if (histogramEnabled) {
            values.add(convertHistogram(statsData.getLongStats().getHistogram(), statsData.getSetField()));
          }
        } else if (statsData.isSetDateStats()) {
          DateColumnStatsData dateStats = statsData.getDateStats();
          values.addAll(Lists.newArrayList(convertToString(dateStats.getLowValue()),
              convertToString(dateStats.getHighValue()), "" + dateStats.getNumNulls(), "" + dateStats.getNumDVs(),
              "", "", "", "", convertToString(dateStats.getBitVectors())));
          if (histogramEnabled) {
            values.add(convertHistogram(statsData.getDateStats().getHistogram(), statsData.getSetField()));
          }
        } else if (statsData.isSetTimestampStats()) {
          TimestampColumnStatsData timestampStats = statsData.getTimestampStats();
          values.addAll(Lists.newArrayList(convertToString(timestampStats.getLowValue()),
              convertToString(timestampStats.getHighValue()), "" + timestampStats.getNumNulls(),
              "" + timestampStats.getNumDVs(), "", "", "", "", convertToString(timestampStats.getBitVectors())));
          if (histogramEnabled) {
            values.add(convertHistogram(statsData.getTimestampStats().getHistogram(), statsData.getSetField()));
          }
        }
      } else {
        values.addAll(Lists.newArrayList("", "", "", "", "", "", "", "", ""));
        if (histogramEnabled) {
          values.add("");
        }
      }
    }

    values.add(column.getComment() == null ? "" : column.getComment());
    return values.toArray(new String[0]);
  }
Creates a String from the properties in this format:
   'property_name1'='property_value1',
   'property_name2'='property_value2',
   ...

Properties are listed in alphabetical order.

@param properties The properties to list.
@param exclude Property names to exclude.
ql/src/java/org/apache/hadoop/hive/ql/ddl/ShowUtils.java