diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java index d7138985b11..b99676ccc70 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java @@ -1189,18 +1189,37 @@ public interface CollectionDAO { @BindFQN("fqnPrefixHash") String fqnPrefixHash, @Bind("toType") String toType); - @SqlQuery( - "SELECT te.type, te.taskStatus, COUNT(id) count FROM thread_entity te where " - + "(entityId in (SELECT toId FROM entity_relationship WHERE " - + "((fromEntity='user' AND fromId= :userId) OR " - + "(fromEntity='team' AND fromId IN ())) AND relation=8) OR " - + "id in (SELECT toId FROM entity_relationship WHERE (fromEntity='user' AND fromId= :userId AND toEntity='THREAD' AND relation IN (1,2))) " - + " OR id in (SELECT toId FROM entity_relationship WHERE ((fromEntity='user' AND fromId= :userId) OR " - + "(fromEntity='team' AND fromId IN ())) AND relation=11)) " - + "GROUP BY te.type, te.taskStatus") + @ConnectionAwareSqlQuery( + value = + "SELECT te.type, te.taskStatus, COUNT(id) count FROM thread_entity te where " + + "(entityId in (SELECT toId FROM entity_relationship WHERE " + + "((fromEntity='user' AND fromId= :userId) OR " + + "(fromEntity='team' AND fromId IN ())) AND relation=8) OR " + + "id in (SELECT toId FROM entity_relationship WHERE (fromEntity='user' AND fromId= :userId AND toEntity='THREAD' AND relation IN (1,2))) " + + " OR id in (SELECT toId FROM entity_relationship WHERE ((fromEntity='user' AND fromId= :userId) OR " + + "(fromEntity='team' AND fromId IN ())) AND relation=11)) " + + " OR (taskAssignees @> ANY (ARRAY[]::jsonb[]) OR createdBy = :username)" + + "GROUP BY te.type, te.taskStatus", + connectionType = POSTGRES) + @ConnectionAwareSqlQuery( + value = + "SELECT te.type, te.taskStatus, COUNT(id) count FROM thread_entity te where " + + "(entityId in (SELECT toId FROM entity_relationship WHERE " + + "((fromEntity='user' AND fromId= :userId) OR " + + "(fromEntity='team' AND fromId IN ())) AND relation=8) OR " + + "id in (SELECT toId FROM entity_relationship WHERE (fromEntity='user' AND fromId= :userId AND toEntity='THREAD' AND relation IN (1,2))) " + + " OR id in (SELECT toId FROM entity_relationship WHERE ((fromEntity='user' AND fromId= :userId) OR " + + "(fromEntity='team' AND fromId IN ())) AND relation=11)) OR " + + "(JSON_OVERLAPS(taskAssignees, :userTeamJsonMysql) OR createdBy = :username)" + + "GROUP BY te.type, te.taskStatus", + connectionType = MYSQL) @RegisterRowMapper(OwnerCountFieldMapper.class) List> listCountByOwner( - @BindUUID("userId") UUID userId, @BindList("teamIds") List teamIds); + @BindUUID("userId") UUID userId, + @BindList("teamIds") List teamIds, + @Bind("username") String username, + @Bind("userTeamJsonMysql") String userTeamJsonMysql, + @BindList("userTeamJsonPostgres") List userTeamJsonPostgres); @SqlQuery( "SELECT json FROM thread_entity AND " diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/FeedRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/FeedRepository.java index 2f91705141b..14b2ab0abf3 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/FeedRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/FeedRepository.java @@ -528,7 +528,12 @@ public class FeedRepository { User user = Entity.getEntity(USER, userId, TEAMS_FIELD, NON_DELETED); List teamIds = getTeamIds(user); List teamNames = getTeamNames(user); - result = dao.feedDAO().listCountByOwner(userId, teamIds); + String userTeamJsonMysql = getUserTeamJsonMysql(userId, teamIds); + List userTeamJsonPostgres = getUserTeamJsonPostgres(userId, teamIds); + result = + dao.feedDAO() + .listCountByOwner( + userId, teamIds, user.getName(), userTeamJsonMysql, userTeamJsonPostgres); mentions = dao.feedDAO() .listCountThreadsByMentions(