James Taylor created PHOENIX-939:
------------------------------------
Summary: Generalize SELECT expressions for Pig Loader
Key: PHOENIX-939
URL: https://issues.apache.org/jira/browse/PHOENIX-939
Project: Phoenix
Issue Type: Improvement
Affects Versions: 5.0.0, 3.1, 4.1
Reporter: James Taylor
Assignee: maghamravikiran
Fix For: 5.0.0, 3.1, 4.1
The current Pig Loader requires that the query contain only column references
in the SELECT expressions. Instead, we should allow any expression as that will
provide more general utility. For example, built-in functions, sequence
references, etc. could be used then.
Validation can be done by simply compiling the query. This does all the
validation required. It's ok if it's compiled twice if need be too.
Pig doesn't know and likely wouldn't care if the expressions in the SELECT
correspond to columns in Phoenix or general expressions. You can use the
ColumnProjection.getName() method to get back an alias of the SELECT
expression. If no alias is provided, then the String of the expression is
returned. [~prkommireddi] - can you weigh in here? You can use the Phoenix
RowProjector to iterate through each ColumnProjector you get back after the
compile to get the alias of the select expression (i.e. you'd give this to Pig
as the "column" name) plus the data type. Note that if this is problemattic,
then you could likely generate an alias name if one is not present.
For example:
{code}
RowProjector rowProj = queryPlan.getProjector();
for (ColumnProjector colProj : rowProj.getColumnProjectors()) {
String columnName = colProj.getName();
PDataType dataType = colProj.getExpression().getDataType();
}
{code}
If the SELECT expressions are simple column references, this would be exactly
the same as is being done now. If the SELECT expressions are more complex
expressions, this would work as well.
--
This message was sent by Atlassian JIRA
(v6.2#6252)