Skip to content

Commit

Permalink
[mysql-5.6][PR] Bug #34638573 Compile MySQL with clang 15
Browse files Browse the repository at this point in the history
Summary:
Fixing two compile errors, that are triggered when using libcxx from LLVM15

https://reviews.llvm.org/D104002

std::unary_function is not available in libcxx under C++17, see: https://en.cppreference.com/w/cpp/utility/functional/unary_function Boost uses std::unary_function, but it has a workaround for using Boost headers in C++17, triggered by the macro BOOST_NO_CXX98_FUNCTION_BASE

See:
https://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_features_that_have_been_removed_from_the_standard_

https://reviews.llvm.org/D130538

A new assert in libcxx is triggered in include/varlen_sort.h

std::iterator_traits<varlen_iterator>::reference should match the return type of varlen_iterator::operator*()

include/c++/v1/__algorithm/iterator_operations.h:100:5: error: static assertion failed due to requirement 'is_same<varlen_element, varlen_element &>::value': It looks like your iterator's `iterator_traits<It>::reference` does not match the return type of dereferencing the iterator, i.e., calling `*it`. This is undefined behavior according to [input.iterators] and can lead to dangling reference issues at runtime, so we are flagging this. static_assert(is_same<__deref_t<_Iter>, typename iterator_traits<__remove_cvref_t<_Iter> >::reference>::value,
^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fix a few warnings:
Remove some explicitly defined "=defau.t" constructors, destructors. warning: definition of implicit copy assignment operator for 'Row' is deprecated because it has a user-declared destructor [-Wdeprecated-copy-with-dtor]

Mark a variable potentially unuses in tests (unuses when __aarch64__)

Porting Notes: Drop when rebasing to 8.0.32

Change-Id: Iad346bd0cdb1d25d958377b9c7a0dd5da7a45fad

Pull Request resolved: facebook#1293
GitHub Author: Gabor Buella <gabor.buella@oracle.com>

Test Plan: Imported from GitHub, without a `Test Plan:` line.

Reviewers: chni

Reviewed By: chni

Subscribers: webscalesql-eng@fb.com

Differential Revision: https://phabricator.intern.facebook.com/D45277622

Tags: aarch64, accept2ship
  • Loading branch information
hermanlee authored and Herman Lee committed Apr 28, 2023
1 parent 8ba4ac8 commit c2339a0
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 12 deletions.
3 changes: 3 additions & 0 deletions cmake/boost.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,9 @@ ELSE()
ENDIF()

IF(NOT WIN32)
# Needed to use Boost header container_hash/hash.hpp in C++17
ADD_DEFINITIONS(-DBOOST_NO_CXX98_FUNCTION_BASE)

FILE(GLOB_RECURSE BOOST_PATCHES_LIST
RELATIVE ${BOOST_PATCHES_DIR}
${BOOST_PATCHES_DIR}/*.hpp
Expand Down
5 changes: 3 additions & 2 deletions include/varlen_sort.h
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,9 @@ namespace std {

// Required for Iterator.
template <>
struct iterator_traits<varlen_iterator> : iterator_traits<varlen_element *> {};

struct iterator_traits<varlen_iterator> : iterator_traits<varlen_element *> {
using reference = varlen_element;
};
} // namespace std

/*
Expand Down
11 changes: 2 additions & 9 deletions storage/innobase/include/ddl0impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,15 +118,8 @@ struct Fetch_sequence : public Context::FTS::Sequence {

/** Physical row context. */
struct Row {
/** Constructor. */
Row() = default;

Row(const Row &) = default;

/** Destructor. */
~Row() = default;

/** Build a row from a raw record.
/** Build a row for the given index using the available clustered index
record (member m_rec).
@param[in,out] ctx DDL context.
@param[in,out] index Index the record belongs to.
@param[in,out] heap Heap to use for allocation.
Expand Down
2 changes: 1 addition & 1 deletion unittest/gunit/mysys_my_rdtsc-t.cc
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ TEST_F(RDTimeStampCounter, TestCycle) {
ulonglong t1 = my_timer_cycles();
ulonglong t2;
int i;
int backward = 0;
int backward [[maybe_unused]] = 0;
int nonzero = 0;

for (i = 0; i < LOOP_COUNT; i++) {
Expand Down

0 comments on commit c2339a0

Please sign in to comment.