← 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, Sergei!

Am 18.06.2018 um 14:14 schrieb Sergei Golubchik:
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.

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?
all except this.

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?
it was explanation why it should be removed something do not work otherwise. I tried and explain starts changing on second call.

Chief Architect MariaDB
and security@xxxxxxxxxxx