diff --git a/src/main/java/org/caosdb/server/query/RoleFilter.java b/src/main/java/org/caosdb/server/query/RoleFilter.java
index 77b31d27b5a77fe19802cbfe9a2d8c5571c2b519..48c8372014c6e702be8b88113102da030dbc6046 100644
--- a/src/main/java/org/caosdb/server/query/RoleFilter.java
+++ b/src/main/java/org/caosdb/server/query/RoleFilter.java
@@ -91,30 +91,19 @@ public class RoleFilter implements EntityFilterInterface {
       final String targetSet,
       final boolean versioned)
       throws SQLException {
+    if (!sourceSet.equals("entities")) {
+      throw new UnsupportedOperationException("SourceSet is supposed to be the `entities` table.");
+    }
     final String sql =
         ("INSERT IGNORE INTO `"
             + targetSet
-            + (sourceSet.equals("entities")
-                ? (versioned
-                    ? "` (id, _iversion) SELECT e.id, _get_head_iversion(e.id) FROM `entities` AS e WHERE e.role "
-                        + operator
-                        + " ? UNION SELECT a.id, a._iversion FROM `archive_entities` AS a WHERE a.role"
-                        + operator
-                        + "?"
-                    : "` (id) SELECT e.id FROM `entities` AS e WHERE e.role" + operator + "?")
-               // FIXME The second branch is probably never run.  Remove completely and raise an
-               // exception instead?
-                : (versioned
-                    ? "` (id, _iversion) SELECT s.id, s._iversion FROM `"
-                        + sourceSet
-                        + "` LEFT JOIN archive_entities AS a ON (s.id = a.id AND s._iversion = a._iversion) WHERE a.role"
-                        + operator
-                        + "? UNION SELECT s.id, s._iversion FROM `"
-                        + sourceSet
-                        + "` LEFT JOIN entities AS e ON (s.id = e.id) WHERE e.role"
-                        + operator
-                        + "? AND a._iversion = _get_head_iversion(s.id)"
-                    : "` (id) SELECT e.id FROM `entities` AS e WHERE e.role = ?")));
+            + (versioned
+                ? "` (id, _iversion) SELECT e.id, _get_head_iversion(e.id) FROM `entities` AS e WHERE e.role "
+                    + operator
+                    + " ? UNION SELECT a.id, a._iversion FROM `archive_entities` AS a WHERE a.role"
+                    + operator
+                    + "?"
+                : "` (id) SELECT e.id FROM `entities` AS e WHERE e.role" + operator + "?"));
     final PreparedStatement filterRoleStmt = connection.prepareCall(sql);
     int params = (versioned ? 2 : 1);
     while (params > 0) {