Loading Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -100,4 +100,4 @@ tags: # Test installation test: cd mysql-test; ./mysql-test-run && ./mysql-test-run --ps-protocol cd mysql-test; perl mysql-test-run.pl && perl mysql-test-run.pl --ps-protocol mysql-test/mysql-test-run.pl +1 −1 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ sub executable_setup () { $exe_mysqlbinlog= "$path_client_bindir/mysqlbinlog"; $exe_mysqladmin= "$path_client_bindir/mysqladmin"; $exe_mysql= "$path_client_bindir/mysql"; $exe_mysql_fix_system_tables= "$glob_basedir/scripts/mysql_fix_privilege_tables"; $exe_mysql_fix_system_tables= "$path_client_bindir/mysql_fix_privilege_tables"; if ( -d "$glob_basedir/share/mysql/english" ) { Loading mysql-test/r/ps.result +6 −0 Original line number Diff line number Diff line Loading @@ -557,3 +557,9 @@ id 3 deallocate prepare stmt; drop table t1, t2; create table t1 (id int); prepare stmt from "insert into t1 (id) select id from t1 union select id from t1"; execute stmt; execute stmt; deallocate prepare stmt; drop table t1; mysql-test/t/ps.test +12 −0 Original line number Diff line number Diff line Loading @@ -569,3 +569,15 @@ select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id); deallocate prepare stmt; drop table t1, t2; # # Bug#11060 "Server crashes on calling stored procedure with INSERT SELECT # UNION SELECT" aka "Server crashes on re-execution of prepared INSERT ... # SELECT with UNION". # create table t1 (id int); prepare stmt from "insert into t1 (id) select id from t1 union select id from t1"; execute stmt; execute stmt; deallocate prepare stmt; drop table t1; sql/sql_insert.cc +12 −1 Original line number Diff line number Diff line Loading @@ -1578,10 +1578,21 @@ bool delayed_insert::handle_inserts(void) int select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u) { int res; LEX *lex= thd->lex; SELECT_LEX *lex_current_select_save= lex->current_select; DBUG_ENTER("select_insert::prepare"); unit= u; if (check_insert_fields(thd, table, *fields, values)) /* Since table in which we are going to insert is added to the first select, LEX::current_select should point to the first select while we are fixing fields from insert list. */ lex->current_select= &lex->select_lex; res= check_insert_fields(thd, table, *fields, values); lex->current_select= lex_current_select_save; if (res) DBUG_RETURN(1); restore_record(table,default_values); // Get empty record Loading Loading
Makefile.am +1 −1 Original line number Diff line number Diff line Loading @@ -100,4 +100,4 @@ tags: # Test installation test: cd mysql-test; ./mysql-test-run && ./mysql-test-run --ps-protocol cd mysql-test; perl mysql-test-run.pl && perl mysql-test-run.pl --ps-protocol
mysql-test/mysql-test-run.pl +1 −1 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ sub executable_setup () { $exe_mysqlbinlog= "$path_client_bindir/mysqlbinlog"; $exe_mysqladmin= "$path_client_bindir/mysqladmin"; $exe_mysql= "$path_client_bindir/mysql"; $exe_mysql_fix_system_tables= "$glob_basedir/scripts/mysql_fix_privilege_tables"; $exe_mysql_fix_system_tables= "$path_client_bindir/mysql_fix_privilege_tables"; if ( -d "$glob_basedir/share/mysql/english" ) { Loading
mysql-test/r/ps.result +6 −0 Original line number Diff line number Diff line Loading @@ -557,3 +557,9 @@ id 3 deallocate prepare stmt; drop table t1, t2; create table t1 (id int); prepare stmt from "insert into t1 (id) select id from t1 union select id from t1"; execute stmt; execute stmt; deallocate prepare stmt; drop table t1;
mysql-test/t/ps.test +12 −0 Original line number Diff line number Diff line Loading @@ -569,3 +569,15 @@ select t2.id from t2, t1 where (t1.id=1 and t2.t1_id=t1.id); deallocate prepare stmt; drop table t1, t2; # # Bug#11060 "Server crashes on calling stored procedure with INSERT SELECT # UNION SELECT" aka "Server crashes on re-execution of prepared INSERT ... # SELECT with UNION". # create table t1 (id int); prepare stmt from "insert into t1 (id) select id from t1 union select id from t1"; execute stmt; execute stmt; deallocate prepare stmt; drop table t1;
sql/sql_insert.cc +12 −1 Original line number Diff line number Diff line Loading @@ -1578,10 +1578,21 @@ bool delayed_insert::handle_inserts(void) int select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u) { int res; LEX *lex= thd->lex; SELECT_LEX *lex_current_select_save= lex->current_select; DBUG_ENTER("select_insert::prepare"); unit= u; if (check_insert_fields(thd, table, *fields, values)) /* Since table in which we are going to insert is added to the first select, LEX::current_select should point to the first select while we are fixing fields from insert list. */ lex->current_select= &lex->select_lex; res= check_insert_fields(thd, table, *fields, values); lex->current_select= lex_current_select_save; if (res) DBUG_RETURN(1); restore_record(table,default_values); // Get empty record Loading