mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge MariaDB-10.0.7 revision 3961.
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2002, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2011, Monty Program Ab
|
||||
/* Copyright (c) 2002, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2013, Monty Program Ab
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -116,6 +116,7 @@ When one supplies long data for a placeholder:
|
||||
#endif
|
||||
#include "lock.h" // MYSQL_OPEN_FORCE_SHARED_MDL
|
||||
#include "sql_handler.h"
|
||||
#include "transaction.h" // trans_rollback_implicit
|
||||
|
||||
/**
|
||||
A result class used to send cursor rows using the binary protocol.
|
||||
@ -3439,6 +3440,22 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
|
||||
|
||||
close_thread_tables(thd);
|
||||
thd->mdl_context.rollback_to_savepoint(mdl_savepoint);
|
||||
|
||||
/*
|
||||
Transaction rollback was requested since MDL deadlock was discovered
|
||||
while trying to open tables. Rollback transaction in all storage
|
||||
engines including binary log and release all locks.
|
||||
|
||||
Once dynamic SQL is allowed as substatements the below if-statement
|
||||
has to be adjusted to not do rollback in substatement.
|
||||
*/
|
||||
DBUG_ASSERT(! thd->in_sub_stmt);
|
||||
if (thd->transaction_rollback_request)
|
||||
{
|
||||
trans_rollback_implicit(thd);
|
||||
thd->mdl_context.release_transactional_locks();
|
||||
}
|
||||
|
||||
lex_end(lex);
|
||||
cleanup_stmt();
|
||||
thd->restore_backup_statement(this, &stmt_backup);
|
||||
|
Reference in New Issue
Block a user