From 415477a1ca50c9e3f3c32dca673f7e1733311f17 Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.silence@gmail.com> Date: Sun, 3 Jul 2016 11:38:04 +0300 Subject: [PATCH] Fix 'sp ChangeModuleName' incorrect response after updating name with identical value. Merge branch 'super-improvements' --- db/stored/functions.sql | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/db/stored/functions.sql b/db/stored/functions.sql index cb7962c8c..3d68bb07b 100644 --- a/db/stored/functions.sql +++ b/db/stored/functions.sql @@ -1257,12 +1257,25 @@ CREATE FUNCTION ChangeModuleName ( ) RETURNS int(11) BEGIN DECLARE vDisciplineID INT DEFAULT -1; - SET vDisciplineID = (SELECT DisciplineID FROM modules WHERE ID = pModuleID LIMIT 1); + DECLARE vAlreadySameName BOOL DEFAULT FALSE; + SET vDisciplineID = (SELECT DisciplineID FROM modules WHERE ID = pModuleID LIMIT 1); IF InternalIsMapLocked(vDisciplineID) THEN RETURN -1; END IF; + # Bodging, strange row_count() behaviour in some cases. + # i.e. update 1 module row. In case it's new and old names are same, row_count value may be 0. + SET vAlreadySameName = EXISTS( + SELECT * FROM modules + WHERE modules.ID = pModuleID AND modules.Type = 'regular' AND modules.Name = pName + LIMIT 1 + ); + IF vAlreadySameName THEN + return 0; + END IF; + + UPDATE modules SET modules.Name = pName WHERE modules.ID = pModuleID AND modules.Type = 'regular' -- GitLab