← 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 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() ?

2. Why EXPLAIN flag is need to be removed and restored anyway?

3. Please append the following to the commit comment:
"
  Without it, mysql_update() didn't know that there will be EXPLAIN
  result set and was sending OK at the end of the update, which
  conflicted with the EOF sent later by EXPLAIN.
"

> On Sun, Jan 28, 2018 at 2:45 PM, Sergei Golubchik <serg@xxxxxxxxxxx> wrote:
> 
> > Hi, Oleksandr!
> >
> > On Dec 22, Oleksandr Byelkin wrote:
> > > revision-id: 980a5c318803d6aa7355e019869597976dcf19bf (mariadb-10.0.33-37-g980a5c31880)
> > > parent(s): 042f763268c0f209e7c12e0a6a72bb5d204dfe29
> > > author: Oleksandr Byelkin
> > > committer: Oleksandr Byelkin
> > > timestamp: 2017-12-22 14:00:10 +0100
> > > message:
> > >
> > > MDEV-14572: Assertion `! is_set()' failed in Diagnostics_area::set_eof_status upon EXPLAIN UPDATE in PS
> > >
> > > Restore EXPAIN flag in SELECT_LEX before execution multi-update by flag in LEX
> > > (the same but in other way made before INSERT/DELETE/SELECT)
> >
> > Please explain what was the reason for the bug, why the status was set
> > twice, and how your change fixes it.

Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx


Follow ups

References