MySQL 26.7.0
Source Code Documentation
my_clone.h File Reference

Functions to compare server version strings and version metadata to determine if Clone should be allowed from Donor to Recipient. More...

#include <optional>
#include <string>

Go to the source code of this file.

Functions

bool are_versions_clone_compatible (const std::string &recipient, const std::string &donor, const bool is_recipient_lts=false, const bool is_donor_lts=false, const std::optional< std::string > &recipient_prev_lts=std::nullopt)
 Compares versions and determine if clone is allowed. More...
 

Detailed Description

Functions to compare server version strings and version metadata to determine if Clone should be allowed from Donor to Recipient.

Function Documentation

◆ are_versions_clone_compatible()

bool are_versions_clone_compatible ( const std::string &  recipient,
const std::string &  donor,
const bool  is_recipient_lts = false,
const bool  is_donor_lts = false,
const std::optional< std::string > &  recipient_prev_lts = std::nullopt 
)

Compares versions and determine if clone is allowed.

Clone is allowed if both the donor and recipient have exactly same version string. In version series 8.1 and above, cloning is allowed if Major and Minor versions match. In 8.0 series, clone is allowed if patch version is above clone backport version. In this comparison, suffixes are ignored: i.e. 8.0.25 should be the same as 8.0.25-debug, but 8.0.25 isn't the same as 8.0.251. Beyond version 9.7, Cloning is also allowed from a Donor in one LTS to a recipient in the next LTS. For example, Cloning from 9.7.x to 28.4.y is allowed but not from 28.4.y to 9.7.x. Conversly, a LTS Recipient is allowed to clone from a LTS Donor if the recipient starts its LTS lineage after Donor.

Note: The Recipient performs these checks and determines if cloning is allowed

Parameters
[in]recipientRecipient's version string
[in]donorDonor's version string
[in]is_recipient_ltstrue if recipient is LTS
[in]is_donor_ltstrue if donor is LTS
[in]recipient_prev_ltsPrevious LTS version of the Recipient
Returns
true if recipient must allow clone from donor, false otherwise