Bug#42643: InnoDB does not support replication of TRUNCATE TABLE
Post-merge fix: Pass the right parameter type to open_and_lock_tables. Passing FALSE ensures that derived table handling is disabled, truncate only operates on base tables. sql/sql_truncate.cc: Pass FALSE to disable derived table handling. This was probably reminiscent of the use of open_n_lock_single_table, which can't be used as in some cases (e.g. merge) more than one table will be opened. sql/sql_truncate.h: TABLE_LIST is a struct.
This commit is contained in:
parent
fcbc77b064
commit
ad08138798
@ -351,7 +351,7 @@ static bool open_and_lock_table_for_truncate(THD *thd, TABLE_LIST *table_ref,
|
||||
the MDL lock taken above and otherwise there is no way to
|
||||
wait for FLUSH TABLES in deadlock-free fashion.
|
||||
*/
|
||||
if (open_and_lock_tables(thd, table_ref, TL_WRITE,
|
||||
if (open_and_lock_tables(thd, table_ref, FALSE,
|
||||
MYSQL_OPEN_IGNORE_FLUSH |
|
||||
MYSQL_OPEN_SKIP_TEMPORARY))
|
||||
DBUG_RETURN(TRUE);
|
||||
@ -406,7 +406,7 @@ bool mysql_truncate_table(THD *thd, TABLE_LIST *table_ref)
|
||||
table and delete all rows. In such a manner this can in fact
|
||||
open several tables if it's a temporary MyISAMMRG table.
|
||||
*/
|
||||
if (open_and_lock_tables(thd, table_ref, TL_WRITE,
|
||||
if (open_and_lock_tables(thd, table_ref, FALSE,
|
||||
MYSQL_OPEN_TEMPORARY_ONLY))
|
||||
DBUG_RETURN(TRUE);
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
class THD;
|
||||
class TABLE_LIST;
|
||||
struct TABLE_LIST;
|
||||
|
||||
bool mysql_truncate_table(THD *thd, TABLE_LIST *table_ref);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user