summaryrefslogtreecommitdiff
path: root/sql/log_slow.h
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-03-08 10:31:06 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2017-03-08 10:31:06 +0200
commit6860a4b55664d8fc53636906240c089417e1849d (patch)
treeed347d4d9e78412f46086aa66d545bc9e759ced1 /sql/log_slow.h
parent9c47beb8bd7e60f00e434d8c1e4bbf2b0befb28c (diff)
downloadmariadb-git-6860a4b55664d8fc53636906240c089417e1849d.tar.gz
MDEV-12206 Query_cache::send_result_to_client() may corrupt THD::query_plan_flags
This is essentially a backport of the 10.0 commit 203f4d41930a140d469aeca9840a7b226afeaaf6 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).
Diffstat (limited to 'sql/log_slow.h')
-rw-r--r--sql/log_slow.h27
1 files changed, 13 insertions, 14 deletions
diff --git a/sql/log_slow.h b/sql/log_slow.h
index 92a2d1bf4f6..541ef55f9e1 100644
--- a/sql/log_slow.h
+++ b/sql/log_slow.h
@@ -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 */