[
https://issues.apache.org/jira/browse/PHOENIX-852?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14110883#comment-14110883
]
James Taylor commented on PHOENIX-852:
--------------------------------------
One other question. In HashCacheClient, can you remind me what this does (maybe
add a comment?):
{code}
- private void serialize(ImmutableBytesWritable ptr, ResultIterator
iterator, TupleProjector projector, long estimatedSize, List<Expression>
onExpressions) throws SQLException {
+ private void serialize(ImmutableBytesWritable ptr, ResultIterator
iterator, TupleProjector projector, long estimatedSize, List<Expression>
onExpressions, Expression keyRangeRhsExpression, List<ImmutableBytesWritable>
keyRangeRhsValues) throws SQLException {
long maxSize =
serverCache.getConnection().getQueryServices().getProps().getLong(QueryServices.MAX_SERVER_CACHE_SIZE_ATTRIB,
QueryServicesOptions.DEFAULT_MAX_SERVER_CACHE_SIZE);
estimatedSize = Math.min(estimatedSize, maxSize);
if (estimatedSize > Integer.MAX_VALUE) {
@@ -105,6 +105,13 @@ public class HashCacheClient {
if (baOut.size() > maxSize) {
throw new MaxServerCacheSizeExceededException("Size of
hash cache (" + baOut.size() + " bytes) exceeds the maximum allowed size (" +
maxSize + " bytes)");
}
+ if (keyRangeRhsExpression != null) {
+ ImmutableBytesWritable value = new
ImmutableBytesWritable();
+ keyRangeRhsExpression.reset();
+ if (keyRangeRhsExpression.evaluate(result, value)) {
+ keyRangeRhsValues.add(value);
+ }
+ }
nRows++;
}
{code}
> Optimize child/parent foreign key joins
> ---------------------------------------
>
> Key: PHOENIX-852
> URL: https://issues.apache.org/jira/browse/PHOENIX-852
> Project: Phoenix
> Issue Type: Improvement
> Reporter: James Taylor
> Assignee: Maryann Xue
> Attachments: 852-2.patch, 852.patch, PHOENIX-852.patch
>
>
> Often times a join will occur from a child to a parent. Our current algorithm
> would do a full scan of one side or the other. We can do much better than
> that if the HashCache contains the PK (or even part of the PK) from the table
> being joined to. In these cases, we should drive the second scan through a
> skip scan on the server side.
--
This message was sent by Atlassian JIRA
(v6.2#6252)