Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix compile errors in C++23 #12106

Closed
wants to merge 87 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
fe1ec48
Fix compile error in Clang 13
jaepil May 21, 2022
a9d7ed2
Merge branch 'facebook:main' into main
jaepil Feb 19, 2023
e559c5c
Fix compile errors in Clang due to unused variables depending on the …
Feb 19, 2023
642c79b
Merge branch 'main' into main
ajkr Feb 21, 2023
e541b48
Fix compile error
jaepil Feb 22, 2023
70e229e
Merge branch 'main' into main
jaepil Feb 22, 2023
0392de9
Merge branch 'main' into main
ajkr Feb 22, 2023
be33131
Merge branch 'facebook:main' into main
jaepil Mar 2, 2023
e770426
Merge branch 'facebook:main' into main
jaepil Mar 7, 2023
e5b83d7
Merge branch 'main' into main
ajkr Mar 9, 2023
bc95cdc
Merge branch 'main' of https://github.com/facebook/rocksdb
jaepil Mar 18, 2023
65cf59b
Merge branch 'main' of https://github.com/facebook/rocksdb
jaepil Mar 19, 2023
07f764f
Merge branch 'facebook:main' into main
jaepil Mar 28, 2023
92d5aa3
Merge remote-tracking branch 'upstream/main'
jaepil Apr 3, 2023
10a7a9d
Merge remote-tracking branch 'upstream/main'
Apr 8, 2023
1a3a32c
Merge branch 'facebook:main' into main
jaepil Apr 8, 2023
ecd3b61
Merge remote-tracking branch 'upstream/main'
jaepil Apr 21, 2023
7afdbb3
Merge remote-tracking branch 'upstream/main'
jaepil Apr 27, 2023
1acb0dc
Merge branch 'facebook:main' into main
jaepil May 6, 2023
c2618b3
Merge remote-tracking branch 'upstream/main'
jaepil May 18, 2023
0ff9333
Merge branch 'facebook:main' into main
jaepil May 20, 2023
7967051
Merge branch 'facebook:main' into main
jaepil May 27, 2023
079f5d3
Merge branch 'facebook:main' into main
jaepil Jun 3, 2023
7e1ae37
Merge branch 'facebook:main' into main
jaepil Jun 7, 2023
1099c9e
Merge branch 'facebook:main' into main
jaepil Jun 9, 2023
3edcf8b
Merge branch 'facebook:main' into main
jaepil Jun 22, 2023
e71f57e
Merge branch 'facebook:main' into main
jaepil Jun 24, 2023
d2cce9d
Merge branch 'facebook:main' into main
jaepil Jul 4, 2023
1cd036b
Merge branch 'facebook:main' into main
jaepil Jul 14, 2023
fd7bc50
Merge branch 'facebook:main' into main
jaepil Jul 15, 2023
2692d68
Merge branch 'facebook:main' into main
jaepil Jul 26, 2023
d0670c6
Merge branch 'facebook:main' into main
jaepil Jul 31, 2023
31c326c
Merge branch 'facebook:main' into main
jaepil Aug 9, 2023
4463878
Merge branch 'facebook:main' into main
jaepil Aug 19, 2023
d7f8ac7
Merge branch 'facebook:main' into main
jaepil Aug 26, 2023
31c1526
Merge branch 'facebook:main' into main
jaepil Aug 30, 2023
518c686
Merge branch 'facebook:main' into main
jaepil Sep 1, 2023
13e4577
Merge branch 'facebook:main' into main
jaepil Sep 2, 2023
938882e
Merge branch 'facebook:main' into main
jaepil Sep 12, 2023
b13f569
Merge branch 'facebook:main' into main
jaepil Sep 17, 2023
97cad3c
Merge branch 'facebook:main' into main
jaepil Sep 20, 2023
34de24a
Merge branch 'facebook:main' into main
jaepil Sep 22, 2023
ea9254a
Merge branch 'facebook:main' into main
jaepil Sep 23, 2023
62df188
Merge branch 'facebook:main' into main
jaepil Sep 24, 2023
b3d1ca7
Merge branch 'facebook:main' into main
jaepil Oct 1, 2023
7b23d90
Merge branch 'facebook:main' into main
jaepil Oct 4, 2023
e4230dc
Merge branch 'facebook:main' into main
jaepil Oct 13, 2023
2f2c0e7
Merge branch 'facebook:main' into main
jaepil Oct 18, 2023
d3d0eb1
Merge branch 'facebook:main' into main
jaepil Oct 21, 2023
06950af
Merge branch 'facebook:main' into main
jaepil Oct 26, 2023
9cc3f14
Merge branch 'facebook:main' into main
jaepil Nov 8, 2023
55fe1c2
Merge branch 'facebook:main' into main
jaepil Nov 15, 2023
0ca9240
Merge branch 'facebook:main' into main
jaepil Nov 19, 2023
4db17c5
Merge branch 'facebook:main' into main
jaepil Nov 23, 2023
e308f61
Fix compile errors in C++23
jaepil Nov 29, 2023
bc9d482
Merge branch 'facebook:main' into main
jaepil Nov 29, 2023
4aa24c0
Add a newline at end of file
jaepil Nov 29, 2023
cfd897b
Format code
jaepil Nov 29, 2023
cdb03a1
Format code
jaepil Nov 29, 2023
6f77f65
Merge branch 'facebook:main' into main
jaepil Dec 6, 2023
8f2b4d1
Merge branch 'facebook:main' into main
jaepil Dec 12, 2023
7c45f30
Merge branch 'facebook:main' into main
jaepil Dec 15, 2023
d410a36
Merge branch 'main' into main
ajkr Dec 18, 2023
445e451
Merge branch 'facebook:main' into main
jaepil Dec 30, 2023
95d45f2
Merge branch 'facebook:main' into main
jaepil Jan 7, 2024
8a1d84d
Merge branch 'facebook:main' into main
jaepil Jan 17, 2024
705312f
Merge branch 'facebook:main' into main
jaepil Jan 23, 2024
506cab2
Merge branch 'facebook:main' into main
jaepil Feb 4, 2024
1359d99
Merge branch 'facebook:main' into main
jaepil Feb 9, 2024
28d2d80
Merge branch 'facebook:main' into main
jaepil Feb 17, 2024
aced5df
Merge branch 'facebook:main' into main
jaepil Feb 22, 2024
4f536b4
Merge branch 'facebook:main' into main
jaepil Feb 26, 2024
cb23e6e
Merge branch 'facebook:main' into main
jaepil Mar 2, 2024
470964f
Merge branch 'pullrequests/facebook/main'
jaepil Mar 9, 2024
f4a3d17
Merge branch 'facebook:main' into main
jaepil Mar 15, 2024
3371d6c
Merge branch 'facebook:main' into main
jaepil Mar 16, 2024
fc08a43
Merge branch 'facebook:main' into main
jaepil Mar 29, 2024
c83bfdd
Merge branch 'facebook:main' into main
jaepil Apr 9, 2024
4239472
Merge branch 'facebook:main' into main
jaepil Apr 18, 2024
77fd799
Merge branch 'facebook:main' into main
jaepil Apr 25, 2024
05443ff
Merge branch 'facebook:main' into main
jaepil May 2, 2024
ecb6373
Merge branch 'facebook:main' into main
jaepil May 6, 2024
b8419f0
Merge branch 'facebook:main' into main
jaepil May 14, 2024
17e499a
Merge branch 'facebook:main' into main
jaepil May 21, 2024
b0b6420
Merge branch 'facebook:main' into main
jaepil May 24, 2024
0d7f43d
add #include
ajkr May 26, 2024
e965003
Merge branch 'main' into main
ajkr May 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions db/range_tombstone_fragmenter.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,6 @@
#include "table/internal_iterator.h"

namespace ROCKSDB_NAMESPACE {
struct FragmentedRangeTombstoneList;

struct FragmentedRangeTombstoneListCache {
// ensure only the first reader needs to initialize l
std::mutex reader_mutex;
std::unique_ptr<FragmentedRangeTombstoneList> tombstones = nullptr;
// readers will first check this bool to avoid
std::atomic<bool> initialized = false;
};

struct FragmentedRangeTombstoneList {
public:
// A compact representation of a "stack" of range tombstone fragments, which
Expand Down Expand Up @@ -124,6 +114,14 @@ struct FragmentedRangeTombstoneList {
uint64_t total_tombstone_payload_bytes_;
};

struct FragmentedRangeTombstoneListCache {
// ensure only the first reader needs to initialize l
std::mutex reader_mutex;
std::unique_ptr<FragmentedRangeTombstoneList> tombstones = nullptr;
// readers will first check this bool to avoid
std::atomic<bool> initialized = false;
};

// FragmentedRangeTombstoneIterator converts an InternalIterator of a range-del
// meta block into an iterator over non-overlapping tombstone fragments. The
// tombstone fragmentation process should be more efficient than the range
Expand Down
7 changes: 4 additions & 3 deletions db/write_batch.cc
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
#include "port/lang.h"
#include "rocksdb/merge_operator.h"
#include "rocksdb/system_clock.h"
#include "util/aligned_storage.h"
#include "util/autovector.h"
#include "util/cast_util.h"
#include "util/coding.h"
Expand Down Expand Up @@ -1900,7 +1901,7 @@ class MemTableInserter : public WriteBatch::Handler {
// Make creation optional but do not incur
// std::unique_ptr additional allocation
using MemPostInfoMap = std::map<MemTable*, MemTablePostProcessInfo>;
using PostMapType = std::aligned_storage<sizeof(MemPostInfoMap)>::type;
using PostMapType = aligned_storage<MemPostInfoMap>::type;
PostMapType mem_post_info_map_;
// current recovered transaction we are rebuilding (recovery)
WriteBatch* rebuilding_trx_;
Expand All @@ -1914,15 +1915,15 @@ class MemTableInserter : public WriteBatch::Handler {
bool write_before_prepare_;
// Whether this batch was unprepared or not
bool unprepared_batch_;
using DupDetector = std::aligned_storage<sizeof(DuplicateDetector)>::type;
using DupDetector = aligned_storage<DuplicateDetector>::type;
DupDetector duplicate_detector_;
bool dup_dectector_on_;

bool hint_per_batch_;
bool hint_created_;
// Hints for this batch
using HintMap = std::unordered_map<MemTable*, void*>;
using HintMapType = std::aligned_storage<sizeof(HintMap)>::type;
using HintMapType = aligned_storage<HintMap>::type;
HintMapType hint_;

HintMap& GetHintMap() {
Expand Down
5 changes: 3 additions & 2 deletions db/write_thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "rocksdb/status.h"
#include "rocksdb/types.h"
#include "rocksdb/write_batch.h"
#include "util/aligned_storage.h"
#include "util/autovector.h"

namespace ROCKSDB_NAMESPACE {
Expand Down Expand Up @@ -134,8 +135,8 @@ class WriteThread {
Status status;
Status callback_status; // status returned by callback->Callback()

std::aligned_storage<sizeof(std::mutex)>::type state_mutex_bytes;
std::aligned_storage<sizeof(std::condition_variable)>::type state_cv_bytes;
aligned_storage<std::mutex>::type state_mutex_bytes;
aligned_storage<std::condition_variable>::type state_cv_bytes;
Writer* link_older; // read/write only before linking, or as leader
Writer* link_newer; // lazy, read/write only before linking, or as leader

Expand Down
24 changes: 24 additions & 0 deletions util/aligned_storage.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
// This source code is licensed under both the GPLv2 (found in the
// COPYING file in the root directory) and Apache 2.0 License
// (found in the LICENSE.Apache file in the root directory).
//
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. See the AUTHORS file for names of contributors.
#pragma once

#include <cstddef>

#include "rocksdb/rocksdb_namespace.h"

namespace ROCKSDB_NAMESPACE {

template <typename T, std::size_t Align = alignof(T)>
struct aligned_storage {
struct type {
alignas(Align) unsigned char data[sizeof(T)];
};
};

} // namespace ROCKSDB_NAMESPACE
3 changes: 2 additions & 1 deletion util/random.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <utility>

#include "port/likely.h"
#include "util/aligned_storage.h"
#include "util/thread_local.h"

#define STORAGE_DECL static thread_local
Expand All @@ -21,7 +22,7 @@ namespace ROCKSDB_NAMESPACE {

Random* Random::GetTLSInstance() {
STORAGE_DECL Random* tls_instance;
STORAGE_DECL std::aligned_storage<sizeof(Random)>::type tls_instance_bytes;
STORAGE_DECL aligned_storage<Random>::type tls_instance_bytes;

auto rv = tls_instance;
if (UNLIKELY(rv == nullptr)) {
Expand Down
11 changes: 9 additions & 2 deletions util/xxhash.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@
#ifndef XXH_NAMESPACE
#define XXH_NAMESPACE ROCKSDB_
#endif // !defined(XXH_NAMESPACE)

#if (defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) || \
defined(XXH_IMPLEMENTATION)) && \
!defined(XXH_IMPLEM_13a8737387)
#if defined(__cplusplus) && (__cplusplus > 202002L)
/* C++23 and future versions have std::unreachable() */
#include <utility> /* std::unreachable() */
#endif
#endif
/* END RocksDB customizations */

// clang-format off
Expand Down Expand Up @@ -2064,8 +2073,6 @@ static int XXH_isLittleEndian(void)
# define XXH_UNREACHABLE() unreachable()

#elif defined(__cplusplus) && (__cplusplus > 202002L)
/* C++23 and future versions have std::unreachable() */
# include <utility> /* std::unreachable() */
# define XXH_UNREACHABLE() std::unreachable()

#elif XXH_HAS_BUILTIN(__builtin_unreachable)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ BaseDeltaIterator::BaseDeltaIterator(ColumnFamilyHandle* column_family,
assert(comparator_);
}

BaseDeltaIterator::~BaseDeltaIterator() = default;

bool BaseDeltaIterator::Valid() const {
return status_.ok() ? (current_at_base_ ? BaseValid() : DeltaValid()) : false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class BaseDeltaIterator : public Iterator {
WBWIIteratorImpl* delta_iterator,
const Comparator* comparator);

~BaseDeltaIterator() override {}
~BaseDeltaIterator() override;

bool Valid() const override;
void SeekToFirst() override;
Expand Down
Loading