Wrong result in multi-column UNION type coercion with FLOAT values
- Dominant language
- Go
- Stars
- 40.5k
- Forks
- 6.2k
- PR merge metrics
- PR metrics pending
Description
## Bug Report
### 1. Minimal reproduce step (Required)
```sql
-- create table
DROP TABLE IF EXISTS `t2`;
CREATE TABLE `t2` ( `c1` float DEFAULT NULL, KEY `i0` (`c1`) ) CHARSET=utf8mb4;
INSERT INTO `t2` VALUES (NULL);
DROP TABLE IF EXISTS `t4`;
CREATE TABLE `t4` ( `c1` float DEFAULT NULL, `c2` decimal(10,0) unsigned DEFAULT NULL ) CHARSET=utf8mb4;
INSERT INTO `t4` VALUES (NULL,NULL),(0,NULL),(0.287354,0000000000),(-1335610000,0000000000),(0,NULL);
-- query
(SELECT CAST('x' AS CHAR) AS c0,
CAST(NULL AS DECIMAL(10,0)) AS c1
WHERE FALSE)
UNION
(SELECT c1 AS c0,
c1 AS c1
FROM t4
WHERE c1 IS NOT NULL);
```
### 2. What did you expect to see? (Required)
When I execute in databases such as MySQL and Mariadb, the result is as follows:
```
mysql> (SELECT CAST('x' AS CHAR) AS c0,
-> CAST(NULL AS DECIMAL(10,0)) AS c1
-> WHERE FALSE)
-> UNION
-> (SELECT c1 AS c0,
-> c1 AS c1
-> FROM t4
-> WHERE c1 IS NOT NULL);
+--------------+--------------------+
| c0 | c1 |
+--------------+--------------------+
| 0 | 0 |
| 0.2873539925 | 0.2873539924621582 |
| -1335609984 | -1335609984 |
+--------------+--------------------+
3 rows in set (0.01 sec)
```
### 3. What did you see instead (Required)
```
mysql> (SELECT CAST('x' AS CHAR) AS c0,
-> CAST(NULL AS DECIMAL(10,0)) AS c1
-> WHERE FALSE)
-> UNION
-> (SELECT c1 AS c0,
-> c1 AS c1
-> FROM t4
-> WHERE c1 IS NOT NULL);
+-------------+--------------------+
| c0 | c1 |
+-------------+--------------------+
| 0 | 0 |
| 0.287354 | 0.2873539924621582 |
| -1335610000 | -1335609984 |
+-------------+--------------------+
3 rows in set (0.00 sec)
```
### 4. What is your TiDB version? (Required)
```
mysql> select tidb_version();
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tidb_version() |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Release Version: v8.5.5
Edition: Community
Git Commit Hash: 1fa258b833ff113883beeba40bc130be7ce66610
Git Branch: HEAD
UTC Build Time: 2026-03-23 14:08:54
GoVersion: go1.25.5
Race Enabled: false
Check Table Before Drop: false
Store: unistore |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
Contributor guide
Assessment
This issue has not been assessed yet.