Details
Description
mysqlcheck encloses dots in a table in backticks, this doesn't make sense though as never expects to see a db.table combination (database and table names are passed in as separate parameters)
This breaks mysqlcheck, and indirectly mysql_upgrade, for tables with a dot in their name
test case:
CREATE TABLE test.`foo.bar`(id int primary key); |
then run
mysqlcheck test foo.bar
|
or
mysql_upgrade --force
|
This was introduced in revision 1810.3494.1 ( http://bazaar.launchpad.net/~mysql/mysql-server/5.6/revision/1810.3494.1 ) as part of a fix for http://bugs.mysql.com/bug.php?id=30654
Attachments
Issue Links
Activity
Field | Original Value | New Value |
---|---|---|
Attachment | mdev-6128.patch [ 29117 ] |
Fix Version/s | 10.0.12 [ 15201 ] | |
Fix Version/s | 5.5.38 [ 15400 ] | |
Affects Version/s | 5.5.37 [ 15000 ] | |
Affects Version/s | 10.0.10 [ 14500 ] | |
Affects Version/s | 10.0.7 [ 14100 ] | |
Affects Version/s | 10.0.7-galera [ 14800 ] | |
Labels | upstream |
Remote Link | This issue links to "MySQL:72382 - http://bugs.mysql.com/bug.php?id=72382 (Web Link)" [ 16400 ] |
Remote Link | This issue links to "MySQL:72382 - http://bugs.mysql.com/bug.php?id=72382 (Web Link)" [ 16400 ] |
Remote Link | This issue links to "MySQL:72382 - mysqlcheck wrongly escapes '.' in table names (Web Link)" [ 16401 ] |
Summary | mysqlcheck wrongly escapes '.' in table names | [PATCH] mysqlcheck wrongly escapes '.' in table names |
Description |
mysqlcheck encloses dots in a table in backticks, this doesn't make sense though as never expects to see a db.table combination (database and table names are passed in as separate parameters) This breaks mysqlcheck, and indirectly mysql_upgrade, for tables with a dot in their name test case: CREATE TABLE test.`foo.bar`(id int primary key); then run mysqlcheck test foo.bar or mysql_upgrade --force This was introduced in revision 1810.3494.1 ( http://bazaar.launchpad.net/~mysql/mysql-server/5.6/revision/1810.3494.1 ) as part of a fix for http://bugs.mysql.com/bug.php?id=30654 |
mysqlcheck encloses dots in a table in backticks, this doesn't make sense though as never expects to see a db.table combination (database and table names are passed in as separate parameters) This breaks mysqlcheck, and indirectly mysql_upgrade, for tables with a dot in their name test case: {code:sql} CREATE TABLE test.`foo.bar`(id int primary key); {code} then run {noformat} mysqlcheck test foo.bar {noformat} or {noformat} mysql_upgrade --force {noformat} This was introduced in revision 1810.3494.1 ( http://bazaar.launchpad.net/~mysql/mysql-server/5.6/revision/1810.3494.1 ) as part of a fix for http://bugs.mysql.com/bug.php?id=30654 |
Priority | Minor [ 4 ] | Major [ 3 ] |
Priority | Major [ 3 ] | Minor [ 4 ] |
Fix Version/s | 5.5.39 [ 15800 ] | |
Fix Version/s | 5.5.38 [ 15400 ] |
Workflow | defaullt [ 38946 ] | MariaDB v2 [ 43150 ] |
Fix Version/s | 10.0.13 [ 16000 ] | |
Fix Version/s | 10.0.12 [ 15201 ] |
Assignee | Oleksandr Byelkin [ sanja ] |
Priority | Minor [ 4 ] | Critical [ 2 ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Component/s | OTHER [ 10125 ] | |
Fix Version/s | 10.0.17 [ 18300 ] | |
Fix Version/s | 10.1.3 [ 18000 ] | |
Fix Version/s | 5.5.42 [ 18102 ] | |
Fix Version/s | 5.5 [ 15800 ] | |
Fix Version/s | 10.0 [ 16000 ] | |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Closed [ 6 ] |
Workflow | MariaDB v2 [ 43150 ] | MariaDB v3 [ 66173 ] |
Workflow | MariaDB v3 [ 66173 ] | MariaDB v4 [ 147807 ] |
proposed fix:
=== modified file 'client/mysqlcheck.c'
--- client/mysqlcheck.c 2013-05-07 11:05:09 +0000
+++ client/mysqlcheck.c 2014-04-17 12:57:31 +0000
@@ -513,8 +513,6 @@
{
if (*p == '`')
extra_length++;
- else if (*p == '.')
- extra_length+= 2;
}
DBUG_RETURN((uint) ((p - name) + extra_length));
@@ -529,11 +527,6 @@
for (; *src; src++)
{
switch (*src) {
- case '.': /* add backticks around '.' */
- *dest++= '`';
- *dest++= '.';
- *dest++= '`';
- break;
case '`': /* escape backtick character */
*dest++= '`';
/* fall through */