yes. I have checked the difference of 5.5 and 5.6. code path is big different. And I can't figure out the meaning of code now, so I just say "not on 5.6". I know it's not good for reasoning problem, but it will take a little bit long time for me to figure it out the root cause.
in 5.5, code is like
```
for (tables= *start; tables; tables= tables->next_global)
{
TABLE *tbl= tables->table;
}
if (... && (*start)->table && (*start)->table->file->ht->db_type == DB_TYPE_MYISAM))
```
but in 5.5, code is like
```
for (tables= *start; tables; tables= tables->next_global)
{
TABLE *tbl= tables->table;
if (... && (*start)->table && (*start)->table->file->ht->db_type == DB_TYPE_MYISAM))
}
```
the 'if' condition is out the loop in 5.5, and in the loop in 5.6.
To my intuition, 5.6 is relatively righter than 5.5. But I think 5.6 would be wrong too. To my intuition, 'if' condition in 5.6 should be (tbl && tbl->file->ht->db_type == DB_TYPE_MYISAM) instead.
yes. I have checked the difference of 5.5 and 5.6. code path is big different. And I can't figure out the meaning of code now, so I just say "not on 5.6". I know it's not good for reasoning problem, but it will take a little bit long time for me to figure it out the root cause.
in 5.5, code is like >next_global) ->table- >file-> ht->db_ type == DB_TYPE_MYISAM))
```
for (tables= *start; tables; tables= tables-
{
TABLE *tbl= tables->table;
}
if (... && (*start)->table && (*start)
```
but in 5.5, code is like >next_global) ->table- >file-> ht->db_ type == DB_TYPE_MYISAM))
```
for (tables= *start; tables; tables= tables-
{
TABLE *tbl= tables->table;
if (... && (*start)->table && (*start)
}
```
the 'if' condition is out the loop in 5.5, and in the loop in 5.6.
To my intuition, 5.6 is relatively righter than 5.5. But I think 5.6 would be wrong too. To my intuition, 'if' condition in 5.6 should be (tbl && tbl->file- >ht->db_ type == DB_TYPE_MYISAM) instead.