in phoenix5-hive4/src/main/java/org/apache/phoenix/hive/query/PhoenixQueryBuilder.java [394:491]
private String applyDateFunction(String whereClause, String columnName) {
StringBuilder whereCondition = new StringBuilder();
for (Iterator<String> iterator = Splitter.on(CharMatcher.whitespace()).omitEmptyStrings()
.split(whereClause).iterator(); iterator.hasNext(); whereCondition.append
(PhoenixStorageHandlerConstants.SPACE)) {
String token = iterator.next();
if (isMyCondition(columnName, token)) {
whereCondition.append(token);
String comparator = iterator.next();
whereCondition.append(PhoenixStorageHandlerConstants.SPACE);
whereCondition.append(comparator).append(PhoenixStorageHandlerConstants.SPACE);
if (PhoenixStorageHandlerConstants.BETWEEN_COMPARATOR.equalsIgnoreCase
(comparator)) {
whereCondition.append("to_date(").append
(getCompareValueForDateAndTimestampFunction(iterator.next())).append
(") ").append(iterator.next()).append(PhoenixStorageHandlerConstants
.SPACE)
.append("to_date(");
String toCompareValue = iterator.next();
if (toCompareValue.endsWith(PhoenixStorageHandlerConstants
.RIGHT_ROUND_BRACKET)) {
int rightBracketIndex = toCompareValue.indexOf
(PhoenixStorageHandlerConstants.RIGHT_ROUND_BRACKET);
whereCondition.append(getCompareValueForDateAndTimestampFunction
(toCompareValue.substring(0, rightBracketIndex))).append
(PhoenixStorageHandlerConstants.RIGHT_ROUND_BRACKET).append
(toCompareValue.substring(rightBracketIndex));
} else {
whereCondition.append(getCompareValueForDateAndTimestampFunction
(toCompareValue)).append(PhoenixStorageHandlerConstants
.RIGHT_ROUND_BRACKET);
}
} else if (PhoenixStorageHandlerConstants.IN_COMPARATOR.equalsIgnoreCase
(comparator)) {
while (iterator.hasNext()) {
String aToken = iterator.next();
if (aToken.equals(PhoenixStorageHandlerConstants.LEFT_ROUND_BRACKET) ||
aToken.equals(PhoenixStorageHandlerConstants.COMMA)) {
whereCondition.append(aToken);
} else if (aToken.equals(PhoenixStorageHandlerConstants
.RIGHT_ROUND_BRACKET)) {
whereCondition.append(aToken);
break;
} else if (aToken.endsWith(PhoenixStorageHandlerConstants
.RIGHT_ROUND_BRACKET)) {
int bracketIndex = aToken.indexOf(PhoenixStorageHandlerConstants
.RIGHT_ROUND_BRACKET);
whereCondition.append("to_date(").append
(getCompareValueForDateAndTimestampFunction(aToken.substring
(0, bracketIndex))).append
(PhoenixStorageHandlerConstants.RIGHT_ROUND_BRACKET).append
(aToken.substring(bracketIndex));
break;
} else if (aToken.endsWith(PhoenixStorageHandlerConstants.COMMA)) {
if (aToken.startsWith(PhoenixStorageHandlerConstants
.LEFT_ROUND_BRACKET)) {
int bracketIndex = aToken.lastIndexOf
(PhoenixStorageHandlerConstants.LEFT_ROUND_BRACKET);
whereCondition.append(aToken.substring(0, bracketIndex + 1))
.append("to_date(").append
(getCompareValueForDateAndTimestampFunction(aToken
.substring(bracketIndex + 1, aToken.length() - 1)
)).append("),");
} else {
whereCondition.append("to_date(").append
(getCompareValueForDateAndTimestampFunction(aToken
.substring(0, aToken.length() - 1))).append("),");
}
}
whereCondition.append(PhoenixStorageHandlerConstants.SPACE);
}
} else if (PhoenixStorageHandlerConstants.COMMON_COMPARATOR.contains(comparator)) {
String compareValue = getCompareValueForDateAndTimestampFunction(iterator
.next());
whereCondition.append("to_date(");
if (compareValue.endsWith(PhoenixStorageHandlerConstants.RIGHT_ROUND_BRACKET)) {
int rightBracketIndex = compareValue.indexOf
(PhoenixStorageHandlerConstants.RIGHT_ROUND_BRACKET);
whereCondition.append(getCompareValueForDateAndTimestampFunction
(compareValue.substring(0, rightBracketIndex))).append
(PhoenixStorageHandlerConstants.RIGHT_ROUND_BRACKET).append
(compareValue.substring(rightBracketIndex));
} else {
whereCondition.append(getCompareValueForDateAndTimestampFunction
(compareValue)).append(PhoenixStorageHandlerConstants
.RIGHT_ROUND_BRACKET);
}
}
} else {
whereCondition.append(token);
}
}
return whereCondition.toString();
}