Bug #89055 | bigint(20) unsigned with uuid_short() value didn`t updated or deleted when quote | ||
---|---|---|---|
Submitted: | 26 Dec 2017 10:39 | Modified: | 26 Dec 2017 22:17 |
Reporter: | mohamed atef | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S3 (Non-critical) |
Version: | 5.7 | OS: | Windows |
Assigned to: | CPU Architecture: | Any |
[26 Dec 2017 10:39]
mohamed atef
[26 Dec 2017 17:25]
MySQL Verification Team
Thank you for the bug report. Please read: https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.22 Source distribution 2017-DEC-14 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select '12707537433722356750'; Field 1: `12707537433722356750` Catalog: `def` Database: `` Table: `` Org_table: `` Type: VAR_STRING Collation: utf8_general_ci (33) Length: 60 Max_length: 20 Decimals: 31 Flags: NOT_NULL +----------------------+ | 12707537433722356750 | +----------------------+ | 12707537433722356750 | +----------------------+ 1 row in set (0.00 sec) mysql> mysql> select 12707537433722356750; Field 1: `12707537433722356750` Catalog: `def` Database: `` Table: `` Org_table: `` Type: LONGLONG Collation: binary (63) Length: 20 Max_length: 20 Decimals: 0 Flags: NOT_NULL UNSIGNED BINARY NUM +----------------------+ | 12707537433722356750 | +----------------------+ | 12707537433722356750 | +----------------------+ 1 row in set (0.00 sec)
[26 Dec 2017 17:36]
mohamed atef
thanks for your reply but when i remove digit from 12707537433722356750 to become 2707537433722356750 ---> 19 digits UPDATE `db1`.`tb1` SET `ID`='2707537433722356750' WHERE `ID`=12707537433722356750; UPDATE `db1`.`tb1` SET `ID`='2707537433722356751' WHERE `ID`=12707537433722356751; UPDATE `db1`.`tb1` SET `ID`='2707537433722356752' WHERE `ID`=12707537433722356752; then try to delete DELETE FROM `db1`.`tb1` WHERE `ID`='2707537433722356750'; 1 row(s) affected DELETE FROM `db1`.`tb1` WHERE `ID`='2707537433722356751'; 1 row(s) affected DELETE FROM `db1`.`tb1` WHERE `ID`='2707537433722356752'; 1 row(s) affected also when i check data type it will show that select '2707537433722356750',2707537433722356750 first is varchar second is bigint my question why it happen when digits of bigint unsigned is 20 but less than 20 it work great ?????????????
[26 Dec 2017 22:17]
MySQL Verification Team
The issue here is the conversion of data type '12707537433722356750' in the query which fails is converted to float, so comparing BIGINT with float returns false. https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html "In all other cases, the arguments are compared as floating-point (real) numbers. " https://dev.mysql.com/doc/refman/5.7/en/problems-with-float.html "Floating-point numbers sometimes cause confusion because they are approximate and not stored as exact values...."