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

Julian Hyde commented on CALCITE-4081:
--------------------------------------

Maybe the datatype is invalid (say the target system only supports {{DECIMAL(p, 
s)}} if p + s <= 38) and constant reduction wrongly proceeded expand the CAST 
for an invalid datatype. If so, the only harm is that the error has been 
shifted from runtime to parse time. The CAST would have failed at run time if 
we had no expanded it.

> Round-tripping a DECIMAL literal through Planner -> RelToSqlConverter -> 
> Planner throws validation error
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-4081
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4081
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Steven Talbot
>            Priority: Major
>
> Take the following SQL:
> SELECT CAST('11111111111111111111111111111111.111111' AS DECIMAL(38,6)) AS 
> "num"
> And, in the default Calcite SQL dialect with all defaults, send it through 
> Planner parse -> valiate -> rel to get a RelNode. The RelNode will have a 
> Project with the "111111111111111.11111" literal in there as a RexLiteral 
> with Decimal type. 
>  
> The use RelToSqlConverter to convert that RelNode back to SQL. The SQL now 
> looks like 
> SELECT 11111111111111111111111111111111.111111 AS "num"
>  
> If you attempt to parse and validate that SQL, you get "Numeric literal 
> '11111111111111111111111111111111.111111' out of range" throw by 
> SqlValidatorImpl.validateLiteral()



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to