diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 59e29046d90..08604b12549 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -422,4 +422,6 @@ partition_name partition_description table_rows x123 11,12 1 x234 NULL,1 1 drop table t1; +create temporary table t1 (a int) partition by hash(a); +ERROR HY000: Cannot create temporary table with partitions End of 5.1 tests diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index f22edb54756..69fbf50f04e 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -540,4 +540,10 @@ select partition_name, partition_description, table_rows from information_schema.partitions where table_schema ='test'; drop table t1; +# +# Bug #17497: Partitions: crash if add partition on temporary table +# +--error ER_PARTITION_NO_TEMPORARY +create temporary table t1 (a int) partition by hash(a); + --echo End of 5.1 tests diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index d163da30e95..4255504e98f 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5820,4 +5820,5 @@ ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT eng "Cannot change the binary logging format inside a stored function or trigger" ER_NDB_CANT_SWITCH_BINLOG_FORMAT eng "The NDB cluster engine does not support changing the binlog format on the fly yet" - +ER_PARTITION_NO_TEMPORARY + eng "Cannot create temporary table with partitions" diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 9513f7ba48f..552bb8b59ff 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -2073,6 +2073,11 @@ bool mysql_create_table_internal(THD *thd, char *part_syntax_buf; uint syntax_len; handlerton *engine_type; + if (create_info->options & HA_LEX_CREATE_TMP_TABLE) + { + my_error(ER_PARTITION_NO_TEMPORARY, MYF(0)); + goto err; + } while ((key= key_iterator++)) { if (key->type == Key::FOREIGN_KEY)