polardb / polardb/polardbx-sql

unexpected value caused by where clause

Open
#246 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Java
Stars
1.7k
Forks
337
PR merge metrics
No merged PRs in 30d

Description

after changing where clause to forever True,the col_1's value is unrecognized

mysql> SELECT kou57.c9 AS col_1, SIN(txr52.c1) AS col_2, LENGTH(kou57.c10) AS col_3, kou57.c15 AS col_4 FROM t2 AS kou57 INNER JOIN t1 AS txr52 USE INDEX (idx_t1_c4) ON 1 = 1 WHERE txr52.c6 BETWEEN 16 AND 51 UNION ALL SELECT 69 AS col_1, mhe90.c4 AS col_2, mhe90.c1 AS col_3, mhe90.c1 AS col_4 FROM t1 AS mhe90;
+-------+-------+-------+--------+
| col_1 | col_2 | col_3 | col_4  |
+-------+-------+-------+--------+
|    69 |  36.0 |  3584 | 3584.0 |
|    69 |  37.0 |  8644 | 8644.0 |
|    69 |  48.0 |  6432 | 6432.0 |
|    69 |  68.0 |  1986 | 1986.0 |
|    69 |  90.0 |   954 |  954.0 |
+-------+-------+-------+--------+
5 rows in set (0.00 sec)

mysql> SELECT kou57.c9 AS col_1, SIN(txr52.c1) AS col_2, LENGTH(kou57.c10) AS col_3, kou57.c15 AS col_4 FROM t2 AS kou57 INNER JOIN t1 AS txr52 USE INDEX (idx_t1_c4) ON 1 = 1 WHERE '1' = '1' UNION ALL SELECT 69 AS col_1, mhe90.c4 AS col_2, mhe90.c1 AS col_3, mhe90.c1 AS col_4 FROM t1 AS mhe90;
+-----------------------------+---------------------+-------+--------+
| col_1                       | col_2               | col_3 | col_4  |
+-----------------------------+---------------------+-------+--------+
|                           7 |  0.5288268660633278 |     6 |  79.57 |
|           όˢȀ흩φD쥽S氪퉎ØЭ |  0.5288268660633278 |     6 |  53.96 |
|                           7 | -0.9957538466003096 |     6 |  79.57 |
|           όˢȀ흩φD쥽S氪퉎ØЭ | -0.9957538466003096 |     6 |  53.96 |
|                           7 |  -0.916738444363225 |     6 |  79.57 |
|           όˢȀ흩φD쥽S氪퉎ØЭ |  -0.916738444363225 |     6 |  53.96 |
|                           7 |  0.4911791469168586 |     6 |  79.57 |
|           όˢȀ흩φD쥽S氪퉎ØЭ |  0.4911791469168586 |     6 |  53.96 |
|                           7 | -0.8645059984548472 |     6 |  79.57 |
|           όˢȀ흩φD쥽S氪퉎ØЭ | -0.8645059984548472 |     6 |  53.96 |
|                          69 |                36.0 |  3584 | 3584.0 |
|                          69 |                37.0 |  8644 | 8644.0 |
|                          69 |                48.0 |  6432 | 6432.0 |
|                          69 |                68.0 |  1986 | 1986.0 |
|                          69 |                90.0 |   954 |  954.0 |
+-----------------------------+---------------------+-------+--------+
15 rows in set (0.00 sec)

How to repeat

DROP DATABASE IF EXISTS test;
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE t1 (
    c1 INT NOT NULL AUTO_INCREMENT,
    c2 VARCHAR(255) NOT NULL,
    c3 VARCHAR(255) NULL,
    c4 INT NULL,
    c5 DATE NOT NULL,
    c6 VARCHAR(10) NOT NULL,
    PRIMARY KEY (c1)
);

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,
    PRIMARY KEY (c1)
);

