33 lines
1.5 KiB
Plaintext
33 lines
1.5 KiB
Plaintext
#
|
|
# Bug#27769521 CREATE TABLE WITH MORE THAN 128 BYTES NAME IN NDB
|
|
#
|
|
# Preconditions:
|
|
# 1) Max length of a table name in NDB is currently 128 bytes.
|
|
# 2) The MySQL Server creates tables in NDB using name on the form
|
|
# <db_name>/<catalog_name>/<table_name> where <catalog_name> is
|
|
# always hardcoded to "def".
|
|
# 3) The current limit of identifier names in MySQL is 64 characters,
|
|
# but for NDB tables the limit is currently only 63 bytes
|
|
# due to a legacy bug.
|
|
#
|
|
#
|
|
# Using two maximum length identifiers(i.e 63 bytes) it's possible to
|
|
# hit the 128 bytes limit in NDB. Unfortunately the ndbcluster plugin
|
|
# does not detect this error correctly and returns the error:
|
|
# "Table '<long identifier>' doesn't exist"
|
|
#
|
|
select LENGTH('abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm');
|
|
LENGTH('abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm')
|
|
63
|
|
CREATE DATABASE abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm;
|
|
use abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm;
|
|
CREATE TABLE abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm (
|
|
a int primary key
|
|
) engine = NDB;
|
|
ERROR HY000: Can't create table 'abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm'
|
|
SHOW WARNINGS;
|
|
Level Code Message
|
|
Warning 1296 Got error 283 'Table is being dropped' from NDB
|
|
Error 1005 Can't create table 'abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm'
|
|
DROP DATABASE abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzabcdefghijklm;
|