Bug #118224 | When a constant value is replaced by the LEST function, the sql returns different value; | ||
---|---|---|---|
Submitted: | 19 May 2:46 | Modified: | 3 Jun 6:43 |
Reporter: | SamonBing SamonBing | Email Updates: | |
Status: | Analyzing | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S3 (Non-critical) |
Version: | 8.0.41 | OS: | Any |
Assigned to: | MySQL Verification Team | CPU Architecture: | Any |
[19 May 2:46]
SamonBing SamonBing
[19 May 7:46]
SamonBing SamonBing
Supplement the table structure and data: CREATE TABLE `hbtest` ( `c0` bigint /*!50606 STORAGE DISK */ DEFAULT NULL COMMENT 'asdf', KEY `i0` (`c0`) ); insert into hbtest values(1);
[19 May 7:47]
SamonBing SamonBing
Supplement the table structure and data: CREATE TABLE `hbtest` ( `c0` bigint /*!50606 STORAGE DISK */ DEFAULT NULL COMMENT 'asdf', KEY `i0` (`c0`) ); insert into hbtest values(1);
[3 Jun 6:43]
SamonBing SamonBing
another scenerio similar with this problem; CREATE DATABASE /*!32312 IF NOT EXISTS*/ `tidb202505298`; USE `tidb202505298`; DROP TABLE IF EXISTS `t0`; CREATE TABLE `t0` ( `c0` varchar(392) NOT NULL, PRIMARY KEY (`c0`), KEY `i0` (`c0`(9)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; INSERT INTO `t0` VALUES ('1234567890'),('wegf3grq3g'); /*!50001 DROP VIEW IF EXISTS `v0`*/; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; /*!50001 SET collation_connection = utf8mb4_0900_ai_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ /*!50001 VIEW `v0` (`c0`) AS select ((NULL >> NULL) like (6.99366851E8 is null)) AS `((((NULL)>>(NULL)))LIKE(((6.99366851E8) IS NULL)))` from `t0` where (0 <> cast(`t0`.`c0` as char charset binary)) */; mysql> select (NOT (IS_IPV4_MAPPED(((((CAST(t0.c0 AS TIME))AND(-1754917274)))^(EXPORT_SET('0', t0.c0, t0.c0)))))) from t0; +-----------------------------------------------------------------------------------------------------+ | (NOT (IS_IPV4_MAPPED(((((CAST(t0.c0 AS TIME))AND(-1754917274)))^(EXPORT_SET('0', t0.c0, t0.c0)))))) | +-----------------------------------------------------------------------------------------------------+ | 1 | | 1 | +-----------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec) mysql> SELECT * FROM v0 LEFT OUTER JOIN t0 ON v0.c0 WHERE 1; +------+------+ | c0 | c0 | +------+------+ | NULL | NULL | +------+------+ 1 row in set, 1 warning (0.01 sec) mysql> SELECT * FROM v0 LEFT OUTER JOIN t0 ON v0.c0 WHERE (NOT (IS_IPV4_MAPPED(((((CAST(t0.c0 AS TIME))AND(-1754917274)))^(EXPORT_SET('0', t0.c0, t0.c0)))))); Empty set (0.00 sec) after replace the constant value "1" with "(NOT (IS_IPV4_MAPPED(((((CAST(t0.c0 AS TIME))AND(-1754917274)))^(EXPORT_SET('0', t0.c0, t0.c0))))))", the return results changed.