From de38f313633ac982a26f34c599eaddf11e8b325e Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 24 Oct 2023 02:22:32 +0200
Subject: [PATCH] DOC: update CHANGELOG

---
 CHANGELOG.md                                           |  2 ++
 .../backend/implementation/MySQL/DatabaseUtils.java    |  8 +-------
 .../backend/implementation/MySQL/Replacement.java      | 10 +++++-----
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a744c76c..5fca5f27 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 * `FIND ENTITY <ID> is broken`.
   [linkahead-server#323](https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/323)
+* Unknown Server Error when inserting an Entity.
+  [linkahead-mariadbbackend](https://gitlab.indiscale.com/caosdb/src/caosdb-mysqlbackend/-/issues/48)
 
 ### Security
 
diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java
index 18c994e4..5383de9b 100644
--- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java
+++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java
@@ -107,20 +107,15 @@ public class DatabaseUtils {
       final List<Property> stage1Inserts,
       Deque<EntityID> replacementIds,
       EntityInterface entity) {
-    Map<String, EntityInterface> replacements = new HashMap<>();
     for (final Property p : stage1Inserts) {
       if (p instanceof Replacement) {
         if (!p.hasId() || p.getId().isTemporary()) {
           EntityID replacementId = replacementIds.pop();
-          replacements.put(replacementId.toString(), p);
           ((Replacement) p).setReplacementId(replacementId);
         }
       }
-    }
-
-    for (final Property p : stage1Inserts) {
       if (p.hasProperties()) {
-        if (p instanceof Replacement && ((Replacement) p).isState2Replacement()) {
+        if (p instanceof Replacement && ((Replacement) p).isStage2Replacement()) {
           stage2Inserts.add(((Replacement) p).replacement);
         }
         for (Property subP : p.getProperties()) {
@@ -148,7 +143,6 @@ public class DatabaseUtils {
       subP.setDomain(p);
       if (subP.hasProperties()) {
         Replacement r = new Replacement(subP);
-        r.replacement.setDomain(p);
         r.setStage2Replacement(true);
         stage1Inserts.add(r);
         processSubPropertiesStage1(stage1Inserts, r);
diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java
index fbe2f57e..c672c0ea 100644
--- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java
+++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/Replacement.java
@@ -41,7 +41,7 @@ enum ReplacementStatus implements StatementStatusInterface {
 public class Replacement extends Property {
 
   public Property replacement;
-  private boolean state2Replacement;
+  private boolean stage2Replacement;
 
   @Override
   public EntityID getId() {
@@ -61,7 +61,7 @@ public class Replacement extends Property {
     super(p);
     replacement = new Property(new RetrieveEntity());
 
-    replacement.setDomain(p);
+    replacement.setDomain(p.getDomainEntity());
     replacement.setId(new EntityID());
     replacement.setStatementStatus(ReplacementStatus.REPLACEMENT);
     replacement.setValue(new ReferenceValue(p.getId()));
@@ -69,10 +69,10 @@ public class Replacement extends Property {
   }
 
   public void setStage2Replacement(boolean t) {
-    this.state2Replacement = t;
+    this.stage2Replacement = t;
   }
 
-  public boolean isState2Replacement() {
-    return state2Replacement;
+  public boolean isStage2Replacement() {
+    return stage2Replacement;
   }
 }
-- 
GitLab