<?php
function after($subject, $search)
{
return $search === '' ? $subject : array_reverse(explode($search, $subject, 2))[0];
}
function before($subject, $search)
{
if ($search === '') {
return $subject;
}
$result = strstr($subject, (string) $search, true);
return $result === false ? $subject : $result;
}
function foo($databaseEngine, $databaseVersion)
{
if (($databaseEngine === 'mysql' && (
(! strpos($databaseVersion, 'MariaDB') && version_compare($databaseVersion, '8.0.1', '>=')) ||
(strpos($databaseVersion, 'MariaDB') && version_compare(before(after($databaseVersion, '5.5.5-'), '-'), '10.6.0', '>='))
)) ||
($databaseEngine === 'pgsql' && version_compare($databaseVersion, '9.5', '>='))
) {
return 'FOR UPDATE SKIP LOCKED';
}
return true;
}
var_dump(foo('mysql', '5.5.5-10.6.4-MariaDB'));
var_dump(foo('mysql', '5.5.5-10.3.4-MariaDB'));
var_dump(foo('mysql', '5.5.5-10.6.4-MariaDB-log'));
var_dump(foo('mysql', '10.3.31-MariaDB-log - MariaDB Server'));
var_dump(foo('mysql', '10.6.4-MariaDB-log - MariaDB Server'));
var_dump(foo('mysql', '10.3.31-MariaDB-log-cll-lve - MariaDB Server'));
var_dump(foo('mysql', '5.5.5-10.6.4-MariaDB-1:10.6.4+maria~focal'));
var_dump(foo('mysql', '5.5.5-10.3.4-MariaDB-1:10.3.4+maria~focal'));
preferences:
25.56 ms | 409 KiB | 5 Q