diff --git a/lib/taskana-core-test/src/test/java/acceptance/task/query/TaskQueryImplAccTest.java b/lib/taskana-core-test/src/test/java/acceptance/task/query/TaskQueryImplAccTest.java
index 308fb272f..e47cd83ab 100644
--- a/lib/taskana-core-test/src/test/java/acceptance/task/query/TaskQueryImplAccTest.java
+++ b/lib/taskana-core-test/src/test/java/acceptance/task/query/TaskQueryImplAccTest.java
@@ -149,6 +149,15 @@ class TaskQueryImplAccTest {
taskSummary1, taskSummary2, taskSummary3, taskSummary4, taskSummary5);
}
+ @WithAccessId(user = "admin")
+ @Test
+ void should_CountAllTasksFromWorkbasketAsAdmin_When_NoAccessItemForWorkbasketExists() {
+ long result =
+ taskService.createTaskQuery().workbasketIdIn(wbWithoutPermissions.getId()).count();
+
+ assertThat(result).isEqualTo(3);
+ }
+
@WithAccessId(user = "user-1-1")
@Test
void should_OnlyReturnTasksFromCorrectWorkbaskets_When_UserHasNoPermissionToOneWorkbasket() {
diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQuerySqlProvider.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQuerySqlProvider.java
index 4c8630539..1e34ad939 100644
--- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQuerySqlProvider.java
+++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskQuerySqlProvider.java
@@ -102,13 +102,32 @@ public class TaskQuerySqlProvider {
+ "LEFT JOIN USER_INFO AS u ON t.owner = u.USER_ID "
+ ""
+ OPENING_WHERE_TAG
- + checkForAuthorization()
+ commonTaskWhereStatement()
+ CLOSING_WHERE_TAG
- + ")"
+ + "), Y ("
+ + db2selectFields()
+ + ", FLAG ) AS ("
+ "SELECT "
+ db2selectFields()
- + "FROM X "
+ + ", ("
+ + " "
+ + "SELECT 1 "
+ + "FROM WORKBASKET_ACCESS_LIST s "
+ + "WHERE "
+ + "s.ACCESS_ID IN "
+ + "(#{item}) "
+ + "and "
+ + "s.WORKBASKET_ID = X.WORKBASKET_ID AND s.perm_read = 1 fetch first 1 rows only"
+ + ""
+ + " "
+ + "VALUES(1)"
+ + ""
+ + " ) "
+ + "FROM X )"
+ + "SELECT "
+ + db2selectFields()
+ + "FROM Y "
+ + "WHERE FLAG = 1 "
+ ""
+ "ORDER BY ${item}"
+ " "
@@ -168,12 +187,23 @@ public class TaskQuerySqlProvider {
+ "LEFT JOIN USER_INFO AS u ON t.owner = u.USER_ID "
+ ""
+ OPENING_WHERE_TAG
- + checkForAuthorization()
+ commonTaskWhereStatement()
+ CLOSING_WHERE_TAG
- + ")"
- + "SELECT COUNT(*) "
- + "FROM X with UR"
+ + "), Y (ID, FLAG) AS ("
+ + "SELECT ID, ("
+ + ""
+ + "SELECT 1 FROM WORKBASKET_ACCESS_LIST s "
+ + "WHERE s.ACCESS_ID IN "
+ + "(#{item}) "
+ + "and "
+ + "s.WORKBASKET_ID = X.WORKBASKET_ID AND s.perm_read = 1 fetch first 1 rows only "
+ + " "
+ + ""
+ + "VALUES(1)"
+ + " "
+ + ") "
+ + "FROM X ) SELECT COUNT(*) "
+ + "FROM Y WHERE FLAG = 1 with UR"
+ CLOSING_SCRIPT_TAG;
}