[
https://issues.apache.org/jira/browse/CALCITE-6909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mihai Budiu resolved CALCITE-6909.
----------------------------------
Resolution: Fixed
Fixed in
https://github.com/apache/calcite/commit/bc60174737c6c01e86615f793399860495cddbba
Thank you for the contribution [~xuzifu666]
Thank you for the review [~nobigo]
> 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)