executor: `cast decimal as json` may lose precision
- Dominant language
- Go
- Stars
- 40.5k
- Forks
- 6.2k
- PR merge metrics
- PR metrics pending
Description
## Bug Report
Please answer these questions before submitting your issue. Thanks!
### 1. Minimal reproduce step (Required)
```
drop table if exists test.test_decimal;
CREATE TABLE test.test_decimal (col256 decimal(65, 20));
insert into test.test_decimal values(0.12345678901234567890);
select col256, cast(col256 as double), cast(col256 as json) from test.test_decimal;
```
### 2. What did you expect to see? (Required)
mysql
```
+------------------------+------------------------+------------------------+
| col256 | cast(col256 as double) | cast(col256 as json) |
+------------------------+------------------------+------------------------+
| 0.12345678901234567890 | 0.12345678901234568 | 0.12345678901234567890 |
+------------------------+------------------------+------------------------+
```
### 3. What did you see instead (Required)
tidb
```
+------------------------+------------------------+----------------------+
| col256 | cast(col256 as double) | cast(col256 as json) |
+------------------------+------------------------+----------------------+
| 0.12345678901234567890 | 0.12345678901234568 | 0.12345678901234568 |
+------------------------+------------------------+----------------------+
```
### 4. What is your TiDB version? (Required)
Git Commit Hash: 058a9614b22b42e1a93546e1f0e7ee1aae1ceb05
Contributor guide
Assessment
This issue has not been assessed yet.