← Back to team overview

maria-developers team mailing list archive

Re: 980a5c31880: MDEV-14572: Assertion `! is_set()' failed in Diagnostics_area::set_eof_status upon EXPLAIN UPDATE in PS

 

Hi, Oleksandr!

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?

Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx


Follow ups

References