diff options
author | mikron@c-1e0be253.1238-1-64736c10.cust.bredbandsbolaget.se <> | 2006-01-17 08:40:00 +0100 |
---|---|---|
committer | mikron@c-1e0be253.1238-1-64736c10.cust.bredbandsbolaget.se <> | 2006-01-17 08:40:00 +0100 |
commit | e802a94284e904224a7dc6a40e32a09d2266a546 (patch) | |
tree | 51bd35fa0118372b12fdb98fc0c13da8cf535edc /sql/unireg.cc | |
parent | f569266bfa2b1359aff6bc788422639397a54e4c (diff) | |
download | mariadb-git-e802a94284e904224a7dc6a40e32a09d2266a546.tar.gz |
WL #2604: Partition Management
Optimised version of ADD/DROP/REORGANIZE partitions for
non-NDB storage engines.
New syntax to handle REBUILD/OPTIMIZE/ANALYZE/CHECK/REPAIR partitions
Quite a few bug fixes
Diffstat (limited to 'sql/unireg.cc')
-rw-r--r-- | sql/unireg.cc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/sql/unireg.cc b/sql/unireg.cc index 7b15e14bdaf..4200a36ab58 100644 --- a/sql/unireg.cc +++ b/sql/unireg.cc @@ -89,9 +89,6 @@ bool mysql_create_frm(THD *thd, const char *file_name, partition_info *part_info= thd->lex->part_info; #endif DBUG_ENTER("mysql_create_frm"); -#ifdef WITH_PARTITION_STORAGE_ENGINE - thd->lex->part_info= NULL; -#endif DBUG_ASSERT(*fn_rext((char*)file_name)); // Check .frm extension formnames.type_names=0; @@ -134,10 +131,13 @@ bool mysql_create_frm(THD *thd, const char *file_name, create_info->extra_size= (2 + str_db_type.length + 2 + create_info->connect_string.length); /* Partition */ - create_info->extra_size+= 5; + create_info->extra_size+= 9; #ifdef WITH_PARTITION_STORAGE_ENGINE if (part_info) + { create_info->extra_size+= part_info->part_info_len; + create_info->extra_size+= part_info->part_state_len; + } #endif for (i= 0; i < keys; i++) @@ -171,7 +171,10 @@ bool mysql_create_frm(THD *thd, const char *file_name, #ifdef WITH_PARTITION_STORAGE_ENGINE if (part_info) + { fileinfo[61]= (uchar) ha_legacy_type(part_info->default_engine_type); + DBUG_PRINT("info", ("part_db_type = %d", fileinfo[61])); + } #endif int2store(fileinfo+59,db_file->extra_rec_buf_length()); if (my_pwrite(file,(byte*) fileinfo,64,0L,MYF_RW) || @@ -206,12 +209,18 @@ bool mysql_create_frm(THD *thd, const char *file_name, my_write(file, (const byte*)part_info->part_info_string, part_info->part_info_len + 1, MYF_RW)) goto err; + DBUG_PRINT("info", ("Part state len = %d", part_info->part_state_len)); + int4store(buff, part_info->part_state_len); + if (my_write(file, (const byte*)buff, 4, MYF_RW) || + my_write(file, (const byte*)part_info->part_state, + part_info->part_state_len, MYF_RW)) + goto err; } else #endif { - bzero(buff, 5); - if (my_write(file, (byte*) buff, 5, MYF_RW)) + bzero(buff, 9); + if (my_write(file, (byte*) buff, 9, MYF_RW)) goto err; } for (i= 0; i < keys; i++) |