[
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)