INSERT INTO t1 (c1, c2, c3, c4, c5, c6) VALUES (3584, 'sample_AQJP3FCb7PX46hF2d3VoKsPIHtIgzieVgOK1Ue7iSbNProjjh', 'sample_v', 36, '2025-09-07', 'sample_J');
INSERT INTO t1 (c1, c2, c3, c4, c5, c6) VALUES (954, 'sample_0kfPnPKeUjkycwqHxj5OtQ8', 'sample_sQ', 90, '2025-10-10', 'sample_C');
INSERT INTO t1 (c1, c2, c3, c4, c5, c6) VALUES (1986, 'sample_tJaorTY4zIEBbb8IM4auYieeVSd80foFpJh3MIv0Rz8fEgfYthMyHLdUMnlIN6NnP0VoAFBpSEUcHovYpCFbGrC98Y52vXpgXsmsEBDYj6ecgN2JkDh393f4hhIjFLpqffJrE5Z09WtyvK6PT0IcDNjF6S16yhunjPWFxaAbK4Z6', 'sample_bIa5736UIVD92z8u5rQ0PaRpPlOEwroZ4Xoqc4jDp4SiRROqU4u2EvOZZupAHmFPuFcWjOC6V16yTz58i3824l1EdwAgMPAPy9RM2sHerAB3L3eAWFGFd', 68, '2025-04-20', 'sample_KWK');
INSERT INTO t1 (c1, c2, c3, c4, c5, c6) VALUES (6432, 'sample_apUxsuYxJ7yJ6etwr3Sd7Cg7l1JHXVRSgSUF689u4w2greqF3zbivycDbv6qA4Wusopmd80qoDFLGg1ercUJBRyEl0j0aw1JXgj35Pg4JK2lNYBG2UPKBvS3jhsYpkYbhUNtq5zfTal0MXOuOk4CydQWObucwCG1tGcBtxVHzwZf18W2M7Fl2c8AzYVIIn', 'sample_xoju7XvqD9RJhJ2NAoI2KxR5QZdZKDIjrOdN8MahX1k3dJu9UxKIjMzLtBjiMnoN5JxDvSR7bHNsAECcv5onlaOPg4TBQg4yQw6ThZm8lvYZcq9lBqZap4SoxgEZLdQaIflJvl7EcmCUqqRgQEes', 48, '2025-04-28', 'sample_N');
INSERT INTO t1 (c1, c2, c3, c4, c5, c6) VALUES (8644, 'sample_IYRIsvectgAbcVIlfnvNd9kX3FNkOo4kAKKY1BDBLFQpH7ksvMtBllsZK16dP8T7twvH59dyaLTQuKIciaq8hnHB49XU7pS4kDw8Gt9mASD1ylSfvFBVtDNT', 'sample_7K12anyKLHlFNF5tfck9rj0CREpw10By71a2xm7uMRqIH61pLHnO3mXiWV0Ql013c5vK', 37, '2024-11-16', 'sample_8');

