Bug #17499 Alter table of ndb partitioned tables causes mysqld to core

- moved used_partitions initialization
parent a9ad4c2e
...@@ -3381,8 +3381,13 @@ int ha_ndbcluster::extra(enum ha_extra_function operation) ...@@ -3381,8 +3381,13 @@ int ha_ndbcluster::extra(enum ha_extra_function operation)
DBUG_PRINT("info", ("HA_EXTRA_RESET")); DBUG_PRINT("info", ("HA_EXTRA_RESET"));
DBUG_PRINT("info", ("Clearing condition stack")); DBUG_PRINT("info", ("Clearing condition stack"));
cond_clear(); cond_clear();
/*
* Regular partition pruning will set the bitmap appropriately.
* Some queries like ALTER TABLE doesn't use partition pruning and
* thus the 'used_partitions' bitmap needs to be initialized
*/
if (m_part_info) if (m_part_info)
bitmap_clear_all(&m_part_info->used_partitions); bitmap_set_all(&m_part_info->used_partitions);
break; break;
case HA_EXTRA_IGNORE_DUP_KEY: /* Dup keys don't rollback everything*/ case HA_EXTRA_IGNORE_DUP_KEY: /* Dup keys don't rollback everything*/
DBUG_PRINT("info", ("HA_EXTRA_IGNORE_DUP_KEY")); DBUG_PRINT("info", ("HA_EXTRA_IGNORE_DUP_KEY"));
......
...@@ -5200,8 +5200,6 @@ copy_data_between_tables(TABLE *from,TABLE *to, ...@@ -5200,8 +5200,6 @@ copy_data_between_tables(TABLE *from,TABLE *to,
*/ */
to->file->ha_set_all_bits_in_write_set(); to->file->ha_set_all_bits_in_write_set();
from->file->ha_retrieve_all_cols(); from->file->ha_retrieve_all_cols();
if (from->part_info)
bitmap_set_all(&(from->part_info->used_partitions));
init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1); init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1);
if (ignore || if (ignore ||
handle_duplicates == DUP_REPLACE) handle_duplicates == DUP_REPLACE)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment