String indexColumnName = column.getName().getString();
String dataFamilyName = IndexUtil.getDataColumnFamilyName(indexColumnName);
String dataColumnName = IndexUtil.getDataColumnName(indexColumnName);
String defaultFamilyName = table.getDefaultFamilyName() == null ? QueryConstants.DEFAULT_COLUMN_FAMILY : table.getDefaultFamilyName().getString();
String displayName = SchemaUtil.getColumnDisplayName(defaultFamilyName.equals(dataFamilyName) ? null : dataFamilyName, dataColumnName);
return new KeyValueColumnExpression(column, displayName);
}
// TODO: In ExpressionCompiler create a ColumnRef for a local index that causes a
// different kind of ColumnExpression to be created here. You might be able to
// use ProjectedColumnExpression, but not sure. The column values from the data
// table should get returned in a single KeyValue in a similar format (using a
// KeyValueSchema).
if (table.getType() == PTableType.JOIN) {
return new ProjectedColumnExpression(column, table, column.getName().getString());
}
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 new KeyValueColumnExpression(column, displayName);
}