| Bug #39399 | Maria: ALTER TABLE renaming column: affected_rows <> from MyISAM | ||
|---|---|---|---|
| Submitted: | 11 Sep 2008 14:03 | Modified: | 9 Jan 2009 15:29 |
| Reporter: | Guilhem Bichot | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Maria storage engine | Severity: | S3 (Non-critical) |
| Version: | 5.1 maria | OS: | Linux |
| Assigned to: | Oleksandr Byelkin | CPU Architecture: | Any |
[11 Sep 2008 14:03]
Guilhem Bichot
[23 Sep 2008 9:28]
Guilhem Bichot
There are functions in sql_table.cc which decide if a full table rebuild is needed or not. Before Sanja fixes this, Guilhem should update Maria with 6.0-specific MyISAM changes.
[26 Sep 2008 14:59]
Oleksandr Byelkin
=== modified file 'storage/maria/ha_maria.cc'
--- storage/maria/ha_maria.cc 2008-08-28 18:52:23 +0000
+++ storage/maria/ha_maria.cc 2008-09-26 14:05:26 +0000
@@ -2825,15 +2825,15 @@
if (create_info->auto_increment_value != stats.auto_increment_value ||
create_info->data_file_name != data_file_name ||
create_info->index_file_name != index_file_name ||
- (maria_row_type(create_info, 1) != data_file_type &&
+ (maria_row_type(create_info, 0) != data_file_type &&
create_info->row_type != ROW_TYPE_DEFAULT) ||
table_changes == IS_EQUAL_NO ||
table_changes & IS_EQUAL_PACK_LENGTH) // Not implemented yet
return COMPATIBLE_DATA_NO;
- if ((options & (HA_OPTION_PACK_RECORD | HA_OPTION_CHECKSUM |
+ if ((options & (HA_OPTION_CHECKSUM |
HA_OPTION_DELAY_KEY_WRITE)) !=
- (create_info->table_options & (HA_OPTION_PACK_RECORD | HA_OPTION_CHECKSUM |
+ (create_info->table_options & (HA_OPTION_CHECKSUM |
HA_OPTION_DELAY_KEY_WRITE)))
return COMPATIBLE_DATA_NO;
return COMPATIBLE_DATA_YES;
[26 Sep 2008 15:04]
Oleksandr Byelkin
=== modified file 'storage/maria/ha_maria.cc'
--- storage/maria/ha_maria.cc 2008-08-28 18:52:23 +0000
+++ storage/maria/ha_maria.cc 2008-09-26 15:02:28 +0000
@@ -2605,10 +2605,9 @@
}
-static enum data_file_type maria_row_type(HA_CREATE_INFO *info,
- my_bool ignore_transactional)
+static enum data_file_type maria_row_type(HA_CREATE_INFO *info)
{
- if (info->transactional == HA_CHOICE_YES && ! ignore_transactional)
+ if (info->transactional == HA_CHOICE_YES)
return BLOCK_RECORD;
switch (info->row_type) {
case ROW_TYPE_FIXED: return STATIC_RECORD;
@@ -2641,7 +2640,7 @@
}
}
/* Note: BLOCK_RECORD is used if table is transactional */
- row_type= maria_row_type(ha_create_info, 0);
+ row_type= maria_row_type(ha_create_info);
if (ha_create_info->transactional == HA_CHOICE_YES &&
ha_create_info->row_type != ROW_TYPE_PAGE &&
ha_create_info->row_type != ROW_TYPE_NOT_USED &&
@@ -2825,15 +2824,15 @@
if (create_info->auto_increment_value != stats.auto_increment_value ||
create_info->data_file_name != data_file_name ||
create_info->index_file_name != index_file_name ||
- (maria_row_type(create_info, 1) != data_file_type &&
+ (maria_row_type(create_info) != data_file_type &&
create_info->row_type != ROW_TYPE_DEFAULT) ||
table_changes == IS_EQUAL_NO ||
table_changes & IS_EQUAL_PACK_LENGTH) // Not implemented yet
return COMPATIBLE_DATA_NO;
- if ((options & (HA_OPTION_PACK_RECORD | HA_OPTION_CHECKSUM |
+ if ((options & (HA_OPTION_CHECKSUM |
HA_OPTION_DELAY_KEY_WRITE)) !=
- (create_info->table_options & (HA_OPTION_PACK_RECORD | HA_OPTION_CHECKSUM |
+ (create_info->table_options & (HA_OPTION_CHECKSUM |
HA_OPTION_DELAY_KEY_WRITE)))
return COMPATIBLE_DATA_NO;
return COMPATIBLE_DATA_YES;
[29 Sep 2008 6:19]
Oleksandr Byelkin
Commit e-mail: http://lists.mysql.com/maria/172
[26 Oct 2008 22:20]
Bugs System
Pushed into 6.0.8-alpha (revid:sanja@mysql.com-20080928183259-hd9pq1efoger4het) (version source revid:guilhem@mysql.com-20081020191322-i0e65e3k8044kkce) (pib:5)
[9 Jan 2009 15:29]
MC Brown
Added a note to the 6.0.8 changelog: Performing an ALTER TABLE on a Maria table where you are changing the column name but not the type, a full table rebuild may be triggered, instead of just a simple rename.
