maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #11419
Re: 17540ad: MDEV-15890 Strange error message if you try to FLUSH TABLES <view> after LOCK TABLES <view>.
Hi, Alexey!
On Sep 03, Alexey Botchkov wrote:
> revision-id: 17540adc625ff4ac0f00aa10796cb6e763838d18 (mariadb-10.1.35-25-g17540ad)
> parent(s): 34e026f35a7fbeeaec412547ee207c880944ae68
> committer: Alexey Botchkov
> timestamp: 2018-09-03 16:49:46 +0400
> message:
>
> MDEV-15890 Strange error message if you try to FLUSH TABLES <view> after LOCK TABLES <view>.
>
> LOCK view WRITE shouldn't block FLUSH view.
> So we set the view's mdl_request type to it's tables.
>
> diff --git a/sql/sql_view.cc b/sql/sql_view.cc
> index 6bd6b6a..d7a2a6b 100644
> --- a/sql/sql_view.cc
> +++ b/sql/sql_view.cc
> @@ -1534,8 +1534,7 @@ bool mysql_make_view(THD *thd, TABLE_SHARE *share, TABLE_LIST *table,
> for (tbl= view_main_select_tables; tbl; tbl= tbl->next_local)
> {
> tbl->lock_type= table->lock_type;
> - tbl->mdl_request.set_type((tbl->lock_type >= TL_WRITE_ALLOW_WRITE) ?
> - MDL_SHARED_WRITE : MDL_SHARED_READ);
> + tbl->mdl_request.set_type(table->mdl_request.type);
> }
I agree it's looks like a proper fix.
But I'm a bit cautious about possible side effects.
A more conservative fix would be only change the lock level for
TL_NO_READ_WRITE, like
tbl->lock_type == TL_NO_READ_WRITE ? TL_NO_READ_WRITE :
tbl->lock_type >= TL_WRITE_ALLOW_WRITE ? MDL_SHARED_WRITE : MDL_SHARED_READ
(or with an if(), for readability). But I don't see whether it'll make
any difference as compared to your fix.
Please, run all tests locally, and I mean *all*, big, ps, embedded.
And see if you can think of any cases where this change would cause a
change in behavior.
After that - ok to push!
Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx