Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.11.11
-
None
-
MariaDB [database1]> select version();
+--------------------------+
| version() |
+--------------------------+
| 10.11.11-MariaDB-ubu2204 |
+--------------------------+
1 row in set (0.000 sec)
Description
When executing SELECT queries, MariaDB incorrectly treats 0 and -0 as different data and returns them to the user.
MariaDB [database12]> (SELECT DISTINCT t1.c0 AS ref0 FROM t1 LEFT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0 UNION SELECT DISTINCT t1.c0 AS ref0 FROM t1 RIGHT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0) EXCEPT ((SELECT DISTINCT t1.c0 AS ref0 FROM t1 LEFT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0 EXCEPT SELECT DISTINCT t1.c0 AS ref0 FROM t1 RIGHT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0) UNION (SELECT DISTINCT t1.c0 AS ref0 FROM t1 RIGHT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0 EXCEPT SELECT DISTINCT t1.c0 AS ref0 FROM t1 LEFT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0));
|
+-------------+
|
| ref0 |
|
+-------------+
|
| -1325650000 |
|
| -1032030000 |
|
| -675523000 |
|
| -252511000 |
|
| -101773000 |
|
| 0 |
|
| -0 |
|
| 0.530019 |
|
| 0.745829 |
|
| 0.820946 |
|
| 0.843708 |
|
| 0.97447 |
|
| 710528000 |
|
| 961388000 |
|
| 1244370000 |
|
| 1776820000 |
|
+-------------+
|
16 rows in set (0.003 sec)
|
|
MariaDB [database12]> SELECT /*+ BKA(t1)*/ DISTINCT t1.c0 AS ref0 FROM t1 INNER JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0;
|
+-------------+
|
| ref0 |
|
+-------------+
|
| -1325650000 |
|
| -1032030000 |
|
| -675523000 |
|
| -252511000 |
|
| -101773000 |
|
| 0 |
|
| -0 |
|
| 0.530019 |
|
| 0.745829 |
|
| 0.820946 |
|
| 0.843708 |
|
| 0.97447 |
|
| 710528000 |
|
| 961388000 |
|
| 1244370000 |
|
| 1776820000 |
|
+-------------+
|
16 rows in set (0.000 sec)
|
Minimal reproduce step (Required)
DROP DATABASE IF EXISTS database12; |
CREATE DATABASE database12; |
USE database12; |
CREATE TABLE IF NOT EXISTS t0(c0 FLOAT NOT NULL, c1 DOUBLE COMMENT 'asdf' NOT NULL, c2 FLOAT ZEROFILL NOT NULL) ; |
CREATE TABLE t1(c0 FLOAT NOT NULL) DELAY_KEY_WRITE = 0, AVG_ROW_LENGTH = 3354068541; |
DELETE FROM t1 WHERE ""; |
|
INSERT IGNORE INTO t0(c0, c2) VALUES(0.7458289479989914, NULL); |
INSERT IGNORE INTO t0(c1, c0, c2) VALUES(NULL, "0.7458289479989914", "[3L<%䏌27"); |
|
REPLACE INTO t1(c0) VALUES(0.7458289479989914); |
|
REPLACE INTO t1(c0) VALUES(7.10528103E8); |
INSERT IGNORE INTO t1(c0) VALUES(NULL); |
|
INSERT IGNORE INTO t0(c2, c1, c0) VALUES(681012499, -1.032025305E9, NULL); |
INSERT IGNORE INTO t0(c1, c2) VALUES(NULL, 'OFOᆭSe⩅'); |
|
REPLACE INTO t1(c0) VALUES(-1032025305); |
REPLACE INTO t1(c0) VALUES(0.9744703957441182); |
|
|
UPDATE t0 SET c1=-1325651387; |
|
|
REPLACE INTO t1(c0) VALUES(1776815991); |
|
INSERT INTO t1(c0) VALUES(-1032025305); |
|
REPLACE INTO t1(c0) VALUES(961387551); |
|
INSERT INTO t1(c0) VALUES(-1.01772883E8); |
|
REPLACE INTO t0(c1, c0, c2) VALUES(0.7458289479989914, -1032025305, 0.5751652403379044); |
|
|
INSERT INTO t1(c0) VALUES(0.8209458724081099); |
|
REPLACE INTO t1(c0) VALUES("-0.0"); |
|
|
REPLACE INTO t1(c0) VALUES(1244366786); |
REPLACE INTO t1(c0) VALUES(0.8437080345332381); |
INSERT IGNORE INTO t1(c0) VALUES(1244366786), (0.5300191996031577), ("710528103"); |
|
REPLACE INTO t1(c0) VALUES(-675523347); |
|
REPLACE INTO t1(c0) VALUES(-252510652); |
|
|
INSERT IGNORE INTO t0(c0, c2) VALUES(0.656037835378751, "-252510652"); |
REPLACE INTO t1(c0) VALUES(-1.325651387E9); |
|
(SELECT DISTINCT t1.c0 AS ref0 FROM t1 LEFT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0 UNION SELECT DISTINCT t1.c0 AS ref0 FROM t1 RIGHT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0) EXCEPT ((SELECT DISTINCT t1.c0 AS ref0 FROM t1 LEFT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0 EXCEPT SELECT DISTINCT t1.c0 AS ref0 FROM t1 RIGHT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0) UNION (SELECT DISTINCT t1.c0 AS ref0 FROM t1 RIGHT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0 EXCEPT SELECT DISTINCT t1.c0 AS ref0 FROM t1 LEFT JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0)); |
|
SELECT /*+ BKA(t1)*/ DISTINCT t1.c0 AS ref0 FROM t1 INNER JOIN t0 ON ((CAST(t0.c0 AS SIGNED)) >= ((CASE t0.c0 WHEN NULL THEN NULL ELSE 0.7572921407216231 END))) > ( EXISTS (SELECT 1 wHERE FALSE)) WHERE GREATEST((1244366786) NOT IN (t0.c0, 0.6802236352500778, t1.c0), CAST(t0.c1 AS SIGNED)) GROUP BY t1.c0; |