diff --git a/core/metamodel.class.php b/core/metamodel.class.php index c1ba6c964..1c6627edb 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -4969,6 +4969,7 @@ abstract class MetaModel $aCreateTableItems = array(); // array of => array of $aAlterTableMetaData = array(); $aAlterTableItems = array(); // array of
=> + $aPostTableAlteration = array(); // array of
=> post alteration queries foreach(self::GetClasses() as $sClass) { @@ -5115,9 +5116,14 @@ abstract class MetaModel $sColumns .= ' ('.$aLength[0].')'; } } - - $aSugFix[$sClass][$sAttCode][] = "ALTER TABLE `$sTable` ADD $sIndexType `$sIndexName` ($sColumns)"; - if ($bTableToCreate) + $sSugFix = "ALTER TABLE `$sTable` ADD $sIndexType `$sIndexName` ($sColumns)"; + $aSugFix[$sClass][$sAttCode][] = $sSugFix; + if ($bFullTextIndexNeeded) + { + // MySQL does not support multi fulltext index creation in a single query (mysql_errno = 1795) + $aPostTableAlteration[$sTable][] = $sSugFix; + } + elseif ($bTableToCreate) { $aCreateTableItems[$sTable][] = "$sIndexType `$sIndexName` ($sColumns)"; } @@ -5191,7 +5197,15 @@ abstract class MetaModel if (!empty($sSugFixAfterChange)) { $aSugFix[$sClass][$sAttCode][] = $sSugFixAfterChange; - $aAlterTableItems[$sTable][] = $sAlterTableItemsAfterChange; + if ($bFullTextIndexNeeded) + { + // MySQL does not support multi fulltext index creation in a single query (mysql_errno = 1795) + $aPostTableAlteration[$sTable][] = $sSugFixAfterChange; + } + else + { + $aAlterTableItems[$sTable][] = $sAlterTableItemsAfterChange; + } } } } @@ -5315,6 +5329,10 @@ abstract class MetaModel $sChangeList = implode(', ', $aChangeList); $aCondensedQueries[] = "ALTER TABLE `$sTable` $sChangeList"; } + foreach($aPostTableAlteration as $sTable => $aChangeList) + { + $aCondensedQueries = array_merge($aCondensedQueries, $aChangeList); + } return array($aErrors, $aSugFix, $aCondensedQueries); }