From 27e7f88c4689c34b47f003c7e0bcda10a4966640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20Cesar=20Laura=20Avenda=C3=B1o?= Date: Fri, 12 Apr 2019 11:48:09 -0400 Subject: [PATCH] PMC-571 --- workflow/engine/classes/WorkspaceTools.php | 37 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/WorkspaceTools.php b/workflow/engine/classes/WorkspaceTools.php index d190b9c1f..a926bb366 100644 --- a/workflow/engine/classes/WorkspaceTools.php +++ b/workflow/engine/classes/WorkspaceTools.php @@ -7,9 +7,11 @@ use ProcessMaker\BusinessModel\Process as BmProcess; use ProcessMaker\ChangeLog\ChangeLog; /*----------------------------------********---------------------------------*/ use ProcessMaker\Core\Installer; +use ProcessMaker\Core\ProcessesManager; use ProcessMaker\Core\System; use ProcessMaker\Plugins\Adapters\PluginAdapter; use ProcessMaker\Project\Adapter\BpmnWorkflow; +use ProcessMaker\Upgrade\RunProcessUpgradeQuery; use ProcessMaker\Util\FixReferencePath; /** @@ -1242,20 +1244,51 @@ class WorkspaceTools } if (!empty($tablesToAddColumns)) { + $upgradeQueries = []; foreach ($tablesToAddColumns as $tableName => $tableColumn) { $indexes = []; if (!empty($changes['tablesWithNewIndex'][$tableName]) && $includeIndexes) { $indexes = $changes['tablesWithNewIndex'][$tableName]; unset($changes['tablesWithNewIndex'][$tableName]); } - $database->executeQuery($database->generateAddColumnsSql($tableName, $tableColumn, $indexes)); + + // Instantiate the class to execute the query in background + $upgradeQueries[] = new RunProcessUpgradeQuery($this->name, $database->generateAddColumnsSql($tableName, $tableColumn, $indexes), $rbac); + } + + // Run queries in multiple threads + $processesManager = new ProcessesManager($upgradeQueries); + $processesManager->run(); + + // If exists an error throw an exception + if (!empty($processesManager->getErrors())) { + $errorMessage = ''; + foreach ($processesManager->getErrors() as $error) { + $errorMessage .= $error['rawAnswer'] . PHP_EOL; + } + throw new Exception($errorMessage); } } if (!empty($changes['tablesWithNewIndex']) && $includeIndexes) { CLI::logging("-> " . count($changes['tablesWithNewIndex']) . " tables with indexes to add\n"); + $upgradeQueries = []; foreach ($changes['tablesWithNewIndex'] as $tableName => $indexes) { - $database->executeQuery($database->generateAddColumnsSql($tableName, [], $indexes)); + // Instantiate the class to execute the query in background + $upgradeQueries[] = new RunProcessUpgradeQuery($this->name, $database->generateAddColumnsSql($tableName, [], $indexes), $rbac); + } + + // Run queries in multiple threads + $processesManager = new ProcessesManager($upgradeQueries); + $processesManager->run(); + + // If exists an error throw an exception + if (!empty($processesManager->getErrors())) { + $errorMessage = ''; + foreach ($processesManager->getErrors() as $error) { + $errorMessage .= $error['rawAnswer'] . PHP_EOL; + } + throw new Exception($errorMessage); } }