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)

Reply via email to