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