Ok, seems like a bug.
Feel free to fill the issue.

I have added this test to SqlOperatorTest:

f.checkScalar("cast(0.012 as DECIMAL(2, 5))", new BigDecimal("0.012"),
        "DECIMAL(2, 5) NOT NULL");

and it has passed. That's why I am asking. It should fail, but it doesn't.

Mihai

-----Original Message-----
From: stanilovsky evgeny
Sent: Friday, August 04, 2023 7:00 AM
To: [email protected]
Subject: Re: DECIMAL(2, 3) meaning

Hello Mihai.
A bit older standard describes Precision as : Precision of decimal floating-point values is a positive value that specifies the number of significant decimal digits in the mantissa.

Thus:
cast(0.012 as DECIMAL(3, 3)) - ok
cast(0.012 as DECIMAL(2, 3)) - fail
cast(0.012 as DECIMAL(1, 3)) - fail
cast(0.012 as DECIMAL(2, 5)) - fail


Hello,


I notice that Calcite happily accepts decimal type specifications
where the scale is greater than the precision.

There are quite a few tests with such types.


What is the meaning of such types?


The SQL 92 standard has this statement on page 109:


15)The <scale> of an <exact numeric type> shall not be greater than

            the <precision> of the <exact numeric type>.


Thank you,

Mihai

Reply via email to