1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Fix the bug introduced with the push of the fix for bug#18326: Do not

lock table for writing during prepare of statement.

When single call open_normal_and_derived_tables() was used, we never
set table_count to the right value.  This patch reverts the part of
the old code that does open_tables() (and sets table_count), then
checks if table_list->multitable_view is set (and returns if so, using
table_count value), and only then it does mysql_handle_derived().
This commit is contained in:
kroki/tomash@moonlight.home
2007-03-13 21:15:29 +03:00
parent 09d89e9cdd
commit 53d4592fa8

View File

@ -1142,7 +1142,7 @@ static int mysql_test_update(Prepared_statement *stmt,
DBUG_ENTER("mysql_test_update");
if (update_precheck(thd, table_list) ||
open_normal_and_derived_tables(thd, table_list, 0))
open_tables(thd, &table_list, &table_count, 0))
goto error;
if (table_list->multitable_view)
@ -1155,6 +1155,13 @@ static int mysql_test_update(Prepared_statement *stmt,
DBUG_RETURN(2);
}
/*
thd->fill_derived_tables() is false here for sure (because it is
preparation of PS, so we even do not check it).
*/
if (mysql_handle_derived(thd->lex, &mysql_derived_prepare))
goto error;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
/* TABLE_LIST contain right privilages request */
want_privilege= table_list->grant.want_privilege;