Commit 13a43a1a authored by Alexey Kopytov's avatar Alexey Kopytov

Addendum for the fix for bug #42064:

In Prepared_statement::prepare() bail out as soon as
parser_state.init() fails, trying to continue leads to crashes.
parent 08f3b0ab
......@@ -3034,16 +3034,21 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
thd->stmt_arena= this;
Parser_state parser_state;
if (!parser_state.init(thd, thd->query(), thd->query_length()))
if (parser_state.init(thd, thd->query(), thd->query_length()))
{
parser_state.m_lip.stmt_prepare_mode= TRUE;
lex_start(thd);
error= parse_sql(thd, & parser_state, NULL) ||
thd->is_error() ||
init_param_array(this);
thd->restore_backup_statement(this, &stmt_backup);
thd->restore_active_arena(this, &stmt_backup);
thd->stmt_arena= old_stmt_arena;
DBUG_RETURN(TRUE);
}
parser_state.m_lip.stmt_prepare_mode= TRUE;
lex_start(thd);
error= parse_sql(thd, & parser_state, NULL) ||
thd->is_error() ||
init_param_array(this);
lex->set_trg_event_type_for_tables();
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment