databases/xtrabackup84: fix build on FreeBSD-CURRENT

Fixes adopted from databases/mysql84-server

Reported by: Poudriere
This commit is contained in:
Oleksii Samorukov
2024-11-12 22:48:35 +01:00
parent 51a6b3a758
commit 65a2ef105c
16 changed files with 323 additions and 16 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
PORTNAME= xtrabackup84
PORTVERSION= 8.4.0
DISTVERSIONSUFFIX= -1
PORTREVISION= 4
PORTREVISION= 5
CATEGORIES= databases
MASTER_SITES= https://downloads.percona.com/downloads/Percona-XtraBackup-innovative-release/Percona-XtraBackup-8.4.0-1/source/tarball/:percona
DISTFILES= ${PPORTNAME}-${DVERSION}${EXTRACT_SUFX}:percona
@@ -1,6 +1,6 @@
--- CMakeLists.txt.orig 2023-10-19 12:05:28 UTC
--- CMakeLists.txt.orig 2024-08-08 10:30:27 UTC
+++ CMakeLists.txt
@@ -2094,8 +2094,6 @@ IF(WITH_PROTOBUF STREQUAL "bundled" OR WITH_FIDO STREQ
@@ -2097,8 +2097,6 @@ ENDIF()
ENDIF()
ENDIF()
@@ -9,7 +9,7 @@
#
# Setup maintainer mode options by the end. Platform checks are
# not run with the warning options as to not perturb fragile checks
@@ -2345,10 +2343,6 @@ ENDIF()
@@ -2364,10 +2362,6 @@ IF(ENABLE_GCOV)
IF(ENABLE_GCOV)
INCLUDE(fastcov)
@@ -1,6 +1,6 @@
--- cmake/install_layout.cmake.orig 2023-10-19 12:05:28 UTC
--- cmake/install_layout.cmake.orig 2024-08-08 10:30:27 UTC
+++ cmake/install_layout.cmake
@@ -159,7 +159,7 @@ SET(INSTALL_INFODIR_STANDALONE "docs")
@@ -160,7 +160,7 @@ SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
#
SET(INSTALL_SHAREDIR_STANDALONE "share")
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
+4 -4
View File
@@ -1,6 +1,6 @@
--- storage/innobase/include/ddl0impl.h.orig 2023-10-19 12:05:28 UTC
--- storage/innobase/include/ddl0impl.h.orig 2024-08-08 10:30:27 UTC
+++ storage/innobase/include/ddl0impl.h
@@ -118,14 +118,6 @@ struct Fetch_sequence : public Context::FTS::Sequence
@@ -119,14 +119,6 @@ struct Row {
/** Physical row context. */
struct Row {
@@ -15,9 +15,9 @@
Row &operator=(const Row &) = default;
/** Build a row from a raw record.
--- unittest/gunit/mysys_my_rdtsc-t.cc.orig 2023-10-19 12:05:28 UTC
--- unittest/gunit/mysys_my_rdtsc-t.cc.orig 2024-08-08 10:30:27 UTC
+++ unittest/gunit/mysys_my_rdtsc-t.cc
@@ -145,7 +145,7 @@ TEST_F(RDTimeStampCounter, TestNanosecond) {
@@ -146,7 +146,7 @@ TEST_F(RDTimeStampCounter, TestNanosecond) {
ulonglong t1 = my_timer_nanoseconds();
ulonglong t2;
int i;
@@ -1,6 +1,6 @@
--- sql/auth/sql_authorization.cc.orig 2023-10-19 12:05:28 UTC
--- sql/auth/sql_authorization.cc.orig 2024-08-08 10:30:27 UTC
+++ sql/auth/sql_authorization.cc
@@ -7437,6 +7437,10 @@ bool operator==(const Role_id &a, const std::string &b
@@ -237,6 +237,10 @@ bool operator==(const Role_id &a, const std::string &b
return tmp == b;
}
@@ -0,0 +1,11 @@
--- sql/binlog_ostream.cc.orig 2024-08-08 10:30:27 UTC
+++ sql/binlog_ostream.cc
@@ -240,7 +240,7 @@ bool IO_CACHE_binlog_cache_storage::setup_ciphers_pass
/* Generate password, it is a random string. */
if (my_rand_buffer(password, sizeof(password))) return true;
- password_str.append(password, sizeof(password));
+ password_str.insert(password_str.end(), password, password + sizeof(password));
m_io_cache.m_encryptor->close();
m_io_cache.m_decryptor->close();
@@ -0,0 +1,36 @@
--- sql/mdl_context_backup.cc.orig 2024-08-08 10:30:27 UTC
+++ sql/mdl_context_backup.cc
@@ -160,7 +160,7 @@ bool MDL_context_backup_manager::create_backup(const M
DBUG_TRACE;
try {
- MDL_context_backup_key key_obj(key, keylen);
+ MDL_context_backup_key key_obj(key, key + keylen);
/*
Since this method is called as part of THD cleaning up, every XA
@@ -193,7 +193,7 @@ bool MDL_context_backup_manager::create_backup(MDL_req
bool result = false;
try {
- MDL_context_backup_key key_obj(key, keylen);
+ MDL_context_backup_key key_obj(key, key + keylen);
/*
Check for presence a record with specified key in the collection of
MDL_context_backup elements. It is ok to already have a record with
@@ -239,7 +239,7 @@ bool MDL_context_backup_manager::restore_backup(MDL_co
MUTEX_LOCK(guard, &m_LOCK_mdl_context_backup);
- auto result = m_backup_map.find(MDL_context_backup_key(key, keylen));
+ auto result = m_backup_map.find(MDL_context_backup_key(key, key + keylen));
if (result != m_backup_map.end()) {
element = result->second.get();
res = mdl_context->clone_tickets(element->get_context(), MDL_TRANSACTION);
@@ -252,5 +252,5 @@ void MDL_context_backup_manager::delete_backup(const u
const size_t keylen) {
DBUG_TRACE;
MUTEX_LOCK(guard, &m_LOCK_mdl_context_backup);
- m_backup_map.erase(MDL_context_backup_key(key, keylen));
+ m_backup_map.erase(MDL_context_backup_key(key, key + keylen));
}
@@ -0,0 +1,11 @@
--- sql/mdl_context_backup.h.orig 2024-08-08 10:30:27 UTC
+++ sql/mdl_context_backup.h
@@ -47,7 +47,7 @@ class MDL_context_backup_manager {
/**
Key for uniquely identifying MDL_context in the MDL_context_backup map.
*/
- typedef std::basic_string<uchar> MDL_context_backup_key;
+ typedef std::vector<uchar> MDL_context_backup_key;
class MDL_context_backup;
@@ -0,0 +1,39 @@
--- sql/range_optimizer/index_range_scan_plan.cc.orig 2024-08-08 10:30:27 UTC
+++ sql/range_optimizer/index_range_scan_plan.cc
@@ -1016,11 +1016,11 @@ static bool null_part_in_key(KEY_PART *key_part, const
return false;
}
-// TODO(sgunders): This becomes a bit simpler with C++20's string_view
-// constructors.
-static inline std::basic_string_view<uchar> make_string_view(const uchar *start,
- const uchar *end) {
- return {start, static_cast<size_t>(end - start)};
+static inline bool equal(const uchar *start1, const uchar *end1,
+ const uchar *start2, const uchar *end2) {
+ auto diff1 = end1 - start1;
+ auto diff2 = end2 - start2;
+ return diff1 == diff2 && memcmp(start1, start2, diff1) == 0;
}
/**
@@ -1083,8 +1083,7 @@ static bool get_ranges_from_tree_given_base(
node->next_key_part->type == SEL_ROOT::Type::KEY_RANGE &&
node->next_key_part->root->part == part + 1) {
if (node->min_flag == 0 && node->max_flag == 0 &&
- make_string_view(min_key, tmp_min_key) ==
- make_string_view(max_key, tmp_max_key)) {
+ equal(min_key, tmp_min_key, max_key, tmp_max_key)) {
// This range was an equality predicate, and we have more
// keyparts to scan, so use its range as a base for ranges on
// the next keypart(s). E.g. if we have (a = 3) on this keypart,
@@ -1160,8 +1159,7 @@ static bool get_ranges_from_tree_given_base(
else
flag |= NO_MAX_RANGE;
}
- if (flag == 0 && make_string_view(base_min_key, tmp_min_key) ==
- make_string_view(base_max_key, tmp_max_key)) {
+ if (flag == 0 && equal(base_min_key, tmp_min_key, base_max_key, tmp_max_key)) {
flag |= EQ_RANGE;
/*
Note that keys which are extended with PK parts have no
@@ -0,0 +1,143 @@
--- sql/rpl_log_encryption.cc.orig 2024-08-08 10:30:27 UTC
+++ sql/rpl_log_encryption.cc
@@ -213,7 +213,7 @@ bool Rpl_encryption::recover_master_key() {
Rpl_encryption_header::seqno_to_key_id(m_master_key_seqno);
auto master_key =
get_key(m_master_key.m_id, Rpl_encryption_header::get_key_type());
- m_master_key.m_value.assign(master_key.second);
+ m_master_key.m_value = master_key.second;
/* No keyring error */
if (master_key.first == Keyring_status::KEYRING_ERROR_FETCHING) goto err1;
}
@@ -290,7 +290,7 @@ bool Rpl_encryption::recover_master_key() {
if (new_master_key.first == Keyring_status::SUCCESS) {
m_master_key.m_id = new_master_key_id;
- m_master_key.m_value.assign(new_master_key.second);
+ m_master_key.m_value = new_master_key.second;
if (new_master_key_seqno.second > m_master_key_seqno &&
new_master_key_seqno.second > old_master_key_seqno.second) {
if (m_master_key_seqno > 0) {
@@ -380,8 +380,8 @@ std::pair<Rpl_encryption::Keyring_status, Key_string>
reinterpret_cast<unsigned char *>(std::get<1>(tuple));
first[0] = ~(first[0]);
});
- key_str.append(reinterpret_cast<unsigned char *>(std::get<1>(tuple)),
- std::get<2>(tuple));
+ auto *first = reinterpret_cast<unsigned char *>(std::get<1>(tuple));
+ key_str.insert(key_str.end(), first, first + std::get<2>(tuple));
my_free(std::get<1>(tuple));
}
@@ -396,7 +396,7 @@ std::pair<Rpl_encryption::Keyring_status, Key_string>
if (pair.first == Keyring_status::SUCCESS) {
DBUG_EXECUTE_IF("corrupt_replication_encryption_key_size",
{ pair.second.resize(key_size / 2); });
- if (pair.second.length() != key_size)
+ if (pair.second.size() != key_size)
pair.first = Keyring_status::UNEXPECTED_KEY_SIZE;
}
return pair;
@@ -450,7 +450,7 @@ bool Rpl_encryption::enable_for_xtrabackup() {
Rpl_encryption_header::seqno_to_key_id(m_master_key_seqno);
auto master_key =
get_key(m_master_key.m_id, Rpl_encryption_header::get_key_type());
- m_master_key.m_value.assign(master_key.second);
+ m_master_key.m_value = master_key.second;
/* No keyring error */
if (master_key.first == Keyring_status::KEYRING_ERROR_FETCHING) res = true;
}
@@ -771,7 +771,7 @@ Rpl_encryption::get_seqno_from_keyring(std::string key
auto fetched_key = get_key(key_id, SEQNO_KEY_TYPE, SEQNO_KEY_LENGTH);
uint32_t seqno = 0;
if (fetched_key.first == Keyring_status::SUCCESS) {
- const void *key = fetched_key.second.c_str();
+ const void *key = fetched_key.second.data();
memcpy(&seqno, key, sizeof(seqno));
seqno = le32toh(seqno);
}
@@ -976,7 +976,7 @@ bool Rpl_encryption::generate_master_key_on_keyring(ui
/* Store the generated key as the new master key */
m_master_key.m_id = key_id;
- m_master_key.m_value.assign(pair.second);
+ m_master_key.m_value = pair.second;
return false;
}
@@ -1079,12 +1079,12 @@ bool Rpl_encryption_header_v1::serialize(Basic_ostream
assert(m_encrypted_password.length() == PASSWORD_FIELD_SIZE);
*ptr++ = ENCRYPTED_FILE_PASSWORD;
- memcpy(ptr, m_encrypted_password.data(), m_encrypted_password.length());
+ memcpy(ptr, m_encrypted_password.data(), m_encrypted_password.size());
ptr += PASSWORD_FIELD_SIZE;
assert(m_iv.length() == IV_FIELD_SIZE);
*ptr++ = IV_FOR_FILE_PASSWORD;
- memcpy(ptr, m_iv.data(), m_iv.length());
+ memcpy(ptr, m_iv.data(), m_iv.size());
bool res = DBUG_EVALUATE_IF("fail_to_serialize_encryption_header", true,
ostream->write(header, HEADER_SIZE));
@@ -1139,13 +1139,13 @@ bool Rpl_encryption_header_v1::deserialize(Basic_istre
reinterpret_cast<const unsigned char *>(
reader.ptr(PASSWORD_FIELD_SIZE));
if (!reader.has_error())
- m_encrypted_password.assign(password_ptr, PASSWORD_FIELD_SIZE);
+ m_encrypted_password.assign(password_ptr, password_ptr + PASSWORD_FIELD_SIZE);
break;
}
case IV_FOR_FILE_PASSWORD: {
const unsigned char *iv_ptr =
reinterpret_cast<const unsigned char *>(reader.ptr(IV_FIELD_SIZE));
- if (!reader.has_error()) m_iv.assign(iv_ptr, IV_FIELD_SIZE);
+ if (!reader.has_error()) m_iv.assign(iv_ptr, iv_ptr + IV_FIELD_SIZE);
break;
}
default:
@@ -1205,11 +1205,11 @@ Key_string Rpl_encryption_header_v1::decrypt_file_pass
unsigned char buffer[Aes_ctr::PASSWORD_LENGTH];
if (my_aes_decrypt(m_encrypted_password.data(),
- m_encrypted_password.length(), buffer,
+ m_encrypted_password.size(), buffer,
error_and_key.second.data(),
- error_and_key.second.length(), my_aes_256_cbc,
+ error_and_key.second.size(), my_aes_256_cbc,
m_iv.data(), false) != MY_AES_BAD_DATA)
- file_password.append(buffer, Aes_ctr::PASSWORD_LENGTH);
+ file_password.insert(file_password.end(), buffer, buffer + Aes_ctr::PASSWORD_LENGTH);
}
}
#endif
@@ -1240,16 +1240,16 @@ bool Rpl_encryption_header_v1::encrypt_file_password(K
/* Generate iv, it is a random string. */
error = my_rand_buffer(iv, Aes_ctr::AES_BLOCK_SIZE);
- m_iv = Key_string(iv, sizeof(iv));
+ m_iv = Key_string(iv, iv + sizeof(iv));
/* Encrypt password */
if (!error) {
- error = (my_aes_encrypt(password_str.data(), password_str.length(),
+ error = (my_aes_encrypt(password_str.data(), password_str.size(),
encrypted_password, master_key.m_value.data(),
- master_key.m_value.length(), my_aes_256_cbc, iv,
+ master_key.m_value.size(), my_aes_256_cbc, iv,
false) == MY_AES_BAD_DATA);
m_encrypted_password =
- Key_string(encrypted_password, sizeof(encrypted_password));
+ Key_string(encrypted_password, encrypted_password + sizeof(encrypted_password));
}
return error;
@@ -1265,7 +1265,7 @@ Key_string Rpl_encryption_header_v1::generate_new_file
/* Generate password, it is a random string. */
error = my_rand_buffer(password, sizeof(password));
if (!error) {
- password_str.append(password, sizeof(password));
+ password_str.insert(password_str.end(), password, password + sizeof(password));
}
if (error || encrypt_file_password(password_str) ||
@@ -0,0 +1,11 @@
--- sql/stream_cipher.cc.orig 2024-07-12 19:15:25 UTC
+++ sql/stream_cipher.cc
@@ -46,7 +46,7 @@ bool Aes_ctr_cipher<TYPE>::open(const Key_string &pass
m_header_size = header_size;
#ifdef HAVE_BYTESTOKEY_SHA512_HANDLING
if (EVP_BytesToKey(Aes_ctr::get_evp_cipher(), Aes_ctr::get_evp_md(), nullptr,
- password.data(), password.length(), 1, m_file_key,
+ password.data(), password.size(), 1, m_file_key,
m_iv) == 0)
return true;
#else
@@ -0,0 +1,19 @@
--- sql/stream_cipher.h.orig 2024-08-08 10:30:27 UTC
+++ sql/stream_cipher.h
@@ -27,6 +27,7 @@
#include <openssl/evp.h>
#include <memory>
#include <string>
+#include <vector>
/**
@file stream_cipher.h
@@ -35,7 +36,7 @@
binary log files.
*/
-typedef std::basic_string<unsigned char> Key_string;
+typedef std::vector<unsigned char> Key_string;
/**
@class Stream_cipher
@@ -0,0 +1,11 @@
--- storage/innobase/xtrabackup/src/keyring_plugins.cc.orig 2024-11-11 11:46:47 UTC
+++ storage/innobase/xtrabackup/src/keyring_plugins.cc
@@ -863,7 +863,7 @@ bool xb_binlog_password_reencrypt(const char *binlog_f
return (false);
}
- Key_string file_password(key, Encryption::KEY_LEN);
+ Key_string file_password(key, key + Encryption::KEY_LEN);
header->encrypt_file_password(file_password);
IO_CACHE_ostream ostream;
@@ -1,4 +1,4 @@
--- storage/innobase/xtrabackup/src/utils.cc.orig 2023-10-19 12:05:28 UTC
--- storage/innobase/xtrabackup/src/utils.cc.orig 2024-08-08 10:30:27 UTC
+++ storage/innobase/xtrabackup/src/utils.cc
@@ -21,6 +21,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
@@ -9,8 +9,8 @@
#include <sys/sysctl.h>
#else
#ifdef HAVE_PROCPS_V3
@@ -113,12 +115,14 @@ unsigned long get_version_number(std::string version_s
return major * 10000 + minor * 100 + version;
@@ -131,12 +133,14 @@ bool get_major_minor_version(const std::string &versio
return true;
}
-#ifdef __APPLE__
@@ -25,7 +25,7 @@
unsigned long host_free_memory() {
unsigned long total_mem = host_total_memory();
int64_t used_mem;
@@ -139,6 +143,31 @@ unsigned long host_free_memory() {
@@ -157,6 +161,31 @@ unsigned long host_free_memory() {
return total_mem - (unsigned long)used_mem;
}
return 0;
@@ -0,0 +1,11 @@
--- unittest/gunit/binlogevents/transaction_compression-t.cc.orig 2024-07-12 19:20:22 UTC
+++ unittest/gunit/binlogevents/transaction_compression-t.cc
@@ -49,7 +49,7 @@ class TransactionPayloadCompressionTest : public ::tes
using Managed_buffer_t = Decompressor_t::Managed_buffer_t;
using Size_t = Decompressor_t::Size_t;
using Char_t = Decompressor_t::Char_t;
- using String_t = std::basic_string<Char_t>;
+ using String_t = std::vector<Char_t>;
using Decompress_status_t =
mysql::binlog::event::compression::Decompress_status;
using Compress_status_t = mysql::binlog::event::compression::Compress_status;
@@ -0,0 +1,15 @@
--- unittest/gunit/stream_cipher-t.cc.orig 2024-08-08 10:30:27 UTC
+++ unittest/gunit/stream_cipher-t.cc
@@ -251,10 +251,10 @@ void SetKeyStr(Key_string &key_str, const unsigned cha
template <typename T>
void SetKeyStr(Key_string &key_str, const unsigned char *key) {
if (key) {
- key_str.assign(key, T::PASSWORD_LENGTH);
+ key_str.assign(key, key + T::PASSWORD_LENGTH);
} else {
const unsigned char new_key[T::PASSWORD_LENGTH]{0};
- key_str.assign(new_key, T::PASSWORD_LENGTH);
+ key_str.assign(new_key, new_key + T::PASSWORD_LENGTH);
}
}