Bug #29618 ERROR 1112 - Table x uses an extension that doesn't exist in this MySQL Version
Submitted: 7 Jul 2007 19:26 Modified: 24 Feb 2008 9:48
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server: DDL Severity:S3 (Non-critical)
Version:5.0.42, 5.1.21 OS:Any
Assigned to: CPU Architecture:Any

[7 Jul 2007 19:26] Shane Bester
Description:
It's possible to create a table with 1024 key segments i.e. 64 indexes, and 16 columns per index.

But, MySQL cannot open this table.  The error message is this:

mysql> select count(*) from `t1`;
ERROR 1112 (42000): Table 't1' uses an extension that doesn't exist in this MySQL version

Of course, the table was created by this very version, so error should not occur.

How to repeat:
Will upload CREATE TABLE statement in a file.

Suggested fix:
The error is coming from this code in mi_open.cc:

if (share->base.max_key_length > MI_MAX_KEY_BUFF || keys > MI_MAX_KEY ||
	key_parts >= MI_MAX_KEY * MI_MAX_KEY_SEG)
    {
      DBUG_PRINT("error",("Wrong key info:  Max_key_length: %d  keys: %d  key_parts: %d", share->base.max_key_length, keys, key_parts));
      my_errno=HA_ERR_UNSUPPORTED;
      goto err;
    }

Perhaps somebody wrote >= instead of > ?

Anyway, MySQL shouldn't create a table it can't open.
[7 Jul 2007 19:27] MySQL Verification Team
create table statement

Attachment: bug29618_create_Table.sql (application/octet-stream, text), 38.93 KiB.

[24 Feb 2008 9:40] MySQL Verification Team
i cannot repeat this anymore on 5.0.56 or 5.1.23.

mysql> select count(*) from `t1`;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select version();
+--------------------------+
| version()                |
+--------------------------+
| 5.0.56-enterprise-gpl-nt |
+--------------------------+
1 row in set (0.00 sec)
[24 Feb 2008 9:46] MySQL Verification Team
seems this was fixed by the fix to bug #26642