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. 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? 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. OK
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.
Regards, Sergei Chief Architect MariaDB and security@mariadb.org