[
https://issues.apache.org/jira/browse/PHOENIX-514?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14294791#comment-14294791
]
ASF GitHub Bot commented on PHOENIX-514:
----------------------------------------
Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/34#discussion_r23668722
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/schema/TableRef.java ---
@@ -69,31 +68,29 @@ public String getTableAlias() {
return alias;
}
- public String getColumnDisplayName(ColumnRef ref) {
+ public String getColumnDisplayName(ColumnRef ref, boolean
cfCaseSensitive, boolean cqCaseSensitive) {
+ String cf = null;
+ String cq = null;
PColumn column = ref.getColumn();
+ String name = column.getName().getString();
+ boolean isIndex = table.getType() == PTableType.INDEX;
if (table.getType() == PTableType.JOIN || table.getType() ==
PTableType.SUBQUERY) {
- return column.getName().getString();
+ cq = column.getName().getString();
}
- boolean isIndex = table.getType() == PTableType.INDEX;
- if (SchemaUtil.isPKColumn(column)) {
- String name = column.getName().getString();
- if (isIndex) {
- return IndexUtil.getDataColumnName(name);
- }
- return name;
+ else if (SchemaUtil.isPKColumn(column)) {
+ cq = isIndex ? IndexUtil.getDataColumnName(name) : name;
}
-
- if (isIndex) {
- // Translate to the data table column name
- String indexColumnName = column.getName().getString();
- String dataFamilyName =
IndexUtil.getDataColumnFamilyName(indexColumnName);
- String dataColumnName =
IndexUtil.getDataColumnName(indexColumnName);
+ else {
String defaultFamilyName = table.getDefaultFamilyName() ==
null ? QueryConstants.DEFAULT_COLUMN_FAMILY :
table.getDefaultFamilyName().getString();
- return
SchemaUtil.getColumnDisplayName(defaultFamilyName.equals(dataFamilyName) ? null
: dataFamilyName, dataColumnName);
+ // Translate to the data table column name
+ String dataFamilyName = isIndex ?
IndexUtil.getDataColumnFamilyName(name) : column.getFamilyName().getString() ;
+ cf = defaultFamilyName.equals(dataFamilyName) ? null :
dataFamilyName;
+ cq = isIndex ? IndexUtil.getDataColumnName(name) : name;
}
- byte[] defaultFamily = table.getDefaultFamilyName() == null ?
QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES :
table.getDefaultFamilyName().getBytes();
- String displayName =
SchemaUtil.getColumnDisplayName(Bytes.compareTo(defaultFamily,
column.getFamilyName().getBytes()) == 0 ? null :
column.getFamilyName().getBytes(), column.getName().getBytes());
- return displayName;
+
+ cf = (cf!=null && cfCaseSensitive) ? "\"" + cf + "\"" : cf;
+ cq = cqCaseSensitive ? "\"" + cq + "\"" : cq;
+ return SchemaUtil.getColumnDisplayName(cf, cq);
--- End diff --
Probably easier is to always treat column references in functional
expressions as case sensitive. If they had double quotes originally, they'd
have been left as-is, and if they didn't, they'd be upper-cased.
> Support functional indexes
> --------------------------
>
> Key: PHOENIX-514
> URL: https://issues.apache.org/jira/browse/PHOENIX-514
> Project: Phoenix
> Issue Type: Task
> Reporter: James Taylor
> Assignee: Thomas D'Silva
> Labels: enhancement
>
> Instead of only defining the set of columns from the data table that make up
> an index, you should be able to use expressions. For example:
> CREATE INDEX upper_last_name_idx ON person (UPPER(last_name))
> Then in queries that use UPPER(last_name), we can replace them with column
> references to the index table.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)