From 888d3cf75722a6d16accd5475973559286ee530e Mon Sep 17 00:00:00 2001 From: "serg@sergbook.mysql.com" <> Date: Tue, 10 Sep 2002 21:40:01 +0200 Subject: [PATCH] max_key_length MyISAM bugfix --- myisam/mi_create.c | 3 ++- sql/sql_table.cc | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/myisam/mi_create.c b/myisam/mi_create.c index 2202587702b..0996c110eea 100644 --- a/myisam/mi_create.c +++ b/myisam/mi_create.c @@ -370,7 +370,8 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, share.state.rec_per_key_part[key_segs-1]=1L; length+=key_length; keydef->block_length= MI_BLOCK_SIZE(length,pointer,MI_MAX_KEYPTR_SIZE); - if (keydef->block_length > MI_MAX_KEY_BLOCK_LENGTH) + if (keydef->block_length > MI_MAX_KEY_BLOCK_LENGTH || + length > MI_MAX_KEY_LENGTH) { my_errno=HA_WRONG_CREATE_OPTION; goto err; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 0482313481d..021f3f07ad5 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -627,7 +627,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, if (!(key_info->flags & HA_NULL_PART_KEY)) unique_key=1; key_info->key_length=(uint16) key_length; - uint max_key_length= max(file->max_key_length(), MAX_KEY_LENGTH); + uint max_key_length= min(file->max_key_length(), MAX_KEY_LENGTH); if (key_length > max_key_length && key->type != Key::FULLTEXT) { my_error(ER_TOO_LONG_KEY,MYF(0),max_key_length);