phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alicia Ying Shu (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-2934) Checking a coerce expression at top level should not be necessary for Union All query
Date Wed, 01 Jun 2016 06:57:12 GMT

    [ https://issues.apache.org/jira/browse/PHOENIX-2934?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15309428#comment-15309428
] 

Alicia Ying Shu commented on PHOENIX-2934:
------------------------------------------

Looked into the codes, the issue was caused by compilation time rewrite of the coerce expression.


For example:
select id, cast('foo' as char(10)) firstname, lastname from person;

In ProjectionCompiler.java, 
{code}
public static RowProjector compile(StatementContext context, SelectStatement statement, GroupBy
groupBy, List<? extends PDatum> targetColumns, Expression where) throws SQLException
{
....
Expression expression = node.accept(selectVisitor);
                projectedExpressions.add(expression);
{code}
After node.accept(selectVisitor), cast('foo' as char(10)) becomes to_char('foo'), the maxLength=3.
For Union All query, we would expect the MaxLength=10.


> Checking a coerce expression at top level should not be necessary for Union All query
> -------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-2934
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2934
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Alicia Ying Shu
>            Assignee: Alicia Ying Shu
>
> When working on PHOENIX-2886, found that we need special handling of coerce expression.
Otherwise the following query would fail.
> {code}
> create table person ( id bigint not null primary key, firstname char(10), lastname varchar(10)
);
> select id, cast( 'foo' as char(10)) firstname, lastname from person union all select
* from person;
> {code}
> Checking a coerce expression at top level should not be necessary. Need to find out root
cause on coerceExpression. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message