mirror of
https://github.com/MariaDB/server.git
synced 2026-04-20 07:15:33 +02:00
MDEV-12206 Query_cache::send_result_to_client() may corrupt THD::query_plan_flags
This is essentially a backport of the 10.0
commit 203f4d4193
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).
This commit is contained in:
parent
9c47beb8bd
commit
6860a4b556
1 changed files with 13 additions and 14 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2009 Monty Program Ab
|
||||
/* Copyright (C) 2009, 2017, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -16,20 +16,19 @@
|
|||
/* Defining what to log to slow log */
|
||||
|
||||
#define LOG_SLOW_VERBOSITY_INIT 0
|
||||
#define LOG_SLOW_VERBOSITY_INNODB 1 << 0
|
||||
#define LOG_SLOW_VERBOSITY_QUERY_PLAN 1 << 1
|
||||
#define LOG_SLOW_VERBOSITY_INNODB (1U << 0)
|
||||
#define LOG_SLOW_VERBOSITY_QUERY_PLAN (1U << 1)
|
||||
|
||||
#define QPLAN_INIT QPLAN_QC_NO
|
||||
|
||||
#define QPLAN_ADMIN 1 << 0
|
||||
#define QPLAN_FILESORT 1 << 1
|
||||
#define QPLAN_FILESORT_DISK 1 << 2
|
||||
#define QPLAN_FULL_JOIN 1 << 3
|
||||
#define QPLAN_FULL_SCAN 1 << 4
|
||||
#define QPLAN_QC 1 << 5
|
||||
#define QPLAN_QC_NO 1 << 6
|
||||
#define QPLAN_TMP_DISK 1 << 7
|
||||
#define QPLAN_TMP_TABLE 1 << 8
|
||||
#define QPLAN_ADMIN (1U << 0)
|
||||
#define QPLAN_FILESORT (1U << 1)
|
||||
#define QPLAN_FILESORT_DISK (1U << 2)
|
||||
#define QPLAN_FULL_JOIN (1U << 3)
|
||||
#define QPLAN_FULL_SCAN (1U << 4)
|
||||
#define QPLAN_QC (1U << 5)
|
||||
#define QPLAN_QC_NO (1U << 6)
|
||||
#define QPLAN_TMP_DISK (1U << 7)
|
||||
#define QPLAN_TMP_TABLE (1U << 8)
|
||||
/* ... */
|
||||
#define QPLAN_MAX ((ulong) 1) << 31 /* reserved as placeholder */
|
||||
|
||||
#define QPLAN_MAX (1U << 31) /* reserved as placeholder */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue