From f8384305352412a7d815e3247b668c0186521e2c Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sun, 7 May 2017 10:53:38 +0200 Subject: [PATCH] Fix GROUP BY in dbstructure https://github.com/friendica/friendica/issues/3440 --- boot.php | 2 +- include/dbstructure.php | 10 ++++++++-- update.php | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/boot.php b/boot.php index dfb1073b1c..45029fecd2 100644 --- a/boot.php +++ b/boot.php @@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_CODENAME', 'Asparagus'); define ( 'FRIENDICA_VERSION', '3.5.2-dev' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1223 ); +define ( 'DB_UPDATE_VERSION', 1224 ); /** * @brief Constant with a HTML line break. diff --git a/include/dbstructure.php b/include/dbstructure.php index 8c29eb6415..7fcec33a68 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -398,6 +398,12 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { $sql3 .= ";"; } + $field_list = ''; + foreach ($structure['fields'] AS $fieldname => $parameters) { + $field_list .= 'ANY_VALUE(`' . $fieldname . '`),'; + } + $field_list = rtrim($field_list, ','); + if ($verbose) { // Ensure index conversion to unique removes duplicates if ($is_unique) { @@ -414,7 +420,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { echo "SET session old_alter_table=0;\n"; } else { - echo "INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";\n"; + echo "INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";\n"; echo "DROP TABLE `".$name."`;\n"; echo "RENAME TABLE `".$temp_name."` TO `".$name."`;\n"; } @@ -445,7 +451,7 @@ function update_structure($verbose, $action, $tables=null, $definition=null) { if ($ignore != "") { $db->q("SET session old_alter_table=0;"); } else { - $r = $db->q("INSERT INTO `".$temp_name."` SELECT * FROM `".$name."`".$group_by.";"); + $r = $db->q("INSERT INTO `".$temp_name."` SELECT ".$field_list." FROM `".$name."`".$group_by.";"); if (!dbm::is_result($r)) { $errors .= print_update_error($db, $sql3); return $errors; diff --git a/update.php b/update.php index 31a3068ea5..e3b1c31b33 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@