• Marko Mäkelä's avatar
    MDEV-12206 Query_cache::send_result_to_client() may corrupt THD::query_plan_flags · 6860a4b5
    Marko Mäkelä authored
    This is essentially a backport of the 10.0
    commit 203f4d41
    that fixes a bug and silences a GCC 6.3.0 warning
    about a left shift of a signed integer.
    
    Missing parenthesis in a macro definition caused wrong operation
    in the Query_cache::send_result_to_client() statement
       thd->query_plan_flags= (thd->query_plan_flags & ~QPLAN_QC_NO) | QPLAN_QC;
    
    This would expand to
       thd->query_plan_flags= (thd->query_plan_flags & ~1) << 6 | 1 << 5;
    
    which would shift the flags by 6 and clear an unrelated flag, instead
    of clearing the flag (1 << 6).
    6860a4b5
log_slow.h 1.36 KB