Bug #32430 | 'show innodb status' causes errors Invalid (old?) table or database name in logs | ||
---|---|---|---|
Submitted: | 16 Nov 2007 9:35 | Modified: | 17 Jun 2010 22:48 |
Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Storage Engine API | Severity: | S3 (Non-critical) |
Version: | 5.1.22, 5.1.23, 5.1.37, 5.1.40 | OS: | Any |
Assigned to: | Satya B | CPU Architecture: | Any |
Tags: | bfsm_2007_12_06 |
[16 Nov 2007 9:35]
Shane Bester
[16 Nov 2007 9:51]
MySQL Verification Team
testcase. see top of file for host, user, port, compiling.
Attachment: bug32430.c (text/plain), 6.39 KiB.
[16 Nov 2007 10:55]
MySQL Verification Team
enabling the innodb_lock_monitor cause many of these messages to be printed out! create table innodb_lock_monitor(a int)engine=innodb;
[16 Nov 2007 12:50]
Heikki Tuuri
This is probably a MySQL Server or Partitioning bug. Those error messages in the log are printed by the MySQL server. InnoDB does not communicate table names back to MySQL.
[16 Nov 2007 13:04]
Marko Mäkelä
In the InnoDB data dictionary, table and database names created by MySQL 5.1 are in the filename-safe encoding where [A-Za-z0-9_] are represented by themselves and other Unicode entities are encoded in hexadecimal notation, e.g., @002f for /, or in a three-character encoding @[g-z][0-9a-z] for certain alphabets. Table and database names created by MySQL 4.1 and 5.0 are in UTF-8 encoding, and MySQL/InnoDB 5.1 assumes that these are accessed by prefixing them with #mysql50#. Without looking at the code, I believe that the bug can be fixed by replacing a # with @0023 somewhere in the MySQL code base.
[13 Dec 2007 10:44]
Mattias Jonsson
have not verified it, but it might be that it changes the #P# part to #p# (upper case to lower case 'p' for partition) somewhere and uses it afterwards.
[9 Jan 2008 18:47]
Inaam Rana
I am assigning this bug away from me as the fix lies in MySQL layer. The problem is created by the '#' character in the partitioned table name. MySQL generates partition names by inserting #P# in the table name in create_partition_name() When we call show innodb status, InnoDB calls filename_to_tablename() from innobase_print_identifier(). In this we choke on '#' character in strconvert().
[29 Jan 2008 20:22]
Mikael Ronström
The use of # in partition names is intentional. The idea is to ensure that a partition name cannot be a table name. Thus you can look for #P# in table names in InnoDB if finding such a name and also #SP# if I remember correctly you need to handle it in some manner. We cannot remove the # since that would create havoc in the way that a partition name might be also a table name and we could get clashes of names in all kinds of manners.
[29 Jan 2008 20:24]
Mikael Ronström
Thus there is no fix in the MySQL layer that can fix this. The fix has to happen in the storage engine layer.
[30 Jan 2008 16:28]
Sergei Golubchik
as mikael has explained, '#' is present, precisely, to have a file name that could never clash with a valid filename of a table. It means, you cannot simply use filename_to_tablename() for show innodb status, you need a smarter function, generating something like "partition 1 of a table XXX" for XXX#p#1. On a second thought, the problem is storage-engine independent, so such a function could be added to MySQL as an utility for storage engines to use.
[7 Feb 2008 12:46]
Mikael Ronström
Inam, As seen the problem is in the InnoDB, if you want the support function mentioned by Serg, just write it in the bug here and we'll fix it, however the bug itself needs to be fixed in the storage engine.
[12 Feb 2008 6:31]
Inaam Rana
I was not suggesting to take away the '#' from the file name. From InnoDB's perspective all we need is some function, as suggested by Sergei, that won't choke on '#'. If MySQL can do it by changing filename_to_tablename() or strconvert() so that it treats '#' gracefully that would be just fine. Or if so desired, MySQL can provide us with a different function to call. regards, inaam
[2 Jul 2008 19:02]
Mattias Jonsson
I am investigating a modified filename_to_tablename function which I call unescape_filename, which converts a filename character set string (incl. '#' which is not in the filename character set, but used by partitioning) to the systems character set.
[7 Jul 2008 10:58]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/49078 2691 Mattias Jonsson 2008-07-07 Bug#32430 'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was the function filename_to_tablename in conjuction with partitions, since partitions intentionally uses the '#' character, which is not included in the filename charset. Solution was to implement the unescape filename function that allows the '#' character and only converts the filename from filename charset to system_charset_info.
[3 Sep 2008 21:06]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/53207 2753 Mattias Jonsson 2008-09-03 Bug#32430:'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was that InnoDB used filename_to_tablename, which do not handle partitions (due to the '#' in the filename). Solution is to add a new function to use to explain what the filename means, explain_filename It expands to Database, Table, [Temporary|Renamed] Partition, Subpartition and uses errmsg.txt for localization. This will first go through review in Sun for the server part, and if approved, go through review by Oracle/InnoBASE and if approved it will then be included in both server and InnoDB.
[11 Sep 2008 12:39]
Mattias Jonsson
Please add error handling for the res variable After that OK to push for me /Mikael
[5 Nov 2008 20:28]
Mattias Jonsson
New proposed patch (updated as requested), commit mail got lost, this is in bzr send format.
Attachment: b32430_2-60.bzr-send (application/octet-stream, text), 20.72 KiB.
[1 Dec 2008 17:07]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/60300 2753 Mattias Jonsson 2008-12-01 Bug#32430:'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was that InnoDB used filename_to_tablename, which do not hanlde partitions (due to the '#' in the filename). Solution is to add a new fuction for explaining what the filename means, explain_filename. It expands to Database, Table, [Temporary|Renamed] Partition, Subpartition and uses errmsg.txt for localization. It also converts from my_charset_filename to system_charset_info (i.e. human readable form for non ascii characters). This will first go through review in Sun for the server part, and if approved go through review by InnoBASE and if approved, it will then be included in both server and InnoDB.
[8 Dec 2008 10:30]
Mattias Jonsson
The server part has been reviewed and approved, resetting to Verified and 'InnoDB' for reviewing by the InnoDB team.
[18 Dec 2008 13:45]
Marko Mäkelä
The submitted patch is not acceptable, because it would change the formatting of non-partitioned table names in the MySQL error log, in SHOW ENGINE INNODB STATUS and in other places. Sergei Golubchik agreed with our view and presented an acceptable solution: I'd really prefer to have a "most common" case to be a subset of a less common but more generic one. Surely, we can find a notation that works this way. For example `test`.`t` partition `abbaguu` subpartition 5 or even `test`.`t` [`abbaguu`, 5] although the latter is awfully unreadable.
[18 Dec 2008 13:48]
Heikki Tuuri
Mattias, please make a new patch that prints an ordinary table name like this: `test`.`t` Regards, Heikki
[19 Dec 2008 9:54]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/62063 2753 Mattias Jonsson 2008-12-19 Bug#32430:'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was that InnoDB used filename_to_tablename, which do not hanlde partitions (due to the '#' in the filename). Solution is to add a new fuction for explaining what the filename means, explain_filename. It expands to Database, Table, [Temporary|Renamed] Partition, Subpartition and uses errmsg.txt for localization. It also converts from my_charset_filename to system_charset_info (i.e. human readable form for non ascii characters). It can also return only db and table name as well as append the partition/subpartition as a comment. This will first go through review in Sun for the server part, and if approved go through review by InnoBASE and if approved, it will then be included in both server and InnoDB.
[22 Dec 2008 11:39]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/62207 2753 Mattias Jonsson 2008-12-22 Bug#32430:'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was that InnoDB used filename_to_tablename, which do not handle partitions (due to the '#' in the filename). Solution is to add a new function for explaining what the filename means: explain_filename. It expands the database, table, partition and subpartition parts and uses errmsg.txt for localization. It also converts from my_charset_filename to system_charset_info (i.e. human readable form for non ascii characters). It has three different output styles.
[22 Dec 2008 11:51]
Mattias Jonsson
I've updated the patch according to a mail from Sergei 2008-12-22: Hi, Mattias! On Dec 19, Mattias Jonsson wrote: > > Hi, > > > > I have added an option to select the type of output from explain_filename: > > > > @param explain_mode Requested output format. > > EXPLAIN_ONLY_DB_AND_TABLE_NAME -> `db`.`tbl` > > EXPLAIN_ALL_VERBOSE -> [Database `db`, ]Table `tbl`[,[ Temporary| Renamed] > > Partition `p` [, Subpartition `sp`]] > > EXPLAIN_PARTITIONS_AS_COMMENT -> `db`.`tbl` /*[ Temporary| Renamed] > > Partition `p` [, Subpartition `sp`]] */ Please add also `db`.`tbl` [Temporary|Renamed] Partition `p` [, Subpartition `sp`]] that is, like EXPLAIN_PARTITIONS_AS_COMMENT but without comment marks. Perhaps, remove the first EXPLAIN_ONLY_DB_AND_TABLE_NAME - as it's ambiguous and lossy, and thus dangerous. Although, frankly speaking, it looks like over-engineering to me, I think having one output format (as above) is enough. > Sergei, Is this patch still approved for server use? > > Heikki, Marko, This allows you to use EXPLAIN_ONLY_DB_AND_TABLE_NAME, > or EXPLAIN_PARTITIONS_AS_COMMENT as you like. Exactly. That's why there should be no EXPLAIN_ONLY_DB_AND_TABLE_NAME. It's misleadingly easy to use and it seemingly works ok, but when there's a problem in partition it'll result in wrong diagnostics - like table dead-locking itself (in fact, deadlock between two partitions), or corrupted 10TB table (while only one partition is bad), etc. Remember rules of the good API - it should be difficult to use it wrong. Regards / Mit vielen Grüßen, Sergei =================================== Which also should be OK with Marko, according to a mail 2008-12-11: On Tue, Dec 09, 2008 at 09:11:36PM +0100, Sergei Golubchik wrote: > Marko, do I understand correctly that you were replying to Heikki's > suggestion of > > Database 'test', table 't', partition 'abbaguu', subpartition '5' > > That is, you don't have anything against my (from my reply) > > `test`.`t` partition CBA subpartition 2 > > Right ? > Note, that using "--" (to comment out the partition part) is not a good > idea, because "--" is an end-of-line comment, you should've used /*...*/ Yes, I was replying to Heikki's suggestion. And no, I don't have anything against a solution where the message always starts with `databasename`.`tablename`. Your suggestion is fine. Best regards, Marko =============== So the function explain_filename has now three different output styles: EXPLAIN_ALL_VERBOSE [Database `db`, ]Table `tbl`[,[ Temporary| Renamed] Partition `p`[, Subpartition `sp`]] EXPLAIN_PARTITIONS_VERBOSE `db`.`tbl`[[ Temporary| Renamed] Partition `p`[, Subpartition `sp`]] EXPLAIN_PARTITIONS_AS_COMMENT `db`.`tbl` /*[[ Temporary| Renamed] Partition `p`[, Subpartition `sp`]] */ So I now reassign to Marko.
[22 Jan 2009 14:20]
Marko Mäkelä
I am not entirely happy with the patch at http://lists.mysql.com/commits/62207: 1. Why does it change a string in dict_index_name_print()? 2. Why does it add "|| table_id" in the last hunk in innobase_print_identifier()? 3. The function ut_print_namel() is invoked with table_id=FALSE to print the names of indexes. These should never be interpreted as table names, as the patch attempts to do. When table_id=FALSE, the identifier should merely be converted to the connection character set.
[21 Feb 2009 18:57]
Mattias Jonsson
Marko, I've reassigned this to you, since I mainly proposed the Server part of the patch, which also was what was reviewed. The InnoDB part was just meant to make use of the of the new partitioning safe function. So please feel free to use the new function as you see fit in the InnoDB engine.
[24 Feb 2009 7:21]
Marko Mäkelä
Mattias, please commit the server specific part, so that I can fix the InnoDB specific part later.
[2 Jun 2009 9:08]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/75445
[2 Jun 2009 11:54]
Mattias Jonsson
Pushed the server side part (support function for explaining filename as database/table[/partition[/subpartition]] into mysql-5.1-bugteam and mysql-6.0-bugteam This bug can now be reassigned to be fixed in InnoDB.
[16 Jun 2009 11:05]
Bugs System
Pushed into 5.1.36 (revid:joro@sun.com-20090616102155-3zhezogudt4uxdyn) (version source revid:satya.bn@sun.com-20090602124140-ipyolwfza4ooqkw4) (merge vers: 5.1.36) (pib:6)
[17 Jun 2009 19:22]
Bugs System
Pushed into 5.4.4-alpha (revid:alik@sun.com-20090616183122-chjzbaa30qopdra9) (version source revid:satya.bn@sun.com-20090602130245-0qyv7d31tx4z69i1) (merge vers: 6.0.12-alpha) (pib:11)
[22 Jun 2009 9:45]
Marko Mäkelä
Now that the MySQL part of the fix finally is in the 5.1 bzr tree, I tried to fix this. Some issues: * The function add_identifier() ends in return instead of DBUG_RETURN, causing tests to fail when mysqld is built with DBUG. * The identifiers are apparently converted to my_charset_filename, e.g., ` in a table name is encoded as @0060 instead of ``. Also the characters \ " ' are quoted unnecessarily (when the identifier quote char is the default `). I am afraid that the latter problem is a showstopper that would make the fix worse than the original bug.
[10 Jul 2009 12:11]
Sergey Vojtovich
As explained by Marko 22 Jun 11:45, additional server side fix is still required.
[10 Jul 2009 17:17]
Sergei Golubchik
Marko, could you please elaborate on "The identifiers are apparently converted to my_charset_filename <...>. Also the characters \ " ' are quoted unnecessarily" I could not repeat that. ` is shows as `, \ and " are also shows as themselves.
[4 Aug 2009 11:55]
Marko Mäkelä
Serg, my comment from [22 Jun 11:45] still looks valid in the current 5.1 bzr tree. add_identifier() in sql_table.cc still ends in return instead of DBUG_RETURN: === modified file 'sql/sql_table.cc' --- sql/sql_table.cc 2009-07-06 06:55:53 +0000 +++ sql/sql_table.cc 2009-08-04 10:04:02 +0000 @@ -103,7 +103,7 @@ to_p+= my_snprintf(to_p, end_p - to_p, ER(errcode), conv_name); else to_p+= my_snprintf(to_p, end_p - to_p, "`%s`", conv_name); - return to_p; + DBUG_RETURN(to_p); } Also, the code in the MySQL server still breaks innodb_information_schema.test in the InnoDB Plugin, because explain_filename() or add_identifier() misquotes some special characters of the table ```t'\"_str`. The functions also ignore SQL_MODE='ANSI_QUOTES'. Here is an excerpt from the result diff, for this snippet: SELECT lock_table,COUNT(*) FROM INFORMATION_SCHEMA.INNODB_LOCKS GROUP BY lock_table; set @save_sql_mode = @@sql_mode; SET SQL_MODE='ANSI_QUOTES'; SELECT lock_table,COUNT(*) FROM INFORMATION_SCHEMA.INNODB_LOCKS GROUP BY lock_table; SET @@sql_mode=@save_sql_mode; lock_table COUNT(*) +`test`.`@0060t@0027@005c@0022_str` 10 `test`.`t_max` 2 `test`.`t_min` 2 -`test`.```t'\"_str` 10 lock_table COUNT(*) -"test"."t_max" 2 -"test"."t_min" 2 -"test"."`t'\""_str" 10 +`test`.`@0060t@0027@005c@0022_str` 10 +`test`.`t_max` 2 +`test`.`t_min` 2 You see, explain_filename always quotes with `, and it misquotes the characters `'\" in the table name.
[7 Aug 2009 13:09]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/80360
[7 Aug 2009 14:22]
Mattias Jonsson
The extra quoting is actually done in innodb_convert_identifier, not in explain filename. There was a bug that did not convert non partitioned table's filenames, which is corrected in the patch (table_name_len was updated if no partition name was found). And since the qouting is done in InnoDB, I added an extra mode where explain_filename does not add any quotes. I also found a small bug in with the added quotes around the identifier, it did not qoute '`' inside the identifier. So now explain_filename should fit better. Note that if the file is a [sub]partition " /* Partition p_name [Subpartition subp_name] */" will be appended in the "table" name and then get quoted.
[26 Aug 2009 13:46]
Bugs System
Pushed into 5.1.37-ndb-7.0.8 (revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (version source revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (merge vers: 5.1.37-ndb-7.0.8) (pib:11)
[26 Aug 2009 13:46]
Bugs System
Pushed into 5.1.37-ndb-6.3.27 (revid:jonas@mysql.com-20090826105955-bkj027t47gfbamnc) (version source revid:jonas@mysql.com-20090826105955-bkj027t47gfbamnc) (merge vers: 5.1.37-ndb-6.3.27) (pib:11)
[26 Aug 2009 13:48]
Bugs System
Pushed into 5.1.37-ndb-6.2.19 (revid:jonas@mysql.com-20090825194404-37rtosk049t9koc4) (version source revid:jonas@mysql.com-20090825194404-37rtosk049t9koc4) (merge vers: 5.1.37-ndb-6.2.19) (pib:11)
[27 Aug 2009 16:32]
Bugs System
Pushed into 5.1.35-ndb-7.1.0 (revid:magnus.blaudd@sun.com-20090827163030-6o3kk6r2oua159hr) (version source revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (merge vers: 5.1.37-ndb-7.0.8) (pib:11)
[28 Aug 2009 19:04]
Mattias Jonsson
Pushed an update to mysql-5.1-bugteam and mysql-pe, reassigning to Marko again.
[2 Sep 2009 16:43]
Bugs System
Pushed into 5.1.39 (revid:joro@sun.com-20090902154533-8actmfcsjfqovgsb) (version source revid:mattias.jonsson@sun.com-20090828115417-4hnm8hgfnekwcd8d) (merge vers: 5.1.39) (pib:11)
[9 Sep 2009 13:31]
Marko Mäkelä
Patch for MySQL and InnoDB Plugin
Attachment: bug32430-bzr.patch (text/x-diff), 7.35 KiB.
[9 Sep 2009 13:34]
Marko Mäkelä
Mattias, I attached a patch that does not break InnoDB Plugin. I think that it would be most straightforward to port the InnoDB part of this patch to the built-in InnoDB.
[14 Sep 2009 16:03]
Bugs System
Pushed into 5.4.4-alpha (revid:alik@sun.com-20090914155317-m1g9wodmndzdj4l1) (version source revid:alik@sun.com-20090914155317-m1g9wodmndzdj4l1) (merge vers: 5.4.4-alpha) (pib:11)
[23 Sep 2009 9:00]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/84271 3124 Mattias Jonsson 2009-09-23 Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was still not completely fixed, due to qouting. This patch (originally from Marko) moves the qouting to explain_filename including applying this to both the 'old' built-in innodb engine as well as the newer plugin. @ mysql-test/include/have_not_innodb_plugin.inc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added include file to allow test for only the 'old' built-in innodb engine @ mysql-test/r/not_true.require Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added require to match 'not' TRUE @ mysql-test/r/partition_innodb_builtin.result Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New result file for partitioning specific to the 'old' built-in innodb engine @ mysql-test/r/partition_innodb_plugin.result Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New result file for partitioning specific to the new plugin innodb engine @ mysql-test/t/partition_innodb_builtin.test Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New test file for partitioning specific to the 'old' built-in innodb engine @ mysql-test/t/partition_innodb_plugin.test Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New test file for partitioning specific to the new plugin innodb engine @ sql/mysql_priv.h Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added thd as a parameter to explain_filename to be able to use the correct quote character @ sql/sql_table.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Changed explain_filename, so that it does qouting correctly according to the sessions qoute char. @ storage/innobase/handler/ha_innodb.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Make use of the new explain_filename function instead of filename_to_tablename, which does not work with partitions @ storage/innodb_plugin/handler/ha_innodb.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Make use of the new explain_filename function instead of filename_to_tablename, which does not work with partitions
[23 Sep 2009 13:12]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/84357 3124 Mattias Jonsson 2009-09-23 Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was still not completely fixed, due to qouting. This patch (originally from Marko) moves the qouting to explain_filename including applying this to both the 'old' built-in innodb engine as well as the newer plugin. (Updated partition_innodb_plugin.test) @ mysql-test/include/have_not_innodb_plugin.inc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added include file to allow test for only the 'old' built-in innodb engine @ mysql-test/r/not_true.require Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added require to match 'not' TRUE @ mysql-test/r/partition_innodb_builtin.result Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New result file for partitioning specific to the 'old' built-in innodb engine @ mysql-test/r/partition_innodb_plugin.result Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New result file for partitioning specific to the new plugin innodb engine @ mysql-test/t/partition_innodb_builtin.test Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New test file for partitioning specific to the 'old' built-in innodb engine @ mysql-test/t/partition_innodb_plugin.test Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New test file for partitioning specific to the new plugin innodb engine @ sql/mysql_priv.h Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added thd as a parameter to explain_filename to be able to use the correct quote character @ sql/sql_table.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Changed explain_filename, so that it does qouting correctly according to the sessions qoute char. @ storage/innobase/handler/ha_innodb.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Make use of the new explain_filename function instead of filename_to_tablename, which does not work with partitions @ storage/innodb_plugin/handler/ha_innodb.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Make use of the new explain_filename function instead of filename_to_tablename, which does not work with partitions
[25 Sep 2009 9:27]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/84594 3124 Mattias Jonsson 2009-09-25 Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Problem was still not completely fixed, due to qouting. This is the server side only fix (in explain_filename), the change from filename_to_tablename to use explain_filename in the InnoDB code must be done before the bug is fixed. @ mysql-test/include/have_not_innodb_plugin.inc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added include file to allow test for only the 'old' built-in innodb engine @ mysql-test/r/not_true.require Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added require to match 'not' TRUE @ mysql-test/r/partition_innodb_builtin.result Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New result file for partitioning specific to the 'old' built-in innodb engine @ mysql-test/r/partition_innodb_plugin.result Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New result file for partitioning specific to the new plugin innodb engine @ mysql-test/t/disabled.def Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Disabling the new test until the fix is included in the InnoDB source too. @ mysql-test/t/partition_innodb_builtin.test Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New test file for partitioning specific to the 'old' built-in innodb engine @ mysql-test/t/partition_innodb_plugin.test Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs New test file for partitioning specific to the new plugin innodb engine @ sql/mysql_priv.h Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Added thd as a parameter to explain_filename to be able to use the correct quote character @ sql/sql_table.cc Bug#32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs Changed explain_filename, so that it does qouting correctly according to the sessions qoute char.
[29 Sep 2009 9:37]
Mattias Jonsson
Pushed the server side patch into mysql-5.1-bugteam and mysql-pe. Re-assigning to Marko... When merged into the main tree, the Innodb side patch will be added. Marko, please re-assign back to me when this is done... When the innodb part is merged into the mysql source, I will also enable the two test.
[1 Oct 2009 5:58]
Bugs System
Pushed into 5.1.39-ndb-6.3.28 (revid:jonas@mysql.com-20091001055605-ap2kiaarr7p40mmv) (version source revid:jonas@mysql.com-20091001055605-ap2kiaarr7p40mmv) (merge vers: 5.1.39-ndb-6.3.28) (pib:11)
[1 Oct 2009 7:25]
Bugs System
Pushed into 5.1.39-ndb-7.0.9 (revid:jonas@mysql.com-20091001072547-kv17uu06hfjhgjay) (version source revid:jonas@mysql.com-20091001071652-irejtnumzbpsbgk2) (merge vers: 5.1.39-ndb-7.0.9) (pib:11)
[1 Oct 2009 13:25]
Bugs System
Pushed into 5.1.39-ndb-7.1.0 (revid:jonas@mysql.com-20091001123013-g9ob2tsyctpw6zs0) (version source revid:jonas@mysql.com-20091001123013-g9ob2tsyctpw6zs0) (merge vers: 5.1.39-ndb-7.1.0) (pib:11)
[5 Oct 2009 10:50]
Bugs System
Pushed into 5.1.39-ndb-6.2.19 (revid:jonas@mysql.com-20091005103850-dwij2dojwpvf5hi6) (version source revid:jonas@mysql.com-20090930185117-bhud4ek1y0hsj1nv) (merge vers: 5.1.39-ndb-6.2.19) (pib:11)
[6 Oct 2009 9:01]
Bugs System
Pushed into 5.1.40 (revid:joro@sun.com-20091006073316-lea2cpijh9r6on7c) (version source revid:ingo.struewing@sun.com-20091002112748-2xmjv846dk323nc3) (merge vers: 5.1.40) (pib:11)
[14 Oct 2009 15:26]
Paul DuBois
Noted in 5.1.40 changelog. SHOW ENGINE INNODB STATUS displayed partition names for partitioned tables incorrectly. Setting report to NDI pending push into 5.5.x+.
[14 Oct 2009 19:13]
Mattias Jonsson
Note that the InnoDB part is not yet pushed into mysql-5.1, so this bug is not yet fixed! Paul, please remove the note in 5.1.40 for this bug.
[14 Oct 2009 20:28]
Paul DuBois
Removing 5.1.40 changelog entry for now. Setting report back to Verified.
[22 Oct 2009 6:34]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091022063126-l0qzirh9xyhp0bpc) (version source revid:alik@sun.com-20091019135554-s1pvptt6i750lfhv) (merge vers: 6.0.14-alpha) (pib:13)
[22 Oct 2009 7:06]
Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091022060553-znkmxm0g0gm6ckvw) (version source revid:alik@sun.com-20091013094238-g67x6tgdm9a7uik0) (merge vers: 5.5.0-beta) (pib:13)
[30 Nov 2009 8:27]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/92026 3212 Satya B 2009-11-30 Applying InnoDB snapshot 5.1-ss6242, part 1. Fixes BUG#32430 1. BUG#32430 - 'show innodb status' causes errors Invalid (old?) table or database name in logs 2. White space fixup Detailed revision comments: r6136 | marko | 2009-11-04 12:28:10 +0200 (Wed, 04 Nov 2009) | 15 lines branches/5.1: Port r6134 from branches/zip: ------------------------------------------------------------------------ r6134 | marko | 2009-11-04 07:57:29 +0000 (Wed, 04 Nov 2009) | 5 lines branches/zip: innobase_convert_identifier(): Convert table names with explain_filename() to address Bug #32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs. rb://134 approved by Sunny Bains ------------------------------------------------------------------------ innobase_print_identifier(): Replace with innobase_convert_name(). innobase_convert_identifier(): New function, called by innobase_convert_name(). r6152 | vasil | 2009-11-10 15:30:20 +0200 (Tue, 10 Nov 2009) | 4 lines branches/5.1: White space fixup.
[30 Nov 2009 11:43]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/92060 3222 Satya B 2009-11-30 Applying InnoDB Plugin 1.0.6 snapshot, part 2. Fixes BUG#32430 Enable partition_innodb_plugin.test for BUG#32430 applied revisions: r6134, r6137, r6153 Detailed revision comments: r6134 | marko | 2009-11-04 09:57:29 +0200 (Wed, 04 Nov 2009) | 5 lines branches/zip: innobase_convert_identifier(): Convert table names with explain_filename() to address Bug #32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs. rb://134 approved by Sunny Bains r6137 | marko | 2009-11-04 15:24:28 +0200 (Wed, 04 Nov 2009) | 1 line branches/zip: dict_index_too_big_for_undo(): Correct a typo. r6153 | vasil | 2009-11-10 15:33:22 +0200 (Tue, 10 Nov 2009) | 145 lines branches/zip: Merge r6125:6152 from branches/5.1: (everything except the last white-space change was skipped as it is already in branches/zip) ------------------------------------------------------------------------ r6127 | vasil | 2009-10-30 11:18:25 +0200 (Fri, 30 Oct 2009) | 18 lines Changed paths: M /branches/5.1/Makefile.am M /branches/5.1/mysql-test/innodb-autoinc.result M /branches/5.1/mysql-test/innodb-autoinc.test branches/5.1: Backport c6121 from branches/zip: ------------------------------------------------------------------------ r6121 | sunny | 2009-10-30 01:42:11 +0200 (Fri, 30 Oct 2009) | 7 lines Changed paths: M /branches/zip/mysql-test/innodb-autoinc.result branches/zip: This test has been problematic for sometime now. The underlying bug is that the data dictionaries get out of sync. In the AUTOINC code we try and apply salve to the symptoms. In the past MySQL made some unrelated change and the dictionaries stopped getting out of sync and this test started to fail. Now, it seems they have reverted that changed and the test is passing again. I suspect this is not he last time that this test will change. ------------------------------------------------------------------------ ------------------------------------------------------------------------ r6129 | vasil | 2009-10-30 17:14:22 +0200 (Fri, 30 Oct 2009) | 4 lines Changed paths: M /branches/5.1/Makefile.am branches/5.1: Revert a change to Makefile.am that sneaked unnoticed in c6127. ------------------------------------------------------------------------ r6136 | marko | 2009-11-04 12:28:10 +0200 (Wed, 04 Nov 2009) | 15 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc M /branches/5.1/include/ha_prototypes.h M /branches/5.1/ut/ut0ut.c branches/5.1: Port r6134 from branches/zip: ------------------------------------------------------------------------ r6134 | marko | 2009-11-04 07:57:29 +0000 (Wed, 04 Nov 2009) | 5 lines branches/zip: innobase_convert_identifier(): Convert table names with explain_filename() to address Bug #32430: 'show innodb status' causes errors Invalid (old?) table or database name in logs. rb://134 approved by Sunny Bains ------------------------------------------------------------------------ innobase_print_identifier(): Replace with innobase_convert_name(). innobase_convert_identifier(): New function, called by innobase_convert_name(). ------------------------------------------------------------------------ r6149 | vasil | 2009-11-09 11:15:01 +0200 (Mon, 09 Nov 2009) | 5 lines Changed paths: M /branches/5.1/CMakeLists.txt branches/5.1: Followup to r5700: Adjust the changes so they are the same as in the BZR repository. ------------------------------------------------------------------------ r6150 | vasil | 2009-11-09 11:43:31 +0200 (Mon, 09 Nov 2009) | 58 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: Merge a part of r2911.5.5 from MySQL: (the other part of this was merged in c5700) ------------------------------------------------------------ revno: 2911.5.5 committer: Vladislav Vaintroub <vvaintroub@mysql.com> branch nick: 5.1-innodb_plugin timestamp: Wed 2009-06-10 10:59:49 +0200 message: Backport WL#3653 to 5.1 to enable bundled innodb plugin. Remove custom DLL loader code from innodb plugin code, use symbols exported from mysqld. removed: storage/innodb_plugin/handler/handler0vars.h storage/innodb_plugin/handler/win_delay_loader.cc added: storage/mysql_storage_engine.cmake win/create_def_file.js modified: CMakeLists.txt include/m_ctype.h include/my_global.h include/my_sys.h include/mysql/plugin.h libmysqld/CMakeLists.txt mysql-test/mysql-test-run.pl mysql-test/t/plugin.test mysql-test/t/plugin_load-master.opt mysys/charset.c sql/CMakeLists.txt sql/handler.h sql/mysql_priv.h sql/mysqld.cc sql/sql_class.cc sql/sql_class.h sql/sql_list.h sql/sql_profile.h storage/Makefile.am storage/archive/CMakeLists.txt storage/blackhole/CMakeLists.txt storage/csv/CMakeLists.txt storage/example/CMakeLists.txt storage/federated/CMakeLists.txt storage/heap/CMakeLists.txt storage/innobase/CMakeLists.txt storage/innobase/handler/ha_innodb.cc storage/innodb_plugin/CMakeLists.txt storage/innodb_plugin/handler/ha_innodb.cc storage/innodb_plugin/handler/handler0alter.cc storage/innodb_plugin/handler/i_s.cc storage/innodb_plugin/plug.in storage/myisam/CMakeLists.txt storage/myisammrg/CMakeLists.txt win/Makefile.am win/configure.js ------------------------------------------------------------------------ r6152 | vasil | 2009-11-10 15:30:20 +0200 (Tue, 10 Nov 2009) | 4 lines Changed paths: M /branches/5.1/handler/ha_innodb.cc branches/5.1: White space fixup. ------------------------------------------------------------------------
[1 Dec 2009 9:07]
Satya B
patch queued to 5.1-bugteam storage/innobase and for the plugin storage/innodb_plugin
[1 Dec 2009 9:09]
Satya B
NULL merged to 6.0 and will soon be merged to 5.5.*
[2 Dec 2009 8:07]
Bugs System
Pushed into 5.1.42 (revid:joro@sun.com-20091202080033-mndu4sxwx19lz2zs) (version source revid:satya.bn@sun.com-20091130114251-dw1bld7jsmm8qp4m) (merge vers: 5.1.42) (pib:13)
[16 Dec 2009 2:24]
Paul DuBois
Not sure how to write the changelog entry. Can you suggest a sentence or two? Thanks.
[16 Dec 2009 8:07]
Mattias Jonsson
Hi Paul, here is a suggestion: Printing a partition in SHOW ENGINE INNODB STATUS causes errors 'Invalid (old?) table or database name' in logs. So when using partitions in InnoDB and issue 'SHOW ENGINE INNODB STATUS', it would add an entry to the error log. Some extra info: InnoDB, MyISAM and all other storage engines which support partitioning through the generic partitioning handler (accept NDB, which have native partitioning), do not know if the 'storage unit' is a partition or a real table. InnoDB used a function from the server that only handled table file names and failed if the name was a partition.
[16 Dec 2009 8:37]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091216083311-xorsasf5kopjxshf) (version source revid:alik@sun.com-20091214191830-wznm8245ku8xo702) (merge vers: 6.0.14-alpha) (pib:14)
[16 Dec 2009 8:44]
Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091216082430-s0gtzibcgkv4pqul) (version source revid:satya.bn@sun.com-20091202140050-nh3ebk6s3bziv8cb) (merge vers: 5.5.0-beta) (pib:14)
[16 Dec 2009 8:50]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20091216083231-rp8ecpnvkkbhtb27) (version source revid:alik@sun.com-20091212203859-fx4rx5uab47wwuzd) (merge vers: 5.6.0-beta) (pib:14)
[18 Dec 2009 1:31]
Paul DuBois
Noted in 5.5.1, 6.0.14 changelogs. Using the SHOW ENGINE INNODB STATUS statement when using partitions in InnoDB tables caused "Invalid (old?) table or database name" errors to be logged.
[18 Dec 2009 6:50]
Paul DuBois
Also noted in 5.1.42 changelog.
[18 Dec 2009 10:30]
Bugs System
Pushed into 5.1.41-ndb-7.1.0 (revid:jonas@mysql.com-20091218102229-64tk47xonu3dv6r6) (version source revid:jonas@mysql.com-20091218095730-26gwjidfsdw45dto) (merge vers: 5.1.41-ndb-7.1.0) (pib:15)
[18 Dec 2009 10:46]
Bugs System
Pushed into 5.1.41-ndb-6.2.19 (revid:jonas@mysql.com-20091218100224-vtzr0fahhsuhjsmt) (version source revid:jonas@mysql.com-20091217101452-qwzyaig50w74xmye) (merge vers: 5.1.41-ndb-6.2.19) (pib:15)
[18 Dec 2009 11:01]
Bugs System
Pushed into 5.1.41-ndb-6.3.31 (revid:jonas@mysql.com-20091218100616-75d9tek96o6ob6k0) (version source revid:jonas@mysql.com-20091217154335-290no45qdins5bwo) (merge vers: 5.1.41-ndb-6.3.31) (pib:15)
[18 Dec 2009 11:15]
Bugs System
Pushed into 5.1.41-ndb-7.0.11 (revid:jonas@mysql.com-20091218101303-ga32mrnr15jsa606) (version source revid:jonas@mysql.com-20091218064304-ezreonykd9f4kelk) (merge vers: 5.1.41-ndb-7.0.11) (pib:15)
[13 Jan 2010 8:13]
Marko Mäkelä
A bug in explain_filename was reported as Bug #50201.
[10 Feb 2010 15:12]
Marko Mäkelä
Apparently, explain_filename is not displaying the #mysql50# prefix as it should. See Bug #35077 comment [10 Feb 15:19] Vojtech Kurka.
[11 Feb 2010 9:51]
Marko Mäkelä
Recategorized to SE API, because explain_filename is implemented in MySQL, not in InnoDB.
[11 Feb 2010 10:13]
Mattias Jonsson
Marko, please open a new bug instead of reopening this. Regards Mattias
[11 Feb 2010 13:29]
Marko Mäkelä
I thought that the symptoms match the bug synopsis, that is, the bug fix was incorrect and this bug should not have been closed. An excerpt from the Bug #35077 comment shows it: 100210 16:57:57 InnoDB: Error: table 100210 16:57:57 [Warning] Invalid (old?) table or database name '#sql2-4947-72390' `mydb`.<result 2 when explaining filename '#sql2-4947-72390'> does not exist in the InnoDB internal InnoDB: data dictionary though MySQL is trying to drop it.
[15 Feb 2010 7:50]
Marko Mäkelä
The failure of explain_filename to deal with table names starting with #sql has been reported as Bug #51180.
[12 Mar 2010 14:09]
Bugs System
Pushed into 5.1.44-ndb-7.0.14 (revid:jonas@mysql.com-20100312135944-t0z8s1da2orvl66x) (version source revid:jonas@mysql.com-20100312115609-woou0te4a6s4ae9y) (merge vers: 5.1.44-ndb-7.0.14) (pib:16)
[12 Mar 2010 14:25]
Bugs System
Pushed into 5.1.44-ndb-6.2.19 (revid:jonas@mysql.com-20100312134846-tuqhd9w3tv4xgl3d) (version source revid:jonas@mysql.com-20100312060623-mx6407w2vx76h3by) (merge vers: 5.1.44-ndb-6.2.19) (pib:16)
[12 Mar 2010 14:39]
Bugs System
Pushed into 5.1.44-ndb-6.3.33 (revid:jonas@mysql.com-20100312135724-xcw8vw2lu3mijrhn) (version source revid:jonas@mysql.com-20100312103652-snkltsd197l7q2yg) (merge vers: 5.1.44-ndb-6.3.33) (pib:16)
[5 May 2010 15:08]
Bugs System
Pushed into 5.1.47 (revid:joro@sun.com-20100505145753-ivlt4hclbrjy8eye) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[6 May 2010 3:05]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[28 May 2010 5:54]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (pib:16)
[28 May 2010 6:23]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[28 May 2010 6:51]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[29 May 2010 15:04]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[15 Jun 2010 8:11]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100615080459-smuswd9ooeywcxuc) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (merge vers: 5.1.47) (pib:16)
[15 Jun 2010 8:26]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100615080558-cw01bzdqr1bdmmec) (version source revid:mmakela@bk-internal.mysql.com-20100415070122-1nxji8ym4mao13ao) (pib:16)
[17 Jun 2010 11:55]
Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 12:33]
Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 13:20]
Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)