diff --git a/gulliver/system/class.database_mysql.php b/gulliver/system/class.database_mysql.php index 8191f51db..0bae312f0 100644 --- a/gulliver/system/class.database_mysql.php +++ b/gulliver/system/class.database_mysql.php @@ -1012,4 +1012,16 @@ class database extends database_base } return $flag; } + + /** + * Generate drop trigger SQL + * + * @param string $triggerName + * + * @return string + */ + public function getDropTrigger($triggerName) + { + return "DROP TRIGGER IF EXISTS `{$triggerName}`;"; + } } diff --git a/workflow/engine/classes/WorkspaceTools.php b/workflow/engine/classes/WorkspaceTools.php index cdd9e075e..bb16c28b9 100644 --- a/workflow/engine/classes/WorkspaceTools.php +++ b/workflow/engine/classes/WorkspaceTools.php @@ -4544,4 +4544,25 @@ class WorkspaceTools } } } + + /** + * Delete the triggers MySQL that causes performance issues in the upgrade process + */ + public function deleteTriggersMySql($triggersToDelete) + { + // Initialize Propel + $this->initPropel(true); + $con = Propel::getConnection('workflow'); + + // Get statement instance + $stmt = $con->createStatement(); + + // Get MySQL DB instance class + $dbInstance = $this->getDatabase(); + + // Remove triggers MySQL + foreach ($triggersToDelete as $triggerName) { + $stmt->executeQuery($dbInstance->getDropTrigger($triggerName)); + } + } }