private String getRange(LUWDataPartition partition, Collection keyCols) {
    StringBuffer buffer = new StringBuffer();
    String startStr = "";
    String endStr = "";

    for (Iterator keyIter = keyCols.iterator(); keyIter.hasNext(); ) {
      Column keyCol = (Column) keyIter.next();
      for (Iterator iter = partition.getPartitionElements().iterator(); iter.hasNext(); ) {
        LUWPartitionElement element = (LUWPartitionElement) iter.next();
        Column column = element.getLUWPartitionExpression().getColumn();

        if (column != keyCol) continue;
        DataType type = element.getLUWPartitionExpression().getColumn().getDataType();
        if (type instanceof CharacterStringDataType
            || type instanceof DateDataType
            || type instanceof TimeDataType) {
          String rangeValue = element.getStarting();
          if (rangeValue.equalsIgnoreCase("MINVALUE") || rangeValue.equalsIgnoreCase("MAXVALUE")) {
            startStr += rangeValue;
          } else {
            startStr += this.getSingleQuotedString(rangeValue);
          }

          rangeValue = element.getEnding();
          if (rangeValue.equalsIgnoreCase("MINVALUE") || rangeValue.equalsIgnoreCase("MAXVALUE")) {
            endStr += rangeValue;
          } else {
            endStr += this.getSingleQuotedString(rangeValue);
          }
        } else {
          startStr += element.getStarting();
          endStr += element.getEnding();
        }

        if (keyIter.hasNext()) {
          startStr += ",";
          endStr += ",";
        }
      }
    }
    buffer
        .append(SPACE)
        .append(STARTING)
        .append(SPACE)
        .append(FROM)
        .append(SPACE)
        .append(LEFT_PARENTHESIS)
        .append(startStr)
        .append(RIGHT_PARENTHESIS)
        .append(SPACE);
    if (!partition.isLowInclusive()) {
      buffer.append(SPACE).append(EXCLUSIVE).append(SPACE);
    }

    buffer
        .append(ENDING)
        .append(SPACE)
        .append(AT)
        .append(SPACE)
        .append(LEFT_PARENTHESIS)
        .append(endStr)
        .append(RIGHT_PARENTHESIS);
    if (!partition.isHighInclusive()) {
      buffer.append(SPACE).append(EXCLUSIVE).append(SPACE);
    }

    return buffer.toString();
  }