Skip to content

Commit

Permalink
MDEV-17711 Assertion `arena_for_set_stmt== 0' failed in LEX::set_aren…
Browse files Browse the repository at this point in the history
…a_for_set_stmt upon SET STATEMENT

restore SET STATEMENT variables between statements in a multi-statement
  • Loading branch information
vuvova committed Sep 6, 2023
1 parent 28f7725 commit e78ce63
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
12 changes: 12 additions & 0 deletions mysql-test/main/set_statement.result
Expand Up @@ -1271,4 +1271,16 @@ SET sql_mode=ORACLE;
SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';
SET sql_mode=default;
SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';
#
# MDEV-17711 Assertion `arena_for_set_stmt== 0' failed in LEX::set_arena_for_set_stmt upon SET STATEMENT
#
set rand_seed1=1, rand_seed2=2;
set statement rand_seed1=4 for select 2, @@rand_seed1, @@rand_seed2;
set statement rand_seed2=5 for select 3, @@rand_seed1, @@rand_seed2 $
2 @@rand_seed1 @@rand_seed2
2 4 2
3 @@rand_seed1 @@rand_seed2
3 1 5
#
# End of 10.4 tests
#
12 changes: 12 additions & 0 deletions mysql-test/main/set_statement.test
Expand Up @@ -1191,4 +1191,16 @@ SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unk
SET sql_mode=default;
SET STATEMENT max_statement_time=30 FOR DELETE FROM mysql.user where user = 'unknown';

--echo #
--echo # MDEV-17711 Assertion `arena_for_set_stmt== 0' failed in LEX::set_arena_for_set_stmt upon SET STATEMENT
--echo #

--delimiter $
set rand_seed1=1, rand_seed2=2;
set statement rand_seed1=4 for select 2, @@rand_seed1, @@rand_seed2;
set statement rand_seed2=5 for select 3, @@rand_seed1, @@rand_seed2 $
--delimiter ;

--echo #
--echo # End of 10.4 tests
--echo #
2 changes: 2 additions & 0 deletions sql/sql_parse.cc
Expand Up @@ -1901,6 +1901,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
MYSQL_QUERY_DONE(thd->is_error());
}

thd->lex->restore_set_statement_var();

#if defined(ENABLED_PROFILING)
thd->profiling.finish_current_query();
thd->profiling.start_new_query("continuing");
Expand Down

0 comments on commit e78ce63

Please sign in to comment.