Document any_value_fallback()

https://github.com/friendica/friendica/pull/3323#discussion_r111663767
This commit is contained in:
Alexandre Alapetite 2017-04-15 14:39:41 +02:00
parent 5007be3cf5
commit 06f374b26b
1 changed files with 11 additions and 3 deletions

View File

@ -507,12 +507,20 @@ function dbesc($str) {
} }
} }
/**
* @brief Replaces ANY_VALUE() function by MIN() function,
* if the database server does not support ANY_VALUE().
*
* Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5).
* ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
* A standard fall-back is to use MIN().
*
* @param string $sql An SQL string without the values
* @return string The input SQL string modified if necessary.
*/
function any_value_fallback($sql) { function any_value_fallback($sql) {
global $db; global $db;
$server_info = $db->server_info(); $server_info = $db->server_info();
//Considerations for Standard SQL, or MySQL with ONLY_FULL_GROUP_BY (default since 5.7.5).
//ANY_VALUE() is available from MySQL 5.7.5 https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
//A standard fallback is to use MIN()
if (version_compare($server_info, '5.7.5', '<') || if (version_compare($server_info, '5.7.5', '<') ||
(stripos($server_info, 'MariaDB') !== false)) { (stripos($server_info, 'MariaDB') !== false)) {
$sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql); $sql = str_ireplace('ANY_VALUE(', 'MIN(', $sql);