From 01d8b4ceb57065f303bcd429ce4f7c48c31008a9 Mon Sep 17 00:00:00 2001 From: Dishon Merkhai Date: Sat, 26 Aug 2023 16:10:14 -0400 Subject: [PATCH] Fix operator name keywords causing incompatibility with -fno-operator-names Alternative operator name keywords like `and`, `or`, `xor`, etc., are rarely used in MySQL and can cause obscure errors when the GCC flag `-fno-operator-names` is applied, for example: ``` /MySQL/storage/temptable/include/temptable/lock_free_type.h:125:75: error: template argument 2 is invalid 125 | std::is_trivially_copyable::value>::type> { | ^ /MySQL/storage/temptable/include/temptable/lock_free_type.h:148:19: error: parse error in template argument list 148 | typename std::enable_if::value or | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 | std::is_same::value>::type> { | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` Replace the few occurrences of operator name keywords to use their primary counter parts, like `&&`, `||`, and `!`. --- sql/iterators/ref_row_iterators.cc | 2 +- storage/temptable/include/temptable/lock_free_type.h | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sql/iterators/ref_row_iterators.cc b/sql/iterators/ref_row_iterators.cc index 56523a92f0b9..518699867f1b 100644 --- a/sql/iterators/ref_row_iterators.cc +++ b/sql/iterators/ref_row_iterators.cc @@ -297,7 +297,7 @@ int PushedJoinRefIterator::Read() { if (error) { return HandleError(error); } - } else if (not m_is_unique) { + } else if (!m_is_unique) { int error = table()->file->ha_index_next_pushed(table()->record[0]); if (error) { return HandleError(error); diff --git a/storage/temptable/include/temptable/lock_free_type.h b/storage/temptable/include/temptable/lock_free_type.h index 74c1a6ca247e..b5a04ad7b46d 100644 --- a/storage/temptable/include/temptable/lock_free_type.h +++ b/storage/temptable/include/temptable/lock_free_type.h @@ -121,7 +121,7 @@ struct Lock_free_type_selector { * */ template struct Lock_free_type_selector< - T, typename std::enable_if::value and + T, typename std::enable_if::value && std::is_trivially_copyable::value>::type> { static_assert(!std::is_same::value, "Querying always-lock-free property of trivially-copyable " @@ -145,7 +145,7 @@ struct Lock_free_type_selector< template struct Lock_free_type_selector< T, - typename std::enable_if::value or + typename std::enable_if::value || std::is_same::value>::type> { #if (ATOMIC_LLONG_LOCK_FREE == 2) || (WORKAROUND_PR31864_CLANG_BUG == 1) using Type = T; @@ -159,7 +159,7 @@ struct Lock_free_type_selector< /** Template-specialization for long types. */ template struct Lock_free_type_selector< - T, typename std::enable_if::value or + T, typename std::enable_if::value || std::is_same::value>::type> { #if (ATOMIC_LONG_LOCK_FREE == 2) using Type = T; @@ -173,7 +173,7 @@ struct Lock_free_type_selector< /** Template-specialization for int types. */ template struct Lock_free_type_selector< - T, typename std::enable_if::value or + T, typename std::enable_if::value || std::is_same::value>::type> { #if (ATOMIC_INT_LOCK_FREE == 2) using Type = T; @@ -187,7 +187,7 @@ struct Lock_free_type_selector< /** Template-specialization for short types. */ template struct Lock_free_type_selector< - T, typename std::enable_if::value or + T, typename std::enable_if::value || std::is_same::value>::type> { #if (ATOMIC_SHORT_LOCK_FREE == 2) using Type = T; @@ -201,7 +201,7 @@ struct Lock_free_type_selector< /** Template-specialization for char types. */ template struct Lock_free_type_selector< - T, typename std::enable_if::value or + T, typename std::enable_if::value || std::is_same::value>::type> { #if (ATOMIC_CHAR_LOCK_FREE == 2) using Type = T;