Bug #78486 | to_base64() insert an extra '\n' char | ||
---|---|---|---|
Submitted: | 19 Sep 2015 18:52 | Modified: | 30 Oct 2015 12:34 |
Reporter: | Tamas Bagyal | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S2 (Serious) |
Version: | 5.6.26-1debian7, amd64, 5.7.9 | OS: | Debian (wheezy, uptodate) |
Assigned to: | CPU Architecture: | Any |
[19 Sep 2015 18:52]
Tamas Bagyal
[19 Sep 2015 19:08]
MySQL Verification Team
Please provide the complete script test case not just its how to repeat description. Thanks.
[19 Sep 2015 19:36]
Tamas Bagyal
not needed any script for reproduce the bug. just import the table below, and run the "to_base64(from_base64(`password`))" query, then you can see a wrapped line. CREATE TABLE IF NOT EXISTS `ftpaccounts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(128) NOT NULL, `password` varchar(255) NOT NULL, `homedir` varchar(256) NOT NULL, `uid` int(5) NOT NULL, `gid` int(5) NOT NULL, `fullname` varchar(128) CHARACTER SET latin2 COLLATE latin2_hungarian_ci NOT NULL, `datelimit` date NOT NULL, `active` tinyint(1) DEFAULT '1', `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `created` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=149 ; INSERT INTO `ftpaccounts` (`id`, `username`, `password`, `homedir`, `uid`, `gid`, `fullname`, `datelimit`, `active`, `last_modified`, `created`) VALUES (148, 'test1', '+dB0UTw+U1SDKuAboXOI1Dj+FC89xW3+QjU5Vv+KDo7AX7BCBVBiOQm4lyDOLWtmHxWkOWMGtQ8Yl7bjvPWIqDEyMw==', '/var/www/sites/www', 107, 65534, 'ftpaccount', '2015-07-01', 1, '2015-09-19 16:22:03', '2015-07-24 19:28:28'); one more info: i upgraded from mysql 5.5 from debian wheezy official repository, then run the mysql_upgrade for upgrade tables.
[20 Sep 2015 13:12]
MySQL Verification Team
Thank you for the requested data. This is seen in 5.6.26/5.7.9. [umshastr@hod03]/export/umesh/server/binaries/mysql-advanced-5.6.28: bin/mysql -uroot -S /tmp/mysql_ushastry.sock Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.28-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial) Copyright (c) 2000, 2015, 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> use test Database changed mysql> CREATE TABLE IF NOT EXISTS `ftpaccounts` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `username` varchar(128) NOT NULL, -> `password` varchar(255) NOT NULL, -> `homedir` varchar(256) NOT NULL, -> `uid` int(5) NOT NULL, -> `gid` int(5) NOT NULL, -> `fullname` varchar(128) CHARACTER SET latin2 COLLATE latin2_hungarian_ci NOT NULL, -> `datelimit` date NOT NULL, -> `active` tinyint(1) DEFAULT '1', -> `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -> `created` timestamp NULL DEFAULT NULL, -> PRIMARY KEY (`id`), -> UNIQUE KEY `username` (`username`) -> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=149 ; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO `ftpaccounts` (`id`, `username`, `password`, `homedir`, `uid`, `gid`, `fullname`, `datelimit`, `active`, `last_modified`, `created`) VALUES -> (148, 'test1', '+dB0UTw+U1SDKuAboXOI1Dj+FC89xW3+QjU5Vv+KDo7AX7BCBVBiOQm4lyDOLWtmHxWkOWMGtQ8Yl7bjvPWIqDEyMw==', '/var/www/sites/www', 107, 65534, 'ftpaccount', '2015-07-01', 1, '2015-09-19 16:22:03', '2015-07-24 19:28:28'); Query OK, 1 row affected (0.00 sec) mysql> SELECT username, password, uid, gid, homedir, NULL FROM `ftpaccounts` WHERE `username` = 'test1'; +----------+----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | username | password | uid | gid | homedir | NULL | +----------+----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | test1 | +dB0UTw+U1SDKuAboXOI1Dj+FC89xW3+QjU5Vv+KDo7AX7BCBVBiOQm4lyDOLWtmHxWkOWMGtQ8Yl7bjvPWIqDEyMw== | 107 | 65534 | /var/www/sites/www | NULL | +----------+----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ 1 row in set (0.00 sec) mysql> SELECT username, TO_BASE64( FROM_BASE64(`password`) ) as password, uid, gid, homedir, NULL FROM `ftpaccounts` WHERE `username` = 'test1'; +----------+-----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | username | password | uid | gid | homedir | NULL | +----------+-----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | test1 | +dB0UTw+U1SDKuAboXOI1Dj+FC89xW3+QjU5Vv+KDo7AX7BCBVBiOQm4lyDOLWtmHxWkOWMGtQ8Y l7bjvPWIqDEyMw== | 107 | 65534 | /var/www/sites/www | NULL | +----------+-----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ 1 row in set (0.00 sec) // 5.7.9 mysql> SELECT username, password, uid, gid, homedir, NULL FROM `ftpaccounts` WHERE `username` = 'test1'; +----------+----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | username | password | uid | gid | homedir | NULL | +----------+----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | test1 | +dB0UTw+U1SDKuAboXOI1Dj+FC89xW3+QjU5Vv+KDo7AX7BCBVBiOQm4lyDOLWtmHxWkOWMGtQ8Yl7bjvPWIqDEyMw== | 107 | 65534 | /var/www/sites/www | NULL | +----------+----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ 1 row in set (0.01 sec) mysql> SELECT username, TO_BASE64( FROM_BASE64(`password`) ) as password, uid, gid, homedir, NULL FROM `ftpaccounts` WHERE `username` = 'test1'; +----------+-----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | username | password | uid | gid | homedir | NULL | +----------+-----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ | test1 | +dB0UTw+U1SDKuAboXOI1Dj+FC89xW3+QjU5Vv+KDo7AX7BCBVBiOQm4lyDOLWtmHxWkOWMGtQ8Y l7bjvPWIqDEyMw== | 107 | 65534 | /var/www/sites/www | NULL | +----------+-----------------------------------------------------------------------------------------------+-----+-------+--------------------+------+ 1 row in set (0.00 sec)
[25 Sep 2015 13:48]
Tor Didriksen
This is actually documented behaviour for to_base64 http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_to-base64 "A newline is added after each 76 characters of encoded output to divide long output into multiple lines. " You can do SELECT username, replace(TO_BASE64( FROM_BASE64(`password`)), '\n', '') as password ....