Bug #90345 MySQL 8.0
Submitted: 9 Apr 2018 6:48 Modified: 9 Apr 2018 9:05
Reporter: Hanzhi W Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: DDL Severity:S3 (Non-critical)
Version:8.0.4 OS:Microsoft Windows
Assigned to: CPU Architecture:x86
Tags: innodb, mysql-test

[9 Apr 2018 6:48] Hanzhi W
Description:
Create innodb table with long table name will receives an error message of:
ERROR 1030 (HY000): Got error 168 - 'Unknown (generic) error from engine' from storage engine

How to repeat:
Connect to MySQL Server 8.0 via MySQL client, create a database, use that database and then issue:

CREATE TABLE t_cdefgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
(a INT, b INT) ENGINE=INNODB
PARTITION BY RANGE (a)
SUBPARTITION BY HASH(b)
(
  PARTITION p1_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    VALUES LESS THAN (100)
    (
      SUBPARTITION
        p1s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
      SUBPARTITION
        p1s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ),
  PARTITION p2_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    VALUES LESS THAN (200)
    (
      SUBPARTITION
        p2s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
      SUBPARTITION
        p2s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    )
);

Will get error: ERROR 1030 (HY000): Got error 168 - 'Unknown (generic) error from engine' from storage engine

This can be verified by a mysql test case:
Test Suite: innodb
Test Case:  innodb_stats_long_names
[9 Apr 2018 8:11] Miguel Solorzano
Not repeatable with most recent source server on Linux:

miguel@tikal:~/dbs $ ./80c
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.12 Source distribution 2018-APR-04

Copyright (c) 2000, 2018, 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 8.0 > USE test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql 8.0 > CREATE TABLE t_cdefgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    -> (a INT, b INT) ENGINE=INNODB
    -> PARTITION BY RANGE (a)
    -> SUBPARTITION BY HASH(b)
    -> (
    ->   PARTITION p1_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     VALUES LESS THAN (100)
    ->     (
    ->       SUBPARTITION
    ->         p1s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
    ->       SUBPARTITION
    ->         p1s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     ),
    ->   PARTITION p2_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     VALUES LESS THAN (200)
    ->     (
    ->       SUBPARTITION
    ->         p2s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
    ->       SUBPARTITION
    ->         p2s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     )
    -> );
Query OK, 0 rows affected (1,23 sec)

mysql 8.0 >
[9 Apr 2018 8:18] Miguel Solorzano
On Windows:

mysql 8.0 > CREATE TABLE t_cdefgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    -> (a INT, b INT) ENGINE=INNODB
    -> PARTITION BY RANGE (a)
    -> SUBPARTITION BY HASH(b)
    -> (
    ->   PARTITION p1_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     VALUES LESS THAN (100)
    ->     (
    ->       SUBPARTITION
    ->         p1s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
    ->       SUBPARTITION
    ->         p1s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     ),
    ->   PARTITION p2_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     VALUES LESS THAN (200)
    ->     (
    ->       SUBPARTITION
    ->         p2s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
    ->       SUBPARTITION
    ->         p2s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     )
    -> );
Query OK, 0 rows affected (0.17 sec)

mysql 8.0 > SHOW VARIABLES LIKE "%version%";
+-------------------------+---------------------------------+
| Variable_name           | Value                           |
+-------------------------+---------------------------------+
| innodb_version          | 8.0.5                           |
| protocol_version        | 10                              |
| slave_type_conversions  |                                 |
| tls_version             | TLSv1,TLSv1.1                   |
| version                 | 8.0.5-log                       |
| version_comment         | Source distribution 2018-JAN-07 |
| version_compile_machine | x86_64                          |
| version_compile_os      | Win64                           |
+-------------------------+---------------------------------+
8 rows in set (0.01 sec)

mysql 8.0 >
[9 Apr 2018 8:56] Miguel Solorzano
Not repeatable with 8.0.4 released version, also:

C:\tmp\mysql-8.0.4-rc-winx64>bin\mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.4-rc-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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 t_cdefgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    -> (a INT, b INT) ENGINE=INNODB
    -> PARTITION BY RANGE (a)
    -> SUBPARTITION BY HASH(b)
    -> (
    ->   PARTITION p1_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     VALUES LESS THAN (100)
    ->     (
    ->       SUBPARTITION
    ->         p1s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
    ->       SUBPARTITION
    ->         p1s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     ),
    ->   PARTITION p2_defgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     VALUES LESS THAN (200)
    ->     (
    ->       SUBPARTITION
    ->         p2s1_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd,
    ->       SUBPARTITION
    ->         p2s2_fgh10abcdefgh20abcdefgh30abcdefgh40abcdefgh50abcdefgh60abcd
    ->     )
    -> );
Query OK, 0 rows affected (0.13 sec)

mysql>
[9 Apr 2018 9:05] Miguel Solorzano
Thank you for the bug report.

miguel@tikal:~/dbs/8.0/mysql-test $ ./mtr innodb_stats_long_names
Logging: ./mtr  innodb_stats_long_names
2018-04-09T08:57:42.732690Z 0 [Warning] [MY-010139] [Server] Changed limits: max_open_files: 1024 (requested 8161)
2018-04-09T08:57:42.732730Z 0 [Warning] [MY-010142] [Server] Changed limits: table_open_cache: 431 (requested 4000)
2018-04-09T08:57:42.732880Z 0 [System] [MY-010116] [Server] /home/miguel/dbs/8.0/bin/mysqld (mysqld 8.0.12) starting as process 1986
MySQL Version 8.0.12
Checking supported features...
 - SSL connections supported
Collecting tests...
Removing old var directory...
Creating var directory '/home/miguel/dbs/8.0/mysql-test/var'...
Installing system database...
Using parallel: 1

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
innodb.innodb_stats_long_names           [ pass ]   2853
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 2.853 of 387 seconds executing testcases

Completed: All 1 tests were successful.