oceanbase / oceanbase/oceanbase
blob value change after removing except clause
Open
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.3k
- Forks
- 1.9k
- PR merge metrics
- No merged PRs in 30d
Description
Self Checks
- I have read the Contributing Guide.
- This is only for bug report, if you would like to ask a question, please head to Discussions.
- I have searched for existing issues search for existing issues, including closed ones.
- I confirm that I am using English to submit this report, otherwise it will be closed.
- 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
- Please do not modify this template :) and fill in all the required fields.
OceanBase version
5.7.25-OceanBase_CE-v4.3.5.3
Self Hosted
Self Hosted (Docker)
Environment
Linux LAPTOP-2SQAVLB0 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Steps to reproduce
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)
);
CREATE TABLE t3 (
c1 INT NOT NULL AUTO_INCREMENT,
c2 INT NOT NULL,
c3 INT NOT NULL,
c4 YEAR NOT NULL,
c5 TIME NULL,
c6 TINYINT NULL,
c7 SMALLINT NULL,
c8 MEDIUMINT NULL,
c9 BIGINT NULL,
c10 LONGTEXT NULL,
c11 VARCHAR(255) NULL,
c12 TINYTEXT NULL,
c13 TINYBLOB NULL,
c14 SET('x','y','z') NULL,
c15 TINYINT(1) 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 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);
INSERT INTO t3 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15) VALUES (8417, 9828, 4869, 2023, '2023-01-01 21:39:34', 14, 68, 41, 89, 'sample_etX2AhIU3JkLkyrEOwJTBqpBStqOrUPbskI8gL9NI0mwroTZBFHdHYljUuEHNlUbh5hyij8jKGC30KpbQ1LxgLF3m1cLuhezhgFbet0FnWTwJErW2Qd64AWovLqIOmfMKcJrXPMb405Gro9bXX0ewJlrXrzl383yHWXzgpu1Tb9SGfjW21HzuYBp50VLzsuEtkTKnFouWhIF6m4rT46enkICMZ8vOF9qUanlkKZ8aPFJSjPJX5O8pnDC1BiPX77tUJojj286KVV5Av6I9B9Itw8A0V2gZumzouD06KPaMkQlHsphSpBT7VpjPpneb3ebwLvj73Y15sCv5iwcbaDKFGTuZRdqtmCwx2l37zcGJgU6Ch8fbCNAgmFdYNJ0sveP7uiAvefZUWmlnFmQo6ASVSR5utAX2ha7bflNpNvwT6pbanbj49lcD00bY3DYwRWuMh2d8dVb1p9allRD9Tie2mJJO2wW5qmI3uHz9MzFBCRrkAwOhczPgT6gPtnleQXwtsdSU0zzeUjTYdu23ISbFdfCk9bgfRtIZkXa4faYbiRfy8jPkwjLNK9swCMcwxAtNe1LjK0DqRcGuVbTX5E2vpfDlfk60euiq1RO4TLEUuMaBpptJ7hAGQbTQrfD7rQr5s2QzKUNgM7jY3Pz0NtNRCDtousLLEzfvEmQkM4H95WGf4v24A564PdHfyY3xYflHU3pID5XyBUNi1XC2vga2Kq8ADaM5VKsE3o4BWIKpJcuESY0bOUcp1SOhSaqFiYjf3mmm9eUqo4elRwMqf37uOeNQ1TdvdvJlKRNHTi4umf6TYZr57zdtS4RuQ7HHW2NE5wQBBhmLcpoQyTquda7JCVSmmKo8G0h1C4VXe46bDTQvjJmrCw7JKMLncGbm7TEMsWMdiNxFPoXUDpxkXUSkjRAe0Uc9tPmeTUwq5uauperTQaR', 'sample_weZoLCxaYRuEbIZSAcw', 'sample_8eD325FzN79CIA1lx3hcxnIVFhKIlbppGhso8TzRvfqzVgovF4texBWt2e15D4TE8uXMELQHhSBEC2wHYIIOfKH8XCNMYbzkX06yuiY1u41mec1TesgBYKV3PW', X'D2A6D881052BECAA90E6BDA5DBAF542830D084', 'y,z', NULL);
INSERT INTO t3 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15) VALUES (4582, 4362, 2120, 2003, '2023-01-01 10:35:52', 75, 23, 4, 15, 'sample_gPtaGnYsFMAlVwjqCJJU2QzwmdgOvBpGls5lvJFQyBnGEZz5NPkYK7scDSLaSiS0uRCXvLJgviwH0AlAvUmLhkaqnW3AEltUWHNIdnzTqBcHOsUDu0QeLyWliMU9G1LPvhB3X7ALnQc59TmIlaaa4zgbK8OiljOCbdK27haa6m0p5GSX5VOY0suuqipaSP3RX8Tu58dfASNpwe9hrhOIGVAoxmMySqppoJ2MNBUMG5rRTDFySlCqmXegIZSfV4pDHFb367Z4GCgUSrWBysl3pq2uoyW1d5rNvJ1knAew98VsBU7dh03J8aY0Moj4KnGi5expidhetPkwahDIEeqf4N5GoxWSxuJwVFpW2ijv0d6vgqGB21JRBw6RhtPqMP8qZq3zAr96npnFeMaiqehtxaWVpFY5Q9KT4xKsZhxz5NaLyodpM8PVejl5Et8SoV8RvknVMe5SjFrsSoXYqNgK15oTZwypMQkeRTflykZ5vZgX8nuBcQrIVohsdj1n4EmjKRSbPhewGn3IutqFRhBx4fpxQRAzCzp7Jf87TpSNxTHA3tu7HC6L4w7MuBmup4pTx8zm8HGcKX9DgQaJYzGHv2UaE1PM2eJ0x3fs6Y2oBJb1rsge59yR5wE72taYZGM6zFmF7nDntEKa7r57i5UZBKFNMgsmaHVvzvCWdNKzgS6q92Hlyxp9Gd529vHstvMxVwtd0ofNcUgA5hDcBlSUCDqGHYAemuS5mDvg8glOhyrgUdyetSDycRrlr61FVjKYgXW0Jp2s9XwssAsafhJTIP2wwgtQuLVZ4CbPlVneqOoVVU3mK5AGP4XOtQC7LQoorBtRx5HOAcTwGzLLpfiAKB1G45cCu1hUFv2t8YSUN20ooCAKrIbQKcz5bPGSvK17rpS5dYpHv76CJ0iQkEEJhAfyxWVOnwuMxanzt2f79DhC1C2Wo08OMJI70RkdU9uqjfrDmPmd2K9ZfXm1n4msB2m21Dl9e6VxAxCqgcAYADmEmkqnTgPZIV2qGWFa8Uad4YbLHcbvZQL8GsP6qXTmCDp2mB8l7C2fO5D4DWGMLQW6WcF1MBNebTqE4M1LRGxLO13aNuLb0uq9R0piXNz4tgwtPVPunfA01eKqShJFZBs8XlSb5Q025wUYPyF2tmXcFxJL9J4WTZxW6CwVycKgP8BGdXMAGcNf323dhwlYCr5enFrZ715sDEND0N79hjYrzBpU9H73T9qXmLkbfMzerqIFg9PKdWdUAGeDA3YuDEIlu7v7DZLMMcgYdclk0b1tbLLQix3FKk4On6yq5srcXheYdKkGLoKLFU883bNBafHG1U2ADpNtbzyw6UnqisFa9GR8NqDBoHjimj4Wddi4yacBYiZ33R3XW6zIUQC9gRexYiGYUIeFtmiQBZc0IpWJVZ8t49n7WXbTBy2JcDmBndn2yWYcfA4XrUuu5K5LGAmh4toVNEtBrglGcjhVIO5ptVhUfd7cMygMTK84GhNAUKMKzQ1AczxzYAGDyqV6Bbpm9676o58lGQClKdxYR5nKamhDGesLTj9No69pJwShExX2vfGIHPEXU0nN04u8dBDYYms21UIO2CpZcAUHc6hYmQRfFEynECKNgAlNHGMwhuqc6IAvbkvhE4TUxcRdXhSbg1U5q6yaWa2E1itUeH5H8E8PJlzH8yZmlAoaPluJzaMSQkKYU1tzA8bEaP70RLYcrCKvm5G7DE2sE9mCXBgXSrtgYzBgc9gT7IYvJ3Rn6uIIdD6KMyow0nO6QuB0CcWBDBgk3WKappl0CYsCDr5MHtk5f8BC7SXmJxOIZspgiD5yp9OOCbnt7KtWacjKQNNokC7DPE9WosuLUseg', 'sample_OMHD5WHEEeP825gAmH18ASwpqD0vYvORsqY1JeLMWv1WSXtxcKBge9eMlrt8UeUiKPtnRDLe7zuoeaiI0BBpG6bPMb4748Gm2MMEjEMRdiEm5VkF5QaLxVYgs6sG6EnjckihkivneYHGmNCgBVP9h0idYcjBp08sH7kN7o8xZS6XyAI2A8sln4cm', 'sample_jOWhHNwQUt1uJx2kPyP1w12xx0VmItQqrpMFoAK5Q5hzAwk6IdTs6Zs4O0fk3TBmFAOgiAO9uWZqt4c', X'4FEFAA9A7DEFA08134185EE2B8A908', 'y,x', NULL);
CREATE INDEX idx_t3_c4 ON t3 (c4);
WITH cte_52 AS (SELECT mtj27.c6 AS col_1, mtj27.c1 AS col_2, 1 AS col_3 FROM t1 AS mtj27 WHERE (UPPER(mtj27.c2) <> 'sample_51')) (SELECT DISTINCT xzo98.c12 AS c12 FROM t2 AS xzo98 ORDER BY xzo98.c12 ASC) EXCEPT SELECT 98 AS col_3 FROM cte_52 AS wft55 EXCEPT SELECT asi91.c13 AS col_3 FROM t3 AS asi91 USE INDEX (idx_t3_c4);
WITH cte_52 AS (SELECT mtj27.c6 AS col_1, mtj27.c1 AS col_2, 1 AS col_3 FROM t1 AS mtj27 WHERE (UPPER(mtj27.c2) <> 'sample_51')) (SELECT DISTINCT xzo98.c12 AS c12 FROM t2 AS xzo98 ORDER BY xzo98.c12 ASC) EXCEPT SELECT asi91.c13 AS col_3 FROM t3 AS asi91 USE INDEX (idx_t3_c4);
✔️ Expected Behavior
after removing except clause ,blob value unexpectedly change
mysql> WITH cte_52 AS (SELECT mtj27.c6 AS col_1, mtj27.c1 AS col_2, 1 AS col_3 FROM t1 AS mtj27 WHERE (UPPER(mtj27.c2) <> 'sample_51')) (SELECT DISTINCT xzo98.c12 AS c12 FROM t2 AS xzo98 ORDER BY xzo98.c12 ASC) EXCEPT SELECT 98 AS col_3 FROM cte_52 AS wft55 EXCEPT SELECT asi91.c13 AS col_3 FROM t3 AS asi91 USE INDEX (idx_t3_c4);
+------------+
| c12 |
+------------+
| 0x313036 |
| 0x323135 |
+------------+
2 rows in set (0.00 sec)
mysql> WITH cte_52 AS (SELECT mtj27.c6 AS col_1, mtj27.c1 AS col_2, 1 AS col_3 FROM t1 AS mtj27 WHERE (UPPER(mtj27.c2) <> 'sample_51')) (SELECT DISTINCT xzo98.c12 AS c12 FROM t2 AS xzo98 ORDER BY xzo98.c12 ASC) EXCEPT SELECT asi91.c13 AS col_3 FROM t3 AS asi91 USE INDEX (idx_t3_c4);
+------------+
| c12 |
+------------+
| 0x6A |
| 0xD7 |
+------------+
2 rows in set (0.01 sec)
❌ Actual Behavior
mysql> WITH cte_52 AS (SELECT mtj27.c6 AS col_1, mtj27.c1 AS col_2, 1 AS col_3 FROM t1 AS mtj27 WHERE (UPPER(mtj27.c2) <> 'sample_51')) (SELECT DISTINCT xzo98.c12 AS c12 FROM t2 AS xzo98 ORDER BY xzo98.c12 ASC) EXCEPT SELECT 98 AS col_3 FROM cte_52 AS wft55 EXCEPT SELECT asi91.c13 AS col_3 FROM t3 AS asi91 USE INDEX (idx_t3_c4);
+------------+
| c12 |
+------------+
| 0x313036 |
| 0x323135 |
+------------+
2 rows in set (0.00 sec)
mysql> WITH cte_52 AS (SELECT mtj27.c6 AS col_1, mtj27.c1 AS col_2, 1 AS col_3 FROM t1 AS mtj27 WHERE (UPPER(mtj27.c2) <> 'sample_51')) (SELECT DISTINCT xzo98.c12 AS c12 FROM t2 AS xzo98 ORDER BY xzo98.c12 ASC) EXCEPT SELECT asi91.c13 AS col_3 FROM t3 AS asi91 USE INDEX (idx_t3_c4);
+------------+
| c12 |
+------------+
| 0x6A |
| 0xD7 |
+------------+
2 rows in set (0.01 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 supplied SQL reproducer on OceanBase 5.7.25-OceanBase_CE-v4.3.5.3 and compare the two EXCEPT queries, focusing on the returned BLOB values. Trace the database execution path for EXCEPT, CTEs, and BLOB projection, then add a regression test showing that removing the EXCEPT clause does not alter the result.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- sql
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100