* InfoLog: fix SQL error on update for to long from and addr

also use our db abstraction for PostgreSQL correct concat
This commit is contained in:
Ralf Becker 2017-11-26 10:51:28 +01:00
parent df26dc2913
commit 29b26f6706

View File

@ -11,6 +11,8 @@
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
function infolog_upgrade0_9_11() function infolog_upgrade0_9_11()
{ {
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_infolog','info_datecreated','info_datemodified'); $GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_infolog','info_datecreated','info_datemodified');
@ -937,7 +939,13 @@ function infolog_upgrade16_1_002()
*/ */
function infolog_upgrade16_1_003() function infolog_upgrade16_1_003()
{ {
$GLOBALS['egw_setup']->db->query("UPDATE egw_infolog SET info_from = CASE WHEN info_from != '' THEN CONCAT(info_from, ', ', info_addr) ELSE info_addr END". // copy full info_addr to info_des, if length(info_from)+length(info_addr)+2 > 255 and then shorten it to fit
$GLOBALS['egw_setup']->db->query("UPDATE egw_infolog SET info_des=".
$GLOBALS['egw_setup']->db->concat('info_addr', "\n\n", 'info_des').
" WHERE LENGTH(info_from)+LENGTH(info_addr > 253", __LINE__, __FILE__);
$GLOBALS['egw_setup']->db->query("UPDATE egw_infolog SET info_from = CASE WHEN info_from != '' THEN SUBSTRING(".
$GLOBALS['egw_setup']->db->concat('info_from', "', '", 'info_addr')." FROM 1 FOR 255) ELSE info_addr END".
" WHERE info_addr != ''", __LINE__, __FILE__); " WHERE info_addr != ''", __LINE__, __FILE__);
$GLOBALS['egw_setup']->oProc->DropColumn('egw_infolog',array( $GLOBALS['egw_setup']->oProc->DropColumn('egw_infolog',array(