[
https://issues.apache.org/jira/browse/PHOENIX-1312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15056752#comment-15056752
]
James Taylor commented on PHOENIX-1312:
---------------------------------------
The code is already in place to use the correct column family guideposts: see
BaseResultIterators.getGuidePosts().
The problem is that the empty column family is always projected (which causes
that guideposts to always be used). The code that needs to change is in
BaseResultIterators.initializeScan() here:
{code}
if (projector.isProjectEmptyKeyValue()) {
// If nothing projected into scan and we only have one column
family, just allow everything
// to be projected and use a FirstKeyOnlyFilter to skip from
row to row. This turns out to
// be quite a bit faster.
// Where condition columns also will get added into familyMap
// When where conditions are present, we can not add
FirstKeyOnlyFilter at beginning.
if (familyMap.isEmpty() &&
context.getWhereCoditionColumns().isEmpty()
&& table.getColumnFamilies().size() == 1) {
// Project the one column family. We must project a column
family since it's possible
// that there are other non declared column families that
we need to ignore.
scan.addFamily(table.getColumnFamilies().get(0).getName().getBytes());
} else {
byte[] ecf = SchemaUtil.getEmptyColumnFamily(table);
// Project empty key value unless the column family
containing it has
// been projected in its entirety.
// TODO: Only project empty column family when necessary
if (!familyMap.containsKey(ecf) || familyMap.get(ecf) !=
null) {
scan.addColumn(ecf, QueryConstants.EMPTY_COLUMN_BYTES);
}
}
} else if (table.getViewType() == ViewType.MAPPED) {
// Since we don't have the empty key value in MAPPED tables, we
must select all CFs in HRS. But only the
// selected column values are returned back to client
// TODO: Only add all families if necessary
for (PColumnFamily family : table.getColumnFamilies()) {
scan.addFamily(family.getName().getBytes());
}
}
{code}
You'll need a couple of new APIs - let me get those to you. If you can start
writing the tests, that'd be good.
> Do not always project the empty column family
> ---------------------------------------------
>
> Key: PHOENIX-1312
> URL: https://issues.apache.org/jira/browse/PHOENIX-1312
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: ramkrishna.s.vasudevan
> Fix For: 4.7.0
>
> Attachments: PHOENIX-1312_1.patch, Phoenix-1312.patch
>
>
> Often times, we don't need to, but it seems we always are. See
> MultiCfQueryExecIT.testGuidePostsForMultiCFs() where we run a query like this:
> {code}
> SELECT count(*) FROM multi_cf WHERE e.cpu_utilization IS NOT NULL
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)