mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#30384: Having SQL_BUFFER_RESULT option in the CREATE .. KEY(..) .. SELECT
led to creating corrupted index. While execution of the CREATE .. SELECT SQL_BUFFER_RESULT statement the engine->start_bulk_insert function was called twice. On the first call On the first call MyISAM disabled all non-unique indexes and on the second call it decides to not re-enable them because all indexes was disabled. Due to this no indexes was actually created during CREATE TABLE thus producing crashed table. Now the select_inset class has is_bulk_insert_mode flag which prevents calling the start_bulk_insert function twice. The flag is set in the select_create::prepare, select_insert::prepare2 functions and the select_insert class constructor. The flag is reset in the select_insert::send_eof function.
This commit is contained in:
@ -830,3 +830,15 @@ id prev_id join_id
|
||||
3 2 0
|
||||
4 3 0
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug#30384: Having SQL_BUFFER_RESULT option in the
|
||||
# CREATE .. KEY(..) .. SELECT led to creating corrupted index.
|
||||
#
|
||||
create table t1(f1 int);
|
||||
insert into t1 values(1),(2),(3);
|
||||
create table t2 (key(f1)) engine=myisam select sql_buffer_result f1 from t1;
|
||||
check table t2 extended;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 check status OK
|
||||
drop table t1,t2;
|
||||
##################################################################
|
||||
|
Reference in New Issue
Block a user