Bug #70404 | Bit Value Not being Dumped Properly by mysqldump | ||
---|---|---|---|
Submitted: | 23 Sep 2013 22:22 | Modified: | 24 Sep 2013 7:45 |
Reporter: | Jervin R | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: mysqldump Command-line Client | Severity: | S3 (Non-critical) |
Version: | OS: | Any | |
Assigned to: | CPU Architecture: | Any |
[23 Sep 2013 22:22]
Jervin R
[24 Sep 2013 6:51]
Valeriy Kravchuk
Seems repeatable with 5.6.14 (Oracle's) also on Linux: [openxs@chief 5.6]$ bin/mysql --no-defaults -uroot test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.14 MySQL Community Server (GPL) Copyright (c) 2000, 2013, 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> create table t ( id int unsigned not null auto_increment primary key, x bit(1) not null) engine = innodb; Query OK, 0 rows affected (0.39 sec) mysql> set session sql_mode=''; Query OK, 0 rows affected (0.00 sec) mysql> insert into t (x) values (0b0), (0b1), (1), ('1'), ('\1'); Query OK, 5 rows affected, 2 warnings (0.04 sec) Records: 5 Duplicates: 0 Warnings: 2 mysql> select id, hex(x) from t; +----+--------+ | id | hex(x) | +----+--------+ | 1 | 0 | | 2 | 1 | | 3 | 1 | | 4 | 1 | | 5 | 1 | +----+--------+ 5 rows in set (0.02 sec) mysql> exit Bye [openxs@chief 5.6]$ bin/mysqldump --no-defaults -uroot test t -- MySQL dump 10.13 Distrib 5.6.14, for Linux (x86_64) -- -- Host: localhost Database: test -- ------------------------------------------------------ -- Server version 5.6.14 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `t` -- DROP TABLE IF EXISTS `t`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `t` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `x` bit(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `t` -- LOCK TABLES `t` WRITE; /*!40000 ALTER TABLE `t` DISABLE KEYS */; INSERT INTO `t` VALUES (1,'\0'),(2,''),(3,''),(4,''),(5,''); /*!40000 ALTER TABLE `t` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2013-09-24 9:48:27 On Windows (5.5.32) I see different output though: ... -- -- Dumping data for table `t` -- LOCK TABLES `t` WRITE; /*!40000 ALTER TABLE `t` DISABLE KEYS */; INSERT INTO `t` VALUES (6,'\0'),(7,'☺'),(8,'☺'),(9,'☺'),(10,'☺'); /*!40000 ALTER TABLE `t` ENABLE KEYS */; UNLOCK TABLES; ... (Do not mind id values, note that x column values are dumped as characters 0x01)
[24 Sep 2013 7:45]
MySQL Verification Team
Hello Jervin, Thank you for the bug report. Verified as described. Workaround - You may want to use --hex-blob with mysqldump while taking dump which would dump binary columns using hexadecimal notation. i.e INSERT INTO `t` VALUES (1,0x00),(2,0x01),(3,0x01),(4,0x01),(5,0x01); Also see - http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html#option_mysqldump_hex-blob Thanks, Umesh
[18 Dec 2015 9:33]
MySQL Verification Team
http://bugs.mysql.com/bug.php?id=79699 marked as duplicate of this one (please check patch contribution attached to this bug report).