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

Julian Hyde commented on CALCITE-6909:
--------------------------------------

You didn't answer my question: what will the user be able to do after this 
change that they cannot do before it? Will there be queries that are considered 
valid today but will be considered invalid after your change? Will the JDBC 
adapter generate different SQL than today. This seems to be more about type 
system than dialect.

> ClickHouse dialect should limit the Precision and Scale of the Decimal type 
> to be within 76
> -------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-6909
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6909
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.39.0
>            Reporter: Yu Xu
>            Assignee: Yu Xu
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.40.0
>
>
> Currently ClickHouse Dailect can not support accurate precision
> In ClickHouse:
>  * *P - precision. Valid range: [ 1 : 76 ].* 
>  * *S - scale. Valid range: [ 0 : P ].* 
> Depending on P parameter value Decimal(P, S) is a synonym for:
>  * *P from [ 1 : 9 ] - for Decimal32(S)*
>  * *P from [ 10 : 18 ] - for Decimal64(S)*
>  * *P from [ 19 : 38 ] - for Decimal128(S)*
>  * *P from [ 39 : 76 ] - for Decimal256(S)*
> we can refer to doc with: 
> [https://clickhouse.com/docs/sql-reference/data-types/decimal]
>  
> eg:{*}select cast(\"product_id\" as decimal(22,20)) from \"product\"{*}
> but transform to: *SELECT CAST(`product_id` AS DECIMAL(19, 19)) FROM 
> `foodmart`.`product`*
>  
> this should be transform to:  *SELECT CAST(`product_id` AS DECIMAL(22, 20)) 
> FROM `foodmart`.`product`*
> because CK precision is from[1, 76] 
>  
> *user case:* 
> if user want to cast to a decimal type such as :
> select cast('1.322131231313123311312322' as DECIMAL(30,24)) from 
> system.numbers limit 1;
> should be a decimal number of 1.322131231313123311312322
> but currently  calcite ClickHouse dialect can only cast 
> to:1.322131231313123311
> this would cause loss of precision.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to