Functions to compare server version strings and and determine if clone should be allowed.
More...
Functions to compare server version strings and and determine if clone should be allowed.
| 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] | recipient | Recipient's version string |
| [in] | donor | Donor's version string |
| [in] | is_recipient_lts | true if recipient is LTS |
| [in] | is_donor_lts | true if donor is LTS |
| [in] | recipient_prev_lts | Previous LTS version of the Recipient |
- Returns
- true if recipient must allow clone from donor, false otherwise