Bug #119402 EXCEPT operation incorrectly removes rows with NULL and non-NULL combination when subtracting sets with NULL values
Submitted: 15 Nov 8:39
Reporter: cl hl Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:9.4.0 OS:Any
Assigned to: CPU Architecture:Any

[15 Nov 8:39] cl hl
Description:
after adding except clause the row become less losing "NULL, 2023",but the result column value except clause query returning  is  all NULL

mysql> WITH cte_108 AS (SELECT zye88.c4 AS col_1, LOG(zye88.c15) AS col_2 FROM t3 AS zye88 WHERE '1' = '1') SELECT ypy93.col_2 AS col_1, ypy93.col_1 AS col_2 FROM cte_108 AS ypy93;
+-------+-------+
| col_1 | col_2 |
+-------+-------+
|  NULL |  2003 |
|  NULL |  2023 |
+-------+-------+
2 rows in set (0.00 sec)

mysql> WITH cte_108 AS (SELECT zye88.c4 AS col_1, LOG(zye88.c15) AS col_2 FROM t3 AS zye88 WHERE '1' = '1') SELECT ypy93.col_2 AS col_1, ypy93.col_1 AS col_2 FROM cte_108 AS ypy93 EXCEPT SELECT tzg77.col_2 AS col_1, tzg77.col_2 AS col_2 FROM cte_108 AS tzg77;
+-------+-------+
| col_1 | col_2 |
+-------+-------+
|  NULL |  2003 |
+-------+-------+
1 row in set (0.01 sec)
mysql> WITH cte_108 AS (SELECT zye88.c4 AS col_1, LOG(zye88.c15) AS col_2 FROM t3 AS zye88 WHERE '1' = '1') SELECT ypy93.col_2 AS col_1, ypy93.col_2 AS col_2 FROM cte_108 AS ypy93;
+-------+-------+
| col_1 | col_2 |
+-------+-------+
|  NULL |  NULL |
|  NULL |  NULL |
+-------+-------+
2 rows in set (0.00 sec)

How to repeat:
DROP DATABASE IF EXISTS test;
CREATE DATABASE IF NOT EXISTS test;
USE test;

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 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);

WITH cte_108 AS (SELECT zye88.c4 AS col_1, LOG(zye88.c15) AS col_2 FROM t3 AS zye88 WHERE '1' = '1') SELECT ypy93.col_2 AS col_1, ypy93.col_1 AS col_2 FROM cte_108 AS ypy93;
WITH cte_108 AS (SELECT zye88.c4 AS col_1, LOG(zye88.c15) AS col_2 FROM t3 AS zye88 WHERE '1' = '1') SELECT ypy93.col_2 AS col_1, ypy93.col_1 AS col_2 FROM cte_108 AS ypy93 EXCEPT SELECT tzg77.col_2 AS col_1, tzg77.col_2 AS col_2 FROM cte_108 AS tzg77;
WITH cte_108 AS (SELECT zye88.c4 AS col_1, LOG(zye88.c15) AS col_2 FROM t3 AS zye88 WHERE '1' = '1') SELECT ypy93.col_2 AS col_1, ypy93.col_2 AS col_2 FROM cte_108 AS ypy93;