pingcap / pingcap/tidb

Inconsistent results while executing queries with same function

Open
#65,655 1 comment 0 reactions 0 assignees View on GitHub
contribution severity/minor sig/planner type/bug
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)
```sql
CREATE TABLE t0(c0 BLOB(451) , c1 DECIMAL UNSIGNED ZEROFILL , c2 DOUBLE DEFAULT 1.7976931348623157E308 );
CREATE TABLE t36(c0 BOOL UNSIGNED ZEROFILL DEFAULT false );
ALTER TABLE t36 ADD PRIMARY KEY(c0);
INSERT INTO t0(c2, c0) VALUES (0.32046457955281726, '0.32046457955281726');
REPLACE INTO t36 VALUES (false), (true);
ALTER TABLE t0 ORDER BY c1 ASC, c2 ASC, c0 DESC;
REPLACE INTO t0 VALUES ('-m{zx8UK', -1814314531, 0.059025995603075865);
INSERT LOW_PRIORITY IGNORE INTO t0 VALUES ('', 43099016, 0.7953835364560704) ON DUPLICATE KEY UPDATE c0=t0.c0;

ALTER TABLE t36 DROP PRIMARY KEY;
INSERT INTO t0 VALUES ('}諥jOz', NULL, -1.497941845E9), ('0.3725265635940268', -480524641, 1.790326704E9);
INSERT IGNORE INTO t0(c2, c0) VALUES (0.19683253135189693, '') ON DUPLICATE KEY UPDATE c1='-';
SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) ;
SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) HAVING ((t0.c0)NOT LIKE((NOT (((t0.c0) IS NOT NULL))))) union all
SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) HAVING (NOT (((t0.c0)NOT LIKE((NOT (((t0.c0) IS NOT NULL))))))) union all
SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) HAVING ((((t0.c0)NOT LIKE((NOT (((t0.c0) IS NOT NULL)))))) IS NULL);
```

### 2. What did you expect to see? (Required)
Queries return same result

### 3. What did you see instead (Required)
```sql
mysql> SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) ;
+------+
| c0 |
+------+
| |
+------+
1 row in set, 4 warnings (0.00 sec)

mysql> SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) HAVING ((t0.c0)NOT LIKE((NOT (((t0.c0) IS NOT NULL))))) union all
-> SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) HAVING (NOT (((t0.c0)NOT LIKE((NOT (((t0.c0) IS NOT NULL))))))) union all
-> SELECT t0.c0 FROM t0 NATURAL RIGHT JOIN t36 GROUP BY CAST((CASE -1814314531 WHEN t36.c0 THEN t0.c0 WHEN t0.c2 THEN t0.c1 ELSE (CASE 'm' WHEN t0.c1 THEN -1197227230 WHEN t0.c0 THEN t0.c0 ELSE -36457288 END ) END ) AS DATETIME) HAVING ((((t0.c0)NOT LIKE((NOT (((t0.c0) IS NOT NULL)))))) IS NULL);
+------+
| c0 |
+------+
| |
| NULL |
+------+
2 rows in set, 7 warnings (0.01 sec)

```

### 4. What is your TiDB version? (Required)
8.0.11-TiDB-v9.0.0-beta.1.pre-640-g24903d6b24

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.