polardb / polardb/polardbx-sql
:after changing MAX to -MIN(-),col_1'svalue unexpectedly changes from 127 to 2009.
Open
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.7k
- Forks
- 337
- PR merge metrics
- No merged PRs in 30d
Description
Description:after changing MAX to -MIN(-),col_1'svalue unexpectedly changes from 127 to 2009.
mysql> SELECT MAX(ttc90.c15) AS col_1, MIN(xxz93.c13) AS col_2, ST_DIFFERENCE(ttc90.c11, ttc90.c11) AS col_3, AVG(ttc90.c8) AS col_4 FROM t2 AS xxz93 INNER JOIN t3 AS ttc90 ON 1 = 1 GROUP BY ST_DIFFERENCE(ttc90.c11, ttc90.c11), xxz93.c10 ORDER BY xxz93.c10 DESC UNION ALL SELECT oan51.c4 AS col_1, oan51.c5 AS col_2, oan51.c11 AS col_3, oan51.c9 AS col_4 FROM t3 AS oan51;
+-------+---------------------+------------------------------------------------------+---------+
| col_1 | col_2 | col_3 | col_4 |
+-------+---------------------+------------------------------------------------------+---------+
| NULL | 2025-03-09 17:59:43 | 0x00000000010700000000000000 | 23.0000 |
| 127 | 2025-10-28 00:33:04 | 0x000000000101000000E50E9BC8CCD51CC011514CDE00C35BC0 | 5.0000 |
+-------+---------------------+------------------------------------------------------+---------+
2 rows in set (0.00 sec)
mysql> SELECT -MIN(-ttc90.c15) AS col_1, MIN(xxz93.c13) AS col_2, ST_DIFFERENCE(ttc90.c11, ttc90.c11) AS col_3, AVG(ttc90.c8) AS col_4 FROM t2 AS xxz93 INNER JOIN t3 AS ttc90 ON 1 = 1 GROUP BY ST_DIFFERENCE(ttc90.c11, ttc90.c11), xxz93.c10 ORDER BY xxz93.c10 DESC UNION ALL SELECT oan51.c4 AS col_1, oan51.c5 AS col_2, oan51.c11 AS col_3, oan51.c9 AS col_4 FROM t3 AS oan51;
+-------+---------------------+------------------------------------------------------+---------+
| col_1 | col_2 | col_3 | col_4 |
+-------+---------------------+------------------------------------------------------+---------+
| NULL | 2025-03-09 17:59:43 | 0x00000000010700000000000000 | 23.0000 |
| 2009 | 2025-10-28 00:33:04 | 0x000000000101000000E50E9BC8CCD51CC011514CDE00C35BC0 | 5.0000 |
+-------+---------------------+------------------------------------------------------+---------+
2 rows in set (0.00 sec)
Additionally,in mysql:9.5.0,this problem has been solved
mysql> (SELECT MAX(ttc90.c15) AS col_1, MIN(xxz93.c13) AS col_2, ST_DIFFERENCE(ttc90.c11, ttc90.c11) AS col_3, AVG(ttc90.c8) AS col_4 FROM t2 AS xxz93 INNER JOIN t3 AS ttc90 ON 1 = 1 GROUP BY ST_DIFFERENCE(ttc90.c11, ttc90.c11), xxz93.c10 ORDER BY xxz93.c10 DESC) UNION ALL SELECT oan51.c4 AS col_1, oan51.c5 AS col_2, oan51.c11 AS col_3, oan51.c9 AS col_4 FROM t3 AS oan51;
+-------+---------------------+------------------------------------------------------+---------+
| col_1 | col_2 | col_3 | col_4 |
+-------+---------------------+------------------------------------------------------+---------+
| NULL | 2025-03-09 17:59:43 | 0x00000000010700000000000000 | 23.0000 |
| 2009 | 2025-10-28 00:33:04 | 0x000000000101000000E50E9BC8CCD51CC011514CDE00C35BC0 | 5.0000 |
+-------+---------------------+------------------------------------------------------+---------+
2 rows in set (0.00 sec)
mysql> (SELECT -MIN(-ttc90.c15) AS col_1, MIN(xxz93.c13) AS col_2, ST_DIFFERENCE(ttc90.c11, ttc90.c11) AS col_3, AVG(ttc90.c8) AS col_4 FROM t2 AS xxz93 INNER JOIN t3 AS ttc90 ON 1 = 1 GROUP BY ST_DIFFERENCE(ttc90.c11, ttc90.c11), xxz93.c10 ORDER BY xxz93.c10 DESC) UNION ALL SELECT oan51.c4 AS col_1, oan51.c5 AS col_2, oan51.c11 AS col_3, oan51.c9 AS col_4 FROM t3 AS oan51;
+-------+---------------------+------------------------------------------------------+---------+
| col_1 | col_2 | col_3 | col_4 |
+-------+---------------------+------------------------------------------------------+---------+
| NULL | 2025-03-09 17:59:43 | 0x00000000010700000000000000 | 23.0000 |
| 2009 | 2025-10-28 00:33:04 | 0x000000000101000000E50E9BC8CCD51CC011514CDE00C35BC0 | 5.0000 |
+-------+---------------------+------------------------------------------------------+---------+
2 rows in set (0.01 sec)
How to repeat
DROP DATABASE IF EXISTS test;
CREATE DATABASE IF NOT EXISTS test;
SET GLOBAL sort_buffer_size = 64 * 1024 * 1024;
SET GLOBAL read_rnd_buffer_size = 8 * 1024 * 1024;
USE test;
CREATE TABLE t2 (
c1 INT NOT NULL AUTO_INCREMENT,
c2 INT NOT NULL,
c3 DECIMAL(10,2) NOT NULL,
c4 VARCHAR(50) NOT NULL,
c5 DATE NOT NULL,
c6 MEDIUMTEXT NULL,
c7 LONGTEXT NULL,
c8 MEDIUMBLOB NULL,
c9 LONGBLOB NULL,
c10 ENUM('value1','value2','value3') NULL,
c11 SET('a','b','c','d') NULL,
c12 BIT(8) NULL,
c13 DATETIME NULL,
c14 FLOAT(8,2) NULL,
c15 DOUBLE(12,4) NULL,
c16 JSON NULL,
PRIMARY KEY (c1)
);
CREATE TABLE t3 (
c1 INT NOT NULL AUTO_INCREMENT,
c2 INT NOT NULL,
c3 INT NOT NULL,
c4 YEAR NOT NULL,
c5 DATETIME NULL,
c6 TINYINT NULL,
c7 SMALLINT NULL,
c8 MEDIUMINT NULL,
c9 BIGINT NULL,
c10 LONGTEXT NULL,
c11 GEOMETRY NULL,
c12 TINYTEXT NULL,
c13 TINYBLOB NULL,
c14 SET('x','y','z') NULL,
c15 TINYINT(1) NULL,
PRIMARY KEY (c1)
);
INSERT INTO t2 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16) VALUES (5217, 498, 835.13, 'sample_fNfG', '2025-06-14', 'sample_fmk5nNJEcTlHvPeK898aRIeFPiKwTlhiLdzE', 'sample_fzqAtYYMglBoJysRqpTHHQJENLTDVHZ0IJ0dYYGsUKN2pQyWIwU0tpiGSGsH9A4e92oqZVLOBW9bWR5gOyaNt94WADineBTnCRmhWToq8EmCIhArS71v7BaW1zI4lsfklEaqKvqIUtPFtugfhTKoiM5WBcIKOUzQcT1b2E1Wu0Lv6NxhQgiTywCSiyq0JOr7EFd6HsqXkd40Z8AWnaZJc9bilZiskcjeU9cSMoK0nHJrlHt7CSSTShP4oBFVBPBoT0VwfSdP8RLptWZBaikg12SCcGdoy8IPtlZO0FSbCmhbZoKkA4CcQt7Q0N4Ka50cdVIkk9GJ1Pm96HQj0FR81ya1StN6lJFMD41K0uyoQ2zyffdYQgPg28Ymn8tXCa8tT2OqOBkYGRsuEeJMCFFTl1RJ7CwaOLodqC4JZAWSgQBJGV3Kxszhds2UA1Tpk7XBvQfuTyH6tXPcOzXlEfgB1dsf5gHCivSlgfpFqDFuJXvDI09GUSszpoXY82L0yolScDsPT5LK7RvcU4EKWm3W5M5gXZyXn9rv6SewdyunnxH4VLWAFTNe0jCwNpLcjALBzJm1JiDTDSF9L4ZxhyQ8DMBugZ2b5OME5XS9gRdDuys3UMwbf5sopOULafb6osANgMlHedPl0JfR3mHjrCV04ODGuS0wRh2MvsE9XhwcOBK1boL8TvqylgwUapO0G3DmwJeTbGfcxjhwVLeeJhj76Ef4KoXEUE44pcG8EpjgWG02uE6mjKkjEJChNK7Zd5nb3eucXRIqD2vAvlibTUQ4nwUsJFgOjFU7YUCIQwqDX39rErIOxrWfsY6kBHOlYDjBUNAQ8euVN8fpmjtnn279AgOHT24iE63umZciHBknqLlghhqEYPNuHli46mTqtEQ6FiDLtcVu0uRRPN21cW5DrwROObjixx4P4He8CAbp9NJ3iv2RSeAYuHzJAbmvyakOkTTipmEnhQZzmZ3j8OhX26vZR0pJ6B7fTGI5KDSv9SzGJr1fpeRnnPsf2Y1cwSBeVHUg47tYPstnFsl0fdiRrQOPVugF5JQ2QpKVwAN3ysYINlSe6DVsFIMb6ohNYPZIT8Wu5s0J3NLUTsYkZJVd05lmO8ATSfiwS3tW2NIr2GpG1asTXFfsvUzU', X'2EE6AA8B771A30', X'E889B1C38468C291', 'value2', 'd,c,b,a', b'10100010', '2025-03-09 17:59:43', 76.40, 8.99, '{"k1": 758, "k2": "mixed_41", "k3": ["tag_83"], "k4": {"k5": "B", "k6": [87, 5], "k7": {"k8": "user_61", "k9": "2026-01-22T17:38:11.813764"}}, "k10": true}');
INSERT INTO t3 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15) VALUES (9473, 3166, 7923, 2009, '2025-10-28 00:33:04', 64, 33, 23, 5, 'sample_zTTcDyJQiepslGYJ3zx7HK7FrfiC27HYfiM2DyjEqVaxZXyJQZAk243c5b7yltsU3bDVzF2sv1hGOpsKD5u5Vsxz394dHEEgy83H8xb47ex2oB6Sq0o7pOfwoVHbKZu6RgdQZDvfErgKcrI6jjhxlh5vvf4A5bMHspZVCHf6xQTLobsltrxVRPWcVEpcFa5j1I95z3Z4Rjv7rhDXeACav9XF6AozF9GisKKaR6TZV1uqxe9tbHTweWshIEX8yNnrU3IxQZKPJKdvzuZULMFQtInIhk96d8YG30AdQ5pBtYaX65GusSaJXGMp3Ihk3IErQfBpVTu29NJzaMcfVkaVMp2xAwfBSI3cvVabVv8biqnHJEPV5TWpfuyEyNERmQB3uT4QchyRMQMwZvjD7dLdhzAswCYPfR1cgVswYIJ1uRUY5JmnVxXSazO9HaCdk42BhmyWoXGzKbcNQ4D5uw3C9jIuse73AKzFL2LkIeEwgZAsimZuiM7Q4EwQWxy7B09PFzXlmKpILqGuT0hKw5wsTyKNl0wjI2FNH2bPoVq4ujSAQDwJr4jSz38', ST_GeomFromText('POINT(-7.208789 -111.046928)'), 'sample_lo1SDGmMjznqDAbPH7lv1PLIycmmGnug3w9c1EMVaOOvVY0FM7GLWSZHVE6MVSrkzdR1XlrSer0Ae6U0ldCAgDDUG', X'CBBA34E99F8CDA95E4A2AFDF8210', 'z', NULL);
SELECT MAX(ttc90.c15) AS col_1, MIN(xxz93.c13) AS col_2, ST_DIFFERENCE(ttc90.c11, ttc90.c11) AS col_3, AVG(ttc90.c8) AS col_4 FROM t2 AS xxz93 INNER JOIN t3 AS ttc90 ON 1 = 1 GROUP BY ST_DIFFERENCE(ttc90.c11, ttc90.c11), xxz93.c10 ORDER BY xxz93.c10 DESC UNION ALL SELECT oan51.c4 AS col_1, oan51.c5 AS col_2, oan51.c11 AS col_3, oan51.c9 AS col_4 FROM t3 AS oan51;
SELECT -MIN(-ttc90.c15) AS col_1, MIN(xxz93.c13) AS col_2, ST_DIFFERENCE(ttc90.c11, ttc90.c11) AS col_3, AVG(ttc90.c8) AS col_4 FROM t2 AS xxz93 INNER JOIN t3 AS ttc90 ON 1 = 1 GROUP BY ST_DIFFERENCE(ttc90.c11, ttc90.c11), xxz93.c10 ORDER BY xxz93.c10 DESC UNION ALL SELECT oan51.c4 AS col_1, oan51.c5 AS col_2, oan51.c11 AS col_3, oan51.c9 AS col_4 FROM t3 AS oan51;
Version
mysql> select polardb_version();
+---------+--------------+---------------------+
| TYPE | VERSION | RELEASE_DATE |
+---------+--------------+---------------------+
| Product | PolarDB V2.0 | Distributed Edition |
| CN | 2.4.0.5.4.19 | SNAPSHOT |
| DN | 2.4.0.8.4.19 | 20240430 |
| GMS | 2.4.0.8.4.19 | 20240430 |
+---------+--------------+---------------------+
4 rows in set (0.01 sec)
mysql> select @@version;
+-------------------------+
| @@version |
+-------------------------+
| 8.0.32-X-Cluster-8.4.19 |
+-------------------------+
1 row in set (0.00 sec)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the provided schema, data, and paired UNION queries on the reported PolarDB-X version, then compare them with MySQL 9.5.0. Trace the differing aggregate behavior for MAX(c15) versus -MIN(-c15); done means both equivalent expressions return the same result without regressing the other query output.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- mysql, sql
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100