From 332217e411b0ab4a1b6d42536882350dec4a389e Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 3 Nov 2020 14:27:11 +0000
Subject: [PATCH] F fix versioning bug

---
 CHANGELOG.md                           |  4 ++++
 procedures/retrieveEntityOverrides.sql | 16 +++++++---------
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 84fef2f..cc36c94 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed ###
 
+* Bug in `retrieveOverrides` function where selecting the datatype of an old
+  version resultet in an error. See corresponding test in `caosdb-pyinttest`
+  `tests/test_versioning.py::test_datatype_without_name`
+
 ### Security ###
 
 ## 3.0.0 (2020-09-01) ##
diff --git a/procedures/retrieveEntityOverrides.sql b/procedures/retrieveEntityOverrides.sql
index fa43d6b..2f6b36d 100644
--- a/procedures/retrieveEntityOverrides.sql
+++ b/procedures/retrieveEntityOverrides.sql
@@ -91,13 +91,11 @@ retrieveOverridesBody: BEGIN
                 NULL AS collection_override,
                 NULL AS name_override,
                 NULL AS desc_override,
-                ( SELECT value FROM
-                    ( SELECT value FROM name_data
-                        WHERE domain_id = 0
-                        AND entity_ID = datatypeID
-                        AND property_id = 20
-                        UNION SELECT datatype AS value
-                    ) AS tmp LIMIT 1 ) AS type_override,
+                IFNULL((SELECT value FROM name_data
+                    WHERE domain_id = 0
+                    AND entity_id = datatype
+                    AND property_id = 20
+                    LIMIT 1), datatype) AS type_override,
                 entity_id,
                 property_id
             FROM archive_data_type
@@ -154,10 +152,10 @@ retrieveOverridesBody: BEGIN
         NULL AS collection_override,
         NULL AS name_override,
         NULL AS desc_override,
-        ( SELECT value FROM name_data
+        IFNULL((SELECT value FROM name_data
             WHERE domain_id = 0
             AND entity_ID = datatype
-            AND property_id = 20 LIMIT 1 ) AS type_override,
+            AND property_id = 20 LIMIT 1), datatype) AS type_override,
         entity_id,
         property_id
     FROM data_type
-- 
GitLab