maria-developers team mailing list archive
Mailing list archive
Re: 980a5c31880: MDEV-14572: Assertion `! is_set()' failed in Diagnostics_area::set_eof_status upon EXPLAIN UPDATE in PS
On Jun 11, Oleksandr Byelkin wrote:
> Am 29.01.2018 um 01:02 schrieb Sergei Golubchik:
> > On Jan 28, Oleksandr Byelkin wrote:
> >> Hi, Sergei!
> >> Flag in SELECT_LEX options dropped at the end of execution (in our case
> >> prepare). All commands where EXPLAIN is possible restore the flag in main
> >> SELECT_LEX (in mysql_explain_union()) except UPDATE (because it do
> >> not use mysql_explain_union()
> >> for explain). Without the flag it first try to send OK (as part of update)
> >> then EOF as part of EXPLAIN.
> > Ok.
> > 1. Why does it not use mysql_explain_union() ?
> It is question to them who made explain for non SELECT statements
> (probably Sergey Petrunia) as I can see it just have a bit different
> call pathes.
So all UPDATE/DELETE restore the flag, and only multi-update didn't?
What about multi-delete?
Better to add tests with PREPARE and all non-select explainable
commands to test it and to make sure it won't break in the future.
> > 2. Why EXPLAIN flag is need to be removed and restored anyway?
> Because it is how our EXPLAIN works (written without taking into account
> re-execution). If remove the flag cleanup it will change output of
> prepared explain EXPLAIN.
Yes, I understand why the flag has to be restored.
But why it has to be removed?
Chief Architect MariaDB