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(); }