INSERT INTO t2 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15) VALUES (994, 3423, 181.05, 'sample_wfxp8dzD7XrFnPLzr', '2024-12-16', 'sample_pVtuVRHgHyCTAdMjTX5uDmgDFTTcRtYK4MA3VzWGhxyRAthAan095ltHnWC2wZqFzmNIz2BhrrY2h0fxo8UzijtqT3Qzyc7ydCZ760AbwzyWxKRhxPNIiXBNmglw9ylwoKoF0Q5QMAuWKKHLT07TyALEjZEq9SXDPPHZkG637npBmt2TKOxONpcXFVVrsW3jgaSAVhmwZMYON8YAyhzkhs0fsDZAohNdcrXeb43HI5de5EWnnY2lj8xyjRyfvWyVnBrhfeRiVnwUHuk0bcwoN3ueyVTRnXwQSF56ZbxUsw4hUmzUQ4GGRNJqlHOzrdMFLZHnsp5SamGZ0WPFJC1Vx1RuAnB5RdThXSIL8o2Fgebw5VIlETIWBvsuSQqrlbUxl0DbKa4xwcIiP23T8cVxdUgU4xKNvx6nab1kO47gdMcGoSGyXyvr23yKaVpjtw6XNe0uwE6zNt4nqZ1IMHxo', 'sample_oIxWhZ5PNoCnBUDNNG1t4uGQ80Jm3dOMyFRe0xsG8bqvWYFDuMqCy715ukwGqx4YD0tNg95vNkY49I1JPAbh5BBrcbTCYpkH1R37hDwaEo0Lzl91rc0tCeXUzOy258wzk7DX3Z11LNDgWU4awzLAAqwgg6l6QUVNdWbDUN3MQYXgivI8FcfivR8MVM40OIkt9fO8BNRyM2wTSSdov5M69ahQHUactc9lQyhXQfKFssG6OK2qKe2LIxK7FT1nHxPTNh7d41fB2bHcrjQ51tWpKJcLUFVVansOZC4fsvYKAamSAEMg3CsdHRNxw9dNCn5504tI75YCiAZT9DJEv7eTX7R07OJUaKE95P4VCs4XzftyMlVR4sPXkCsh7k7MYYBRd5d9iJdQLLOKXV3FUX5qjMRwF0oltoDkNGhVzUwlRuOptO8ROwzJLwCo5Zc7ce9l3bVoWQ3LsFymuRfVPQNPDkec3GZtAddEZBmIvzojWCpi0vhTzdYojxEdQwMHomRvrrYI7XWkrLrOOYwgMnPfHTeyO9oBFhEksiqIvbJHAEP2xCD2J0NvGcap1lZc2ueOUe6pJbZ95HmiFyRwwxMOxfLY4VCD5vgXNZTzeP0q8G0caUPPmLnaPcrw0vcnvR1gJnPdl8YyggslnNMOFmhPU2TK8EO5Xn6QVpvb6zPaM3Bw6sK3u10cw3i3jPuAYGSdMFNIdrU6L0zMUiI1LO4T7us2MUaXM', X'4DD6A6D687C6A9C08CDA93E9B48429DAA8ECBF93E891B67DDEBCDEBCE79C8A20', X'CF8CCBA2C880ED9DA9CF8644ECA5BD53E6B0AAED898E10C398D0AD', 'value1', 'a,c,b,d', b'01101010', '2025-04-25 18:28:30', 90.91, 53.96);
INSERT INTO t2 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15) VALUES (9219, 8711, 166.61, 'sample_b7C1trecK6yntdY4x3tkM8epFQtYVnoEfz17wiJ0h80', '2025-04-12', 'sample_lM7ywI1JmA9kqk0PwSZZlxesXZdCBedJvwYKBw9dR56w7WO7DzbB1ZVsW2uBiEHEd2wR0zfA4sx55xrLO89GGMf4F2mz0UofYA4LoqJgyFeasOQ0xqixQuPntbtFFaU0qHyeuRqR7GpKm67SSQeJQd5eZ7q71APzN3n0zFxL9bC0jVQUAA2zi4LuWSd0Py4RHM12FEZBN1KuHU5ZozMhLHirnlRKFd0CHuHyUguieTnEjt89dxMMgaDrETZaKHVR1ScgTZefc8hb2Y5a2zsDfzRCQbzUBuZhyxWPDkLMg5eJaLJRAGHMN71OJrpgGZCWwFkmvr3GquST0vH8CnT59cLY9O9v9udhzAtGCiQXbwB5Lj7KzeYHgjKr8X09e6EGFI4JxrFhFkCd8iyB8xSq8NysRpDP91m9AphkU', 'sample_pNAzvJ4VjAPSdNguloV4eVG6u3SzZdFFAOuhhV8Ossq2cFdieqfnhqXkFI4LI0JGQzZWBzSMVDPHQn0Oe3Nv7stxdJlPAXt4VIQTYH9MOQAhXAyMAoxBstAK6oYPsTItXFJytGz7Oa1izmP5LLD6Y2iqWh4faPfdfuygrPwm5cfs0z0bRCMeY6uz7TyAS0YbrZIi7JkCnI785BsewYQPZo7xjzdS47d1oKj4EPSzrSKsyoWNaBR6C1MRljtVdfaDibv5fO9sj9N4QHy0lP29cySiHWUKbcoGMCWqTOmi2c65M232CKXKPGJ1miY9cIhuTTZD5hGQqKQ6uuNKIYLIoZJ1mXCoZyJ85k02lYVhV3E0tlr01DgEDkpaICmjNTzVw35Zc9sU3JJCVlWKLa83FtS8kX3lvVtmWq4G8OWgzaOQKt5dw0H04Ibqj030OZQDqmj15XiBFAS2nXQunJRD8Kx7EkfsAG7FfyIz4P5wqDFJpSKziR8OmR8TZLmv2EVQUltHdy45PCO2AXC4x1sIfP9dmQ1aiECO4ed7urHtLvAZpow3BBcK8VgBugkQxVFqIrXg3RaziUH5wl5DoIAzZmMowtn0Vu2ZpGH5Zdf0RvhFUlAck0tL497tGQydIpqGp9PjEKf6QUCAB3ls7R2XPJaIWyS9U', X'3E00CE8341C791EE918038EE949521C58A15D0B301D3BBE09EADEBBDA75BE890B0D58D53', X'37', 'value1', 'c,b,a', b'11010111', '2025-01-23 17:58:04', 97.71, 79.57);

CREATE  INDEX idx_t1_c4 ON t1 (c4);
SELECT kou57.c9 AS col_1, SIN(txr52.c1) AS col_2, LENGTH(kou57.c10) AS col_3, kou57.c15 AS col_4 FROM t2 AS kou57 INNER JOIN t1 AS txr52 USE INDEX (idx_t1_c4) ON 1 = 1 WHERE txr52.c6 BETWEEN 16 AND 51 UNION ALL SELECT 69 AS col_1, mhe90.c4 AS col_2, mhe90.c1 AS col_3, mhe90.c1 AS col_4 FROM t1 AS mhe90;
SELECT kou57.c9 AS col_1, SIN(txr52.c1) AS col_2, LENGTH(kou57.c10) AS col_3, kou57.c15 AS col_4 FROM t2 AS kou57 INNER JOIN t1 AS txr52 USE INDEX (idx_t1_c4) ON 1 = 1 WHERE '1' = '1' UNION ALL SELECT 69 AS col_1, mhe90.c4 AS col_2, mhe90.c1 AS col_3, mhe90.c1 AS col_4 FROM t1 AS mhe90;

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Run the two SQL queries from the reproduction on the stated PolarDB-X versions and compare the UNION results, especially col_1 under the constant WHERE condition. Trace the database's query planning and execution for this join and UNION case; done means the second query no longer returns corrupted col_1 values and the regression is covered by a repeatable test.

Written by the indexing model from the issue text.

Assessment

Tech stack
mysql, sql
Domain
databases, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.