From 50ce511bdb415f2078b6853e09d198af00fdba4b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Feb 2006 14:29:48 +0100 Subject: [PATCH] Bug #17499 Alter table of ndb partitioned tables causes mysqld to core - moved used_partitions initialization --- sql/ha_ndbcluster.cc | 7 ++++++- sql/sql_table.cc | 2 -- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 332e39648b1..17b999f8134 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3381,8 +3381,13 @@ int ha_ndbcluster::extra(enum ha_extra_function operation) DBUG_PRINT("info", ("HA_EXTRA_RESET")); DBUG_PRINT("info", ("Clearing condition stack")); 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) - bitmap_clear_all(&m_part_info->used_partitions); + bitmap_set_all(&m_part_info->used_partitions); break; case HA_EXTRA_IGNORE_DUP_KEY: /* Dup keys don't rollback everything*/ DBUG_PRINT("info", ("HA_EXTRA_IGNORE_DUP_KEY")); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index df6661e085f..757321b5ccf 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -5200,8 +5200,6 @@ copy_data_between_tables(TABLE *from,TABLE *to, */ to->file->ha_set_all_bits_in_write_set(); 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); if (ignore || handle_duplicates == DUP_REPLACE)