phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Taylor (JIRA)" <>
Subject [jira] [Commented] (PHOENIX-10) Push projection of a single ARRAY element to the server
Date Wed, 29 Jan 2014 08:36:09 GMT


James Taylor commented on PHOENIX-10:

I think you'd want to rewrite the KeyValue. It would require some client/server coordination:

>From the client, you'd keep track in ExpressionCompiler any references to any ArrayIndexFunction
If the ArrayIndexFunction occurs in the select expressions, you'd want to wrap in a different
expression (since the ArrayIndexFunction would expect your indexing into the entire array)
Pass through the filter all the KeyValue names used in any ArrayIndexFunction invocations
When the filter is invoked, you'd want to recognize any of these KeyValues and re-write it
to only include the one element. There might be multiple references to the same array, so
you'd need to deal with that too.
On return the wrapped ArrayIndexFunction expression would know how to retrieve each array
element value (note you don't really care about even returning any part of the array if it's
only used in the WHERE clause).

> Push projection of a single ARRAY element to the server
> -------------------------------------------------------
>                 Key: PHOENIX-10
>                 URL:
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: James Taylor
> If only a single array element is selected, we'll still return the entire array back
to the client. Instead, we should push this to the server and only return the single array
element. The same goes for the reference to an ARRAY in the WHERE clause. There's a general
HBase fix for this (i.e. the ability to define a separate set of key values that will be returned
versus key values available to filters) that has a patch here, but is deemed not possible
to pull into the 0.94 branch by @lhofhansl.
> My thought is that we can add a Filter at the end our our filter chain that filters out
any KeyValues that aren't in the SELECT expressions (i.e. filter out if a column is referenced
in the WHERE clause, but not in the SELECT expressions). This same Filter could handle returning
only the elements of the array that are referenced in the SELECT expression rather than the
entire array.

This message was sent by Atlassian JIRA

View raw message