private List<HCatPartition> getFilteredPartitions(
      String tableName, String timeZone, String dateMask, Pair<Date, Date> range)
      throws HCatException {
    DateFormat dateFormat = new SimpleDateFormat(dateMask);
    dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));

    String filter = "ds < '" + dateFormat.format(range.first) + "'";
    return client.listPartitionsByFilter(DATABASE_NAME, tableName, filter);
  }
  private List<HCatPartition> getMultiColDatedFilteredPartitions(
      String tableName, String timeZone, Pair<Date, Date> range) throws HCatException {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(range.first);
    String[] dateCols = dateFormat.format(calendar.getTime()).split("-");
    // filter eg: "(year < '2014') or (year = '2014' and month < '02') or
    // (year = '2014' and month = '02' and day < '24')"
    String filter1 = "(year < '" + dateCols[0] + "')";
    String filter2 = "(year = '" + dateCols[0] + "' and month < '" + dateCols[1] + "')";
    String filter3 =
        "(year = '"
            + dateCols[0]
            + "' and month = '"
            + dateCols[1]
            + "' and day < '"
            + dateCols[2]
            + "')";
    String filter = filter1 + " or " + filter2 + " or " + filter3;
    return client.listPartitionsByFilter(DATABASE_NAME, tableName, filter);
  }